X-Git-Url: https://git.karo-electronics.de/?p=oswald.git;a=blobdiff_plain;f=ui%2Foswald_graphics.c;h=78e3659002059fc1ec85215d24e3c5ec401e158d;hp=a6eb14f9dfd50191705b71c4c4d0e3198f4a8e55;hb=HEAD;hpb=5d0ff002cee35d109f4a60eff415b2db556fb8f4 diff --git a/ui/oswald_graphics.c b/ui/oswald_graphics.c index a6eb14f..78e3659 100644 --- a/ui/oswald_graphics.c +++ b/ui/oswald_graphics.c @@ -1,23 +1,54 @@ -#include "oswald-ui.h" +#include "oswald.h" #include "oswald_strings.h" #include "oswald_fonts.h" +#include "oswald_hal.h" #include "oswald_graphics.h" -void oswald_draw_bitmap(const uint8_t xstart, const uint8_t ystart, const uint8_t width, const uint8_t height, const void *bmp) +#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 boolean invert, + const unsigned int bmp_width, const unsigned int bmp_height, + const void *bmp) { - uint8_t x, y; + unsigned int x, y; + uint8_t *cb; + if (bmp == NULL) + return; + + //g_printerr("dbmp %d,%d off %d,%d\n", xstart, ystart, width, height); + cb = (uint8_t *)bmp; + //g_printerr("dat %02x %02x %02x\n", (uint8_t)cb[0], (uint8_t)cb[1], (uint8_t)cb[2]); // we only draw set pixel, unset pixel remain as they are - for (y=0; ydy) { - pdx = incx; pdy = 0; - ddx=incx; ddy=incy; - es =dy; el =dx; + pdx = incx; + pdy = 0; + ddx = incx; + ddy = incy; + es = dy; + el = dx; } else { - pdx=0; pdy=incy; - ddx=incx; ddy=incy; - es =dx; el =dy; + pdx = 0; + pdy = incy; + ddx = incx; + ddy = incy; + es = dx; + el = dy; } x = xstart; @@ -116,44 +152,53 @@ void oswald_draw_line_ww(u8t xstart, u8t ystart, u8t xend, u8t yend, u8t thickne hal_lcd_set_pixel(x, y+i, TRUE); } } - hal_lcd_update_display(); } -u8t oswald_write_character(u8t x, u8t y, oswald_font_face face, u8t Character) +uint8_t oswald_write_character(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, const uint8_t Character) { -#if 0 - u8t CharacterHeight = GetCharacterHeight(); - u8t CharacterWidth = GetCharacterWidth(Character); - u16t bitmap[MAX_FONT_ROWS]; - register lx, ly; - - GetCharacterBitmap(Character, bitmap); - - // printf("cw=%d ch=%d\n", CharacterWidth, CharacterHeight); - for (ly=0; ly 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 CharacterWidth + GetFontSpacing(); -#endif - char *cdata = oswald_fonts[face].data[Character]; - - dbg_out("%c", cdata[1]); - return 0; + return cwidth; } -void oswald_write_string(u8t x, u8t y, oswald_font_face face, u8t *str) +void oswald_write_string(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, char *str) { - register lx, i, strl; + uint8_t lx, i, strl; strl = oswald_strlen(str); if (strl == 0) @@ -161,15 +206,32 @@ void oswald_write_string(u8t x, u8t y, oswald_font_face face, u8t *str) lx = x; for (i=0; i len) + break; + } + + return (i+1); +} -void oswald_Write_number(u8t x, u8t y, oswald_font_face face, s16t number) +void oswald_write_number(const uint8_t x, const uint8_t y, const oswald_font_face face, const boolean invert, const int16_t number) { - register lx, i, strl; - u8t str[8]; + uint8_t lx, i, strl; + char str[8]; itoa(number, str, 10); strl = oswald_strlen(str); @@ -178,7 +240,7 @@ void oswald_Write_number(u8t x, u8t y, oswald_font_face face, s16t number) lx = x; for (i=0; i