diff options
Diffstat (limited to 'engines/titanic')
-rw-r--r-- | engines/titanic/support/font.cpp | 22 | ||||
-rw-r--r-- | engines/titanic/support/font.h | 7 |
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 */ |