diff options
| author | Robert Bieber <robby@bieberphoto.com> | 2010-08-09 19:37:23 +0000 |
|---|---|---|
| committer | Robert Bieber <robby@bieberphoto.com> | 2010-08-09 19:37:23 +0000 |
| commit | d1a392a0e95b10fe9603fbd379a70b4cc0ddf22f (patch) | |
| tree | b1ce5452aa5578c7cbc5e711373d73b52b797510 /utils/themeeditor/models | |
| parent | 77b682571f80b0aec9a16182600678a1b553a4bb (diff) | |
| download | rockbox-d1a392a0e95b10fe9603fbd379a70b4cc0ddf22f.zip rockbox-d1a392a0e95b10fe9603fbd379a70b4cc0ddf22f.tar.gz rockbox-d1a392a0e95b10fe9603fbd379a70b4cc0ddf22f.tar.bz2 rockbox-d1a392a0e95b10fe9603fbd379a70b4cc0ddf22f.tar.xz | |
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
Diffstat (limited to 'utils/themeeditor/models')
| -rw-r--r-- | utils/themeeditor/models/parsetreemodel.cpp | 36 | ||||
| -rw-r--r-- | utils/themeeditor/models/parsetreenode.cpp | 15 |
2 files changed, 20 insertions, 31 deletions
diff --git a/utils/themeeditor/models/parsetreemodel.cpp b/utils/themeeditor/models/parsetreemodel.cpp index fbedf10..a7f46ac 100644 --- a/utils/themeeditor/models/parsetreemodel.cpp +++ b/utils/themeeditor/models/parsetreemodel.cpp @@ -316,7 +316,7 @@ RBScene* ParseTreeModel::render(ProjectModel* project, } /* Rendering SBS, if necessary */ - RBScreen* sbsScreen = 0; + RBScreen* screen = 0; if(wps && device->data("rendersbs").toBool()) { QString sbsFile = settings.value(remote ? "rsbs" : "sbs", ""); @@ -334,49 +334,37 @@ RBScene* ParseTreeModel::render(ProjectModel* project, if(sbsModel->root != 0) { RBRenderInfo sbsInfo(sbsModel, project, doc, &settings, device, - sbsScreen); + screen); - sbsScreen = new RBScreen(sbsInfo, remote); - scene->addItem(sbsScreen); + screen = new RBScreen(sbsInfo, remote); + scene->addItem(screen); sbsInfo = RBRenderInfo(sbsModel, project, doc, &settings, - device, sbsScreen); + device, screen); sbsModel->root->render(sbsInfo); + screen->endSbsRender(); - setChildrenUnselectable(sbsScreen); + setChildrenUnselectable(screen); } } } - RBScreen* screen = 0; - RBRenderInfo info(this, project, doc, &settings, device, screen, sbsScreen); + RBRenderInfo info(this, project, doc, &settings, device, screen); /* Adding the screen */ - if(sbsScreen) - screen = new RBScreen(info, remote, sbsScreen->getCustomUI()); - else + if(!screen) + { screen = new RBScreen(info, remote); - - if(!sbsScreen) scene->addItem(screen); + } - info = RBRenderInfo(this, project, doc, &settings, device, screen, - sbsScreen); + info = RBRenderInfo(this, project, doc, &settings, device, screen); /* Rendering the tree */ if(root) root->render(info); -// /* Making sure the Custom UI Viewport can't be selected */ -// if(sbsScreen) -// { -// sbsScreen->getCustomUI()->setFlag(QGraphicsItem::ItemIsSelectable, -// false); -// sbsScreen->getCustomUI()->setFlag(QGraphicsItem::ItemIsMovable, -// false); -// } -// return scene; } diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp index ac2556b..9cc73ce 100644 --- a/utils/themeeditor/models/parsetreenode.cpp +++ b/utils/themeeditor/models/parsetreenode.cpp @@ -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; } |