diff options
| author | Jens Arnold <amiconn@rockbox.org> | 2008-12-28 20:12:12 +0000 |
|---|---|---|
| committer | Jens Arnold <amiconn@rockbox.org> | 2008-12-28 20:12:12 +0000 |
| commit | 9bf20486a859b933807b54c73735f03c6c6717df (patch) | |
| tree | 9066c257fbfa595c625cdd654177da9a6ee1d1a2 /apps/plugins/lib | |
| parent | 11d53509771ae7069bba5ca0efea329eca9e0e04 (diff) | |
| download | rockbox-9bf20486a859b933807b54c73735f03c6c6717df.zip rockbox-9bf20486a859b933807b54c73735f03c6c6717df.tar.gz rockbox-9bf20486a859b933807b54c73735f03c6c6717df.tar.bz2 rockbox-9bf20486a859b933807b54c73735f03c6c6717df.tar.xz | |
Make the greylib text output functions handle unicode. Fixes non-working umlauts etc in greyscale pictureflow.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19607 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/lib')
| -rw-r--r-- | apps/plugins/lib/grey_draw.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/apps/plugins/lib/grey_draw.c b/apps/plugins/lib/grey_draw.c index 51d340d..5879b8e 100644 --- a/apps/plugins/lib/grey_draw.c +++ b/apps/plugins/lib/grey_draw.c @@ -534,20 +534,18 @@ void grey_gray_bitmap(const unsigned char *src, int x, int y, int width, void grey_putsxyofs(int x, int y, int ofs, const unsigned char *str) { int ch; + unsigned short *ucs; struct font* pf = _grey_info.rb->font_get(_grey_info.curfont); + + ucs = _grey_info.rb->bidi_l2v(str, 1); - while ((ch = *str++) != '\0' && x < _grey_info.width) + while ((ch = *ucs++) != 0 && x < _grey_info.width) { int width; const unsigned char *bits; - /* check input range */ - if (ch < pf->firstchar || ch >= pf->firstchar+pf->size) - ch = pf->defaultchar; - ch -= pf->firstchar; - /* get proportional width and glyph bits */ - width = pf->width ? pf->width[ch] : pf->maxwidth; + width = _grey_info.rb->font_get_width(pf, ch); if (ofs > width) { @@ -555,8 +553,7 @@ void grey_putsxyofs(int x, int y, int ofs, const unsigned char *str) continue; } - bits = pf->bits + (pf->offset ? - pf->offset[ch] : (((pf->height + 7) >> 3) * pf->maxwidth * ch)); + bits = _grey_info.rb->font_get_bits(pf, ch); grey_mono_bitmap_part(bits, ofs, 0, width, x, y, width - ofs, pf->height); |