aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Schickel2012-01-07 00:34:03 +0100
committerJohannes Schickel2012-01-07 00:35:26 +0100
commit0d3e79cf77af364063944b5884c34c9da7c0466d (patch)
tree19a4f4f5e505e49a76710f62447d495d8c92a9fa
parent309e9a855d24c66211522445f1b25b54cfe642eb (diff)
downloadscummvm-rg350-0d3e79cf77af364063944b5884c34c9da7c0466d.tar.gz
scummvm-rg350-0d3e79cf77af364063944b5884c34c9da7c0466d.tar.bz2
scummvm-rg350-0d3e79cf77af364063944b5884c34c9da7c0466d.zip
GUI: Simplify font loading a bit more.
-rw-r--r--gui/ThemeEngine.cpp41
1 files changed, 16 insertions, 25 deletions
diff --git a/gui/ThemeEngine.cpp b/gui/ThemeEngine.cpp
index 7678efb648..ae93154419 100644
--- a/gui/ThemeEngine.cpp
+++ b/gui/ThemeEngine.cpp
@@ -570,35 +570,19 @@ bool ThemeEngine::addFont(TextData textId, const Common::String &file) {
_texts[textId]->_fontPtr = _font;
} else {
Common::String localized = FontMan.genLocalizedFontFilename(file);
- // Try built-in fonts
- _texts[textId]->_fontPtr = FontMan.getFontByName(localized);
+ // Try localized fonts
+ _texts[textId]->_fontPtr = loadFont(localized);
if (!_texts[textId]->_fontPtr) {
- // First try to load localized font
- _texts[textId]->_fontPtr = loadFont(localized);
+ // Try standard fonts
+ _texts[textId]->_fontPtr = loadFont(file);
- if (_texts[textId]->_fontPtr)
- FontMan.assignFontToName(localized, _texts[textId]->_fontPtr);
-
- // Fallback to non-localized font and default translation
- else {
- // Try built-in fonts
- _texts[textId]->_fontPtr = FontMan.getFontByName(file);
-
- // Try to load it
- if (!_texts[textId]->_fontPtr) {
- _texts[textId]->_fontPtr = loadFont(file);
-
- if (!_texts[textId]->_fontPtr)
- error("Couldn't load font '%s'", file.c_str());
-
- FontMan.assignFontToName(file, _texts[textId]->_fontPtr);
- }
+ if (!_texts[textId]->_fontPtr)
+ error("Couldn't load font '%s'", file.c_str());
#ifdef USE_TRANSLATION
- TransMan.setLanguage("C");
+ TransMan.setLanguage("C");
#endif
- warning("Failed to load localized font '%s'. Using non-localized font and default GUI language instead", localized.c_str());
- }
+ warning("Failed to load localized font '%s'. Using non-localized font and default GUI language instead", localized.c_str());
}
}
@@ -1402,7 +1386,11 @@ DrawData ThemeEngine::parseDrawDataId(const Common::String &name) const {
*********************************************************/
const Graphics::Font *ThemeEngine::loadFont(const Common::String &filename) {
- const Graphics::Font *font = 0;
+ // Try already loaded fonts.
+ const Graphics::Font *font = FontMan.getFontByName(filename);
+ if (font)
+ return font;
+
Common::String cacheFilename = genCacheFilename(filename);
Common::ArchiveMemberList members;
@@ -1428,6 +1416,9 @@ const Graphics::Font *ThemeEngine::loadFont(const Common::String &filename) {
break;
}
+ // If the font is successfully loaded store it in the font manager.
+ if (font)
+ FontMan.assignFontToName(filename, font);
return font;
}