1
0
Fork 0
forked from len0rd/rockbox

Theme Editor: Working on rendering viewports, display will now show %V(...) viewports as red rectangles over backdrop or background color

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26940 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Robert Bieber 2010-06-18 21:10:01 +00:00
parent 62622277dc
commit d8827b5ff1
11 changed files with 317 additions and 6 deletions

View file

@ -23,6 +23,7 @@
#include "parsetreemodel.h"
#include "symbols.h"
#include "rbscreen.h"
#include "rbrenderinfo.h"
#include <cstdlib>
@ -280,5 +281,12 @@ QGraphicsScene* ParseTreeModel::render(ProjectModel* project)
RBScreen* screen = new RBScreen(project);
scene->addItem(screen);
RBRenderInfo info(this, project, screen);
/* Rendering the tree */
if(root)
root->render(info);
return scene;
}

View file

@ -98,6 +98,12 @@ ParseTreeNode::ParseTreeNode(skin_tag_parameter *data, ParseTreeNode *parent)
}
ParseTreeNode::~ParseTreeNode()
{
for(int i = 0; i < children.count(); i++)
delete children[i];
}
QString ParseTreeNode::genCode() const
{
QString buffer = "";
@ -467,8 +473,28 @@ ParseTreeNode* ParseTreeNode::getParent() const
return parent;
}
ParseTreeNode::~ParseTreeNode()
void ParseTreeNode::render(const RBRenderInfo& info)
{
for(int i = 0; i < children.count(); i++)
delete children[i];
/* Parameters don't get rendered */
if(!element && param)
return;
/* If we're at the root, we need to render each viewport */
if(!element && !param)
{
for(int i = 0; i < children.count(); i++)
{
children[i]->render(info);
}
return;
}
switch(element->type)
{
case VIEWPORT:
rendered = new RBViewport(element, info);
break;
}
}

View file

@ -23,6 +23,9 @@
#define PARSETREENODE_H
#include "skin_parser.h"
#include "rbviewport.h"
#include "rbscreen.h"
#include "rbrenderinfo.h"
#include <QString>
#include <QVariant>
@ -56,6 +59,8 @@ public:
return 0;
}
void render(const RBRenderInfo& info);
private:
ParseTreeNode* parent;
struct skin_element* element;
@ -63,6 +68,7 @@ private:
QList<ParseTreeNode*> children;
static int openConditionals;
QGraphicsItem* rendered;
};