aboutsummaryrefslogtreecommitdiff
path: root/engines/m4/font.cpp
diff options
context:
space:
mode:
authorPaul Gilbert2010-05-25 10:46:56 +0000
committerPaul Gilbert2010-05-25 10:46:56 +0000
commita83aafab545cbfdf47e5f724a856d1cbbb7914d0 (patch)
treeda0e671d752d2692985c12cfa6f5ef806fbe0cfd /engines/m4/font.cpp
parent4a8841202a25d48df190d9479bda98026f9c14d5 (diff)
downloadscummvm-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.cpp57
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;
}
}