From 3550753caccf5f770598d67f9f8093978534a1f9 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Wed, 10 May 2006 23:21:37 +0000 Subject: [PATCH] define fonts in skinfile --- data/skin.xml | 5 +++++ lib/python/enigma_python.i | 8 ++++++++ main/enigma.cpp | 13 +++++++++---- skin.py | 13 ++++++++++--- 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/data/skin.xml b/data/skin.xml index 995c51a7..fa6cadeb 100644 --- a/data/skin.xml +++ b/data/skin.xml @@ -38,6 +38,11 @@ + + + + + diff --git a/lib/python/enigma_python.i b/lib/python/enigma_python.i index 04134636..eee5ef00 100644 --- a/lib/python/enigma_python.i +++ b/lib/python/enigma_python.i @@ -242,6 +242,14 @@ public: PyObject *get(); }; +/************** temp *****************/ + + /* need a better place for this, i agree. */ +%{ +void addFont(const char *filename, const char *alias, int scale_factor, int is_replacement); +%} +void addFont(const char *filename, const char *alias, int scale_factor, int is_replacement); + /************** debug **************/ void runMainloop(); diff --git a/main/enigma.cpp b/main/enigma.cpp index 31b81a3f..f9b88e7f 100644 --- a/main/enigma.cpp +++ b/main/enigma.cpp @@ -140,10 +140,8 @@ int main(int argc, char **argv) ePtr my_lcd_dc; gLCDDC::getInstance(my_lcd_dc); - fontRenderClass::getInstance()->AddFont(FONTDIR "/md_khmurabi_10.ttf", "Regular", 100); - fontRenderClass::getInstance()->AddFont(FONTDIR "/ae_AlMateen.ttf", "Replacement", 90); - eTextPara::setReplacementFont("Replacement"); - + + /* ok, this is currently hardcoded for arabic. */ /* some characters are wrong in the regular font, force them to use the replacement font */ for (int i = 0x60c; i <= 0x66d; ++i) eTextPara::forceReplacementGlyph(i); @@ -226,3 +224,10 @@ void quitMainloop(int exitCode) exit_code = exitCode; eApp->quit(0); } + +void addFont(const char *filename, const char *alias, int scale_factor, int is_replacement) +{ + fontRenderClass::getInstance()->AddFont(filename, alias, scale_factor); + if (is_replacement) + eTextPara::setReplacementFont(alias); +} diff --git a/skin.py b/skin.py index fbc5bcd8..f8fcb122 100644 --- a/skin.py +++ b/skin.py @@ -14,7 +14,7 @@ def dump(x, i=0): except: None -from Tools.Directories import resolveFilename, SCOPE_SKIN, SCOPE_SKIN_IMAGE +from Tools.Directories import resolveFilename, SCOPE_SKIN, SCOPE_SKIN_IMAGE, SCOPE_FONTS dom_skins = [ ] @@ -84,7 +84,7 @@ def applySingleAttribute(guiObject, desktop, attrib, value): elif attrib == "pixmap": ptr = loadPixmap(resolveFilename(SCOPE_SKIN_IMAGE, value)) # that __deref__ still scares me! -# desktop.makeCompatiblePixmap(ptr.__deref__()) + desktop.makeCompatiblePixmap(ptr.__deref__()) guiObject.setPixmap(ptr.__deref__()) # guiObject.setPixmapFromFile(value) elif attrib == "alphatest": # used by ePixmap @@ -159,7 +159,6 @@ def applySingleAttribute(guiObject, desktop, attrib, value): guiObject.setShadowOffset(parsePosition(value)) elif attrib != 'name': print "unsupported attribute " + attrib + "=" + value - except int: # AttributeError: print "widget %s (%s) doesn't support attribute %s!" % ("", guiObject.__class__.__name__, attrib) @@ -184,6 +183,14 @@ def loadSingleSkinData(desktop, dom_skin): colorNames[name] = parseColor(color) + for c in elementsWithTag(skin.childNodes, "fonts"): + for font in elementsWithTag(c.childNodes, "font"): + filename = str(font.getAttribute("filename") or "") + name = str(font.getAttribute("name") or "Regular") + scale = int(font.getAttribute("scale") or "100") + is_replacement = font.getAttribute("replacement") != "" + addFont(resolveFilename(SCOPE_FONTS, filename), name, scale, is_replacement) + for windowstyle in elementsWithTag(skin.childNodes, "windowstyle"): style = eWindowStyleSkinned() -- 2.30.2