QElectroTech 0.100.0-dev
Loading...
Searching...
No Matches
partpolygon.h
Go to the documentation of this file.
1/*
2 Copyright 2006-2024 The QElectroTech Team
3 This file is part of QElectroTech.
4
5 QElectroTech 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 QElectroTech 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 QElectroTech. If not, see <http://www.gnu.org/licenses/>.
17*/
18#ifndef PART_POLYGON_H
19#define PART_POLYGON_H
20
21#include <QPolygonF>
23
26class QAction;
27
34{
35 Q_OBJECT
36
37 Q_PROPERTY(bool closed READ isClosed WRITE setClosed)
38 Q_PROPERTY(QPolygonF polygon READ polygon WRITE setPolygon)
39
40 // constructors, destructor
41 public:
42 PartPolygon(QETElementEditor *editor, QGraphicsItem *parent = nullptr);
43 ~PartPolygon() override;
44
45 private:
47
48 signals:
51
52 // methods
53 public:
54 enum { Type = UserType + 1105 };
59 int type() const override { return Type; }
60 void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) override;
61
62 QString name() const override { return(QObject::tr("polygone", "element part name")); }
63 QString xmlName() const override { return(QString("polygon")); }
64 void fromXml(const QDomElement &) override;
65 const QDomElement toXml(QDomDocument &) const override;
66
67 QPainterPath shape () const override;
68 QPainterPath shadowShape() const override;
69 QRectF boundingRect() const override;
70 bool isUseless() const override;
71 QRectF sceneGeometricRect() const override;
72
73 void startUserTransformation(const QRectF &) override;
74 void handleUserTransformation(const QRectF &, const QRectF &) override;
76
77 QPolygonF polygon () const;
78 void setPolygon (const QPolygonF &polygon);
79
80 void addPoint (const QPointF &point);
81 void setLastPoint (const QPointF &point);
82 void removeLastPoint ();
83
84 bool isClosed () const {return m_closed;}
85 void setClosed (bool close);
86
87 void setHandlerColor(QPointF pos, const QColor &color) final;
88 void resetAllHandlerColor() final;
89
90 void setRotation (qreal angle);
91 qreal rotation () const;
92
93 void addHandler() override;
94 void removeHandler() override;
95
96 protected:
97 QVariant itemChange(GraphicsItemChange change, const QVariant &value) override;
98 bool sceneEventFilter(QGraphicsItem *watched, QEvent *event) override;
99 void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override;
100
101 private:
102 void adjusteHandlerPos();
103 void handlerMousePressEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
104 void handlerMouseMoveEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
105 void handlerMouseReleaseEvent (QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event);
106
107 void insertPoint();
108 void removePoint();
109
110
112 QList<QPointF> saved_points_;
113 QPolygonF m_polygon;
120 qreal m_rot;
121};
122#endif
The CustomElementGraphicPart class This class is the base for all home-made primitive like line,...
Definition customelementgraphicpart.h:36
Color color
Definition customelementgraphicpart.h:44
The PartPolygon class This class represents a polygon primitive which may be used to compose the draw...
Definition partpolygon.h:34
int type() const override
Definition partpolygon.h:59
QPropertyUndoCommand * m_undo_command
Definition partpolygon.h:114
QAction * m_insert_point
Definition partpolygon.h:117
QVariant itemChange(GraphicsItemChange change, const QVariant &value) override
PartPolygon::itemChange.
Definition partpolygon.cpp:317
bool sceneEventFilter(QGraphicsItem *watched, QEvent *event) override
PartPolygon::sceneEventFilter.
Definition partpolygon.cpp:337
void setLastPoint(const QPointF &point)
PartPolygon::setLastPoint Set the last point of polygon to point.
Definition partpolygon.cpp:240
void setPolygon(const QPolygonF &polygon)
PartPolygon::setPolygon Sets the item's polygon to be the given polygon.
Definition partpolygon.cpp:215
bool closed
Definition partpolygon.h:37
void addHandler() override
PartPolygon::addHandler Add handlers for this item.
Definition partpolygon.cpp:471
void handlerMouseReleaseEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
PartPolygon::handlerMouseReleaseEvent.
Definition partpolygon.cpp:456
void startUserTransformation(const QRectF &) override
PartPolygon::startUserTransformation Start the user-induced transformation, provided this primitive i...
Definition partpolygon.cpp:171
void adjusteHandlerPos()
PartPolygon::adjusteHandlerPos.
Definition partpolygon.cpp:398
QAction * m_remove_point
Definition partpolygon.h:118
QPainterPath shape() const override
PartPolygon::shape.
Definition partpolygon.cpp:555
bool m_closed
Definition partpolygon.h:111
qreal m_rot
Definition partpolygon.h:120
QPointF m_context_menu_pos
Definition partpolygon.h:119
void handlerMousePressEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
PartPolygon::handlerMousePressEvent.
Definition partpolygon.cpp:422
void setRotation(qreal angle)
Definition partpolygon.cpp:297
void contextMenuEvent(QGraphicsSceneContextMenuEvent *event) override
Definition partpolygon.cpp:371
QVector< QetGraphicsHandlerItem * > m_handler_vector
Definition partpolygon.h:116
@ Type
Definition partpolygon.h:54
bool isUseless() const override
PartPolygon::isUseless.
Definition partpolygon.cpp:143
qreal rotation() const
Definition partpolygon.cpp:305
QPolygonF polygon
Definition partpolygon.h:38
void insertPoint()
PartPolygon::insertPoint Insert a point in this polygon.
Definition partpolygon.cpp:504
QPolygonF m_polygon
Definition partpolygon.h:113
QString xmlName() const override
Definition partpolygon.h:63
void removeLastPoint()
PartPolygon::removeLastPoint Remove the last point of polygon.
Definition partpolygon.cpp:253
bool isClosed() const
Definition partpolygon.h:84
void addPoint(const QPointF &point)
PartPolygon::addPoint Add new point to polygon.
Definition partpolygon.cpp:229
void fromXml(const QDomElement &) override
PartPolygon::fromXml Import the properties of this polygon from a xml element.
Definition partpolygon.cpp:92
void setClosed(bool close)
Definition partpolygon.cpp:262
QPainterPath shadowShape() const override
Definition partpolygon.cpp:570
int m_vector_index
Definition partpolygon.h:115
void handleUserTransformation(const QRectF &, const QRectF &) override
PartPolygon::handleUserTransformation Handle the user-induced transformation from initial_selection_r...
Definition partpolygon.cpp:183
void polygonChanged()
const QDomElement toXml(QDomDocument &) const override
PartPolygon::toXml Export this polygin in xml.
Definition partpolygon.cpp:123
void removeHandler() override
PartPolygon::removeHandler Remove the handlers of this item.
Definition partpolygon.cpp:491
void setHandlerColor(QPointF pos, const QColor &color) final
PartPolygon::setHandlerColor Set the handler at pos pos (in polygon coordinate) to color color.
Definition partpolygon.cpp:276
QRectF boundingRect() const override
PartPolygon::boundingRect.
Definition partpolygon.cpp:588
void removePoint()
PartPolygon::removePoint remove a point on this polygon.
Definition partpolygon.cpp:521
QRectF sceneGeometricRect() const override
PartPolygon::sceneGeometricRect.
Definition partpolygon.cpp:160
QString name() const override
Definition partpolygon.h:62
void resetAllHandlerColor() final
PartPolygon::resetAllHandlerColor Reset the color of every handlers.
Definition partpolygon.cpp:289
void handlerMouseMoveEvent(QetGraphicsHandlerItem *qghi, QGraphicsSceneMouseEvent *event)
PartPolygon::handlerMouseMoveEvent.
Definition partpolygon.cpp:436
void closedChange()
QList< QPointF > saved_points_
Definition partpolygon.h:112
QET::ScalingMethod preferredScalingMethod() const override
PartPolygon::preferredScalingMethod This method is called by the decorator when it needs to determine...
Definition partpolygon.cpp:196
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *) override
PartPolygon::paint Draw this polygon.
Definition partpolygon.cpp:62
Definition qetelementeditor.h:39
The QPropertyUndoCommand class This undo command manage QProperty of a QObject. This undo command can...
Definition qpropertyundocommand.h:34
The QetGraphicsHandlerItem class This graphics item represents a point, destined to be used as an han...
Definition qetgraphicshandleritem.h:37
ScalingMethod
Supported types of interactive scaling, typically for a single element primitive.
Definition qet.h:77