diff options
Diffstat (limited to 'font.c')
-rw-r--r-- | font.c | 64 |
1 files changed, 49 insertions, 15 deletions
@@ -6,9 +6,48 @@ #include "render.h" #include <vdr/tools.h> -#ifdef HAVE_FREETYPE -cGraphtftFont cText2SkinFont::mFontCache; -#endif + +cText2SkinFontCache::cText2SkinFontCache(void) +{ +} + +cText2SkinFontCache::~cText2SkinFontCache() +{ + Clear(); +} + +bool cText2SkinFontCache::Load(string Name, string CacheName, int Size) +{ + if ( _cache.find(CacheName) != _cache.end() ) + return true; + cFont* newFont = cFont::CreateFont(Name.c_str(), Size); + if ( newFont == NULL ) + return false; + _cache[CacheName] = newFont; + return true; +} + +const cFont* cText2SkinFontCache::GetFont(string CacheName) +{ + if (CacheName == "Sml") return cFont::GetFont(fontSml); + else if (CacheName == "Fix") return cFont::GetFont(fontFix); + else if ( _cache.find(CacheName) != _cache.end() ) + { + return _cache[CacheName]; + } + return cFont::GetFont(fontOsd); +} + +void cText2SkinFontCache::Clear() +{ + cache_map::iterator it = _cache.begin(); + for (; it != _cache.end(); ++it) + delete((*it).second); + _cache.clear(); +} + + +cText2SkinFontCache cText2SkinFont::mFontCache; cText2SkinFont::cText2SkinFont(void) { @@ -18,27 +57,22 @@ cText2SkinFont::~cText2SkinFont() { } -const cFont *cText2SkinFont::Load(const std::string &Path, const std::string &Filename, int Size, - int Width) +const cFont *cText2SkinFont::Load(const string &Name, int Size) { - if (Filename == "Osd") + if (Name == "Osd") return cFont::GetFont(fontOsd); - else if (Filename == "Fix") + else if (Name == "Fix") return cFont::GetFont(fontFix); - else if (Filename == "Sml") + else if (Name == "Sml") return cFont::GetFont(fontSml); const cFont *res = NULL; -#ifdef HAVE_FREETYPE char *cachename; - asprintf(&cachename, "%s_%d_%d_%d", Filename.c_str(), Size, Width, I18nCurrentLanguage()); - if (mFontCache.Load(Path + "/" + Filename, cachename, Size, I18nCurrentLanguage(), Width)) + asprintf(&cachename, "%s_%d", Name.c_str(), Size); + if (mFontCache.Load(Name, cachename, Size)) res = mFontCache.GetFont(cachename); else - esyslog("ERROR: Text2Skin: Couldn't load font %s:%d", Filename.c_str(), Size); + esyslog("ERROR: Text2Skin: Couldn't load font %s:%d", Name.c_str(), Size); free(cachename); -#else - esyslog("ERROR: Text2Skin: Font engine not enabled at compile time!"); -#endif return res; } |