From 9bf20486a859b933807b54c73735f03c6c6717df Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Sun, 28 Dec 2008 20:12:12 +0000 Subject: 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 --- apps/plugins/lib/grey_draw.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/apps/plugins/lib/grey_draw.c b/apps/plugins/lib/grey_draw.c index 51d340dd7f..5879b8e35a 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); -- cgit v1.2.3