diff options
-rw-r--r-- | graphics/macgui/macfontmanager.cpp | 84 | ||||
-rw-r--r-- | graphics/macgui/macfontmanager.h | 6 |
2 files changed, 50 insertions, 40 deletions
diff --git a/graphics/macgui/macfontmanager.cpp b/graphics/macgui/macfontmanager.cpp index 4c8b9eb06c..9d66e495ad 100644 --- a/graphics/macgui/macfontmanager.cpp +++ b/graphics/macgui/macfontmanager.cpp @@ -158,68 +158,72 @@ void MacFontManager::loadFonts() { for (Common::ArchiveMemberList::iterator it = list.begin(); it != list.end(); ++it) { Common::SeekableReadStream *stream = dat->createReadStreamForMember((*it)->getName()); - Common::MacResManager *fontFile = new Common::MacResManager(); + loadFontsFromStream(stream); + } - if (!fontFile->loadFromMacBinary(*stream)) - continue; + _builtInFonts = false; - Common::MacResIDArray fonds = fontFile->getResIDArray(MKTAG('F','O','N','D')); - if (fonds.size() > 0) { - for (Common::Array<uint16>::iterator iterator = fonds.begin(); iterator != fonds.end(); ++iterator) { - Common::SeekableReadStream *fond = fontFile->getResource(MKTAG('F', 'O', 'N', 'D'), *iterator); + delete dat; +} - Common::String familyName = fontFile->getResName(MKTAG('F', 'O', 'N', 'D'), *iterator); +void MacFontManager::loadFontsFromStream(Common::SeekableReadStream *stream) { + Common::MacResManager *fontFile = new Common::MacResManager(); - Graphics::MacFontFamily *fontFamily = new MacFontFamily(); - fontFamily->load(*fond); + if (!fontFile->loadFromMacBinary(*stream)) + return; - Common::Array<Graphics::MacFontFamily::AsscEntry> *assoc = fontFamily->getAssocTable(); + Common::MacResIDArray fonds = fontFile->getResIDArray(MKTAG('F','O','N','D')); + if (fonds.size() > 0) { + for (Common::Array<uint16>::iterator iterator = fonds.begin(); iterator != fonds.end(); ++iterator) { + Common::SeekableReadStream *fond = fontFile->getResource(MKTAG('F', 'O', 'N', 'D'), *iterator); - for (uint i = 0; i < assoc->size(); i++) { - debug("size: %d style: %d id: %d", (*assoc)[i]._fontSize, (*assoc)[i]._fontStyle, - (*assoc)[i]._fontID); + Common::String familyName = fontFile->getResName(MKTAG('F', 'O', 'N', 'D'), *iterator); - Common::SeekableReadStream *fontstream; - MacFont *macfont; - Graphics::MacFONTFont *font; + Graphics::MacFontFamily *fontFamily = new MacFontFamily(); + fontFamily->load(*fond); - fontstream = fontFile->getResource(MKTAG('N', 'F', 'N', 'T'), (*assoc)[i]._fontID); + Common::Array<Graphics::MacFontFamily::AsscEntry> *assoc = fontFamily->getAssocTable(); - if (!fontstream) - fontstream = fontFile->getResource(MKTAG('F', 'O', 'N', 'T'), (*assoc)[i]._fontID); + for (uint i = 0; i < assoc->size(); i++) { + debug("size: %d style: %d id: %d", (*assoc)[i]._fontSize, (*assoc)[i]._fontStyle, + (*assoc)[i]._fontID); - if (!fontstream) { - warning("Unknown FontId: %d", (*assoc)[i]._fontID); + Common::SeekableReadStream *fontstream; + MacFont *macfont; + Graphics::MacFONTFont *font; - continue; - } + fontstream = fontFile->getResource(MKTAG('N', 'F', 'N', 'T'), (*assoc)[i]._fontID); - font = new Graphics::MacFONTFont; - font->loadFont(*fontstream, fontFamily, (*assoc)[i]._fontSize, (*assoc)[i]._fontStyle); + if (!fontstream) + fontstream = fontFile->getResource(MKTAG('F', 'O', 'N', 'T'), (*assoc)[i]._fontID); - delete fontstream; + if (!fontstream) { + warning("Unknown FontId: %d", (*assoc)[i]._fontID); - Common::String fontName = Common::String::format("%s-%d-%d", familyName.c_str(), (*assoc)[i]._fontStyle, (*assoc)[i]._fontSize); + continue; + } - macfont = new MacFont(_fontNames.getVal(familyName, kMacFontNonStandard), (*assoc)[i]._fontSize, (*assoc)[i]._fontStyle); + font = new Graphics::MacFONTFont; + font->loadFont(*fontstream, fontFamily, (*assoc)[i]._fontSize, (*assoc)[i]._fontStyle); - FontMan.assignFontToName(fontName, font); - macfont->setFont(font); - _fontRegistry.setVal(fontName, macfont); + delete fontstream; - debug(2, " %s", fontName.c_str()); - } + Common::String fontName = Common::String::format("%s-%d-%d", familyName.c_str(), (*assoc)[i]._fontStyle, (*assoc)[i]._fontSize); - delete fond; + macfont = new MacFont(_fontNames.getVal(familyName, kMacFontNonStandard), (*assoc)[i]._fontSize, (*assoc)[i]._fontStyle); + + FontMan.assignFontToName(fontName, font); + macfont->setFont(font); + _fontRegistry.setVal(fontName, macfont); + + debug(2, " %s", fontName.c_str()); } - } - delete fontFile; + delete fond; + } } - _builtInFonts = false; - - delete dat; + delete fontFile; } const Font *MacFontManager::getFont(MacFont macFont) { diff --git a/graphics/macgui/macfontmanager.h b/graphics/macgui/macfontmanager.h index 8c1ed5025c..6d6122e2e7 100644 --- a/graphics/macgui/macfontmanager.h +++ b/graphics/macgui/macfontmanager.h @@ -25,6 +25,10 @@ #include "graphics/fontman.h" +namespace Common { + class SeekableReadStream; +} + namespace Graphics { class MacFONTFont; @@ -122,6 +126,8 @@ public: const char *getFontName(MacFont &font); int getFontIdByName(Common::String name); + void loadFontsFromStream(Common::SeekableReadStream *stream); + private: void loadFontsBDF(); void loadFonts(); |