summaryrefslogtreecommitdiff
path: root/utils/themeeditor/graphics/rbviewport.cpp
diff options
context:
space:
mode:
authorRobert Bieber <robby@bieberphoto.com>2010-06-18 21:10:01 +0000
committerRobert Bieber <robby@bieberphoto.com>2010-06-18 21:10:01 +0000
commitd8827b5ff10c66a065a210d8aaf1d88214ee1070 (patch)
tree26a23ff031105ee98cbba967a4554ebf8ac423a6 /utils/themeeditor/graphics/rbviewport.cpp
parent62622277dc2a11117605e5e7ff3d2a5f0423d8da (diff)
downloadrockbox-d8827b5ff10c66a065a210d8aaf1d88214ee1070.zip
rockbox-d8827b5ff10c66a065a210d8aaf1d88214ee1070.tar.gz
rockbox-d8827b5ff10c66a065a210d8aaf1d88214ee1070.tar.bz2
rockbox-d8827b5ff10c66a065a210d8aaf1d88214ee1070.tar.xz
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
Diffstat (limited to 'utils/themeeditor/graphics/rbviewport.cpp')
-rw-r--r--utils/themeeditor/graphics/rbviewport.cpp110
1 files changed, 110 insertions, 0 deletions
diff --git a/utils/themeeditor/graphics/rbviewport.cpp b/utils/themeeditor/graphics/rbviewport.cpp
new file mode 100644
index 0000000..1f1f02c
--- /dev/null
+++ b/utils/themeeditor/graphics/rbviewport.cpp
@@ -0,0 +1,110 @@
+/***************************************************************************
+ * __________ __ ___.
+ * Open \______ \ ____ ____ | | _\_ |__ _______ ___
+ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
+ * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
+ * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
+ * \/ \/ \/ \/ \/
+ * $Id$
+ *
+ * Copyright (C) 2010 Robert Bieber
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
+ * KIND, either express or implied.
+ *
+ ****************************************************************************/
+
+#include <QPainter>
+#include <QPainterPath>
+
+#include "rbviewport.h"
+#include "rbscreen.h"
+#include "rbrenderinfo.h"
+#include "parsetreemodel.h"
+#include "tag_table.h"
+#include "skin_parser.h"
+
+RBViewport::RBViewport(skin_element* node, const RBRenderInfo& info)
+ : QGraphicsItem(info.screen())
+{
+ if(!node->tag)
+ {
+ /* Default viewport takes up the entire screen */
+ size = QRectF(0, 0, info.screen()->getWidth(),
+ info.screen()->getHeight());
+
+ if(info.model()->rowCount(QModelIndex()) > 1)
+ {
+ /* If there is more than one viewport in the document */
+ displayed = false;
+ }
+ else
+ {
+ displayed = true;
+ }
+ }
+ else
+ {
+ int x, y, w, h;
+ /* Parsing one of the other types of viewport */
+ switch(node->tag->name[1])
+ {
+ case '\0':
+ /* A normal viewport definition */
+ x = node->params[0].data.numeric;
+ y = node->params[1].data.numeric;
+
+ if(node->params[2].type == skin_tag_parameter::DEFAULT)
+ w = info.screen()->getWidth() - x;
+ else
+ w = node->params[2].data.numeric;
+
+ if(node->params[3].type == skin_tag_parameter::DEFAULT)
+ h = info.screen()->getHeight() - y;
+ else
+ h = node->params[3].data.numeric;
+
+ size = QRectF(x, y, w, h);
+ displayed = true;
+ break;
+
+ case 'l':
+ /* Preloaded viewport */
+ break;
+
+ case 'i':
+ /* Custom UI Viewport */
+ break;
+
+ }
+ }
+}
+
+RBViewport::~RBViewport()
+{
+}
+
+QPainterPath RBViewport::shape() const
+{
+ QPainterPath retval;
+ retval.addRect(size);
+ return retval;
+}
+
+QRectF RBViewport::boundingRect() const
+{
+ return size;
+}
+
+void RBViewport::paint(QPainter *painter,
+ const QStyleOptionGraphicsItem *option, QWidget *widget)
+{
+ if(displayed)
+ painter->fillRect(size, Qt::red);
+}
+