QGIS API Documentation 4.3.0-Master (767b36bf018)
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 signals:
229
236
237 private:
238 QStringList queryIndex( const QgsRectangle &bounds, QgsFeedback *feedback = nullptr ) const;
239 bool writeItems( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) const;
240 bool readItems( const QDomNode &node, QString &errorMessage, QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories );
241
242 QMap<QString, QgsAnnotationItem *> mItems;
243 QgsCoordinateTransformContext mTransformContext;
244
245 std::unique_ptr< QgsAnnotationLayerSpatialIndex > mSpatialIndex;
246 QSet< QString > mNonIndexedItems;
247
248 std::unique_ptr<QgsDataProvider> mDataProvider;
249
250 std::unique_ptr< QgsPaintEffect > mPaintEffect;
251
252 QgsMapLayerRef mLinkedLayer;
253
256};
257
258#ifndef SIP_RUN
260
266class QgsAnnotationLayerDataProvider : public QgsDataProvider
267{
268 Q_OBJECT
269
270 public:
271 QgsAnnotationLayerDataProvider( const QgsDataProvider::ProviderOptions &providerOptions, Qgis::DataProviderReadFlags flags );
272 QgsCoordinateReferenceSystem crs() const override;
273 QString name() const override;
274 QString description() const override;
275 QgsRectangle extent() const override;
276 bool isValid() const override;
277};
279#endif
280
281#endif // QGSANNOTATIONLAYER_H
AnnotationItemEditOperationResult
Results from an edit operation on an annotation item.
Definition qgis.h:2706
QFlags< DataProviderReadFlag > DataProviderReadFlags
Flags which control data provider construction.
Definition qgis.h:512
QFlags< MapLayerProperty > MapLayerProperties
Map layer properties.
Definition qgis.h:2451
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.
void itemsChanged()
Emitted when items are added, removed or modified in the layer.
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.
QFlags< StyleCategory > StyleCategories
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:114
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.