diff options
author | Paul Gilbert | 2010-05-25 10:46:56 +0000 |
---|---|---|
committer | Paul Gilbert | 2010-05-25 10:46:56 +0000 |
commit | a83aafab545cbfdf47e5f724a856d1cbbb7914d0 (patch) | |
tree | da0e671d752d2692985c12cfa6f5ef806fbe0cfd /engines/m4/font.cpp | |
parent | 4a8841202a25d48df190d9479bda98026f9c14d5 (diff) | |
download | scummvm-rg350-a83aafab545cbfdf47e5f724a856d1cbbb7914d0.tar.gz scummvm-rg350-a83aafab545cbfdf47e5f724a856d1cbbb7914d0.tar.bz2 scummvm-rg350-a83aafab545cbfdf47e5f724a856d1cbbb7914d0.zip |
Changed the font system to allow for multiple fonts to be loaded simultaneously
svn-id: r49209
Diffstat (limited to 'engines/m4/font.cpp')
-rw-r--r-- | engines/m4/font.cpp | 57 |
1 files changed, 38 insertions, 19 deletions
diff --git a/engines/m4/font.cpp b/engines/m4/font.cpp index f8dec65412..4afa158976 100644 --- a/engines/m4/font.cpp +++ b/engines/m4/font.cpp @@ -29,28 +29,46 @@ namespace M4 { -Font::Font(MadsM4Engine *vm) : _vm(vm) { +FontManager::~FontManager() { + for (uint i = 0; i < _entries.size(); ++i) + delete _entries[i]; + _entries.clear(); +} + +Font *FontManager::getFont(const Common::String &filename) { + // Check if the font is already loaded + for (uint i = 0; i < _entries.size(); ++i) + { + if (_entries[i]->_filename.equals(filename)) + return _entries[i]; + } + + Font *f = new Font(_vm, filename); + _entries.push_back(f); + return f; +} + +void FontManager::setFont(const Common::String &filename) { + _currentFont = getFont(filename); +} + +//-------------------------------------------------------------------------- + +Font::Font(MadsM4Engine *vm, const Common::String &filename) : _vm(vm), _filename(filename) { _sysFont = true; - _filename = NULL; + //TODO: System font _fontColors[0] = _vm->_palette->BLACK; _fontColors[1] = _vm->_palette->WHITE; _fontColors[2] = _vm->_palette->BLACK; _fontColors[3] = _vm->_palette->DARK_GRAY; -} - -void Font::setFont(const char *filename) { - if ((_filename != NULL) && (strcmp(filename, _filename) == 0)) - // Already using specified font, so don't bother reloading - return; _sysFont = false; - _filename = filename; if (_vm->isM4()) - setFontM4(filename); + setFontM4(filename.c_str()); else - setFontMads(filename); + setFontMads(filename.c_str()); } void Font::setFontM4(const char *filename) { @@ -134,20 +152,21 @@ Font::~Font() { } } -void Font::setColor(uint8 color) { +void Font::setColour(uint8 colour) { if (_sysFont) - _fontColors[1] = color; + _fontColors[1] = colour; else - _fontColors[3] = color; + _fontColors[3] = colour; } -void Font::setColors(uint8 alt1, uint8 alt2, uint8 foreground) { +void Font::setColours(uint8 col1, uint8 col2, uint8 col3) { if (_sysFont) - _fontColors[1] = foreground; + _fontColors[1] = col3; else { - _fontColors[1] = alt1; - _fontColors[2] = alt2; - _fontColors[3] = foreground; + _fontColors[0] = 0xFF; + _fontColors[1] = col1; + _fontColors[2] = col2; + _fontColors[3] = col3; } } |