aboutsummaryrefslogtreecommitdiff
path: root/engines/titanic
diff options
context:
space:
mode:
Diffstat (limited to 'engines/titanic')
-rw-r--r--engines/titanic/support/font.cpp22
-rw-r--r--engines/titanic/support/font.h7
2 files changed, 28 insertions, 1 deletions
diff --git a/engines/titanic/support/font.cpp b/engines/titanic/support/font.cpp
index 3b48e5e301..6636a84f22 100644
--- a/engines/titanic/support/font.cpp
+++ b/engines/titanic/support/font.cpp
@@ -66,4 +66,26 @@ void STFont::writeString(int maxWidth, const CString &text, int *v1, int *v2) {
warning("TODO: STFont::writeString");
}
+int STFont::stringWidth(const CString &text) const {
+ if (text.empty())
+ return 0;
+
+ const char *srcP = text.c_str();
+ int total = 0;
+ char c;
+ while (c = *srcP++) {
+ if (c == 26) {
+ // Skip over command parameter bytes
+ srcP += 3;
+ } else if (c == 27) {
+ // Skip over command parameter bytes
+ srcP += 4;
+ } else if (c != '\n') {
+ total += _chars[c]._charWidth;
+ }
+ }
+
+ return total;
+}
+
} // End of namespace Titanic
diff --git a/engines/titanic/support/font.h b/engines/titanic/support/font.h
index 0fff5125df..c41f4dc1e0 100644
--- a/engines/titanic/support/font.h
+++ b/engines/titanic/support/font.h
@@ -39,7 +39,7 @@ public:
size_t _dataSize;
int _field8;
int _maxCharWidth;
- Common::Array<CharEntry> _chars;
+ CharEntry _chars[256];
int _field810;
int _field814;
int _field818;
@@ -53,6 +53,11 @@ public:
void load(int fontNumber);
/**
+ * Return the width in pixels of the specified text
+ */
+ int stringWidth(const CString &text) const;
+
+ /**
* Write out a string
* TODO: Verify this
*/