summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2004-05-14 23:53:25 +0000
committerJens Arnold <amiconn@rockbox.org>2004-05-14 23:53:25 +0000
commit36764c53190c893503a1b895a7d4a6ba21fa18db (patch)
tree39e0c4c748d36fcc9f604df6b4c437e3f58917ad
parent89500ae5e26d87072e5c7e5eb156019681b6405e (diff)
downloadrockbox-36764c53190c893503a1b895a7d4a6ba21fa18db.zip
rockbox-36764c53190c893503a1b895a7d4a6ba21fa18db.tar.gz
rockbox-36764c53190c893503a1b895a7d4a6ba21fa18db.tar.bz2
rockbox-36764c53190c893503a1b895a7d4a6ba21fa18db.tar.xz
Fixed lcd_putsxyofs() for the new lcd_bitmap()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4623 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--firmware/drivers/lcd-recorder.c25
1 files changed, 18 insertions, 7 deletions
diff --git a/firmware/drivers/lcd-recorder.c b/firmware/drivers/lcd-recorder.c
index 99887b5..67ea343 100644
--- a/firmware/drivers/lcd-recorder.c
+++ b/firmware/drivers/lcd-recorder.c
@@ -391,7 +391,7 @@ static void lcd_putsxyofs(int x, int y, int ofs, unsigned char *str)
while ((ch = *str++) != '\0' && x < LCD_WIDTH)
{
- int width;
+ int gwidth, width;
/* check input range */
if (ch < pf->firstchar || ch >= pf->firstchar+pf->size)
@@ -403,8 +403,8 @@ static void lcd_putsxyofs(int x, int y, int ofs, unsigned char *str)
break;
/* get proportional width and glyph bits */
- width = pf->width ? pf->width[ch] : pf->maxwidth;
- width = MIN (width, LCD_WIDTH - x);
+ gwidth = pf->width ? pf->width[ch] : pf->maxwidth;
+ width = MIN (gwidth, LCD_WIDTH - x);
if (ofs != 0)
{
@@ -418,11 +418,22 @@ static void lcd_putsxyofs(int x, int y, int ofs, unsigned char *str)
if (width > 0)
{
- int rows = (pf->height + 7) / 8;
- bitmap_t* bits = pf->bits +
+ int i;
+ bitmap_t* bits = pf->bits +
(pf->offset ? pf->offset[ch] : (pf->height * ch));
- lcd_bitmap (((unsigned char*) bits) + ofs*rows, x, y,
- width, pf->height, true);
+
+ if (ofs != 0)
+ {
+ for (i = 0; i < pf->height; i += 8)
+ {
+ lcd_bitmap (((unsigned char*) bits) + ofs, x, y + i, width,
+ MIN(8, pf->height - i), true);
+ ((unsigned char *)bits) += gwidth;
+ }
+ }
+ else
+ lcd_bitmap ((unsigned char*) bits, x, y, gwidth,
+ pf->height, true);
x += width;
}
ofs = 0;