aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilippos Karapetis2011-10-08 19:11:14 +0300
committerFilippos Karapetis2011-10-08 19:11:14 +0300
commit227e69ef08105ac9af64374fd8333a96078e194d (patch)
treea1c9bc3f5744883cb63be67489a970fc9febbab6
parent4ad2ebd9959a8413c0d00cd7498ac4166edfe886 (diff)
downloadscummvm-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.cpp9
-rw-r--r--engines/sci/graphics/text32.cpp16
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) {