QGIS API Documentation  3.10.0-A Coruña (6c816b4204)
qgswmsrendercontext.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgswmsrendercontext.h
3  ---------------------
4  begin : March 22, 2019
5  copyright : (C) 2019 by Paul Blottiere
6  email : [email protected]
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 QGSWMSRENDERCONTEXT_H
19 #define QGSWMSRENDERCONTEXT_H
20 
21 #include "qgswmsparameters.h"
22 #include "qgsproject.h"
23 #include "qgsserverinterface.h"
24 
25 namespace QgsWms
26 {
27 
35  {
36  public:
38  enum Flag
39  {
41  UseOpacity = 0x02,
42  UseFilter = 0x04,
43  UseSelection = 0x08,
45  UpdateExtent = 0x20,
51  UseTileBuffer = 0x800
52  };
53  Q_DECLARE_FLAGS( Flags, Flag )
54 
55 
58  QgsWmsRenderContext() = default;
59 
66 
71 
76 
80  const QgsServerSettings &settings() const;
81 
85  const QgsProject *project() const;
86 
90  void setFlag( Flag flag, bool on = true );
91 
97  bool testFlag( Flag flag ) const;
98 
102  QList<QgsMapLayer *> layers() const;
103 
108  QList<QgsMapLayer *> layersToRender() const;
109 
114  QDomElement sld( const QgsMapLayer &layer ) const;
115 
120  QString style( const QgsMapLayer &layer ) const;
121 
126  double scaleDenominator() const;
127 
132  void setScaleDenominator( double scaleDenominator );
133 
138  bool updateExtent() const;
139 
145 
150  int imageQuality() const;
151 
157  int tileBuffer() const;
158 
162  int precision() const;
163 
168  QString layerNickname( const QgsMapLayer &layer ) const;
169 
174  QgsMapLayer *layer( const QString &nickname ) const;
175 
179  bool isValidLayer( const QString &nickname ) const;
180 
184  bool isValidGroup( const QString &name ) const;
185 
189  qreal dotsPerMm() const;
190 
195  QStringList flattenedQueryLayers() const;
196 
197 #ifdef HAVE_SERVER_PYTHON_PLUGINS
198 
202  QgsAccessControl *accessControl() const;
203 #endif
204 
209  QMap<QString, QList<QgsMapLayer *> > layerGroups() const;
210 
215  double mapTileBuffer( int mapWidth ) const;
216 
222  QSize mapSize( bool aspectRatio = true ) const;
223 
229  bool isValidWidthHeight() const;
230 
234  int mapWidth() const;
235 
239  int mapHeight() const;
240 
241  private:
242  void initNicknameLayers();
243  void initRestrictedLayers();
244  void initLayerGroupsRecursive( const QgsLayerTreeGroup *group, const QString &groupName );
245 
246  void searchLayersToRender();
247  void searchLayersToRenderSld();
248  void searchLayersToRenderStyle();
249  void removeUnwantedLayers();
250 
251  void checkLayerReadPermissions();
252 
253  bool layerScaleVisibility( const QString &name ) const;
254 
255  const QgsProject *mProject = nullptr;
256  QgsServerInterface *mInterface = nullptr;
257  QgsWmsParameters mParameters;
258  Flags mFlags = nullptr;
259  double mScaleDenominator = -1.0;
260 
261  // nickname of all layers defined within the project
262  QMap<QString, QgsMapLayer *> mNicknameLayers;
263 
264  // map of layers to use for rendering
265  QList<QgsMapLayer *> mLayersToRender;
266 
267  // list of layers which are not usable
268  QStringList mRestrictedLayers;
269 
270  QMap<QString, QList<QgsMapLayer *> > mLayerGroups;
271 
272  QMap<QString, QDomElement> mSlds;
273  QMap<QString, QString> mStyles;
274  };
275 };
276 
277 #endif
Layer tree group node serves as a container for layers and further groups.
qreal dotsPerMm() const
Returns default dots per mm according to the current configuration.
Base class for all map layer types.
Definition: qgsmaplayer.h:79
QList< QgsMapLayer * > layersToRender() const
Returns a list of all layers to actually render according to the current configuration.
QList< QgsMapLayer * > layers() const
Returns a list of all layers read from the project.
QgsWmsParameters parameters() const
Returns WMS parameters.
bool updateExtent() const
Returns true if the extent has to be updated before the rendering, false otherwise.
Provides a way to retrieve settings by prioritizing according to environment variables, ini file and default values.
QMap< QString, QList< QgsMapLayer * > > layerGroups() const
Returns a map having layer group names as keys and a list of layers as values.
QStringList flattenedQueryLayers() const
Returns a list of query layer names where group names are replaced by the names of their layer compon...
int imageQuality() const
Returns the image quality to use for rendering according to the current configuration.
void setFlag(Flag flag, bool on=true)
Sets or unsets a rendering flag according to the on value.
void setParameters(const QgsWmsParameters &parameters)
Sets WMS parameters.
QgsWmsRenderContext()=default
Default constructor for QgsWmsRenderContext.
bool isValidWidthHeight() const
Returns true if width and height are valid according to the maximum values defined within the project...
bool isValidLayer(const QString &nickname) const
Returns true if the layer has to be rendered, false otherwise.
void setScaleDenominator(double scaleDenominator)
Sets a custom scale denominator.
int tileBuffer() const
Returns the tile buffer value to use for rendering according to the current configuration.
Provides an interface to retrieve and manipulate WMS parameters received from the client...
Encapsulates a QGIS project, including sets of map layers and their styles, layouts, annotations, canvases, etc.
Definition: qgsproject.h:89
Flag
Available rendering options.
bool testFlag(Flag flag) const
Returns the status of a rendering flag.
const QgsServerSettings & settings() const
Returns settings of the server.
QSize mapSize(bool aspectRatio=true) const
Returns the size (in pixels) of the map to render, according to width and height WMS parameters as we...
const QgsProject * project() const
Returns the project.
Median cut implementation.
double scaleDenominator() const
Returns the scale denominator to use for rendering according to the current configuration.
QString layerNickname(const QgsMapLayer &layer) const
Returns the nickname (short name, id or name) of the layer according to the current configuration...
QgsServerInterface Class defining interfaces exposed by QGIS Server and made available to plugins...
bool isValidGroup(const QString &name) const
Returns true if name is a group.
int precision() const
Returns the precision to use according to the current configuration.
double mapTileBuffer(int mapWidth) const
Returns the tile buffer in geographical units for the given map width in pixels.
QDomElement sld(const QgsMapLayer &layer) const
Returns a SLD document for a specific layer.
Rendering context for the WMS renderer.
int mapHeight() const
Returns HEIGHT or SRCHEIGHT according to UseSrcWidthHeight flag.
A helper class that centralizes restrictions given by all the access control filter plugins...
QgsMapLayer * layer(const QString &nickname) const
Returns the layer corresponding to the nickname, or a nullptr if not found or if the layer do not nee...
QString style(const QgsMapLayer &layer) const
Returns a style&#39;s name for a specific layer.
int mapWidth() const
Returns WIDTH or SRCWIDTH according to UseSrcWidthHeight flag.