QGIS API Documentation 3.28.0-Firenze (ed3ad0430f)
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
29class CORE_EXPORT QgsLayoutNodesItem: public QgsLayoutItem
30{
31 Q_OBJECT
32
33 public:
34
39 void setNodes( const QPolygonF &nodes );
40
45 QPolygonF nodes() const { return mPolygon; }
46
55 bool addNode( QPointF point, bool checkArea = true, double radius = 10 );
56
60 void setDisplayNodes( bool display = true ) { mDrawNodes = display; }
61
67 bool moveNode( int index, QPointF node );
68
77 int nodeAtPosition( QPointF point, bool searchInRadius = true, double radius = 10 ) const;
78
85 bool nodePosition( int index, QPointF &position ) const;
86
90 bool removeNode( int index );
91
93 int nodesSize() const { return mPolygon.size(); }
94
98 bool setSelectedNode( int index );
99
103 int selectedNode() const { return mSelectedNode; }
104
108 void deselectNode() { mSelectedNode = -1; }
109
110 // Depending on the symbol style, the bounding rectangle can be larger than the shape
111 QRectF boundingRect() const override;
112
113 // Reimplement estimatedFrameBleed, since frames on shapes are drawn using symbology
114 // rather than the item's pen
115 double estimatedFrameBleed() const override;
116
117 protected:
118
122 QgsLayoutNodesItem( QgsLayout *layout );
123
127 QgsLayoutNodesItem( const QPolygonF &polygon, QgsLayout *layout );
128
129 void draw( QgsLayoutItemRenderContext &context ) override;
130
131 bool writePropertiesToElement( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const override;
132 bool readPropertiesFromElement( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context ) override;
133
135 QPolygonF mPolygon;
136
138 double mMaxSymbolBleed = 0.0;
139
141 virtual bool _addNode( int nodeIndex, QPointF newNode, double radius ) = 0;
142
144 virtual bool _removeNode( int nodeIndex ) = 0;
145
147 virtual void _draw( QgsLayoutItemRenderContext &context, const QStyleOptionGraphicsItem *itemStyle = nullptr ) = 0;
148
150 virtual void _readXmlStyle( const QDomElement &elmt, const QgsReadWriteContext &context ) = 0;
151
153 virtual void _writeXmlStyle( QDomDocument &doc, QDomElement &elmt, const QgsReadWriteContext &context ) const = 0;
154
159 void rescaleToFitBoundingBox();
160
162 double computeDistance( QPointF pt1, QPointF pt2 ) const;
163
165 void updateSceneRect();
166
169
170 protected slots:
171
176 virtual void updateBoundingRect();
177
178 private:
179
180 void init();
181
183 int mSelectedNode = -1;
184
189 bool mDrawNodes = false;
190
192 void drawNodes( QgsLayoutItemRenderContext &context ) const;
193 void drawSelectedNode( QgsLayoutItemRenderContext &context ) const;
194
195};
196
197#endif // QGSLAYOUTITEMNODEITEM_H
Contains settings and helpers relating to a render of a QgsLayoutItem.
Definition: qgslayoutitem.h:45
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 bool readPropertiesFromElement(const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context)
Sets item state from a DOM element.
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:51
The class is used as a container of context for various read/write operations on other objects.