#ifndef RENDER_BITMAP #define RENDER_BITMAP #include #include /** * @brief bitmap rich type * transparency is in the layout * @warning Monochrome only ! */ struct bitmap_rich { uint32_t size_px_x; uint32_t size_px_y; uint32_t size_o_y; uint32_t * color; bool color_dynamic; uint32_t * layout; bool layout_dynamic; }; typedef struct bitmap_rich bitmap_rich; /** * @brief { function_description } * * @param[in] size_px_x The width in px * @param[in] size_px_y The height in px * @param color color origin * @param[in] copy_color if you want to make a copy, or only to make a link * @param layout layout origin -> can be set as 0 if it isn't needed * @param[in] copy_layout if you want to make a copy, or to make a link * * @return a rich bitmap, ready to use ! */ bitmap_rich* bitmap_new_rich(uint32_t size_px_x, uint32_t size_px_y, uint32_t* color, bool copy_color, uint32_t *layout, bool copy_layout); /** * @brief delete a rich bitmap created with bitmap_new_rich() * * @param bmp The bitmap to delete */ void bitmap_delete_rich(bitmap_rich* bmp); /** * @brief get the color of pixel from rich bitmap * * @param[in] bmp The bitmap * @param[in] x The bitmap x coordinate (in pixels) * @param[in] y The bitmap y coordinate (in pixels) * * @return the color coded in a unsigned char : * if (color >> 1) * switch (color%2) * { * case 0: * // WHITE * break; * case 1: * // BLACK * } * else */ uint8_t bitmap_get_pixel_r(const bitmap_rich * bmp, uint32_t x, uint32_t y); /** * @brief display a specific rich bitmap pixel on the screen * * @param[in] bmp The bitmap * @param[in] bmp_x The bitmap x coordinate (in pixels) * @param[in] bmp_y The bitmap y coordinate (in pixels) * @param[in] x screen : x coordinate * @param[in] y screen : y coordinate */ void bitmap_display_pixel_r(const bitmap_rich * bmp, uint32_t bmp_x, uint32_t bmp_y, uint32_t x, uint32_t y); #endif