#pragma once #include #include #define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64 typedef enum { Black, White, Inverse, Filled //Currently only for Icon clip drawing } DrawMode; // size is the screen size typedef struct { uint8_t* data; unsigned long iconId; } TileMap; bool test_pixel(uint8_t* data, uint8_t x, uint8_t y, uint8_t w); uint8_t* image_data(Canvas* const canvas, const Icon* icon); uint32_t pixel_index(uint8_t x, uint8_t y); void draw_icon_clip( Canvas* const canvas, const Icon* icon, int16_t x, int16_t y, uint8_t left, uint8_t top, uint8_t w, uint8_t h, DrawMode drawMode); void draw_icon_clip_flipped( Canvas* const canvas, const Icon* icon, int16_t x, int16_t y, uint8_t left, uint8_t top, uint8_t w, uint8_t h, DrawMode drawMode); void draw_rounded_box( Canvas* const canvas, int16_t x, int16_t y, uint8_t w, uint8_t h, DrawMode drawMode); void draw_rounded_box_frame( Canvas* const canvas, int16_t x, int16_t y, uint8_t w, uint8_t h, DrawMode drawMode); void draw_rectangle( Canvas* const canvas, int16_t x, int16_t y, uint8_t w, uint8_t h, DrawMode drawMode); void invert_rectangle(Canvas* const canvas, int16_t x, int16_t y, uint8_t w, uint8_t h); void invert_shape(Canvas* const canvas, uint8_t* data, int16_t x, int16_t y, uint8_t w, uint8_t h); void draw_pixels( Canvas* const canvas, uint8_t* data, int16_t x, int16_t y, uint8_t w, uint8_t h, DrawMode drawMode); bool read_pixel(Canvas* const canvas, int16_t x, int16_t y); void set_pixel(Canvas* const canvas, int16_t x, int16_t y, DrawMode draw_mode); void draw_line( Canvas* const canvas, int16_t x1, int16_t y1, int16_t x2, int16_t y2, DrawMode draw_mode); bool in_screen(int16_t x, int16_t y); void ui_cleanup(); uint8_t* get_buffer(Canvas* const canvas); uint8_t* make_buffer(); void clone_buffer(uint8_t* canvas, uint8_t* data);