Implemented Item::Polygon
[yamf.git] / yamf / item / polygon.cpp
blob06dd91be272be5d5234118a6043acf067d0b39d3
1 /***************************************************************************
2 * Copyright (C) 2007 by Jorge Cuadrado *
3 * kuadrosxx@gmail.com *
4 * *
5 * This program is free software; you can redistribute it and/or modify *
6 * it under the terms of the GNU General Public License as published by *
7 * the Free Software Foundation; either version 2 of the License, or *
8 * (at your option) any later version. *
9 * *
10 * This program is distributed in the hope that it will be useful, *
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13 * GNU General Public License for more details. *
14 * *
15 * You should have received a copy of the GNU General Public License *
16 * along with this program; if not, write to the *
17 * Free Software Foundation, Inc., *
18 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
19 ***************************************************************************/
21 #include "polygon.h"
22 #include <QPainter>
24 namespace YAMF {
26 namespace Item {
28 struct Polygon::Private
30 Private(int corners) : corners(corners) {};
32 int corners;
33 QRectF rect;
35 QPainterPath polygon;
39 Polygon::Polygon(int corners, QGraphicsItem * parent, QGraphicsScene * scene): QAbstractGraphicsShapeItem(parent, scene), d(new Private(corners))
44 Polygon::Polygon(int corners, const QRectF & rect, QGraphicsItem * parent, QGraphicsScene * scene): QAbstractGraphicsShapeItem(parent, scene), d(new Private(corners))
46 setRect(rect);
49 Polygon::~Polygon()
51 delete d;
55 void Polygon::fromXml(const QString &xml)
60 QDomElement Polygon::toXml(QDomDocument &doc) const
65 QRectF Polygon::boundingRect() const
67 return d->rect;
70 void Polygon::paint( QPainter * painter, const QStyleOptionGraphicsItem *, QWidget *)
72 painter->save();
75 painter->setPen(pen());
76 painter->setBrush(brush());
78 painter->drawPath(d->polygon);
79 painter->restore();
84 void Polygon::setRect(const QRectF& rect)
86 d->rect = rect;
87 QPainterPath ellipse;
89 ellipse.addEllipse( sceneBoundingRect() );
91 d->polygon = QPainterPath();
93 d->polygon.moveTo(ellipse.pointAtPercent(0));
95 for(double i = 1.0/d->corners; i <= 1; i += 1.0/d->corners)
97 d->polygon.lineTo(ellipse.pointAtPercent(i));
101 QRectF Polygon::rect() const
103 return d->rect;
106 QPainterPath Polygon::shape () const
108 return d->polygon;