void GraphicsLib::fillRect(int_least16_t x0, int_least16_t y0, int_least16_t w, int_least16_t h, uint_least16_t color) { uint_least32_t size; if(x0 >= lcd_width) { x0 = lcd_width-1; } if(y0 >= lcd_height) { y0 = lcd_height-1; } if(x0+w >= lcd_width) { w = lcd_width-x0; } if(y0+h >= lcd_height) { h = lcd_height-y0; } setArea(x0, y0, x0+w-1, y0+h-1); drawStart(); for(size=((uint_least32_t)w*h); size!=0; size--) { draw(color); } drawStop(); return; }
void GraphicsLib::drawPixel(int_least16_t x0, int_least16_t y0, uint_least16_t color) { if((x0 >= lcd_width) || (y0 >= lcd_height)) { return; } setArea(x0, y0, x0, y0); drawStart(); draw(color); drawStop(); return; }
void MI0283QT9::drawPixel(uint16_t x0, uint16_t y0, uint16_t color) { if((x0 >= lcd_width) || (y0 >= lcd_height)) { return; } setCursor(x0, y0); drawStart(); draw(color); drawStop(); return; }
void MI0283QT2::clear(uint16_t color) { uint16_t size; setArea(0, 0, lcd_width-1, lcd_height-1); drawStart(); for(size=(320UL*240UL/8UL); size!=0; size--) { draw(color); //1 draw(color); //2 draw(color); //3 draw(color); //4 draw(color); //5 draw(color); //6 draw(color); //7 draw(color); //8 } drawStop(); return; }
void GraphicsLib::fillScreen(uint_least16_t color) { uint_least32_t size; setArea(0, 0, lcd_width-1, lcd_height-1); drawStart(); for(size=(((uint_least32_t)lcd_width*lcd_height)/8UL); size!=0; size--) { draw(color); //1 draw(color); //2 draw(color); //3 draw(color); //4 draw(color); //5 draw(color); //6 draw(color); //7 draw(color); //8 } drawStop(); return; }
int_least16_t GraphicsLib::drawChar(int_least16_t x, int_least16_t y, char c, uint_least16_t color, uint_least16_t bg, uint_least8_t size) { int_least16_t ret, pos; #if FONT_WIDTH <= 8 uint_least8_t data, mask; #elif FONT_WIDTH <= 16 uint_least16_t data, mask; #elif FONT_WIDTH <= 32 uint_least32_t data, mask; #endif uint_least8_t i, j, width, height; const PROGMEM uint8_t *ptr; #if FONT_WIDTH <= 8 pos = (c-FONT_START)*(8*FONT_HEIGHT/8); #elif FONT_WIDTH <= 16 pos = (c-FONT_START)*(16*FONT_HEIGHT/8); #elif FONT_WIDTH <= 32 pos = (c-FONT_START)*(32*FONT_HEIGHT/8); #endif ptr = &font_PGM[pos]; width = FONT_WIDTH; height = FONT_HEIGHT; size = size&0x7F; if(size <= 1) { ret = x+width; if((ret-1) >= lcd_width) { return lcd_width+1; } else if((y+height-1) >= lcd_height) { return lcd_width+1; } setArea(x, y, (x+width-1), (y+height-1)); drawStart(); for(; height!=0; height--) { #if FONT_WIDTH <= 8 data = pgm_read_byte(ptr); ptr+=1; #elif FONT_WIDTH <= 16 data = pgm_read_word(ptr); ptr+=2; #elif FONT_WIDTH <= 32 data = pgm_read_dword(ptr); ptr+=4; #endif for(mask=(1<<(width-1)); mask!=0; mask>>=1) { if(data & mask) { draw(color); } else { draw(bg); } } } drawStop(); }
uint16_t MI0283QT9::drawChar(uint16_t x, uint16_t y, char c, uint8_t size, uint16_t color, uint16_t bg_color) { uint16_t ret; #if FONT_WIDTH <= 8 uint8_t data, mask; #elif FONT_WIDTH <= 16 uint16_t data, mask; #elif FONT_WIDTH <= 32 uint32_t data, mask; #endif uint8_t i, j, width, height; const prog_uint8_t *ptr; i = (uint8_t)c; #if FONT_WIDTH <= 8 ptr = &font_PGM[(i-FONT_START)*(8*FONT_HEIGHT/8)]; #elif FONT_WIDTH <= 16 ptr = &font_PGM[(i-FONT_START)*(16*FONT_HEIGHT/8)]; #elif FONT_WIDTH <= 32 ptr = &font_PGM[(i-FONT_START)*(32*FONT_HEIGHT/8)]; #endif width = FONT_WIDTH; height = FONT_HEIGHT; if(size <= 1) { ret = x+width; if((ret-1) >= lcd_width) { return lcd_width+1; } else if((y+height-1) >= lcd_height) { return lcd_width+1; } setArea(x, y, (x+width-1), (y+height-1)); drawStart(); for(; height!=0; height--) { #if FONT_WIDTH <= 8 data = pgm_read_byte(ptr); ptr+=1; #elif FONT_WIDTH <= 16 data = pgm_read_word(ptr); ptr+=2; #elif FONT_WIDTH <= 32 data = pgm_read_dword(ptr); ptr+=4; #endif for(mask=(1<<(width-1)); mask!=0; mask>>=1) { if(data & mask) { draw(color); } else { draw(bg_color); } } } drawStop(); }
void MI0283QT9::fillRect(uint16_t x0, uint16_t y0, uint16_t x1, uint16_t y1, uint16_t color) { uint32_t size; uint16_t tmp, i; if(x0 > x1) { tmp = x0; x0 = x1; x1 = tmp; } if(y0 > y1) { tmp = y0; y0 = y1; y1 = tmp; } if(x1 >= lcd_width) { x1 = lcd_width-1; } if(y1 >= lcd_height) { y1 = lcd_height-1; } setArea(x0, y0, x1, y1); drawStart(); size = (uint32_t)(1+(x1-x0)) * (uint32_t)(1+(y1-y0)); tmp = size/8; if(tmp != 0) { for(i=tmp; i!=0; i--) { draw(color); //1 draw(color); //2 draw(color); //3 draw(color); //4 draw(color); //5 draw(color); //6 draw(color); //7 draw(color); //8 } for(i=size%8; i!=0; i--) { draw(color); } } else { for(i=size; i!=0; i--) { draw(color); } } drawStop(); return; }