From 2991871d03a93e3ea543f23d10586d428ffbccc7 Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Thu, 26 Jan 2017 18:50:33 +0100 Subject: GRAPHICS: Refactor Mac font loading into per file method --- graphics/macgui/macfontmanager.cpp | 84 ++++++++++++++++++++------------------ 1 file changed, 44 insertions(+), 40 deletions(-) (limited to 'graphics/macgui/macfontmanager.cpp') 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::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 *assoc = fontFamily->getAssocTable(); + Common::MacResIDArray fonds = fontFile->getResIDArray(MKTAG('F','O','N','D')); + if (fonds.size() > 0) { + for (Common::Array::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 *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) { -- cgit v1.2.3