#include #include #include #include "spilcd_gfx.h" void lcd_drawPixel(lcd_t* lcd, uint8 x, uint8 y, uint8 r, uint8 g, uint8 b) { if(lcd_setWindow(lcd, x, y, x, y)) return; lcd_pushPixel(lcd, r, g, b); } void lcd_fillRect(lcd_t* lcd, uint8 x, uint8 y, uint8 w, uint8 h, uint8 r, uint8 g, uint8 b) { if((w == 0) || (h == 0)) return; if((x+w-1) >= lcd->width) w = lcd->width - x; if((y+h-1) >= lcd->height) h = lcd->height - y; if(lcd_setWindow(lcd, x, y, x+w-1, y+h-1)) return; #define BUFFER_PIXELS 64 int wh = w*h; uint8 buffer[BUFFER_PIXELS * sizeof(uint8) * 3]; for (int p = 0; p < wh; p += BUFFER_PIXELS) { for(int pb = 0; pb < BUFFER_PIXELS; pb++) { buffer[pb * 3 + 0] = r; buffer[pb * 3 + 1] = g; buffer[pb * 3 + 2] = b; } int rem = wh - p; lcd_pushPixels(lcd, buffer, ((rem < BUFFER_PIXELS) ? rem : BUFFER_PIXELS)); } } void lcd_fillScreen(lcd_t* lcd, uint8 r, uint8 g, uint8 b) { lcd_fillRect(lcd, 0, 0, lcd->width, lcd->height, r, g, b); }