diff options
| author | Jens Arnold <amiconn@rockbox.org> | 2004-05-14 23:53:25 +0000 |
|---|---|---|
| committer | Jens Arnold <amiconn@rockbox.org> | 2004-05-14 23:53:25 +0000 |
| commit | 36764c53190c893503a1b895a7d4a6ba21fa18db (patch) | |
| tree | 39e0c4c748d36fcc9f604df6b4c437e3f58917ad | |
| parent | 89500ae5e26d87072e5c7e5eb156019681b6405e (diff) | |
| download | rockbox-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.c | 25 |
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; |