X-Git-Url: https://git.karo-electronics.de/?p=oswald.git;a=blobdiff_plain;f=ui%2Foswald_graphics.c;fp=ui%2Foswald_graphics.c;h=651d8e8b38a9e787d36826102abb7104fbf6edf0;hp=e64476d61ed50f26a8c1cc4e886a3b7c0f040591;hb=1b5790095c23913d02531727e47b79af3568e0b1;hpb=3e320aaa4175a0ed469581f1dea2eac35b390878 diff --git a/ui/oswald_graphics.c b/ui/oswald_graphics.c index e64476d..651d8e8 100644 --- a/ui/oswald_graphics.c +++ b/ui/oswald_graphics.c @@ -6,12 +6,19 @@ #include "oswald_graphics.h" -void oswald_draw_pixel(const unsigned int xstart, const unsigned int ystart) +#if 0 +void oswald_draw_pixel(const unsigned int xstart, const unsigned int ystart, uint8_t color) { hal_lcd_set_pixel(xstart, ystart, TRUE); } +#endif -void oswald_draw_bitmap_opts(const unsigned int xstart, const unsigned int ystart, const unsigned int xoff, const unsigned int yoff, const unsigned int width, const unsigned int height, const unsigned int bmp_width, const unsigned int bmp_height, const void *bmp) +void oswald_draw_bitmap_opts(const unsigned int xstart, const unsigned int ystart, + const unsigned int xoff, const unsigned int yoff, + const unsigned int width, const unsigned int height, + const boolean invert, + const unsigned int bmp_width, const unsigned int bmp_height, + const void *bmp) { unsigned int x, y; uint8_t *cb; @@ -28,55 +35,19 @@ void oswald_draw_bitmap_opts(const unsigned int xstart, const unsigned int ystar cb = (uint8_t *)(bmp + (y * ((bmp_width / 8) + ((bmp_width % 8) ? 1 : 0))) + (x / 8)); // g_printerr("dat %02x %02x %02x\n", (uint8_t)cb[0], (uint8_t)cb[1], (uint8_t)cb[2]); if (*cb & (1 << (x % 8))) { - hal_lcd_set_pixel((xstart + x) - xoff, (ystart + y) - yoff, TRUE); + if (!invert) + hal_lcd_set_pixel((xstart + x) - xoff, (ystart + y) - yoff, TRUE); // g_printerr("X"); - } /*else { - g_printerr("."); - }*/ + } else { + if (invert) + hal_lcd_set_pixel((xstart + x) - xoff, (ystart + y) - yoff, TRUE); + // g_printerr("."); + } } //g_printerr("\n"); } } -#if 0 -/*inline*/ void oswald_draw_bitmap(const unsigned int xstart, const unsigned int ystart, const unsigned int width, const unsigned int height, const void *bmp) -{ - unsigned int x, y; - uint8_t *cb; - - // we only draw set pixel, unset pixel remain as they are - for (y=0; y 0 ? (8-(oswald_fonts[face].width % 8)) : 0, 0, ((oswald_fonts[face].width / 8) + ((oswald_fonts[face].width % 8) ? 1 : 0))*8, oswald_fonts[face].height, cdata); return cwidth; -#endif } -void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_face face, char *str) +void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, char *str) { uint8_t lx, i, strl; @@ -258,12 +206,29 @@ void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_fac lx = x; for (i=0; i len) + break; + } + + return (i+1); +} + +void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, const int16_t number) { uint8_t lx, i, strl; char str[8]; @@ -275,8 +240,7 @@ void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_fac lx = x; for (i=0; i