QGIS API Documentation  3.4.15-Madeira (e83d02e274)
qgslayoutitemshape.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgslayoutitemshape.h
3  ---------------------
4  begin : July 2017
5  copyright : (C) 2017 by Nyall Dawson
6  email : nyall dot dawson at gmail dot com
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 QGSLAYOUTITEMSHAPE_H
18 #define QGSLAYOUTITEMSHAPE_H
19 
20 #include "qgis_core.h"
21 #include "qgslayoutitem.h"
22 #include "qgslayoutitemregistry.h"
23 #include "qgssymbol.h"
24 #include "qgslayoutmeasurement.h"
25 
32 class CORE_EXPORT QgsLayoutItemShape : public QgsLayoutItem
33 {
34  Q_OBJECT
35 
36  public:
37 
39  enum Shape
40  {
43  Triangle
44  };
45 
46 
50  explicit QgsLayoutItemShape( QgsLayout *layout );
51 
57  static QgsLayoutItemShape *create( QgsLayout *layout ) SIP_FACTORY;
58 
59 
60  int type() const override;
61  QIcon icon() const override;
62 
63  //Overridden to return shape type
64  QString displayName() const override;
65 
70  QgsLayoutItemShape::Shape shapeType() const { return mShape; }
71 
76  void setShapeType( QgsLayoutItemShape::Shape type );
77 
83  void setSymbol( QgsFillSymbol *symbol );
84 
89  QgsFillSymbol *symbol() { return mShapeStyleSymbol.get(); }
90 
95  void setCornerRadius( QgsLayoutMeasurement radius ) { mCornerRadius = radius; }
96 
101  QgsLayoutMeasurement cornerRadius() const { return mCornerRadius; }
102 
103  // Depending on the symbol style, the bounding rectangle can be larger than the shape
104  QRectF boundingRect() const override;
105 
106  // Reimplement estimatedFrameBleed, since frames on shapes are drawn using symbology
107  // rather than the item's pen
108  double estimatedFrameBleed() const override;
109 
110  protected:
111 
112  void draw( QgsLayoutItemRenderContext &context ) override;
113 
114  bool writePropertiesToElement( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const override;
115  bool readPropertiesFromElement( const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context ) override;
116 
117  private slots:
118 
123  void refreshSymbol();
124 
126  void updateBoundingRect();
127 
128  private:
129 
130  Shape mShape = Rectangle;
131 
132  std::unique_ptr< QgsFillSymbol > mShapeStyleSymbol;
133 
134  double mMaxSymbolBleed = 0.0;
136  QRectF mCurrentRectangle;
137 
138  QgsLayoutMeasurement mCornerRadius;
139 };
140 
141 
142 #endif //QGSLAYOUTITEMSHAPE_H
The class is used as a container of context for various read/write operations on other objects...
QgsLayoutMeasurement cornerRadius() const
Returns the corner radius for rounded rectangle corners.
virtual QIcon icon() const
Returns the item&#39;s icon.
Base class for graphical items within a QgsLayout.
int type() const override
Returns a unique graphics item type identifier.
virtual bool writePropertiesToElement(QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context) const
Stores item state within an XML DOM element.
This class provides a method of storing measurements for use in QGIS layouts using a variety of diffe...
virtual bool readPropertiesFromElement(const QDomElement &element, const QDomDocument &document, const QgsReadWriteContext &context)
Sets item state from a DOM element.
Layout item for basic filled shapes (e.g.
QgsLayoutItemShape::Shape shapeType() const
Returns the type of shape (e.g.
#define SIP_FACTORY
Definition: qgis_sip.h:69
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
Definition: qgslayout.h:49
Contains settings and helpers relating to a render of a QgsLayoutItem.
Definition: qgslayoutitem.h:43
QgsFillSymbol * symbol()
Returns the fill symbol used to draw the shape.
virtual double estimatedFrameBleed() const
Returns the estimated amount the item&#39;s frame bleeds outside the item&#39;s actual rectangle.
virtual QString displayName() const
Gets item display name.
virtual void draw(QgsLayoutItemRenderContext &context)=0
Draws the item&#39;s contents using the specified item render context.
A fill symbol type, for rendering Polygon and MultiPolygon geometries.
Definition: qgssymbol.h:1003
void setCornerRadius(QgsLayoutMeasurement radius)
Sets the corner radius for rounded rectangle corners.