summaryrefslogtreecommitdiffstats
path: root/utils/themeeditor/models
diff options
context:
space:
mode:
authorRobert Bieber <robby@bieberphoto.com>2010-06-23 07:18:22 +0000
committerRobert Bieber <robby@bieberphoto.com>2010-06-23 07:18:22 +0000
commitd3027053f955106708c5474d35cf41cd894bf450 (patch)
treef29d7ff83cd7cb6c998809cecbad4bb6ff1ea1cb /utils/themeeditor/models
parenta937b8ba0568bbd028791fb986d1ab7e41ab6f5b (diff)
downloadrockbox-d3027053f955106708c5474d35cf41cd894bf450.tar.gz
rockbox-d3027053f955106708c5474d35cf41cd894bf450.zip
Theme Editor: Working on image rendering
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27083 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'utils/themeeditor/models')
-rw-r--r--utils/themeeditor/models/parsetreenode.cpp45
1 files changed, 44 insertions, 1 deletions
diff --git a/utils/themeeditor/models/parsetreenode.cpp b/utils/themeeditor/models/parsetreenode.cpp
index ed518a47db..41bee5cab8 100644
--- a/utils/themeeditor/models/parsetreenode.cpp
+++ b/utils/themeeditor/models/parsetreenode.cpp
@@ -25,6 +25,8 @@
#include "parsetreenode.h"
#include "parsetreemodel.h"
+#include "rbimage.h"
+
#include <iostream>
int ParseTreeNode::openConditionals = 0;
@@ -504,6 +506,8 @@ void ParseTreeNode::render(const RBRenderInfo& info)
for(int i = element->params_count; i < children.count(); i++)
children[i]->render(info, dynamic_cast<RBViewport*>(rendered));
+
+ std::cout << rendered->children().count() << std::endl;
}
/* This version is called for logical lines and such */
@@ -518,17 +522,56 @@ void ParseTreeNode::render(const RBRenderInfo &info, RBViewport* viewport)
else if(element->type == TAG)
{
QString filename;
+ QString id;
+ int x, y, tiles;
+ RBImage* image;
/* Two switch statements to narrow down the tag name */
switch(element->tag->name[0])
{
+ case 'x':
+ switch(element->tag->name[1])
+ {
+ case 'l':
+ /* %xl */
+ id = element->params[0].data.text;
+ filename = info.settings()->value("imagepath", "") + "/" +
+ element->params[1].data.text;
+ x = element->params[2].data.numeric;
+ y = element->params[3].data.numeric;
+ if(element->params_count > 4)
+ tiles = element->params[4].data.numeric;
+ else
+ tiles = 1;
+
+ info.screen()->loadImage(id, new RBImage(filename, tiles, x, y,
+ viewport));
+ break;
+
+ case '\0':
+ /* %x */
+ id = element->params[0].data.text;
+ filename = info.settings()->value("imagepath", "") + "/" +
+ element->params[1].data.text;
+ x = element->params[2].data.numeric;
+ y = element->params[3].data.numeric;
+ image = new RBImage(filename, 1, x, y, viewport);
+ info.screen()->loadImage(id, new RBImage(filename, 1, x, y,
+ viewport));
+ info.screen()->getImage(id)->show();
+ break;
+
+ }
+
+ break;
+
case 'X':
switch(element->tag->name[1])
{
case '\0':
- /* %X tag */
+ /* %X */
filename = QString(element->params[0].data.text);
info.screen()->setBackdrop(filename);
break;