aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEugene Sandulenko2018-06-18 00:08:11 +0200
committerEugene Sandulenko2018-06-18 00:08:11 +0200
commit0e55160cd032eb91da1f5e1f0694903bc52cf8aa (patch)
treeae07332b47fb27949e85c417dbb8b8a5277042b9
parent79e158671e84b532687637184ecfbd65b827a81d (diff)
downloadscummvm-rg350-0e55160cd032eb91da1f5e1f0694903bc52cf8aa.tar.gz
scummvm-rg350-0e55160cd032eb91da1f5e1f0694903bc52cf8aa.tar.bz2
scummvm-rg350-0e55160cd032eb91da1f5e1f0694903bc52cf8aa.zip
ZVISION: Reuse UTF8->UTF32 converter from Common
-rw-r--r--engines/zvision/text/truetype_font.cpp32
-rw-r--r--engines/zvision/text/truetype_font.h2
2 files changed, 1 insertions, 33 deletions
diff --git a/engines/zvision/text/truetype_font.cpp b/engines/zvision/text/truetype_font.cpp
index 7848de5434..2bbfe8a706 100644
--- a/engines/zvision/text/truetype_font.cpp
+++ b/engines/zvision/text/truetype_font.cpp
@@ -165,36 +165,6 @@ int StyledTTFont::getKerningOffset(byte left, byte right) {
return 0;
}
-Common::U32String StyledTTFont::convertUtf8ToUtf32(const Common::String &str) {
- // The String class, and therefore the Font class as well, assume one
- // character is one byte, but in this case it's actually an UTF-8
- // string with up to 4 bytes per character. To work around this,
- // convert it to an U32String before drawing it, because our Font class
- // can handle that.
- Common::U32String u32str;
- uint i = 0;
- while (i < str.size()) {
- uint32 chr = 0;
- if ((str[i] & 0xF8) == 0xF0) {
- chr |= (str[i++] & 0x07) << 18;
- chr |= (str[i++] & 0x3F) << 12;
- chr |= (str[i++] & 0x3F) << 6;
- chr |= (str[i++] & 0x3F);
- } else if ((str[i] & 0xF0) == 0xE0) {
- chr |= (str[i++] & 0x0F) << 12;
- chr |= (str[i++] & 0x3F) << 6;
- chr |= (str[i++] & 0x3F);
- } else if ((str[i] & 0xE0) == 0xC0) {
- chr |= (str[i++] & 0x1F) << 6;
- chr |= (str[i++] & 0x3F);
- } else {
- chr = (str[i++] & 0x7F);
- }
- u32str += chr;
- }
- return u32str;
-}
-
void StyledTTFont::drawChar(Graphics::Surface *dst, byte chr, int x, int y, uint32 color) {
if (_font) {
_font->drawChar(dst, chr, x, y, color);
@@ -213,7 +183,7 @@ void StyledTTFont::drawChar(Graphics::Surface *dst, byte chr, int x, int y, uint
void StyledTTFont::drawString(Graphics::Surface *dst, const Common::String &str, int x, int y, int w, uint32 color, Graphics::TextAlign align) {
if (_font) {
- Common::U32String u32str = convertUtf8ToUtf32(str);
+ Common::U32String u32str = Common::convertUtf8ToUtf32(str);
_font->drawString(dst, u32str, x, y, w, color, align);
if (_style & TTF_STYLE_UNDERLINE) {
int16 pos = (int16)floor(_font->getFontHeight() * 0.87);
diff --git a/engines/zvision/text/truetype_font.h b/engines/zvision/text/truetype_font.h
index 6abe05cda6..9ef0d39d9d 100644
--- a/engines/zvision/text/truetype_font.h
+++ b/engines/zvision/text/truetype_font.h
@@ -75,8 +75,6 @@ public:
int getCharWidth(byte chr);
int getKerningOffset(byte left, byte right);
- Common::U32String convertUtf8ToUtf32(const Common::String &str);
-
void drawChar(Graphics::Surface *dst, byte chr, int x, int y, uint32 color);
void drawString(Graphics::Surface *dst, const Common::String &str, int x, int y, int w, uint32 color, Graphics::TextAlign align = Graphics::kTextAlignLeft);