diff options
author | Filippos Karapetis | 2011-10-08 19:11:14 +0300 |
---|---|---|
committer | Filippos Karapetis | 2011-10-08 19:11:14 +0300 |
commit | 227e69ef08105ac9af64374fd8333a96078e194d (patch) | |
tree | a1c9bc3f5744883cb63be67489a970fc9febbab6 | |
parent | 4ad2ebd9959a8413c0d00cd7498ac4166edfe886 (diff) | |
download | scummvm-rg350-227e69ef08105ac9af64374fd8333a96078e194d.tar.gz scummvm-rg350-227e69ef08105ac9af64374fd8333a96078e194d.tar.bz2 scummvm-rg350-227e69ef08105ac9af64374fd8333a96078e194d.zip |
SCI2+: Fixed the implementation of kTextSize(), removing some hacks
Thanks to lskovlun for the fix
-rw-r--r-- | engines/sci/engine/kgraphics.cpp | 9 | ||||
-rw-r--r-- | engines/sci/graphics/text32.cpp | 16 |
2 files changed, 9 insertions, 16 deletions
diff --git a/engines/sci/engine/kgraphics.cpp b/engines/sci/engine/kgraphics.cpp index 83eb94195b..ec0b4a8756 100644 --- a/engines/sci/engine/kgraphics.cpp +++ b/engines/sci/engine/kgraphics.cpp @@ -379,8 +379,13 @@ reg_t kTextSize(EngineState *s, int argc, reg_t *argv) { } debugC(kDebugLevelStrings, "GetTextSize '%s' -> %dx%d", text.c_str(), textWidth, textHeight); - dest[2] = make_reg(0, textHeight); - dest[3] = make_reg(0, textWidth); + if (getSciVersion() <= SCI_VERSION_1_1) { + dest[2] = make_reg(0, textHeight); + dest[3] = make_reg(0, textWidth); + } else { + dest[2] = make_reg(0, textWidth); + dest[3] = make_reg(0, textHeight); + } return s->r_acc; } diff --git a/engines/sci/graphics/text32.cpp b/engines/sci/graphics/text32.cpp index f13a56fa17..82740c0ad9 100644 --- a/engines/sci/graphics/text32.cpp +++ b/engines/sci/graphics/text32.cpp @@ -94,15 +94,8 @@ void GfxText32::drawTextBitmap(reg_t textObject, uint16 textX, uint16 textY, uin while (*txt) { charCount = GetLongest(txt, maxWidth, font); - if (charCount == 0) { - // If the text does not fit inside the given plane, use the - // whole screen. - // TODO/FIXME: Is this really needed? Perhaps some other - // functionality is missing instead? - charCount = GetLongest(txt, _screen->getWidth() - textX, font); - if (charCount == 0) - break; - } + if (charCount == 0) + break; uint16 curX = textX; @@ -248,11 +241,6 @@ void GfxText32::kernelTextSize(const char *text, int16 font, int16 maxWidth, int Size(rect, text, font, maxWidth); *textWidth = rect.width(); *textHeight = rect.height(); - - // TODO: Setting textWidth properly changes the subtitle plane top to 0. - // I have no idea why, so we currently hack in the old behavior here. - *textWidth = 0; - *textHeight = 0; } void GfxText32::StringWidth(const char *str, GuiResourceId fontId, int16 &textWidth, int16 &textHeight) { |