Branch data Line data Source code
1 : : /*************************************************************************** 2 : : qgsannotationlayer.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 QGSANNOTATIONLAYER_H 18 : : #define QGSANNOTATIONLAYER_H 19 : : 20 : : #include "qgis_core.h" 21 : : #include "qgis_sip.h" 22 : : #include "qgsmaplayer.h" 23 : : #include "qgsmaplayerrenderer.h" 24 : : 25 : : class QgsAnnotationItem; 26 : : 27 : : 28 : : /** 29 : : * \ingroup core 30 : : * 31 : : * \brief Represents a map layer containing a set of georeferenced annotations, e.g. markers, lines, polygons or 32 : : * text items. 33 : : * 34 : : * Annotation layers store a set of QgsAnnotationItem items, which are rendered according to the item's 35 : : * z-order. 36 : : * 37 : : * \since QGIS 3.16 38 : : */ 39 : : class CORE_EXPORT QgsAnnotationLayer : public QgsMapLayer 40 : : { 41 : : Q_OBJECT 42 : : 43 : : public: 44 : : 45 : : /** 46 : : * Setting options for loading annotation layers. 47 : : * \since QGIS 3.16 48 : : */ 49 : 5 : struct LayerOptions 50 : : { 51 : : 52 : : /** 53 : : * Constructor for LayerOptions. 54 : : */ 55 : 5 : explicit LayerOptions( const QgsCoordinateTransformContext &transformContext ) 56 : 5 : : transformContext( transformContext ) 57 : 5 : {} 58 : : 59 : : /** 60 : : * Coordinate transform context 61 : : */ 62 : : QgsCoordinateTransformContext transformContext; 63 : : 64 : : }; 65 : : 66 : : 67 : : /** 68 : : * Constructor for a new QgsAnnotationLayer with the specified layer \a name. 69 : : * 70 : : * The \a options argument specifies load-time layer options. 71 : : */ 72 : : QgsAnnotationLayer( const QString &name, const QgsAnnotationLayer::LayerOptions &options ); 73 : : ~QgsAnnotationLayer() override; 74 : : 75 : : #ifdef SIP_RUN 76 : : SIP_PYOBJECT __repr__(); 77 : : % MethodCode 78 : : QString str = QStringLiteral( "<QgsAnnotationLayer: '%1'>" ).arg( sipCpp->name() ); 79 : : sipRes = PyUnicode_FromString( str.toUtf8().constData() ); 80 : : % End 81 : : #endif 82 : : 83 : : /** 84 : : * Resets the annotation layer to a default state, and clears all items from it. 85 : : */ 86 : : void reset(); 87 : : 88 : : /** 89 : : * Adds an \a item to the layer. 90 : : * 91 : : * Ownership of \a item is transferred to the layer. 92 : : * 93 : : * Returns the unique ID assigned to the item. 94 : : */ 95 : : QString addItem( QgsAnnotationItem *item SIP_TRANSFER ); 96 : : 97 : : /** 98 : : * Removes (and deletes) the item with matching \a id. 99 : : */ 100 : : bool removeItem( const QString &id ); 101 : : 102 : : /** 103 : : * Removes all items from the layer. 104 : : */ 105 : : void clear(); 106 : : 107 : : /** 108 : : * Returns TRUE if the annotation layer is empty and contains no annotations. 109 : : */ 110 : : bool isEmpty() const; 111 : : 112 : : /** 113 : : * Returns a map of items contained in the layer, by unique item ID. 114 : : * 115 : : * This map contains references to items owned by the layer, and ownership of these remains 116 : : * with the layer. 117 : : */ 118 : 0 : QMap<QString, QgsAnnotationItem *> items() const { return mItems; } 119 : : 120 : : QgsAnnotationLayer *clone() const override SIP_FACTORY; 121 : : QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) override SIP_FACTORY; 122 : : QgsRectangle extent() const override; 123 : : void setTransformContext( const QgsCoordinateTransformContext &context ) override; 124 : : bool readXml( const QDomNode &layerNode, QgsReadWriteContext &context ) override; 125 : : bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const override; 126 : : bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &, StyleCategories categories = AllStyleCategories ) const override; 127 : : bool readSymbology( const QDomNode &node, QString &errorMessage, QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) override; 128 : : 129 : : private: 130 : : QMap<QString, QgsAnnotationItem *> mItems; 131 : : QgsCoordinateTransformContext mTransformContext; 132 : : }; 133 : : 134 : : #endif // QGSANNOTATIONLAYER_H