diff --git a/python/core/auto_generated/symbology/qgsrenderer.sip.in b/python/core/auto_generated/symbology/qgsrenderer.sip.in index 67ac42ed8c77..4b49b8aedfef 100644 --- a/python/core/auto_generated/symbology/qgsrenderer.sip.in +++ b/python/core/auto_generated/symbology/qgsrenderer.sip.in @@ -538,6 +538,17 @@ Returns ``True`` if the visitor should continue visiting other objects, or ``Fal should be canceled. .. versionadded:: 3.10 +%End + + void copyRendererData( QgsFeatureRenderer *destRenderer ) const; +%Docstring +Clones generic renderer data to another renderer. +Currently clones + +- Order By +- Paint Effect + +:param destRenderer: destination renderer for copied effect %End protected: @@ -568,17 +579,6 @@ render editing vertex marker for a polygon %Docstring Creates a point in screen coordinates from a wkb string in map coordinates -%End - - void copyRendererData( QgsFeatureRenderer *destRenderer ) const; -%Docstring -Clones generic renderer data to another renderer. -Currently clones - -- Order By -- Paint Effect - -:param destRenderer: destination renderer for copied effect %End void saveRendererData( QDomDocument &doc, QDomElement &element, const QgsReadWriteContext &context ); diff --git a/src/core/symbology/qgs25drenderer.cpp b/src/core/symbology/qgs25drenderer.cpp index 8d52d2b27ea1..63b85544fed3 100644 --- a/src/core/symbology/qgs25drenderer.cpp +++ b/src/core/symbology/qgs25drenderer.cpp @@ -279,7 +279,9 @@ Qgs25DRenderer *Qgs25DRenderer::convertFromRenderer( QgsFeatureRenderer *rendere } else { - return new Qgs25DRenderer(); + std::unique_ptr< Qgs25DRenderer > res = std::make_unique< Qgs25DRenderer >(); + renderer->copyRendererData( res.get() ); + return res.release(); } } diff --git a/src/core/symbology/qgscategorizedsymbolrenderer.cpp b/src/core/symbology/qgscategorizedsymbolrenderer.cpp index be39e9d6112d..46a056788dad 100644 --- a/src/core/symbology/qgscategorizedsymbolrenderer.cpp +++ b/src/core/symbology/qgscategorizedsymbolrenderer.cpp @@ -1107,8 +1107,7 @@ QgsCategorizedSymbolRenderer *QgsCategorizedSymbolRenderer::convertFromRenderer( } } - r->setOrderBy( renderer->orderBy() ); - r->setOrderByEnabled( renderer->orderByEnabled() ); + renderer->copyRendererData( r.get() ); return r.release(); } diff --git a/src/core/symbology/qgsembeddedsymbolrenderer.cpp b/src/core/symbology/qgsembeddedsymbolrenderer.cpp index 94d3678f0f90..9a3651452d9e 100644 --- a/src/core/symbology/qgsembeddedsymbolrenderer.cpp +++ b/src/core/symbology/qgsembeddedsymbolrenderer.cpp @@ -125,6 +125,7 @@ QgsEmbeddedSymbolRenderer *QgsEmbeddedSymbolRenderer::convertFromRenderer( const else if ( renderer->type() == QLatin1String( "singleSymbol" ) ) { std::unique_ptr< QgsEmbeddedSymbolRenderer > symbolRenderer = std::make_unique< QgsEmbeddedSymbolRenderer >( static_cast< const QgsSingleSymbolRenderer * >( renderer )->symbol()->clone() ); + renderer->copyRendererData( symbolRenderer.get() ); return symbolRenderer.release(); } else diff --git a/src/core/symbology/qgsgraduatedsymbolrenderer.cpp b/src/core/symbology/qgsgraduatedsymbolrenderer.cpp index 2e976c4c242b..eb3d71f70fcd 100644 --- a/src/core/symbology/qgsgraduatedsymbolrenderer.cpp +++ b/src/core/symbology/qgsgraduatedsymbolrenderer.cpp @@ -1278,8 +1278,7 @@ QgsGraduatedSymbolRenderer *QgsGraduatedSymbolRenderer::convertFromRenderer( con } } - r->setOrderBy( renderer->orderBy() ); - r->setOrderByEnabled( renderer->orderByEnabled() ); + renderer->copyRendererData( r.get() ); return r.release(); } diff --git a/src/core/symbology/qgsheatmaprenderer.cpp b/src/core/symbology/qgsheatmaprenderer.cpp index 08d24c1b9854..df88b77576c2 100644 --- a/src/core/symbology/qgsheatmaprenderer.cpp +++ b/src/core/symbology/qgsheatmaprenderer.cpp @@ -383,7 +383,9 @@ QgsHeatmapRenderer *QgsHeatmapRenderer::convertFromRenderer( const QgsFeatureRen } else { - return new QgsHeatmapRenderer(); + std::unique_ptr< QgsHeatmapRenderer > res = std::make_unique< QgsHeatmapRenderer >(); + renderer->copyRendererData( res.get() ); + return res.release(); } } diff --git a/src/core/symbology/qgsinvertedpolygonrenderer.cpp b/src/core/symbology/qgsinvertedpolygonrenderer.cpp index 784e4c1b72eb..dd2b08f2b95a 100644 --- a/src/core/symbology/qgsinvertedpolygonrenderer.cpp +++ b/src/core/symbology/qgsinvertedpolygonrenderer.cpp @@ -109,11 +109,15 @@ QgsInvertedPolygonRenderer *QgsInvertedPolygonRenderer::convertFromRenderer( con renderer->type() == QLatin1String( "graduatedSymbol" ) || renderer->type() == QLatin1String( "RuleRenderer" ) ) { - return new QgsInvertedPolygonRenderer( renderer->clone() ); + std::unique_ptr< QgsInvertedPolygonRenderer > res = std::make_unique< QgsInvertedPolygonRenderer >( renderer->clone() ); + renderer->copyRendererData( res.get() ); + return res.release(); } else if ( renderer->type() == QLatin1String( "mergedFeatureRenderer" ) ) { - return new QgsInvertedPolygonRenderer( renderer->embeddedRenderer() ? renderer->embeddedRenderer()->clone() : nullptr ); + std::unique_ptr< QgsInvertedPolygonRenderer > res = std::make_unique< QgsInvertedPolygonRenderer >( renderer->embeddedRenderer() ? renderer->embeddedRenderer()->clone() : nullptr ); + renderer->copyRendererData( res.get() ); + return res.release(); } return nullptr; } diff --git a/src/core/symbology/qgsmergedfeaturerenderer.cpp b/src/core/symbology/qgsmergedfeaturerenderer.cpp index 3e123b4b1fa1..d3276a08b463 100644 --- a/src/core/symbology/qgsmergedfeaturerenderer.cpp +++ b/src/core/symbology/qgsmergedfeaturerenderer.cpp @@ -555,11 +555,15 @@ QgsMergedFeatureRenderer *QgsMergedFeatureRenderer::convertFromRenderer( const Q renderer->type() == QLatin1String( "graduatedSymbol" ) || renderer->type() == QLatin1String( "RuleRenderer" ) ) { - return new QgsMergedFeatureRenderer( renderer->clone() ); + std::unique_ptr< QgsMergedFeatureRenderer > res = std::make_unique< QgsMergedFeatureRenderer >( renderer->clone() ); + renderer->copyRendererData( res.get() ); + return res.release(); } else if ( renderer->type() == QLatin1String( "invertedPolygonRenderer" ) ) { - return new QgsMergedFeatureRenderer( renderer->embeddedRenderer() ? renderer->embeddedRenderer()->clone() : nullptr ); + std::unique_ptr< QgsMergedFeatureRenderer > res = std::make_unique< QgsMergedFeatureRenderer >( renderer->embeddedRenderer() ? renderer->embeddedRenderer()->clone() : nullptr ); + renderer->copyRendererData( res.get() ); + return res.release(); } return nullptr; } diff --git a/src/core/symbology/qgsnullsymbolrenderer.cpp b/src/core/symbology/qgsnullsymbolrenderer.cpp index 306403564c1a..86913e7d3577 100644 --- a/src/core/symbology/qgsnullsymbolrenderer.cpp +++ b/src/core/symbology/qgsnullsymbolrenderer.cpp @@ -120,6 +120,7 @@ QDomElement QgsNullSymbolRenderer::save( QDomDocument &doc, const QgsReadWriteCo QgsNullSymbolRenderer *QgsNullSymbolRenderer::convertFromRenderer( const QgsFeatureRenderer *renderer ) { - Q_UNUSED( renderer ) - return new QgsNullSymbolRenderer(); + std::unique_ptr< QgsNullSymbolRenderer > res = std::make_unique< QgsNullSymbolRenderer >(); + renderer->copyRendererData( res.get() ); + return res.release(); } diff --git a/src/core/symbology/qgspointclusterrenderer.cpp b/src/core/symbology/qgspointclusterrenderer.cpp index c2e177cbbb53..288a6b88cbab 100644 --- a/src/core/symbology/qgspointclusterrenderer.cpp +++ b/src/core/symbology/qgspointclusterrenderer.cpp @@ -189,6 +189,7 @@ QgsPointClusterRenderer *QgsPointClusterRenderer::convertFromRenderer( const Qgs { QgsPointClusterRenderer *pointRenderer = new QgsPointClusterRenderer(); pointRenderer->setEmbeddedRenderer( renderer->clone() ); + renderer->copyRendererData( pointRenderer ); return pointRenderer; } else if ( renderer->type() == QLatin1String( "pointDisplacement" ) ) @@ -202,6 +203,7 @@ QgsPointClusterRenderer *QgsPointClusterRenderer::convertFromRenderer( const Qgs pointRenderer->setToleranceMapUnitScale( displacementRenderer->toleranceMapUnitScale() ); if ( const_cast< QgsPointDisplacementRenderer * >( displacementRenderer )->centerSymbol() ) pointRenderer->setClusterSymbol( const_cast< QgsPointDisplacementRenderer * >( displacementRenderer )->centerSymbol()->clone() ); + renderer->copyRendererData( pointRenderer ); return pointRenderer; } else diff --git a/src/core/symbology/qgspointdisplacementrenderer.cpp b/src/core/symbology/qgspointdisplacementrenderer.cpp index 7126f2b8319a..f1cf02141bd1 100644 --- a/src/core/symbology/qgspointdisplacementrenderer.cpp +++ b/src/core/symbology/qgspointdisplacementrenderer.cpp @@ -476,6 +476,7 @@ QgsPointDisplacementRenderer *QgsPointDisplacementRenderer::convertFromRenderer( { QgsPointDisplacementRenderer *pointRenderer = new QgsPointDisplacementRenderer(); pointRenderer->setEmbeddedRenderer( renderer->clone() ); + renderer->copyRendererData( pointRenderer ); return pointRenderer; } else if ( renderer->type() == QLatin1String( "pointCluster" ) ) @@ -489,6 +490,7 @@ QgsPointDisplacementRenderer *QgsPointDisplacementRenderer::convertFromRenderer( pointRenderer->setToleranceMapUnitScale( clusterRenderer->toleranceMapUnitScale() ); if ( const_cast< QgsPointClusterRenderer * >( clusterRenderer )->clusterSymbol() ) pointRenderer->setCenterSymbol( const_cast< QgsPointClusterRenderer * >( clusterRenderer )->clusterSymbol()->clone() ); + renderer->copyRendererData( pointRenderer ); return pointRenderer; } else diff --git a/src/core/symbology/qgsrenderer.h b/src/core/symbology/qgsrenderer.h index ef4880d55195..a511342aaa0f 100644 --- a/src/core/symbology/qgsrenderer.h +++ b/src/core/symbology/qgsrenderer.h @@ -527,6 +527,17 @@ class CORE_EXPORT QgsFeatureRenderer */ virtual bool accept( QgsStyleEntityVisitorInterface *visitor ) const; + /** + * Clones generic renderer data to another renderer. + * Currently clones + * + * - Order By + * - Paint Effect + * + * \param destRenderer destination renderer for copied effect + */ + void copyRendererData( QgsFeatureRenderer *destRenderer ) const; + protected: QgsFeatureRenderer( const QString &type ); @@ -551,17 +562,6 @@ class CORE_EXPORT QgsFeatureRenderer */ static QPointF _getPoint( QgsRenderContext &context, const QgsPoint &point ); - /** - * Clones generic renderer data to another renderer. - * Currently clones - * - * - Order By - * - Paint Effect - * - * \param destRenderer destination renderer for copied effect - */ - void copyRendererData( QgsFeatureRenderer *destRenderer ) const; - /** * Saves generic renderer data into the specified \a element. * diff --git a/src/core/symbology/qgsrulebasedrenderer.cpp b/src/core/symbology/qgsrulebasedrenderer.cpp index 314cc352d078..1804d5273eb0 100644 --- a/src/core/symbology/qgsrulebasedrenderer.cpp +++ b/src/core/symbology/qgsrulebasedrenderer.cpp @@ -1510,8 +1510,7 @@ QgsRuleBasedRenderer *QgsRuleBasedRenderer::convertFromRenderer( const QgsFeatur if ( r ) { - r->setOrderBy( renderer->orderBy() ); - r->setOrderByEnabled( renderer->orderByEnabled() ); + renderer->copyRendererData( r.get() ); } return r.release(); diff --git a/src/core/symbology/qgssinglesymbolrenderer.cpp b/src/core/symbology/qgssinglesymbolrenderer.cpp index 0e2e7509b434..5285dda5c743 100644 --- a/src/core/symbology/qgssinglesymbolrenderer.cpp +++ b/src/core/symbology/qgssinglesymbolrenderer.cpp @@ -365,8 +365,7 @@ QgsSingleSymbolRenderer *QgsSingleSymbolRenderer::convertFromRenderer( const Qgs if ( r ) { - r->setOrderBy( renderer->orderBy() ); - r->setOrderByEnabled( renderer->orderByEnabled() ); + renderer->copyRendererData( r ); } return r;