Implemented simple viewport shifting.
[aesalon.git] / src / artisan / gviewport / LineObject.cpp
blob9b0cf120c1ad4017743b84971b8745dc54310bcd
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/LineObject.cpp
8 */
10 #include <QRect>
13 #include "artisan/gviewport/LineObject.h"
15 namespace Artisan {
16 namespace GViewport {
18 LineObject::LineObject(double layer, double x1, double y1, double x2, double y2) {
19 m_bound.setRange(TreeType::Range(layer, layer), 0);
20 m_bound.setRange(TreeType::Range(x1, x2), 1);
21 m_bound.setRange(TreeType::Range(y1, y2), 2);
24 LineObject::~LineObject() {
28 void LineObject::render(RenderedImage &image) {
29 Message(Debug, "Rendering LineObject . . .");
30 double x1, y1;
31 image.mapper().map(m_bound.range(1).start(), m_bound.range(2).start(), &x1, &y1);
32 double x2, y2;
33 image.mapper().map(m_bound.range(1).end(), m_bound.range(2).end(), &x2, &y2);
35 Message(Debug, "Coordinates: (" << x1 << "," << y1 << "), (" << x2 << "," << y2 << ")");
37 QPainter *painter = image.painter();
39 painter->setPen(qRgb(0, 0, 0));
41 painter->drawLine(x1 * painter->device()->width(), y1 * painter->device()->height(),
42 x2 * painter->device()->width(), y2 * painter->device()->height());
45 } // namespace GViewport
46 } // namespace Artisan