Theme Editor: Added dummy font class and implemented font load tag

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27096 a1c6a512-1295-4272-9138-f99709370657
diff --git a/utils/themeeditor/graphics/rbfont.cpp b/utils/themeeditor/graphics/rbfont.cpp
new file mode 100644
index 0000000..48e0f30
--- /dev/null
+++ b/utils/themeeditor/graphics/rbfont.cpp
@@ -0,0 +1,30 @@
+/***************************************************************************
+ *             __________               __   ___.
+ *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
+ *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
+ *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
+ *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
+ *                     \/            \/     \/    \/            \/
+ * $Id$
+ *
+ * Copyright (C) 2010 Robert Bieber
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include "rbfont.h"
+
+RBFont::RBFont(QString file): filename(file)
+{
+}
+
+RBFont::~RBFont()
+{
+}
diff --git a/utils/themeeditor/graphics/rbfont.h b/utils/themeeditor/graphics/rbfont.h
new file mode 100644
index 0000000..a1d66f2
--- /dev/null
+++ b/utils/themeeditor/graphics/rbfont.h
@@ -0,0 +1,38 @@
+/***************************************************************************
+ *             __________               __   ___.
+ *   Open      \______   \ ____   ____ |  | _\_ |__   _______  ___
+ *   Source     |       _//  _ \_/ ___\|  |/ /| __ \ /  _ \  \/  /
+ *   Jukebox    |    |   (  <_> )  \___|    < | \_\ (  <_> > <  <
+ *   Firmware   |____|_  /\____/ \___  >__|_ \|___  /\____/__/\_ \
+ *                     \/            \/     \/    \/            \/
+ * $Id$
+ *
+ * Copyright (C) 2010 Robert Bieber
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#ifndef RBFONT_H
+#define RBFONT_H
+
+#include <QString>
+#include <QFile>
+
+class RBFont
+{
+public:
+    RBFont(QString file);
+    virtual ~RBFont();
+
+private:
+    QString filename;
+};
+
+#endif // RBFONT_H
diff --git a/utils/themeeditor/graphics/rbscreen.cpp b/utils/themeeditor/graphics/rbscreen.cpp
index 004d2e0..a090c2f 100644
--- a/utils/themeeditor/graphics/rbscreen.cpp
+++ b/utils/themeeditor/graphics/rbscreen.cpp
@@ -67,6 +67,11 @@
 {
     if(backdrop)
         delete backdrop;
+
+    QMap<int, RBFont*>::iterator i;
+    for(i = fonts.begin(); i != fonts.end(); i++)
+        if(*i)
+            delete (*i);
 }
 
 QPainterPath RBScreen::shape() const
@@ -103,6 +108,23 @@
     update();
 }
 
+void RBScreen::loadFont(int id, RBFont* font)
+{
+    if(id < 2 || id > 9)
+        return;
+
+    fonts.insert(id, font);
+}
+
+RBFont* RBScreen::getFont(int id)
+{
+    if(fonts.value(id, 0) != 0)
+        return fonts.value(id);
+    else
+        return fonts.value(0, 0);
+}
+
+
 void RBScreen::setBackdrop(QString filename)
 {
 
diff --git a/utils/themeeditor/graphics/rbscreen.h b/utils/themeeditor/graphics/rbscreen.h
index 51fa32c..95a110a 100644
--- a/utils/themeeditor/graphics/rbscreen.h
+++ b/utils/themeeditor/graphics/rbscreen.h
@@ -27,6 +27,7 @@
 #include "projectmodel.h"
 #include "rbrenderinfo.h"
 #include "rbimage.h"
+#include "rbfont.h"
 
 class RBViewport;
 
@@ -58,6 +59,9 @@
     }
     RBImage* getImage(QString name){ return images.value(name, 0); }
 
+    void loadFont(int id, RBFont* font);
+    RBFont* getFont(int id);
+
     void setBackdrop(QString filename);
     void makeCustomUI(QString id);
 
@@ -77,6 +81,7 @@
     QMap<QString, RBViewport*> namedViewports;
     QMap<QString, RBImage*> images;
     QMap<QString, QString>* settings;
+    QMap<int, RBFont*> fonts;
 
 };
 
diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp
index edae4f0..3696a66 100644
--- a/utils/themeeditor/models/parsetreenode.cpp
+++ b/utils/themeeditor/models/parsetreenode.cpp
@@ -592,6 +592,23 @@
 
             break;
 
+        case 'F':
+
+            switch(element->tag->name[1])
+            {
+
+            case 'l':
+                /* %Fl */
+                x = element->params[0].data.numeric;
+                filename = info.settings()->value("themebase", "") + "/fonts/" +
+                           element->params[1].data.text;
+                info.screen()->loadFont(x, new RBFont(filename));
+                break;
+
+            }
+
+            break;
+
         case 'V':
 
             switch(element->tag->name[1])
diff --git a/utils/themeeditor/themeeditor.pro b/utils/themeeditor/themeeditor.pro
index d98e61f..05d117a 100644
--- a/utils/themeeditor/themeeditor.pro
+++ b/utils/themeeditor/themeeditor.pro
@@ -38,7 +38,8 @@
     graphics/rbscreen.h \
     graphics/rbviewport.h \
     graphics/rbrenderinfo.h \
-    graphics/rbimage.h
+    graphics/rbimage.h \
+    graphics/rbfont.h
 SOURCES += main.cpp \
     models/parsetreemodel.cpp \
     models/parsetreenode.cpp \
@@ -53,7 +54,8 @@
     graphics/rbscreen.cpp \
     graphics/rbviewport.cpp \
     graphics/rbrenderinfo.cpp \
-    graphics/rbimage.cpp
+    graphics/rbimage.cpp \
+    graphics/rbfont.cpp
 OTHER_FILES += README \
     resources/windowicon.png \
     resources/appicon.xcf \