summaryrefslogtreecommitdiff
path: root/font.c
diff options
context:
space:
mode:
Diffstat (limited to 'font.c')
-rw-r--r--font.c64
1 files changed, 49 insertions, 15 deletions
diff --git a/font.c b/font.c
index 78c5cc7..0792b2e 100644
--- a/font.c
+++ b/font.c
@@ -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;
}