Implemented simple viewport shifting.
[aesalon.git] / src / artisan / gviewport / RectObject.cpp
blob5c11c5178240d72bde74f07bf71200cff5f31bb7
1 /** Aesalon, a tool to visualize program behaviour in real time.
2 Copyright (C) 2009-2011, Aesalon development team.
4 Aesalon is distributed under the terms of the GNU GPLv3. See
5 the included file LICENSE for more information.
7 @file src/artisan/gviewport/RectObject.cpp
8 */
10 #include <QRect>
11 #include <QPoint>
13 #include "artisan/gviewport/RectObject.h"
15 #include "util/MessageSystem.h"
17 namespace Artisan {
18 namespace GViewport {
20 RectObject::RectObject(double layer, double x, double y, double w, double h) {
21 m_bound.setRange(TreeType::Range(layer, layer), 0);
22 m_bound.setRange(TreeType::Range(x, x+w), 1);
23 m_bound.setRange(TreeType::Range(y, y+h), 2);
26 RectObject::~RectObject() {
30 void RectObject::render(RenderedImage &image) {
31 Message(Debug, "Rendering RectObject . . .");
33 Message(Debug, "m_bound.range(1).start(): " << m_bound.range(1).start());
34 Message(Debug, "m_bound.range(2).start(): " << m_bound.range(2).start());
35 Message(Debug, "m_bound.range(1).end(): " << m_bound.range(1).end());
36 Message(Debug, "m_bound.range(2).end(): " << m_bound.range(2).end());
38 double x1, y1;
39 image.mapper().map(m_bound.range(1).start(), m_bound.range(2).start(), &x1, &y1);
40 double x2, y2;
41 image.mapper().map(m_bound.range(1).end(), m_bound.range(2).end(), &x2, &y2);
43 QPainter *painter = image.painter();
45 painter->setPen(qRgb(0, 0, 0));
46 painter->setBrush(Qt::cyan);
48 Message(Debug, "x2-x1: " << x2 - x1);
49 Message(Debug, "y2-y1: " << y2 - y1);
51 QRectF rf = QRectF(QPointF(x1 * painter->device()->width(), y1 * painter->device()->height()),
52 QPointF((x2-x1) * painter->device()->width(), painter->device()->height() * (y2-y1)));
54 painter->drawRect(rf);
57 } // namespace GViewport
58 } // namespace Artisan