QGIS API Documentation  3.23.0-Master (dd0cd13a00)
qgsvectortilerenderer.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsvectortilerenderer.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 QGSVECTORTILERENDERER_H
17 #define QGSVECTORTILERENDERER_H
18 
19 #include "qgis_core.h"
20 
21 #include "qgsfeature.h"
22 
23 #include "qgstiles.h"
24 
25 class QgsRenderContext;
27 class QgsProject;
28 
30 typedef QMap<QString, QVector<QgsFeature> > QgsVectorTileFeatures SIP_SKIP;
31 
39 class CORE_EXPORT QgsVectorTileRendererData
40 {
41  public:
44  : mId( id )
45  {}
46 
48  QgsTileXYZ id() const { return mId; }
49 
51  void setTilePolygon( QPolygon polygon ) { mTilePolygon = polygon; }
53  QPolygon tilePolygon() const { return mTilePolygon; }
54 
56  void setFields( const QMap<QString, QgsFields> &fields ) { mFields = fields; }
58  QMap<QString, QgsFields> fields() const { return mFields; }
59 
61  void setFeatures( const QgsVectorTileFeatures &features ) SIP_SKIP { mFeatures = features; }
63  QgsVectorTileFeatures features() const SIP_SKIP { return mFeatures; }
65  QStringList layers() const { return mFeatures.keys(); }
67  QVector<QgsFeature> layerFeatures( const QString &layerName ) const { return mFeatures[layerName]; }
68 
69  private:
71  QgsTileXYZ mId;
73  QMap<QString, QgsFields> mFields;
75  QgsVectorTileFeatures mFeatures;
77  QPolygon mTilePolygon;
78 };
79 
92 class CORE_EXPORT QgsVectorTileRenderer
93 {
94 
95 #ifdef SIP_RUN
97 
98  const QString type = sipCpp->type();
99 
100  if ( type == QLatin1String( "basic" ) )
101  sipType = sipType_QgsVectorTileBasicRenderer;
102  else
103  sipType = 0;
104  SIP_END
105 #endif
106 
107  public:
108  virtual ~QgsVectorTileRenderer() = default;
109 
111  virtual QString type() const = 0;
112 
115 
117  virtual void startRender( QgsRenderContext &context, int tileZoom, const QgsTileRange &tileRange ) = 0;
118 
120  virtual QMap<QString, QSet<QString> > usedAttributes( const QgsRenderContext & ) SIP_SKIP { return QMap<QString, QSet<QString> >(); }
121 
122  //TODO QGIS 4.0 -- make pure virtual
123 
133  virtual QSet< QString > requiredLayers( QgsRenderContext &context, int tileZoom ) const { Q_UNUSED( context ); Q_UNUSED( tileZoom ); return QSet< QString >() << QString(); }
134 
136  virtual void stopRender( QgsRenderContext &context ) = 0;
137 
139  virtual void renderTile( const QgsVectorTileRendererData &tile, QgsRenderContext &context ) = 0;
140 
142  virtual void writeXml( QDomElement &elem, const QgsReadWriteContext &context ) const = 0;
144  virtual void readXml( const QDomElement &elem, const QgsReadWriteContext &context ) = 0;
146  virtual void resolveReferences( const QgsProject &project ) { Q_UNUSED( project ) }
147 
148 };
149 
150 #endif // QGSVECTORTILERENDERER_H
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition: qgsproject.h:101
The class is used as a container of context for various read/write operations on other objects.
Contains information about the context of a rendering operation.
Range of tiles in a tile matrix to be rendered.
Definition: qgstiles.h:67
Stores coordinates of a tile in a tile matrix set.
Definition: qgstiles.h:34
Contains decoded features of a single vector tile and any other data necessary for rendering of it.
void setFields(const QMap< QString, QgsFields > &fields)
Sets per-layer fields.
QPolygon tilePolygon() const
Returns polygon (made out of four corners of the tile) in screen coordinates calculated from render c...
QgsVectorTileRendererData(QgsTileXYZ id)
Constructs the object.
void setTilePolygon(QPolygon polygon)
Sets polygon of the tile.
QVector< QgsFeature > layerFeatures(const QString &layerName) const
Returns list of all features within a single sub-layer.
QgsVectorTileFeatures features() const
Returns features of the tile grouped by sub-layer names.
QStringList layers() const
Returns list of layer names present in the tile.
void setFeatures(const QgsVectorTileFeatures &features)
Sets features of the tile.
QMap< QString, QgsFields > fields() const
Returns per-layer fields.
QgsTileXYZ id() const
Returns coordinates of the tile.
Abstract base class for all vector tile renderer implementations.
virtual void readXml(const QDomElement &elem, const QgsReadWriteContext &context)=0
Reads renderer's properties from given XML element.
virtual void resolveReferences(const QgsProject &project)
Resolves references to other objects - second phase of loading - after readXml()
virtual QgsVectorTileRenderer * clone() const =0
Returns a clone of the renderer.
virtual QSet< QString > requiredLayers(QgsRenderContext &context, int tileZoom) const
Returns a list of the layers required for rendering.
virtual QMap< QString, QSet< QString > > usedAttributes(const QgsRenderContext &)
Returns field names of sub-layers that will be used for rendering. Must be called between startRender...
virtual QString type() const =0
Returns unique type name of the renderer implementation.
virtual void writeXml(QDomElement &elem, const QgsReadWriteContext &context) const =0
Writes renderer's properties to given XML element.
virtual void renderTile(const QgsVectorTileRendererData &tile, QgsRenderContext &context)=0
Renders given vector tile. Must be called between startRender/stopRender.
virtual void stopRender(QgsRenderContext &context)=0
Finishes rendering and cleans up any resources.
virtual ~QgsVectorTileRenderer()=default
virtual void startRender(QgsRenderContext &context, int tileZoom, const QgsTileRange &tileRange)=0
Initializes rendering. It should be paired with a stopRender() call.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Definition: qgis_sip.h:177
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_FACTORY
Definition: qgis_sip.h:76
#define SIP_END
Definition: qgis_sip.h:194
QMap< QString, QVector< QgsFeature > > QgsVectorTileFeatures
Features of a vector tile, grouped by sub-layer names (key of the map)