QGIS API Documentation  3.37.0-Master (a5b4d9743e8)
qgsgrouplayer.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsgrouplayer.h
3  ----------------
4  Date : September 2021
5  Copyright : (C) 2021 by Nyall Dawson
6  Email : nyall dot dawson at gmail dot com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef QGSGROUPLAYER_H
19 #define QGSGROUPLAYER_H
20 
21 #include "qgis_core.h"
22 #include "qgis_sip.h"
23 #include "qgsmaplayer.h"
24 #include "qgsmaplayerrenderer.h"
25 #include "qgsmaplayerref.h"
26 
27 class QgsGroupLayerDataProvider;
28 class QgsPaintEffect;
29 
41 class CORE_EXPORT QgsGroupLayer : public QgsMapLayer
42 {
43  Q_OBJECT
44 
45  public:
46 
51  struct LayerOptions
52  {
53 
57  explicit LayerOptions( const QgsCoordinateTransformContext &transformContext )
58  : transformContext( transformContext )
59  {}
60 
65 
66  };
67 
73  QgsGroupLayer( const QString &name, const QgsGroupLayer::LayerOptions &options );
74  ~QgsGroupLayer() override;
75 
76 #ifdef SIP_RUN
77  SIP_PYOBJECT __repr__();
78  % MethodCode
79  QString str = QStringLiteral( "<QgsGroupLayer: '%1'>" ).arg( sipCpp->name() );
80  sipRes = PyUnicode_FromString( str.toUtf8().constData() );
81  % End
82 #endif
83 
84  QgsGroupLayer *clone() const override SIP_FACTORY;
85  QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) override SIP_FACTORY;
86  QgsRectangle extent() const override;
87  void setTransformContext( const QgsCoordinateTransformContext &context ) override;
88  bool readXml( const QDomNode &layerNode, QgsReadWriteContext &context ) override;
89  bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const override;
90  bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &, StyleCategories categories = AllStyleCategories ) const override;
91  bool readSymbology( const QDomNode &node, QString &errorMessage, QgsReadWriteContext &context, StyleCategories categories = AllStyleCategories ) override;
92  QgsDataProvider *dataProvider() override;
93  const QgsDataProvider *dataProvider() const override SIP_SKIP;
94  QString htmlMetadata() const override;
95  void resolveReferences( QgsProject *project ) override;
96 
105  void setChildLayers( const QList< QgsMapLayer * > &layers );
106 
112  QList< QgsMapLayer * > childLayers() const;
113 
118  QgsPaintEffect *paintEffect() const;
119 
127  void setPaintEffect( QgsPaintEffect *effect SIP_TRANSFER );
128 
138  void prepareLayersForRemovalFromGroup();
139 
140  private:
141 
142  QgsGroupLayerDataProvider *mDataProvider = nullptr;
143  QgsCoordinateTransformContext mTransformContext;
144 
145  QList< QgsMapLayerRef > mChildren;
146  std::unique_ptr< QgsPaintEffect > mPaintEffect;
147 
148 };
149 
150 #ifndef SIP_RUN
152 
158 class QgsGroupLayerDataProvider : public QgsDataProvider
159 {
160  Q_OBJECT
161 
162  public:
163  QgsGroupLayerDataProvider( const QgsDataProvider::ProviderOptions &providerOptions,
165  void setCrs( const QgsCoordinateReferenceSystem &crs );
166  QgsCoordinateReferenceSystem crs() const override;
167  QString name() const override;
168  QString description() const override;
169  QgsRectangle extent() const override;
170  bool isValid() const override;
171 
172  private:
173 
175 
176 };
178 #endif
179 
180 #endif // QGSGROUPLAYER_H
This class 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.
QFlags< ReadFlag > ReadFlags
A map layer which consists of a set of child layers, where all component layers are rendered as a sin...
Definition: qgsgrouplayer.h:42
Base class for utility classes that encapsulate information necessary for rendering of map layers.
Base class for all map layer types.
Definition: qgsmaplayer.h:75
QFlags< StyleCategory > StyleCategories
Definition: qgsmaplayer.h:188
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:107
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.
std::unique_ptr< GEOSGeometry, GeosDeleter > unique_ptr
Scoped GEOS pointer.
Definition: qgsgeos.h:73
#define str(x)
Definition: qgis.cpp:38
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_FACTORY
Definition: qgis_sip.h:76
const QgsCoordinateReferenceSystem & crs
Setting options for creating vector data providers.
Setting options for loading group layers.
Definition: qgsgrouplayer.h:52
LayerOptions(const QgsCoordinateTransformContext &transformContext)
Constructor for LayerOptions.
Definition: qgsgrouplayer.h:57
QgsCoordinateTransformContext transformContext
Coordinate transform context.
Definition: qgsgrouplayer.h:64