aboutsummaryrefslogtreecommitdiff
path: root/saga/font.cpp
diff options
context:
space:
mode:
authorAndrew Kurushin2005-11-03 18:20:12 +0000
committerAndrew Kurushin2005-11-03 18:20:12 +0000
commit43a083a117a42879a18ea4c3a5e721d261fb8489 (patch)
tree8dfb8e3cad472c7b7fa928720d02af148b046eae /saga/font.cpp
parent7f691c3ca2068e708915b968a6f210ec205ce442 (diff)
downloadscummvm-rg350-43a083a117a42879a18ea4c3a5e721d261fb8489.tar.gz
scummvm-rg350-43a083a117a42879a18ea4c3a5e721d261fb8489.tar.bz2
scummvm-rg350-43a083a117a42879a18ea4c3a5e721d261fb8489.zip
-implement font substitution funcs
-move puzzle data to itedata svn-id: r19411
Diffstat (limited to 'saga/font.cpp')
-rw-r--r--saga/font.cpp74
1 files changed, 56 insertions, 18 deletions
diff --git a/saga/font.cpp b/saga/font.cpp
index 7cee8d9bf6..30943a7fd7 100644
--- a/saga/font.cpp
+++ b/saga/font.cpp
@@ -62,9 +62,6 @@ Font::~Font(void) {
}
}
-FontData *Font::getFont(FontId fontId) {
- return _fonts[fontId];
-}
void Font::loadFont(uint32 fontResourceId) {
FontData *font;
@@ -239,9 +236,9 @@ void Font::createOutline(FontData *font) {
}
// Returns the horizontal length in pixels of the graphical representation
-// of at most 'test_str_ct' characters of the string 'test_str', taking
+// of at most 'count' characters of the string 'text', taking
// into account any formatting options specified by 'flags'.
-// If 'test_str_ct' is 0, all characters of 'test_str' are counted.
+// If 'count' is 0, all characters of 'test' are counted.
int Font::getStringWidth(FontId fontId, const char *text, size_t count, FontEffectFlags flags) {
FontData *font;
size_t ct;
@@ -249,8 +246,7 @@ int Font::getStringWidth(FontId fontId, const char *text, size_t count, FontEffe
int ch;
const byte *txt;
- validate(fontId);
-
+
font = getFont(fontId);
txt = (const byte *) text;
@@ -270,23 +266,12 @@ int Font::getStringWidth(FontId fontId, const char *text, size_t count, FontEffe
return width;
}
-int Font::getHeight(FontId fontId) {
- FontData *font;
-
- validate(fontId);
-
- font = getFont(fontId);
-
- return font->normal.header.charHeight;
-}
void Font::draw(FontId fontId, Surface *ds, const char *text, size_t count, const Common::Point &point,
int color, int effectColor, FontEffectFlags flags) {
FontData *font;
Point offsetPoint(point);
- validate(fontId);
-
font = getFont(fontId);
if (flags & kFontOutline) {
@@ -639,4 +624,57 @@ void Font::textDrawRect(FontId fontId, Surface *ds, const char *text, const Comm
}
}
+FontId Font::knownFont2FontIdx(KnownFont font) {
+ FontId fontId = kSmallFont;
+
+ if (_vm->getGameType() == GType_ITE) {
+ switch (font)
+ {
+ case (kKnownFontSmall):
+ fontId = kSmallFont;
+ break;
+ case (kKnownFontMedium):
+ fontId = kMediumFont;
+ break;
+ case (kKnownFontBig):
+ fontId = kBigFont;
+ break;
+
+ case (kKnownFontVerb):
+ fontId = kSmallFont;
+ break;
+ case (kKnownFontScript):
+ fontId = kMediumFont;
+ break;
+ case (kKnownFontPause):
+ fontId = _vm->_font->valid(kBigFont) ? kBigFont : kMediumFont;
+ break;
+ }
+ } else if (_vm->getGameType() == GType_IHNM) {
+ switch (font)
+ {
+ case (kKnownFontSmall):
+ fontId = kSmallFont;
+ break;
+ case (kKnownFontMedium):
+ fontId = kMediumFont;
+ break;
+ case (kKnownFontBig):
+ fontId = kBigFont;
+ break;
+
+ case (kKnownFontVerb):
+ fontId = kIHNMFont8;
+ break;
+ case (kKnownFontScript):
+ fontId = kIHNMMainFont;
+ break;
+ case (kKnownFontPause):
+ fontId = kMediumFont; // unchecked
+ break;
+ }
+ }
+ return fontId;
+}
+
} // End of namespace Saga