From 2701bcc2b5b62d1b1e08c029385f7f6119bff9d9 Mon Sep 17 00:00:00 2001 From: bieber Date: Wed, 23 Jun 2010 20:18:31 +0000 Subject: [PATCH] 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 --- utils/themeeditor/graphics/rbfont.cpp | 30 +++++++++++++++++++++++ utils/themeeditor/graphics/rbfont.h | 38 ++++++++++++++++++++++++++++++ utils/themeeditor/graphics/rbscreen.cpp | 22 +++++++++++++++++ utils/themeeditor/graphics/rbscreen.h | 5 ++++ utils/themeeditor/models/parsetreenode.cpp | 17 +++++++++++++ utils/themeeditor/themeeditor.pro | 6 +++-- 6 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 utils/themeeditor/graphics/rbfont.cpp create mode 100644 utils/themeeditor/graphics/rbfont.h diff --git a/utils/themeeditor/graphics/rbfont.cpp b/utils/themeeditor/graphics/rbfont.cpp new file mode 100644 index 000000000..48e0f304b --- /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 000000000..a1d66f22d --- /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 +#include + +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 004d2e099..a090c2f9f 100644 --- a/utils/themeeditor/graphics/rbscreen.cpp +++ b/utils/themeeditor/graphics/rbscreen.cpp @@ -67,6 +67,11 @@ RBScreen::~RBScreen() { if(backdrop) delete backdrop; + + QMap::iterator i; + for(i = fonts.begin(); i != fonts.end(); i++) + if(*i) + delete (*i); } QPainterPath RBScreen::shape() const @@ -103,6 +108,23 @@ void RBScreen::showViewport(QString name) 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 51fa32cee..95a110a4d 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 @@ public: } 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 @@ private: QMap namedViewports; QMap images; QMap* settings; + QMap fonts; }; diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp index edae4f0e3..3696a661a 100644 --- a/utils/themeeditor/models/parsetreenode.cpp +++ b/utils/themeeditor/models/parsetreenode.cpp @@ -592,6 +592,23 @@ void ParseTreeNode::render(const RBRenderInfo &info, RBViewport* viewport) 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 d98e61feb..05d117aa3 100644 --- a/utils/themeeditor/themeeditor.pro +++ b/utils/themeeditor/themeeditor.pro @@ -38,7 +38,8 @@ HEADERS += models/parsetreemodel.h \ 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 @@ SOURCES += main.cpp \ 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 \ -- 2.11.4.GIT