1
0
Fork 0
forked from len0rd/rockbox

Theme Editor: Co Used a more efficient/less error-prone system for rendering SBS documents underneath WPS documents

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27765 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Robert Bieber 2010-08-09 19:37:23 +00:00
parent 77b682571f
commit d1a392a0e9
10 changed files with 71 additions and 45 deletions

View file

@ -31,6 +31,9 @@
#include <iostream>
#include <cmath>
#include <cassert>
#include <QDebug>
int ParseTreeNode::openConditionals = 0;
bool ParseTreeNode::breakFlag = false;
@ -571,9 +574,12 @@ void ParseTreeNode::render(const RBRenderInfo &info, RBViewport* viewport,
else if(element->type == CONDITIONAL)
{
int child = evalTag(info, true, element->children_count).toInt();
if(child < children.count())
int max = children.count() - element->params_count;
if(child < max)
{
children[element->params_count + child]
->render(info, viewport, true);
}
}
else if(element->type == LINE_ALTERNATOR)
{
@ -856,8 +862,6 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
int height = element->params[3].data.number;
QString action(element->params[4].data.text);
RBTouchArea* temp = new RBTouchArea(width, height, action, info);
x += viewport->x();
y += viewport->y();
temp->setPos(x, y);
return true;
}
@ -914,10 +918,7 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
case '\0':
/* %X */
filename = QString(element->params[0].data.text);
if(info.sbsScreen() && info.screen()->parentItem())
info.sbsScreen()->setBackdrop(filename);
else
info.screen()->setBackdrop(filename);
info.screen()->setBackdrop(filename);
return true;
}