QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgslayoutitemnodeitem.h
Go to the documentation of this file.
1/***************************************************************************
2 qgslayoutitemnodeitem.h
3 begin : March 2016
4 copyright : (C) 2016 Paul Blottiere, Oslandia
5 email : paul dot blottiere at oslandia dot com
6 ***************************************************************************/
7
8/***************************************************************************
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 ***************************************************************************/
16
17#ifndef QGSLAYOUTITEMNODEITEM_H
18#define QGSLAYOUTITEMNODEITEM_H
19
20#include "qgis_core.h"
21#include "qgslayoutitem.h"
22
28class CORE_EXPORT QgsLayoutNodesItem: public QgsLayoutItem
29{
30 Q_OBJECT
31
32 public:
33
38 void setNodes( const QPolygonF &nodes );
39
44 QPolygonF nodes() const { return mPolygon; }
45
54 bool addNode( QPointF point, bool checkArea = true, double radius = 10 );
55
59 void setDisplayNodes( bool display = true ) { mDrawNodes = display; }
60
66 bool moveNode( int index, QPointF node );
67
76 int nodeAtPosition( QPointF point, bool searchInRadius = true, double radius = 10 ) const;
77
84 bool nodePosition( int index, QPointF &position ) const;
85
89 bool removeNode( int index );
90
92 int nodesSize() const { return mPolygon.size(); }
93
97 bool setSelectedNode( int index );
98
102 int selectedNode() const { return mSelectedNode; }
103
107 void deselectNode() { mSelectedNode = -1; }
108
109 // Depending on the symbol style, the bounding rectangle can be larger than the shape
110 QRectF boundingRect() const override;
111
112 // Reimplement estimatedFrameBleed, since frames on shapes are drawn using symbology
113 // rather than the item's pen
114 double estimatedFrameBleed() const override;
115
116 protected:
117
121 QgsLayoutNodesItem( QgsLayout *layout );
122
126 QgsLayoutNodesItem( const QPolygonF &polygon, QgsLayout *layout );
127
128 void draw( QgsLayoutItemRenderContext &context ) override;
129 QgsLayoutItem::Flags itemFlags() const override;
130 bool writePropertiesToElement( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const override;
131 bool readPropertiesFromElement( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context ) override;
132
134 QPolygonF mPolygon;
135
137 double mMaxSymbolBleed = 0.0;
138
140 virtual bool _addNode( int nodeIndex, QPointF newNode, double radius ) = 0;
141
143 virtual bool _removeNode( int nodeIndex ) = 0;
144
146 virtual void _draw( QgsLayoutItemRenderContext &context, const QStyleOptionGraphicsItem *itemStyle = nullptr ) = 0;
147
149 virtual void _readXmlStyle( const QDomElement &elmt, const QgsReadWriteContext &context ) = 0;
150
152 virtual void _writeXmlStyle( QDomDocument &doc, QDomElement &elmt, const QgsReadWriteContext &context ) const = 0;
153
158 void rescaleToFitBoundingBox();
159
161 double computeDistance( QPointF pt1, QPointF pt2 ) const;
162
164 void updateSceneRect();
165
168
169 protected slots:
170
175 virtual void updateBoundingRect();
176
177 private:
178
179 void init();
180
182 int mSelectedNode = -1;
183
188 bool mDrawNodes = false;
189
191 void drawNodes( QgsLayoutItemRenderContext &context ) const;
192 void drawSelectedNode( QgsLayoutItemRenderContext &context ) const;
193
194};
195
196#endif // QGSLAYOUTITEMNODEITEM_H
Contains settings and helpers relating to a render of a QgsLayoutItem.
Definition: qgslayoutitem.h:43
Base class for graphical items within a QgsLayout.
virtual bool writePropertiesToElement(QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context) const
Stores item state within an XML DOM element.
virtual Flags itemFlags() const
Returns the item's flags, which indicate how the item behaves.
virtual bool readPropertiesFromElement(const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context)
Sets item state from a DOM element.
QFlags< Flag > Flags
virtual double estimatedFrameBleed() const
Returns the estimated amount the item's frame bleeds outside the item's actual rectangle.
virtual void draw(QgsLayoutItemRenderContext &context)=0
Draws the item's contents using the specified item render context.
An abstract layout item that provides generic methods for node based shapes such as polygon or polyli...
virtual bool _removeNode(int nodeIndex)=0
Method called in removeNode.
QPolygonF nodes() const
Returns the nodes the shape consists of.
virtual void _writeXmlStyle(QDomDocument &doc, QDomElement &elmt, const QgsReadWriteContext &context) const =0
Method called in writeXml.
QRectF mCurrentRectangle
Current bounding rectangle of shape.
virtual void _readXmlStyle(const QDomElement &elmt, const QgsReadWriteContext &context)=0
Method called in readXml.
int nodesSize() const
Returns the number of nodes in the shape.
void setDisplayNodes(bool display=true)
Set whether the item's nodes should be displayed.
int selectedNode() const
Returns the currently selected node, or -1 if no node is selected.
virtual void _draw(QgsLayoutItemRenderContext &context, const QStyleOptionGraphicsItem *itemStyle=nullptr)=0
Method called in paint.
virtual bool _addNode(int nodeIndex, QPointF newNode, double radius)=0
Method called in addNode.
void deselectNode()
Deselects any selected nodes.
QPolygonF mPolygon
Shape's nodes.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
Definition: qgslayout.h:49
The class is used as a container of context for various read/write operations on other objects.