1
/****************************************************************************
3
** Copyright (C) 2005-2005 Trolltech AS. All rights reserved.
5
** This file is part of the example classes of the Qt Toolkit.
7
** This file may be distributed under the terms of the Q Public License
8
** as defined by Trolltech AS of Norway and appearing in the file
9
** LICENSE.QPL included in the packaging of this file.
11
** This file may be distributed and/or modified under the terms of the
12
** GNU General Public License version 2 as published by the Free Software
13
** Foundation and appearing in the file LICENSE.GPL included in the
14
** packaging of this file.
16
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
17
** information about Qt Commercial License Agreements.
18
** See http://www.trolltech.com/qpl/ for QPL licensing information.
19
** See http://www.trolltech.com/gpl/ for GPL licensing information.
21
** Contact info@trolltech.com if any conditions of this licensing are
24
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
25
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
27
****************************************************************************/
31
#include "renderarea.h"
33
RenderArea::RenderArea(QWidget *parent)
36
QFont newFont = font();
37
newFont.setPixelSize(12);
40
QFontMetrics fontMetrics(newFont);
41
xBoundingRect = fontMetrics.boundingRect(tr("x"));
42
yBoundingRect = fontMetrics.boundingRect(tr("y"));
45
void RenderArea::setOperations(const QList<Operation> &operations)
47
this->operations = operations;
51
void RenderArea::setShape(const QPainterPath &shape)
57
QSize RenderArea::minimumSizeHint() const
62
QSize RenderArea::sizeHint() const
64
return QSize(232, 232);
67
void RenderArea::paintEvent(QPaintEvent *event)
69
QPainter painter(this);
70
painter.setRenderHint(QPainter::Antialiasing);
71
painter.fillRect(event->rect(), QBrush(Qt::white));
73
painter.translate(66, 66);
76
transformPainter(painter);
83
transformPainter(painter);
84
drawCoordinates(painter);
88
void RenderArea::drawCoordinates(QPainter &painter)
90
painter.setPen(Qt::red);
92
painter.drawLine(0, 0, 50, 0);
93
painter.drawLine(48, -2, 50, 0);
94
painter.drawLine(48, 2, 50, 0);
95
painter.drawText(60 - xBoundingRect.width() / 2,
96
0 + xBoundingRect.height() / 2, tr("x"));
98
painter.drawLine(0, 0, 0, 50);
99
painter.drawLine(-2, 48, 0, 50);
100
painter.drawLine(2, 48, 0, 50);
101
painter.drawText(0 - yBoundingRect.width() / 2,
102
60 + yBoundingRect.height() / 2, tr("y"));
105
void RenderArea::drawOutline(QPainter &painter)
107
painter.setPen(Qt::darkGreen);
108
painter.setPen(Qt::DashLine);
109
painter.setBrush(Qt::NoBrush);
110
painter.drawRect(0, 0, 100, 100);
113
void RenderArea::drawShape(QPainter &painter)
115
painter.fillPath(shape, Qt::blue);
118
void RenderArea::transformPainter(QPainter &painter)
120
for (int i = 0; i < operations.size(); ++i) {
121
switch (operations[i]) {
123
painter.translate(50, 50);
126
painter.scale(0.75, 0.75);
131
case NoTransformation: