From f4fe0b008fa564a59dddfc59af9385fd3cd958d0 Mon Sep 17 00:00:00 2001 From: Marisa-Chan Date: Fri, 19 Dec 2014 10:46:43 +0600 Subject: ZVISION: Delete unused code --- engines/zvision/graphics/truetype_font.cpp | 76 ----------- engines/zvision/graphics/truetype_font.h | 39 ------ engines/zvision/text/string_manager.cpp | 202 +---------------------------- engines/zvision/text/string_manager.h | 25 ---- engines/zvision/text/text.h | 4 - 5 files changed, 2 insertions(+), 344 deletions(-) (limited to 'engines') diff --git a/engines/zvision/graphics/truetype_font.cpp b/engines/zvision/graphics/truetype_font.cpp index 1a0e92087c..2dbd7ca358 100644 --- a/engines/zvision/graphics/truetype_font.cpp +++ b/engines/zvision/graphics/truetype_font.cpp @@ -36,82 +36,6 @@ namespace ZVision { -TruetypeFont::TruetypeFont(ZVision *engine, int32 fontHeight) - : _engine(engine), - _fontHeight(fontHeight), - _font(0), - _lineHeight(0), - _maxCharWidth(0), - _maxCharHeight(0) { -} - -TruetypeFont::~TruetypeFont(void) { - delete _font; -} - -bool TruetypeFont::loadFile(const Common::String &filename) { - Common::File file; - - bool fileOpened = false; - if (!Common::File::exists(filename)) { - debug("TTF font file %s was not found. Reverting to arial.ttf", filename.c_str()); - fileOpened = file.open("arial.ttf"); - } else { - fileOpened = file.open(filename); - } - - if (!fileOpened) { - debug("TTF file could not be opened"); - return false; - } - - _font = Graphics::loadTTFFont(file, _fontHeight); - _lineHeight = _font->getFontHeight(); - - return true; -} - -Graphics::Surface *TruetypeFont::drawTextToSurface(const Common::String &text, uint16 textColor, int maxWidth, int maxHeight, Graphics::TextAlign align, bool wrap) { - if (text.equals("")) { - return nullptr; - } - - Graphics::Surface *surface = new Graphics::Surface(); - - if (!wrap) { - int width = MIN(_font->getStringWidth(text), maxWidth); - surface->create(width, _lineHeight, Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0)); - // TODO: Add better alpha support by getting the pixels from the backbuffer. - // However doing that requires some kind of caching system so future text doesn't try to use this text as it's alpha background. - surface->fillRect(Common::Rect(0, 0, surface->w, surface->h), 0); - - _font->drawString(surface, text, 0, 0, maxWidth, textColor, align); - return surface; - } - - Common::Array lines; - _font->wordWrapText(text, maxWidth, lines); - - while (maxHeight > 0 && (int)lines.size() * _lineHeight > maxHeight) { - lines.pop_back(); - } - if (lines.size() == 0) { - delete surface; - return nullptr; - } - - surface->create(maxWidth, lines.size() * _lineHeight, Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0)); - surface->fillRect(Common::Rect(0, 0, surface->w, surface->h), 0); - - int heightOffset = 0; - for (Common::Array::iterator it = lines.begin(); it != lines.end(); it++) { - _font->drawString(surface, *it, 0, 0 + heightOffset, maxWidth, textColor, align); - heightOffset += _lineHeight; - } - - return surface; -} - StyledTTFont::StyledTTFont(ZVision *engine) { _engine = engine; _style = 0; diff --git a/engines/zvision/graphics/truetype_font.h b/engines/zvision/graphics/truetype_font.h index 30ef1c73a3..b5fac4af8a 100644 --- a/engines/zvision/graphics/truetype_font.h +++ b/engines/zvision/graphics/truetype_font.h @@ -36,45 +36,6 @@ namespace ZVision { class ZVision; -class TruetypeFont { -public: - TruetypeFont(ZVision *engine, int32 fontHeight); - ~TruetypeFont(); - -private: - ZVision *_engine; - Graphics::Font *_font; - int _lineHeight; - - size_t _maxCharWidth; - size_t _maxCharHeight; - -public: - int32 _fontHeight; - -public: - /** - * Loads a .ttf file into memory. This must be called - * before any calls to drawTextToSurface - * - * @param filename The file name of the .ttf file to load - */ - bool loadFile(const Common::String &filename); - /** - * Renders the supplied text to a Surface using 0x0 as the - * background color. - * - * @param text The to render - * @param textColor The color to render the text with - * @param maxWidth The max width the text should take up. - * @param maxHeight The max height the text should take up. - * @param align The alignment of the text within the bounds of maxWidth - * @param wrap If true, any words extending past maxWidth will wrap to a new line. If false, ellipses will be rendered to show that the text didn't fit - * @return A Surface containing the rendered text - */ - Graphics::Surface *drawTextToSurface(const Common::String &text, uint16 textColor, int maxWidth, int maxHeight, Graphics::TextAlign align, bool wrap); -}; - // Styled TTF class StyledTTFont { public: diff --git a/engines/zvision/text/string_manager.cpp b/engines/zvision/text/string_manager.cpp index d275bc8769..ec10b6220c 100644 --- a/engines/zvision/text/string_manager.cpp +++ b/engines/zvision/text/string_manager.cpp @@ -30,7 +30,7 @@ #include "zvision/zvision.h" #include "zvision/file/search_manager.h" #include "zvision/text/string_manager.h" -#include "zvision/graphics/truetype_font.h" +#include "zvision/text/text.h" namespace ZVision { @@ -39,9 +39,7 @@ StringManager::StringManager(ZVision *engine) } StringManager::~StringManager() { - for (Common::HashMap::iterator iter = _fonts.begin(); iter != _fonts.end(); ++iter) { - delete iter->_value; - } + } void StringManager::initialize(ZVisionGameId gameId) { @@ -69,202 +67,6 @@ void StringManager::loadStrFile(const Common::String &fileName) { } } -void StringManager::parseStrFile(const Common::String &fileName) { - Common::File file; - if (!file.open(fileName)) { - warning("%s does not exist. String parsing failed", fileName.c_str()); - return; - } - - uint lineNumber = 0; - while (!file.eos()) { - _lastStyle.align = Graphics::kTextAlignLeft; - _lastStyle.color = 0; - _lastStyle.font = nullptr; - - Common::String asciiLine = readWideLine(file); - if (asciiLine.empty()) { - continue; - } - - char tagString[150]; - uint tagStringCursor = 0; - char textString[150]; - uint textStringCursor = 0; - bool inTag = false; - - for (uint i = 0; i < asciiLine.size(); ++i) { - switch (asciiLine[i]) { - case '<': - inTag = true; - if (!_inGameText[lineNumber].fragments.empty()) { - _inGameText[lineNumber].fragments.back().text = Common::String(textString, textStringCursor); - textStringCursor = 0; - } - break; - case '>': - inTag = false; - parseTag(Common::String(tagString, tagStringCursor), lineNumber); - tagStringCursor = 0; - break; - default: - if (inTag) { - tagString[tagStringCursor] = asciiLine[i]; - tagStringCursor++; - } else { - textString[textStringCursor] = asciiLine[i]; - textStringCursor++; - } - break; - } - } - - if (textStringCursor > 0) { - _inGameText[lineNumber].fragments.back().text = Common::String(textString, textStringCursor); - } - - lineNumber++; - assert(lineNumber <= NUM_TEXT_LINES); - } -} - -void StringManager::parseTag(const Common::String &tagString, uint lineNumber) { - Common::StringTokenizer tokenizer(tagString); - - Common::String token = tokenizer.nextToken(); - - Common::String fontName; - bool bold = false; - Graphics::TextAlign align = _lastStyle.align; - int point = _lastStyle.font != nullptr ? _lastStyle.font->_fontHeight : 12; - int red = 0; - int green = 0; - int blue = 0; - - while (!token.empty()) { - if (token.matchString("font", true)) { - fontName = tokenizer.nextToken(); - } else if (token.matchString("bold", true)) { - token = tokenizer.nextToken(); - if (token.matchString("on", false)) { - bold = true; - } - } else if (token.matchString("justify", true)) { - token = tokenizer.nextToken(); - if (token.matchString("center", false)) { - align = Graphics::kTextAlignCenter; - } else if (token.matchString("right", false)) { - align = Graphics::kTextAlignRight; - } - } else if (token.matchString("point", true)) { - point = atoi(tokenizer.nextToken().c_str()); - } else if (token.matchString("red", true)) { - red = atoi(tokenizer.nextToken().c_str()); - } else if (token.matchString("green", true)) { - green = atoi(tokenizer.nextToken().c_str()); - } else if (token.matchString("blue", true)) { - blue = atoi(tokenizer.nextToken().c_str()); - } - - token = tokenizer.nextToken(); - } - - TextFragment fragment; - - if (fontName.empty()) { - fragment.style.font = _lastStyle.font; - } else { - Common::String newFontName; - if (fontName.matchString("*times new roman*", true)) { - if (bold) { - newFontName = "timesbd.ttf"; - } else { - newFontName = "times.ttf"; - } - } else if (fontName.matchString("*courier new*", true)) { - if (bold) { - newFontName = "courbd.ttf"; - } else { - newFontName = "cour.ttf"; - } - } else if (fontName.matchString("*century schoolbook*", true)) { - if (bold) { - newFontName = "censcbkbd.ttf"; - } else { - newFontName = "censcbk.ttf"; - } - } else if (fontName.matchString("*garamond*", true)) { - if (bold) { - newFontName = "garabd.ttf"; - } else { - newFontName = "gara.ttf"; - } - } else { - debug("Could not identify font: %s. Reverting to Arial", fontName.c_str()); - if (bold) { - newFontName = "zorknorm.ttf"; - } else { - newFontName = "arial.ttf"; - } - } - - Common::String fontKey = Common::String::format("%s-%d", newFontName.c_str(), point); - if (_fonts.contains(fontKey)) { - fragment.style.font = _fonts[fontKey]; - } else { - fragment.style.font = new TruetypeFont(_engine, point); - fragment.style.font->loadFile(newFontName); - _fonts[fontKey] = fragment.style.font; - } - } - - fragment.style.align = align; - fragment.style.color = Graphics::ARGBToColor >(0, red, green, blue); - _inGameText[lineNumber].fragments.push_back(fragment); - - _lastStyle = fragment.style; -} - -Common::String StringManager::readWideLine(Common::SeekableReadStream &stream) { - Common::String asciiString; - - // Don't spam the user with warnings about UTF-16 support. - // Just do one warning per String - bool charOverflowWarning = false; - - uint16 value = stream.readUint16LE(); - while (!stream.eos()) { - // Check for CRLF - if (value == 0x0A0D) { - // Read in the extra NULL char - stream.readByte(); // \0 - // End of the line. Break - break; - } - - // Crush each octet pair to a single octet with a simple cast - if (value > 255) { - charOverflowWarning = true; - value = '?'; - } - char charValue = (char)value; - - asciiString += charValue; - - value = stream.readUint16LE(); - } - - if (charOverflowWarning) { - warning("UTF-16 is not supported. Characters greater than 255 are replaced with '?'"); - } - - return asciiString; -} - -StringManager::TextStyle StringManager::getTextStyle(uint stringNumber) { - return _inGameText[stringNumber].fragments.front().style; -} - const Common::String StringManager::getTextLine(uint stringNumber) { return _lines[stringNumber]; } diff --git a/engines/zvision/text/string_manager.h b/engines/zvision/text/string_manager.h index 8d6fbe67a6..b77ad65040 100644 --- a/engines/zvision/text/string_manager.h +++ b/engines/zvision/text/string_manager.h @@ -40,17 +40,6 @@ public: ~StringManager(); public: - struct TextStyle { - TruetypeFont *font; - uint16 color; // In RBG 565 - Graphics::TextAlign align; - }; - - struct TextFragment { - TextStyle style; - Common::String text; - }; - enum { ZVISION_STR_SAVEEXIST = 23, ZVISION_STR_SAVED = 4, @@ -59,10 +48,6 @@ public: }; private: - struct InGameText { - Common::List fragments; - }; - enum { NUM_TEXT_LINES = 56 // Max number of lines in a .str file. We hardcode this number because we know ZNem uses 42 strings and ZGI uses 56 }; @@ -71,22 +56,12 @@ private: ZVision *_engine; Common::String _lines[NUM_TEXT_LINES]; - InGameText _inGameText[NUM_TEXT_LINES]; - Common::HashMap _fonts; - - TextStyle _lastStyle; - public: void initialize(ZVisionGameId gameId); - StringManager::TextStyle getTextStyle(uint stringNumber); const Common::String getTextLine(uint stringNumber); private: void loadStrFile(const Common::String &fileName); - void parseStrFile(const Common::String &fileName); - void parseTag(const Common::String &tagString, uint lineNumber); - - static Common::String readWideLine(Common::SeekableReadStream &stream); }; } // End of namespace ZVision diff --git a/engines/zvision/text/text.h b/engines/zvision/text/text.h index 01c3fd760c..ecec3ccde6 100644 --- a/engines/zvision/text/text.h +++ b/engines/zvision/text/text.h @@ -28,10 +28,6 @@ #include "zvision/graphics/truetype_font.h" #include "zvision/zvision.h" -namespace Graphics { -class FontManager; -} - namespace ZVision { class ZVision; -- cgit v1.2.3