QGIS API Documentation  3.37.0-Master (a5b4d9743e8)
qgsannotationitem.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsannotationitem.h
3  ----------------
4  copyright : (C) 2019 by Sandro Mani
5  email : smani at sourcepole dot ch
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 QGSANNOTATIONITEM_H
18 #define QGSANNOTATIONITEM_H
19 
20 #include "qgis_core.h"
21 #include "qgis_sip.h"
23 
24 class QgsFeedback;
25 class QgsMarkerSymbol;
26 class QgsLineSymbol;
27 class QgsFillSymbol;
31 class QgsRenderContext;
33 
40 class CORE_EXPORT QgsAnnotationItem
41 {
42 
43 #ifdef SIP_RUN
45  if ( sipCpp->type() == QLatin1String( "marker" ) )
46  {
47  sipType = sipType_QgsAnnotationMarkerItem;
48  }
49  else if ( sipCpp->type() == QLatin1String( "linestring" ) )
50  {
51  sipType = sipType_QgsAnnotationLineItem;
52  }
53  else if ( sipCpp->type() == QLatin1String( "polygon" ) )
54  {
55  sipType = sipType_QgsAnnotationPolygonItem;
56  }
57  else if ( sipCpp->type() == QLatin1String( "pointtext" ) )
58  {
59  sipType = sipType_QgsAnnotationPointTextItem;
60  }
61  else if ( sipCpp->type() == QLatin1String( "linetext" ) )
62  {
63  sipType = sipType_QgsAnnotationLineTextItem;
64  }
65  else
66  {
67  sipType = 0;
68  }
69  SIP_END
70 #endif
71 
72  public:
73 
77  QgsAnnotationItem() = default;
78 
79 #ifndef SIP_RUN
81  QgsAnnotationItem( const QgsAnnotationItem &other ) = delete;
83  QgsAnnotationItem &operator=( const QgsAnnotationItem &other ) = delete;
84 #endif
85 
86  virtual ~QgsAnnotationItem() = default;
87 
93  virtual Qgis::AnnotationItemFlags flags() const;
94 
102  virtual QgsAnnotationItem *clone() const = 0 SIP_FACTORY;
103 
107  virtual QString type() const = 0;
108 
112  virtual QgsRectangle boundingBox() const = 0;
113 
117  virtual QgsRectangle boundingBox( QgsRenderContext &context ) const { Q_UNUSED( context ) return boundingBox();}
118 
125  virtual void render( QgsRenderContext &context, QgsFeedback *feedback ) = 0;
126 
135  virtual bool writeXml( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const = 0;
136 
145  virtual bool readXml( const QDomElement &element, const QgsReadWriteContext &context ) = 0;
146 
153 
160 
167  int zIndex() const { return mZIndex; }
168 
175  void setZIndex( int index ) { mZIndex = index; }
176 
183  bool enabled() const { return mEnabled; }
184 
191  void setEnabled( bool enabled ) { mEnabled = enabled; }
192 
198  virtual QList< QgsAnnotationItemNode > nodes() const;
199 
206  bool useSymbologyReferenceScale() const { return mUseReferenceScale; }
207 
214  void setUseSymbologyReferenceScale( bool enabled ) { mUseReferenceScale = enabled; }
215 
231  double symbologyReferenceScale() const { return mReferenceScale; }
232 
248  void setSymbologyReferenceScale( double scale ) { mReferenceScale = scale; }
249 
250  protected:
251 
257  void copyCommonProperties( const QgsAnnotationItem *other );
258 
265  bool writeCommonProperties( QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context ) const;
266 
273  bool readCommonProperties( const QDomElement &element, const QgsReadWriteContext &context );
274 
275  private:
276 
277  int mZIndex = 0;
278  bool mEnabled = true;
279  bool mUseReferenceScale = false;
280  double mReferenceScale = 0;
281 
282 #ifdef SIP_RUN
283  QgsAnnotationItem( const QgsAnnotationItem &other );
284 #endif
285 
286 };
287 
288 #endif // QGSANNOTATIONITEM_H
AnnotationItemEditOperationResult
Results from an edit operation on an annotation item.
Definition: qgis.h:2022
QFlags< AnnotationItemFlag > AnnotationItemFlags
Annotation item flags.
Definition: qgis.h:1987
Abstract base class for annotation item edit operations.
Encapsulates the transient results of an in-progress annotation edit operation.
Contains information about a node used for editing an annotation item.
Abstract base class for annotation items which are drawn with QgsAnnotationLayers.
void setUseSymbologyReferenceScale(bool enabled)
Sets whether the annotation item uses a symbology reference scale.
void setZIndex(int index)
Sets the item's z index, which controls the order in which annotation items are rendered in the layer...
bool useSymbologyReferenceScale() const
Returns true if the annotation item uses a symbology reference scale.
virtual QgsAnnotationItem * clone() const =0
Returns a clone of the item.
virtual bool writeXml(QDomElement &element, QDomDocument &document, const QgsReadWriteContext &context) const =0
Writes the item's state into an XML element.
virtual QgsRectangle boundingBox() const =0
Returns the bounding box of the item's geographic location, in the parent layer's coordinate referenc...
void setEnabled(bool enabled)
Sets if the item will be rendered or not in the layer.
virtual QString type() const =0
Returns a unique (untranslated) string identifying the type of item.
virtual void render(QgsRenderContext &context, QgsFeedback *feedback)=0
Renders the item to the specified render context.
bool enabled() const
Returns true if the item is enabled and will be rendered in the layer.
virtual bool readXml(const QDomElement &element, const QgsReadWriteContext &context)=0
Reads the item's state from the given DOM element.
QgsAnnotationItem(const QgsAnnotationItem &other)=delete
QgsAnnotationItem cannot be copied.
void setSymbologyReferenceScale(double scale)
Sets the annotation's symbology reference scale.
QgsAnnotationItem & operator=(const QgsAnnotationItem &other)=delete
QgsAnnotationItem cannot be copied.
int zIndex() const
Returns the item's z index, which controls the order in which annotation items are rendered in the la...
virtual ~QgsAnnotationItem()=default
QgsAnnotationItem()=default
Constructor for an annotation item.
virtual QgsRectangle boundingBox(QgsRenderContext &context) const
Returns the bounding box of the item's geographic location, in the parent layer's coordinate referenc...
double symbologyReferenceScale() const
Returns the annotation's symbology reference scale.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition: qgsfeedback.h:44
A fill symbol type, for rendering Polygon and MultiPolygon geometries.
Definition: qgsfillsymbol.h:30
A line symbol type, for rendering LineString and MultiLineString geometries.
Definition: qgslinesymbol.h:30
A marker symbol type, for rendering Point and MultiPoint geometries.
The class is used as a container of context for various read/write operations on other objects.
A rectangle specified with double values.
Definition: qgsrectangle.h:42
Contains information about the context of a rendering operation.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Definition: qgis_sip.h:191
#define SIP_FACTORY
Definition: qgis_sip.h:76
#define SIP_END
Definition: qgis_sip.h:208