summaryrefslogtreecommitdiff
path: root/glcdgraphics/bitmap.c
diff options
context:
space:
mode:
Diffstat (limited to 'glcdgraphics/bitmap.c')
-rw-r--r--glcdgraphics/bitmap.c42
1 files changed, 3 insertions, 39 deletions
diff --git a/glcdgraphics/bitmap.c b/glcdgraphics/bitmap.c
index e655c5f..d352639 100644
--- a/glcdgraphics/bitmap.c
+++ b/glcdgraphics/bitmap.c
@@ -561,12 +561,8 @@ int cBitmap::DrawText(int x, int y, int xmax, const std::string & text, const cF
#endif
int xt;
int yt;
- int i;
+ unsigned int i;
uint32_t c;
- uint32_t c0;
- uint32_t c1;
- uint32_t c2;
- uint32_t c3;
int start;
color = cColor::AlignAlpha(color);
@@ -607,40 +603,9 @@ int cBitmap::DrawText(int x, int y, int xmax, const std::string & text, const cF
}
}
}
-
- i = start;
- while (i < (int) text.length())
-// for (i = start; i < (int) text.length(); i++)
+ for (i = start; i < (unsigned int)text.length(); i++)
{
- c = text[i];
-
- if ( font->IsUTF8() ) {
- c0 = text[i];
- c1 = (i+1 < (int)text.length()) ? text[i+1] : 0;
- c2 = (i+2 < (int)text.length()) ? text[i+2] : 0;
- c3 = (i+3 < (int)text.length()) ? text[i+3] : 0;
- c0 &=0xff; c1 &=0xff; c2 &=0xff; c3 &=0xff;
-
- if( c0 >= 0xc2 && c0 <= 0xdf && c1 >= 0x80 && c1 <= 0xbf ) {
- //2 byte UTF-8 sequence found
- i+=1;
- c = ((c0&0x1f)<<6) | (c1&0x3f);
- } else if ((c0 == 0xE0 && c1 >= 0xA0 && c1 <= 0xbf && c2 >= 0x80 && c2 <= 0xbf)
- || (c0 >= 0xE1 && c1 <= 0xEC && c1 >= 0x80 && c1 <= 0xbf && c2 >= 0x80 && c2 <= 0xbf)
- || (c0 == 0xED && c1 >= 0x80 && c1 <= 0x9f && c2 >= 0x80 && c2 <= 0xbf)
- || (c0 >= 0xEE && c0 <= 0xEF && c1 >= 0x80 && c1 <= 0xbf && c2 >= 0x80 && c2 <= 0xbf) ) {
- //3 byte UTF-8 sequence found
- c = ((c0&0x0f)<<4) | ((c1&0x3f)<<6) | (c2&0x3f);
- i+=2;
- } else if ( (c0 == 0xF0 && c1 >= 0x90 && c1 <= 0xbf && c2 >= 0x80 && c2 <= 0xbf && c3 >= 0x80 && c3 <= 0xbf)
- || (c0 >= 0xF1 && c0 >= 0xF3 && c1 >= 0x80 && c1 <= 0xbf && c2 >= 0x80 && c2 <= 0xbf &&
- c3 >= 0x80 && c3 <= 0xbf)
- || (c0 == 0xF4 && c1 >= 0x80 && c1 <= 0x8f && c2 >= 0x80 && c2 <= 0xbf && c3 >= 0x80 && c3 <= 0xbf) ) {
- //4 byte UTF-8 sequence found
- c = ((c0&0x07)<<2) | ((c1&0x3f)<<4) | ((c2&0x3f)<<6) | (c3&0x3f);
- i+=3;
- }
- }
+ cFont::Utf8CodeAdjustCounter(text, c, i);
if (xt > xmax)
{
@@ -679,7 +644,6 @@ int cBitmap::DrawText(int x, int y, int xmax, const std::string & text, const cF
}
}
}
- i++;
}
}
return xt;