diff options
| author | Robert Bieber <robby@bieberphoto.com> | 2010-06-18 21:10:01 +0000 |
|---|---|---|
| committer | Robert Bieber <robby@bieberphoto.com> | 2010-06-18 21:10:01 +0000 |
| commit | d8827b5ff10c66a065a210d8aaf1d88214ee1070 (patch) | |
| tree | 26a23ff031105ee98cbba967a4554ebf8ac423a6 /utils/themeeditor/graphics/rbviewport.cpp | |
| parent | 62622277dc2a11117605e5e7ff3d2a5f0423d8da (diff) | |
| download | rockbox-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.cpp | 110 |
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); +} + |