QGIS API Documentation 3.99.0-Master (7d2ca374f2d)
Loading...
Searching...
No Matches
qgsvectorlayerrenderer.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsvectorlayerrenderer.h
3 --------------------------------------
4 Date : December 2013
5 Copyright : (C) 2013 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 QGSVECTORLAYERRENDERER_H
17#define QGSVECTORLAYERRENDERER_H
18
21class QgsVectorLayer;
23
26
30
31
32#include <QElapsedTimer>
33#include <QList>
34#include <QPainter>
35
36#define SIP_NO_FILE
37
38typedef QList<int> QgsAttributeList;
39
40#include "qgis_sip.h"
41#include "qgsfields.h" // QgsFields
42#include "qgsfeatureiterator.h"
44#include "qgsfeedback.h"
45#include "qgsfeatureid.h"
46
47#include "qgsmaplayerrenderer.h"
48
51
59{
60 public:
63 QgsFeedback *feedback() const override;
64 bool forceRasterRender() const override;
65 Qgis::MapLayerRendererFlags flags() const override;
66
73
74 bool render() override;
75
76 void setLayerRenderingTimeHint( int time ) override;
77
78 private:
79
85 void prepareLabeling( QgsVectorLayer *layer, QSet<QString> &attributeNames );
86 void prepareDiagrams( QgsVectorLayer *layer, QSet<QString> &attributeNames );
87
91 void drawRenderer( QgsFeatureRenderer *renderer, QgsFeatureIterator &fit );
92
96 void drawRendererLevels( QgsFeatureRenderer *renderer, QgsFeatureIterator &fit );
97
99 void stopRenderer( QgsFeatureRenderer *renderer, QgsSingleSymbolRenderer *selRenderer );
100
101
102 bool renderInternal( QgsFeatureRenderer *renderer, int rendererIndex );
103
104 private:
105
106 std::unique_ptr<QgsFeedback> mFeedback = nullptr;
107
109 QgsVectorLayer *mLayer = nullptr;
110 QString mLayerName;
111
112 QgsFields mFields; // TODO: use fields from mSource
113
114 QgsFeatureIds mSelectedFeatureIds;
115
116 QString mTemporalFilter;
117
118 std::unique_ptr< QgsVectorLayerFeatureSource > mSource;
119
120 QgsFeatureRenderer *mRenderer = nullptr;
121 std::vector< std::unique_ptr< QgsFeatureRenderer> > mRenderers;
122
123 bool mDrawVertexMarkers = false;
124 bool mVertexMarkerOnlyForSelection = false;
126 double mVertexMarkerSize = 2.0;
127
129
130 QSet<QString> mAttrNames;
131
136 QgsVectorLayerLabelProvider *mLabelProvider = nullptr;
137
142 QgsVectorLayerDiagramProvider *mDiagramProvider = nullptr;
143
144 QPainter::CompositionMode mFeatureBlendMode = QPainter::CompositionMode::CompositionMode_SourceOver;
145
146 QgsVectorSimplifyMethod mSimplifyMethod;
147 bool mSimplifyGeometry = true;
148
149 QList< QgsMapClippingRegion > mClippingRegions;
150 QgsGeometry mClipFilterGeom;
151 bool mApplyClipFilter = false;
152 QgsGeometry mClipFeatureGeom;
153 bool mApplyClipGeometries = false;
154 QgsGeometry mLabelClipFeatureGeom;
155 bool mApplyLabelClipGeometries = false;
156 bool mForceRasterRender = false;
157
158 int mRenderTimeHint = 0;
159 bool mBlockRenderUpdates = false;
160 QElapsedTimer mElapsedTimer;
161
162 bool mNoSetLayerExpressionContext = false;
163
164 bool mEnableProfile = false;
165 quint64 mPreparationTime = 0;
166
167 std::unique_ptr< QgsSymbol > mSelectionSymbol;
168
169};
170
171
172#endif // QGSVECTORLAYERRENDERER_H
QFlags< MapLayerRendererFlag > MapLayerRendererFlags
Flags which control how map layer renderers behave.
Definition qgis.h:2869
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
Definition qgis.h:376
@ Unknown
Unknown types.
Definition qgis.h:380
VertexMarkerType
Editing vertex markers, used for showing vertices during a edit operation.
Definition qgis.h:1906
@ SemiTransparentCircle
Semi-transparent circle marker.
Definition qgis.h:1907
Stores the settings for rendering of all diagrams for a layer.
Evaluates and returns the diagram settings relating to a diagram for a specific feature.
Wrapper for iterator of features from vector data provider or vector layer.
Abstract base class for all 2D vector feature renderers.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition qgsfeedback.h:44
Container of fields for a vector layer.
Definition qgsfields.h:46
A geometry is the spatial representation of a feature.
A map clipping region (in map coordinates and CRS).
QgsMapLayerRenderer(const QString &layerID, QgsRenderContext *context=nullptr)
Constructor for QgsMapLayerRenderer, with the associated layerID and render context.
Contains information about the context of a rendering operation.
A feature renderer which renders all features with the same symbol.
Implements support for diagrams within the labeling engine.
Partial snapshot of vector layer's state (only the members necessary for access to features).
Implements a label provider for vector layers.
Qgis::MapLayerRendererFlags flags() const override
Returns flags which control how the map layer rendering behaves.
bool forceRasterRender() const override
Returns true if the renderer must be rendered to a raster paint device (e.g.
QgsVectorLayerRenderer(QgsVectorLayer *layer, QgsRenderContext &context)
~QgsVectorLayerRenderer() override
void setLayerRenderingTimeHint(int time) override
Sets approximate render time (in ms) for the layer to render.
bool render() override
Do the rendering (based on data stored in the class).
QgsFeatureRenderer * featureRenderer()
Returns the feature renderer.
QgsFeedback * feedback() const override
Access to feedback object of the layer renderer (may be nullptr).
Represents a vector layer which manages a vector based dataset.
Contains settings for simplifying geometries fetched from a vector layer.
#define SIP_SKIP
Definition qgis_sip.h:133
QSet< QgsFeatureId > QgsFeatureIds
QList< int > QgsAttributeList
Definition qgsfield.h:30