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:
parent
62622277dc
commit
d8827b5ff1
11 changed files with 317 additions and 6 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue