aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorColin Snover2016-03-10 20:07:36 -0600
committerColin Snover2016-03-10 20:07:36 -0600
commit22097018bb348b4c29def9f1d2de4d802661a6b0 (patch)
treed98c3d25bbb64830747e8cce692a51ee76cb021d /engines
parent7105fb23a84f6464149ab031a6eff3ce69bffdff (diff)
downloadscummvm-rg350-22097018bb348b4c29def9f1d2de4d802661a6b0.tar.gz
scummvm-rg350-22097018bb348b4c29def9f1d2de4d802661a6b0.tar.bz2
scummvm-rg350-22097018bb348b4c29def9f1d2de4d802661a6b0.zip
SCI32: Implement GfxText32::getTextCount
Diffstat (limited to 'engines')
-rw-r--r--engines/sci/graphics/text32.cpp29
-rw-r--r--engines/sci/graphics/text32.h14
2 files changed, 43 insertions, 0 deletions
diff --git a/engines/sci/graphics/text32.cpp b/engines/sci/graphics/text32.cpp
index fa19047a4c..99ffc6e328 100644
--- a/engines/sci/graphics/text32.cpp
+++ b/engines/sci/graphics/text32.cpp
@@ -625,4 +625,33 @@ int16 GfxText32::getStringWidth(const Common::String &text) {
return getTextWidth(text, 0, 10000);
}
+int16 GfxText32::getTextCount(const Common::String &text, const uint index, const Common::Rect &textRect, const bool doScaling) {
+ const int16 scriptWidth = g_sci->_gfxFrameout->getCurrentBuffer().scriptWidth;
+ const int16 scriptHeight = g_sci->_gfxFrameout->getCurrentBuffer().scriptHeight;
+
+ Common::Rect scaledRect(textRect);
+ if (doScaling) {
+ mulinc(scaledRect, Ratio(_scaledWidth, scriptWidth), Ratio(_scaledHeight, scriptHeight));
+ }
+
+ Common::String oldText = _text;
+ _text = text;
+
+ uint charIndex = index;
+ int16 maxWidth = scaledRect.width();
+ int16 lineCount = (scaledRect.height() - 2) / _font->getHeight();
+ while (lineCount--) {
+ getLongest(&charIndex, maxWidth);
+ }
+
+ _text = oldText;
+ return charIndex - index;
+}
+
+int16 GfxText32::getTextCount(const Common::String &text, const uint index, const GuiResourceId fontId, const Common::Rect &textRect, const bool doScaling) {
+ setFont(fontId);
+ return getTextCount(text, index, textRect, doScaling);
+}
+
+
} // End of namespace Sci
diff --git a/engines/sci/graphics/text32.h b/engines/sci/graphics/text32.h
index 472d5e0956..5768ea0c59 100644
--- a/engines/sci/graphics/text32.h
+++ b/engines/sci/graphics/text32.h
@@ -458,6 +458,20 @@ public:
* Retrieves the width of a line of text.
*/
int16 getStringWidth(const Common::String &text);
+
+ /**
+ * Gets the number of characters of `text`, starting
+ * from `index`, that can be safely rendered into
+ * `textRect`.
+ */
+ int16 getTextCount(const Common::String &text, const uint index, const Common::Rect &textRect, const bool doScaling);
+
+ /**
+ * Gets the number of characters of `text`, starting
+ * from `index`, that can be safely rendered into
+ * `textRect` using the given font.
+ */
+ int16 getTextCount(const Common::String &text, const uint index, const GuiResourceId fontId, const Common::Rect &textRect, const bool doScaling);
};
} // End of namespace Sci