diff options
author | Einar Johan Trøan Sømåen | 2012-10-23 03:05:17 +0200 |
---|---|---|
committer | Einar Johan Trøan Sømåen | 2012-10-23 03:05:17 +0200 |
commit | 228785eda231837098b750076dea87348e050764 (patch) | |
tree | 75d52b7266e79e8b55db85ec7ccbeb68ccc5cdbe /engines | |
parent | 4aa1c63eb13f7f96f273b19842d73f88e4719f90 (diff) | |
download | scummvm-rg350-228785eda231837098b750076dea87348e050764.tar.gz scummvm-rg350-228785eda231837098b750076dea87348e050764.tar.bz2 scummvm-rg350-228785eda231837098b750076dea87348e050764.zip |
WINTERMUTE: Convert ' correctly from CP1252
Diffstat (limited to 'engines')
-rw-r--r-- | engines/wintermute/base/font/base_font_truetype.cpp | 5 | ||||
-rw-r--r-- | engines/wintermute/utils/string_util.cpp | 12 |
2 files changed, 11 insertions, 6 deletions
diff --git a/engines/wintermute/base/font/base_font_truetype.cpp b/engines/wintermute/base/font/base_font_truetype.cpp index 3219918e6d..f236329fcd 100644 --- a/engines/wintermute/base/font/base_font_truetype.cpp +++ b/engines/wintermute/base/font/base_font_truetype.cpp @@ -159,6 +159,11 @@ void BaseFontTT::drawText(const byte *text, int x, int y, int width, TTextAlign // TODO: Why do we still insist on Widestrings everywhere? /* if (_gameRef->_textEncoding == TEXT_UTF8) text = StringUtil::Utf8ToWide((char *)Text); else text = StringUtil::AnsiToWide((char *)Text);*/ + // HACK: J.U.L.I.A. uses CP1252, we need to fix that, + // And we still don't have any UTF8-support. + if (_gameRef->_textEncoding != TEXT_UTF8) { + textStr = StringUtil::ansiToWide((char *)text); + } if (maxLength >= 0 && textStr.size() > (uint32)maxLength) { textStr = Common::String(textStr.c_str(), (uint32)maxLength); diff --git a/engines/wintermute/utils/string_util.cpp b/engines/wintermute/utils/string_util.cpp index 2c3be8c2f5..7b3b0e1297 100644 --- a/engines/wintermute/utils/string_util.cpp +++ b/engines/wintermute/utils/string_util.cpp @@ -148,11 +148,11 @@ Utf8String StringUtil::wideToUtf8(const WideString &WideStr) { // Currently this only does Ansi->ISO 8859, and only for carets. char simpleAnsiToWide(const AnsiString &str, uint32 &offset) { - char c = str[offset]; + byte c = str[offset]; - if (c == 92) { + if (c == 146) { offset++; - return '\''; + return 39; // Replace right-quote with apostrophe } else { offset++; return c; @@ -162,11 +162,11 @@ char simpleAnsiToWide(const AnsiString &str, uint32 &offset) { ////////////////////////////////////////////////////////////////////////// WideString StringUtil::ansiToWide(const AnsiString &str) { // TODO: This function gets called a lot, so warnings like these drown out the usefull information - /*Common::String converted = ""; + Common::String converted = ""; uint32 index = 0; while (index != str.size()) { converted += simpleAnsiToWide(str, index); - }*/ + } // using default os locale! /* setlocale(LC_CTYPE, ""); @@ -176,7 +176,7 @@ WideString StringUtil::ansiToWide(const AnsiString &str) { WideString ResultString(wstr); delete[] wstr; return ResultString;*/ - return WideString(str); + return WideString(converted); } ////////////////////////////////////////////////////////////////////////// |