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
This commit is contained in:
Robert Bieber 2010-06-23 20:18:31 +00:00
parent 168eba1aec
commit 6d6156603c
6 changed files with 116 additions and 2 deletions

View file

@ -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()
{
}

View file

@ -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

View file

@ -67,6 +67,11 @@ RBScreen::~RBScreen()
{
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 @@ 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)
{

View file

@ -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<QString, RBViewport*> namedViewports;
QMap<QString, RBImage*> images;
QMap<QString, QString>* settings;
QMap<int, RBFont*> fonts;
};

View file

@ -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])

View file

@ -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 \