|
@@ -19,7 +19,7 @@ static void _rtgui_hz_bitmap_font_draw_text(struct rtgui_font_bitmap* bmp_font,
|
|
|
rt_uint8_t* str;
|
|
|
rtgui_color_t bc;
|
|
|
rt_uint16_t style;
|
|
|
- register rt_base_t h, word_bytes;
|
|
|
+ register rt_base_t h, word_bytes, font_bytes;
|
|
|
|
|
|
RT_ASSERT(bmp_font != RT_NULL);
|
|
|
|
|
@@ -30,6 +30,7 @@ static void _rtgui_hz_bitmap_font_draw_text(struct rtgui_font_bitmap* bmp_font,
|
|
|
/* drawing height */
|
|
|
h = (bmp_font->height + rect->y1 > rect->y2)? rect->y2 - rect->y1 : bmp_font->height;
|
|
|
word_bytes = (bmp_font->width + 7)/8;
|
|
|
+ font_bytes = word_bytes * bmp_font->height;
|
|
|
|
|
|
str = (rt_uint8_t*)text;
|
|
|
|
|
@@ -44,15 +45,14 @@ static void _rtgui_hz_bitmap_font_draw_text(struct rtgui_font_bitmap* bmp_font,
|
|
|
index = *(str+1) - 0xA0;
|
|
|
|
|
|
/* get font pixel data */
|
|
|
- font_ptr = bmp_font->bmp + ( 94*(sect-1) + (index-1) )*(bmp_font->width + bmp_font->height);
|
|
|
-
|
|
|
+ font_ptr = bmp_font->bmp + (94 * (sect - 1) + (index - 1)) * font_bytes;
|
|
|
/* draw word */
|
|
|
for (i=0; i < h; i ++)
|
|
|
{
|
|
|
for (j=0; j < word_bytes; j++)
|
|
|
for (k=0; k < 8; k++)
|
|
|
{
|
|
|
- if ( ((font_ptr[i*2 + j] >> (7-k)) & 0x01) != 0 &&
|
|
|
+ if ( ((font_ptr[i*word_bytes + j] >> (7-k)) & 0x01) != 0 &&
|
|
|
(rect->x1 + 8 * j + k < rect->x2))
|
|
|
{
|
|
|
rtgui_dc_draw_point(dc, rect->x1 + 8*j + k, rect->y1 + i);
|