From ebdc773247fb1e6a41f58ee8336986dcdc8e75d6 Mon Sep 17 00:00:00 2001 From: Paul Gilbert Date: Sun, 3 Apr 2016 18:10:25 -0400 Subject: TITANIC: Implement font loading --- engines/titanic/support/font.cpp | 22 ++++++++++++++++++++++ engines/titanic/support/font.h | 7 ++++++- 2 files changed, 28 insertions(+), 1 deletion(-) (limited to 'engines/titanic') 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 _chars; + CharEntry _chars[256]; int _field810; int _field814; int _field818; @@ -52,6 +52,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 -- cgit v1.2.3