QGIS API Documentation 4.1.0-Master (60fea48833c)
Loading...
Searching...
No Matches
qgsvectortilebasicrenderer.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsvectortilebasicrenderer.h
3 --------------------------------------
4 Date : March 2020
5 Copyright : (C) 2020 by Martin Dobias
6 Email : wonder dot sk at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSVECTORTILEBASICRENDERER_H
17#define QGSVECTORTILEBASICRENDERER_H
18
19#include "qgis_core.h"
20#include "qgis_sip.h"
22
23class QgsLineSymbol;
24class QgsFillSymbol;
25class QgsMarkerSymbol;
26
27class QgsSymbol;
28
49{
50 public:
52 QgsVectorTileBasicRendererStyle( const QString &stName = QString(), const QString &laName = QString(), Qgis::GeometryType geomType = Qgis::GeometryType::Unknown );
53
57
59 void setStyleName( const QString &name ) { mStyleName = name; }
61 QString styleName() const { return mStyleName; }
62
64 void setLayerName( const QString &name ) { mLayerName = name; }
66 QString layerName() const { return mLayerName; }
67
69 void setGeometryType( Qgis::GeometryType geomType ) { mGeometryType = geomType; }
71 Qgis::GeometryType geometryType() const { return mGeometryType; }
72
74 void setFilterExpression( const QString &expr ) { mExpression = expr; }
76 QString filterExpression() const { return mExpression; }
77
79 void setSymbol( QgsSymbol *sym SIP_TRANSFER );
81 QgsSymbol *symbol() const { return mSymbol.get(); }
82
84 void setEnabled( bool enabled ) { mEnabled = enabled; }
86 bool isEnabled() const { return mEnabled; }
87
97 void setMinZoomLevel( int minZoom ) { mMinZoomLevel = minZoom; }
98
108 int minZoomLevel() const { return mMinZoomLevel; }
109
123 void setMaxZoomLevel( int maxZoom ) { mMaxZoomLevel = maxZoom; }
124
138 int maxZoomLevel() const { return mMaxZoomLevel; }
139
141 bool isActive( int zoomLevel ) const { return mEnabled && ( mMinZoomLevel == -1 || zoomLevel >= mMinZoomLevel ) && ( mMaxZoomLevel == -1 || zoomLevel <= mMaxZoomLevel ); }
142
144 void writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const;
146 void readXml( const QDomElement &elem, const QgsReadWriteContext &context );
147
148 private:
149 QString mStyleName;
150 QString mLayerName;
151 Qgis::GeometryType mGeometryType;
152 std::unique_ptr<QgsSymbol> mSymbol;
153 bool mEnabled = true;
154 QString mExpression;
155 int mMinZoomLevel = -1;
156 int mMaxZoomLevel = -1;
157};
158
159
169{
170 public:
173
174 QString type() const override;
176 void startRender( QgsRenderContext &context, int tileZoom, const QgsTileRange &tileRange ) override;
177 QMap<QString, QSet<QString> > usedAttributes( const QgsRenderContext & ) override SIP_SKIP;
178 QSet< QString > requiredLayers( QgsRenderContext &context, int tileZoom ) const override;
179 void stopRender( QgsRenderContext &context ) override;
180 void renderBackground( QgsRenderContext &context ) override;
181 void renderTile( const QgsVectorTileRendererData &tile, QgsRenderContext &context ) override;
182 void renderSelectedFeatures( const QList< QgsFeature > &selection, QgsRenderContext &context ) override;
183 bool willRenderFeature( const QgsFeature &feature, int tileZoom, const QString &layerName, QgsRenderContext &context ) override;
184 void writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const override;
185 void readXml( const QDomElement &elem, const QgsReadWriteContext &context ) override;
186
188 void setStyles( const QList<QgsVectorTileBasicRendererStyle> &styles );
190 QList<QgsVectorTileBasicRendererStyle> styles() const;
192 void setStyle( int index, const QgsVectorTileBasicRendererStyle &style ) { mStyles[index] = style; }
194 QgsVectorTileBasicRendererStyle style( int index ) const { return mStyles[index]; }
195
197 static QList<QgsVectorTileBasicRendererStyle> simpleStyle(
198 const QColor &polygonFillColor,
199 const QColor &polygonStrokeColor,
200 double polygonStrokeWidth,
201 const QColor &lineStrokeColor,
202 double lineStrokeWidth,
203 const QColor &pointFillColor,
204 const QColor &pointStrokeColor,
205 double pointSize
206 );
207
209 static QList<QgsVectorTileBasicRendererStyle> simpleStyleWithRandomColors();
210
211 private:
212 void setDefaultStyle();
213
214 private:
216 QList<QgsVectorTileBasicRendererStyle> mStyles;
217
218 // temporary bits
219
221 QMap<QString, QSet<QString> > mRequiredFields;
222};
223
224#endif // QGSVECTORTILEBASICRENDERER_H
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Definition qgis.h:379
@ Unknown
Unknown types.
Definition qgis.h:383
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition qgsfeature.h:60
A fill symbol type, for rendering Polygon and MultiPolygon geometries.
A line symbol type, for rendering LineString and MultiLineString geometries.
A marker symbol type, for rendering Point and MultiPoint geometries.
A container for the context for various read/write operations on objects.
Contains information about the context of a rendering operation.
Abstract base class for all rendered symbols.
Definition qgssymbol.h:227
A range of tiles in a tile matrix.
Definition qgstiles.h:123
Definition of map rendering of a subset of vector tile data.
QgsVectorTileBasicRendererStyle(const QString &stName=QString(), const QString &laName=QString(), Qgis::GeometryType geomType=Qgis::GeometryType::Unknown)
Constructs a style object.
void setEnabled(bool enabled)
Sets whether this style is enabled (used for rendering).
void setMinZoomLevel(int minZoom)
Sets minimum zoom level index (negative number means no limit).
void setLayerName(const QString &name)
Sets name of the sub-layer to render (empty layer means that all layers match).
Qgis::GeometryType geometryType() const
Returns type of the geometry that will be used (point / line / polygon).
QgsSymbol * symbol() const
Returns symbol for rendering.
QString filterExpression() const
Returns filter expression (empty filter means that all features match).
QString styleName() const
Returns human readable name of this style.
void setFilterExpression(const QString &expr)
Sets filter expression (empty filter means that all features match).
QgsVectorTileBasicRendererStyle & operator=(const QgsVectorTileBasicRendererStyle &other)
void setStyleName(const QString &name)
Sets human readable name of this style.
bool isEnabled() const
Returns whether this style is enabled (used for rendering).
void setMaxZoomLevel(int maxZoom)
Sets maximum zoom level index (negative number means no limit).
int minZoomLevel() const
Returns the minimum zoom level index (negative number means no limit).
int maxZoomLevel() const
Returns the maximum zoom level index (negative number means no limit).
QString layerName() const
Returns name of the sub-layer to render (empty layer means that all layers match).
bool isActive(int zoomLevel) const
Returns whether the style is active at given zoom level (also checks "enabled" flag).
void setGeometryType(Qgis::GeometryType geomType)
Sets type of the geometry that will be used (point / line / polygon).
void renderTile(const QgsVectorTileRendererData &tile, QgsRenderContext &context) override
Renders given vector tile. Must be called between startRender/stopRender.
QList< QgsVectorTileBasicRendererStyle > styles() const
Returns list of styles of the renderer.
void readXml(const QDomElement &elem, const QgsReadWriteContext &context) override
Reads renderer's properties from given XML element.
QMap< QString, QSet< QString > > usedAttributes(const QgsRenderContext &) override
Returns field names of sub-layers that will be used for rendering. Must be called between startRender...
QgsVectorTileBasicRenderer()
Constructs renderer with no styles.
void renderSelectedFeatures(const QList< QgsFeature > &selection, QgsRenderContext &context) override
Renders the specified features in a selected state.
void setStyles(const QList< QgsVectorTileBasicRendererStyle > &styles)
Sets list of styles of the renderer.
void startRender(QgsRenderContext &context, int tileZoom, const QgsTileRange &tileRange) override
Initializes rendering. It should be paired with a stopRender() call.
QString type() const override
Returns unique type name of the renderer implementation.
bool willRenderFeature(const QgsFeature &feature, int tileZoom, const QString &layerName, QgsRenderContext &context) override
Returns true if the specified feature will be rendered in the given render context.
QgsVectorTileBasicRenderer * clone() const override
Returns a clone of the renderer.
void setStyle(int index, const QgsVectorTileBasicRendererStyle &style)
Updates style definition at the paricular index of the list (the index must be in interval [0,...
QSet< QString > requiredLayers(QgsRenderContext &context, int tileZoom) const override
Returns a list of the layers required for rendering.
void renderBackground(QgsRenderContext &context) override
Renders the background if defined.
QgsVectorTileBasicRendererStyle style(int index) const
Returns style definition at the particular index.
void writeXml(QDomElement &elem, const QgsReadWriteContext &context) const override
Writes renderer's properties to given XML element.
void stopRender(QgsRenderContext &context) override
Finishes rendering and cleans up any resources.
Contains decoded features of a single vector tile and any other data necessary for rendering of it.
Abstract base class for all vector tile renderer implementations.
#define SIP_SKIP
Definition qgis_sip.h:133
#define SIP_TRANSFER
Definition qgis_sip.h:35
#define SIP_FACTORY
Definition qgis_sip.h:83