diff options
author | Martin Kiewitz | 2010-01-31 17:45:22 +0000 |
---|---|---|
committer | Martin Kiewitz | 2010-01-31 17:45:22 +0000 |
commit | aaf756e7364658bcde053932907bbf009e1762ab (patch) | |
tree | 1f5ac575c4e5c97de6a28fd8b1856c42a6336328 /engines/sci/graphics/cache.cpp | |
parent | 3b411f65767256f3d55fd361a253d06f6426654c (diff) | |
download | scummvm-rg350-aaf756e7364658bcde053932907bbf009e1762ab.tar.gz scummvm-rg350-aaf756e7364658bcde053932907bbf009e1762ab.tar.bz2 scummvm-rg350-aaf756e7364658bcde053932907bbf009e1762ab.zip |
SCI: implemented font caching
svn-id: r47762
Diffstat (limited to 'engines/sci/graphics/cache.cpp')
-rw-r--r-- | engines/sci/graphics/cache.cpp | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/engines/sci/graphics/cache.cpp b/engines/sci/graphics/cache.cpp index 8d153e8472..a1330797d4 100644 --- a/engines/sci/graphics/cache.cpp +++ b/engines/sci/graphics/cache.cpp @@ -41,10 +41,20 @@ GfxCache::GfxCache(ResourceManager *resMan, GfxScreen *screen, GfxPalette *palet } GfxCache::~GfxCache() { - purgeCache(); + purgeFontCache(); + purgeViewCache(); } -void GfxCache::purgeCache() { +void GfxCache::purgeFontCache() { + for (FontCache::iterator iter = _cachedFonts.begin(); iter != _cachedFonts.end(); ++iter) { + delete iter->_value; + iter->_value = 0; + } + + _cachedFonts.clear(); +} + +void GfxCache::purgeViewCache() { for (ViewCache::iterator iter = _cachedViews.begin(); iter != _cachedViews.end(); ++iter) { delete iter->_value; iter->_value = 0; @@ -53,9 +63,19 @@ void GfxCache::purgeCache() { _cachedViews.clear(); } +Font *GfxCache::getFont(GuiResourceId fontId) { + if (_cachedFonts.size() >= MAX_CACHED_FONTS) + purgeFontCache(); + + if (!_cachedViews.contains(fontId)) + _cachedFonts[fontId] = new Font(_resMan, _screen, fontId); + + return _cachedFonts[fontId]; +} + View *GfxCache::getView(GuiResourceId viewId) { if (_cachedViews.size() >= MAX_CACHED_VIEWS) - purgeCache(); + purgeViewCache(); if (!_cachedViews.contains(viewId)) _cachedViews[viewId] = new View(_resMan, _screen, _palette, viewId); |