QGIS API Documentation 4.1.0-Master (60fea48833c)
Loading...
Searching...
No Matches
qgsannotationlayer.h
Go to the documentation of this file.
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 "qgsmaplayerref.h"
24#include "qgsmaplayerrenderer.h"
25
26#include <QString>
27
28using namespace Qt::StringLiterals;
29
33class QgsPaintEffect;
34
35
37class QgsAnnotationLayerSpatialIndex;
39
51class CORE_EXPORT QgsAnnotationLayer : public QgsMapLayer
52{
53 Q_OBJECT
54
55 public:
74
75
81 QgsAnnotationLayer( const QString &name, const QgsAnnotationLayer::LayerOptions &options );
82 ~QgsAnnotationLayer() override;
83
84#ifdef SIP_RUN
85 // clang-format off
86 SIP_PYOBJECT __repr__();
87 % MethodCode
88 QString str = u"<QgsAnnotationLayer: '%1'>"_s.arg( sipCpp->name() );
89 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
90 % End
91// clang-format on
92#endif
93
97 void reset();
98
107
115 void replaceItem( const QString &id, QgsAnnotationItem *item SIP_TRANSFER );
116
120 bool removeItem( const QString &id );
121
125 void clear();
126
130 bool isEmpty() const;
131
138 QMap<QString, QgsAnnotationItem *> items() const { return mItems; }
139
145 QgsAnnotationItem *item( const QString &id ) const;
146
155 QStringList itemsInBounds( const QgsRectangle &bounds, QgsRenderContext &context, QgsFeedback *feedback = nullptr ) const;
156
165
174
175 Qgis::MapLayerProperties properties() const override;
176 QgsAnnotationLayer *clone() const override SIP_FACTORY;
177 QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) override SIP_FACTORY;
178 QgsRectangle extent() const override;
179 void setTransformContext( const QgsCoordinateTransformContext &context ) override;
180 bool readXml( const QDomNode &layerNode, QgsReadWriteContext &context ) override;
181 bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const override;
182 bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &, StyleCategories categories = AllStyleCategories ) const override;
183 bool readSymbology( const QDomNode &node, QString &errorMessage, QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) override;
184 bool writeStyle( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &context, StyleCategories categories ) const override;
185 bool readStyle( const QDomNode &node, QString &errorMessage, QgsReadWriteContext &context, StyleCategories categories ) override;
186 bool isEditable() const override;
187 bool supportsEditing() const override;
188 QgsDataProvider *dataProvider() override;
189 const QgsDataProvider *dataProvider() const override SIP_SKIP;
190 QString htmlMetadata() const override;
191 void resolveReferences( QgsProject *project ) override;
192
198 QgsPaintEffect *paintEffect() const;
199
208 void setPaintEffect( QgsPaintEffect *effect SIP_TRANSFER );
209
217 QgsMapLayer *linkedVisibilityLayer();
218
226 void setLinkedVisibilityLayer( QgsMapLayer *layer );
227
228 private:
229 QStringList queryIndex( const QgsRectangle &bounds, QgsFeedback *feedback = nullptr ) const;
230 bool writeItems( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) const;
231 bool readItems( const QDomNode &node, QString &errorMessage, QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories );
232
233 QMap<QString, QgsAnnotationItem *> mItems;
234 QgsCoordinateTransformContext mTransformContext;
235
236 std::unique_ptr< QgsAnnotationLayerSpatialIndex > mSpatialIndex;
237 QSet< QString > mNonIndexedItems;
238
239 std::unique_ptr<QgsDataProvider> mDataProvider;
240
241 std::unique_ptr< QgsPaintEffect > mPaintEffect;
242
243 QgsMapLayerRef mLinkedLayer;
244
247};
248
249#ifndef SIP_RUN
251
257class QgsAnnotationLayerDataProvider : public QgsDataProvider
258{
259 Q_OBJECT
260
261 public:
262 QgsAnnotationLayerDataProvider( const QgsDataProvider::ProviderOptions &providerOptions, Qgis::DataProviderReadFlags flags );
263 QgsCoordinateReferenceSystem crs() const override;
264 QString name() const override;
265 QString description() const override;
266 QgsRectangle extent() const override;
267 bool isValid() const override;
268};
270#endif
271
272#endif // QGSANNOTATIONLAYER_H
AnnotationItemEditOperationResult
Results from an edit operation on an annotation item.
Definition qgis.h:2608
QFlags< DataProviderReadFlag > DataProviderReadFlags
Flags which control data provider construction.
Definition qgis.h:512
QFlags< MapLayerProperty > MapLayerProperties
Map layer properties.
Definition qgis.h:2367
Abstract base class for annotation item edit operations.
Encapsulates the context for an annotation item edit operation.
Abstract base class for annotation items which are drawn with QgsAnnotationLayers.
Represents a map layer containing a set of georeferenced annotations, e.g.
QgsRectangle extent() const override
Returns the extent of the layer.
friend class QgsAnnotationLayerChunkLoader
void clear()
Removes all items from the layer.
bool removeItem(const QString &id)
Removes (and deletes) the item with matching id.
void replaceItem(const QString &id, QgsAnnotationItem *item)
Replaces the existing item with matching id with a new item.
friend class QgsAnnotationLayerRenderer
void reset()
Resets the annotation layer to a default state, and clears all items from it.
QString addItem(QgsAnnotationItem *item)
Adds an item to the layer.
bool isEmpty() const
Returns true if the annotation layer is empty and contains no annotations.
QgsAnnotationItem * item(const QString &id) const
Returns the item with the specified id, or nullptr if no matching item was found.
QgsAnnotationLayer(const QString &name, const QgsAnnotationLayer::LayerOptions &options)
Constructor for a new QgsAnnotationLayer with the specified layer name.
QMap< QString, QgsAnnotationItem * > items() const
Returns a map of items contained in the layer, by unique item ID.
Represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Abstract base class for spatial data provider implementations.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition qgsfeedback.h:44
Base class for utility classes that encapsulate information necessary for rendering of map layers.
Base class for all map layer types.
Definition qgsmaplayer.h:83
QString name
Definition qgsmaplayer.h:87
QgsCoordinateReferenceSystem crs
Definition qgsmaplayer.h:90
QgsMapLayer(Qgis::LayerType type=Qgis::LayerType::Vector, const QString &name=QString(), const QString &source=QString())
Constructor for QgsMapLayer.
virtual Qgis::MapLayerProperties properties() const
Returns the map layer properties of this layer.
QgsMapLayer::LayerFlags flags
Definition qgsmaplayer.h:99
virtual QgsMapLayer * clone() const =0
Returns a new instance equivalent to this one except for the id which is still unique.
Base class for visual effects which can be applied to QPicture drawings.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition qgsproject.h:113
A container for the context for various read/write operations on objects.
A rectangle specified with double values.
Contains information about the context of a rendering operation.
#define SIP_DEPRECATED
Definition qgis_sip.h:113
#define SIP_SKIP
Definition qgis_sip.h:133
#define SIP_TRANSFER
Definition qgis_sip.h:35
#define SIP_FACTORY
Definition qgis_sip.h:83
_LayerRef< QgsMapLayer > QgsMapLayerRef
Setting options for loading annotation layers.
LayerOptions(const QgsCoordinateTransformContext &transformContext)
Constructor for LayerOptions.
QgsCoordinateTransformContext transformContext
Coordinate transform context.
Setting options for creating vector data providers.