Skip to content

Commit f32d563

Browse files
committedMar 6, 2021
Add virtual method QgsFeatureRenderer::usesEmbeddedSymbols()
Should return true for feature renderers which require embedded feature symbology. The corresponding feature request flag will be set on the iterator used for the renderer will rendering vector layers.
1 parent c371bc3 commit f32d563

File tree

4 files changed

+28
-2
lines changed

4 files changed

+28
-2
lines changed
 

‎python/core/auto_generated/symbology/qgsrenderer.sip.in

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,14 @@ Returns a list of attributes required by this renderer. Attributes not listed in
167167
not have been requested from the provider at rendering time.
168168

169169
:return: A set of attributes
170+
%End
171+
172+
virtual bool usesEmbeddedSymbols() const;
173+
%Docstring
174+
Returns ``True`` if the renderer uses embedded symbols for features.
175+
The default implementation returns ``False``.
176+
177+
.. versionadded:: 3.20
170178
%End
171179

172180
virtual bool filterNeedsGeometry() const;
@@ -192,7 +200,7 @@ Default implementation renders a symbol as determined by :py:func:`~QgsFeatureRe
192200
Returns ``True`` if the feature has been returned (this is used for example
193201
to determine whether the feature may be labelled).
194202

195-
If layer is not -1, the renderer should draw only a particula layer from symbols
203+
If layer is not -1, the renderer should draw only a particular layer from symbols
196204
(in order to support symbol level rendering).
197205

198206
.. seealso:: :py:func:`startRender`

‎src/core/symbology/qgsrenderer.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,11 @@ void QgsFeatureRenderer::stopRender( QgsRenderContext & )
112112
#endif
113113
}
114114

115+
bool QgsFeatureRenderer::usesEmbeddedSymbols() const
116+
{
117+
return false;
118+
}
119+
115120
bool QgsFeatureRenderer::filterNeedsGeometry() const
116121
{
117122
return false;

‎src/core/symbology/qgsrenderer.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,14 @@ class CORE_EXPORT QgsFeatureRenderer
212212
*/
213213
virtual QSet<QString> usedAttributes( const QgsRenderContext &context ) const = 0;
214214

215+
/**
216+
* Returns TRUE if the renderer uses embedded symbols for features.
217+
* The default implementation returns FALSE.
218+
*
219+
* \since QGIS 3.20
220+
*/
221+
virtual bool usesEmbeddedSymbols() const;
222+
215223
/**
216224
* Returns TRUE if this renderer requires the geometry to apply the filter.
217225
*/
@@ -234,7 +242,7 @@ class CORE_EXPORT QgsFeatureRenderer
234242
* Returns TRUE if the feature has been returned (this is used for example
235243
* to determine whether the feature may be labelled).
236244
*
237-
* If layer is not -1, the renderer should draw only a particula layer from symbols
245+
* If layer is not -1, the renderer should draw only a particular layer from symbols
238246
* (in order to support symbol level rendering).
239247
*
240248
* \see startRender()

‎src/core/vector/qgsvectorlayerrenderer.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,11 @@ bool QgsVectorLayerRenderer::renderInternal( QgsFeatureRenderer *renderer )
313313
featureRequest.combineFilterExpression( mTemporalFilter );
314314
}
315315

316+
if ( renderer->usesEmbeddedSymbols() )
317+
{
318+
featureRequest.setFlags( featureRequest.flags() | QgsFeatureRequest::EmbeddedSymbols );
319+
}
320+
316321
// enable the simplification of the geometries (Using the current map2pixel context) before send it to renderer engine.
317322
if ( mSimplifyGeometry )
318323
{

0 commit comments

Comments
 (0)
Please sign in to comment.