mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-06 00:07:29 -04:00
Add maximumExtentBuffer() function to QgsFeatureRenderer
This commit is contained in:
parent
ccc7df5966
commit
5c49205bd2
@ -628,6 +628,18 @@ Currently clones
|
||||
:param destRenderer: destination renderer for copied effect
|
||||
|
||||
.. versionadded:: 3.22
|
||||
%End
|
||||
|
||||
double maximumExtentBuffer( QgsRenderContext &context ) const;
|
||||
%Docstring
|
||||
Returns the maximum extent buffer found in this renderer's
|
||||
symbols' symbol layers.
|
||||
|
||||
.. note::
|
||||
|
||||
Returns 0 if the renderer doesn't have any symbols.
|
||||
|
||||
.. versionadded:: 3.42
|
||||
%End
|
||||
|
||||
protected:
|
||||
|
@ -628,6 +628,18 @@ Currently clones
|
||||
:param destRenderer: destination renderer for copied effect
|
||||
|
||||
.. versionadded:: 3.22
|
||||
%End
|
||||
|
||||
double maximumExtentBuffer( QgsRenderContext &context ) const;
|
||||
%Docstring
|
||||
Returns the maximum extent buffer found in this renderer's
|
||||
symbols' symbol layers.
|
||||
|
||||
.. note::
|
||||
|
||||
Returns 0 if the renderer doesn't have any symbols.
|
||||
|
||||
.. versionadded:: 3.42
|
||||
%End
|
||||
|
||||
protected:
|
||||
|
@ -38,6 +38,7 @@
|
||||
#include <QDomDocument>
|
||||
#include <QPolygonF>
|
||||
#include <QThread>
|
||||
#include <algorithm>
|
||||
|
||||
QgsPropertiesDefinition QgsFeatureRenderer::sPropertyDefinitions;
|
||||
|
||||
@ -417,6 +418,38 @@ QgsLegendSymbolList QgsFeatureRenderer::legendSymbolItems() const
|
||||
return QgsLegendSymbolList();
|
||||
}
|
||||
|
||||
double QgsFeatureRenderer::maximumExtentBuffer( QgsRenderContext &context ) const
|
||||
{
|
||||
const QgsSymbolList symbolList = symbols( context );
|
||||
|
||||
if ( symbolList.empty() )
|
||||
return 0;
|
||||
|
||||
const QgsExpressionContext &expContext = context.expressionContext();
|
||||
|
||||
auto getValueFromSymbol = [ &expContext ]( const QgsSymbol * sym ) -> double
|
||||
{
|
||||
const QgsProperty property = sym->dataDefinedProperties().property( QgsSymbol::Property::ExtentBuffer );
|
||||
|
||||
if ( property.isActive() && ! property.expressionString().isEmpty() )
|
||||
{
|
||||
return sym->dataDefinedProperties().valueAsDouble( QgsSymbol::Property::ExtentBuffer, expContext );
|
||||
}
|
||||
|
||||
return sym->extentBuffer();
|
||||
};
|
||||
|
||||
if ( symbolList.size() == 1 )
|
||||
return getValueFromSymbol( symbolList[0] );
|
||||
|
||||
auto it = std::max_element( symbolList.constBegin(), symbolList.constEnd(), [ &getValueFromSymbol ]( const QgsSymbol * a, const QgsSymbol * b ) -> bool
|
||||
{
|
||||
return getValueFromSymbol( a ) < getValueFromSymbol( b );
|
||||
} );
|
||||
|
||||
return getValueFromSymbol( *it );
|
||||
}
|
||||
|
||||
QList<QgsLayerTreeModelLegendNode *> QgsFeatureRenderer::createLegendNodes( QgsLayerTreeLayer *nodeLayer ) const
|
||||
{
|
||||
QList<QgsLayerTreeModelLegendNode *> nodes;
|
||||
|
@ -653,6 +653,15 @@ class CORE_EXPORT QgsFeatureRenderer
|
||||
*/
|
||||
void copyRendererData( QgsFeatureRenderer *destRenderer ) const;
|
||||
|
||||
/**
|
||||
* Returns the maximum extent buffer found in this renderer's
|
||||
* symbols' symbol layers.
|
||||
*
|
||||
* \note Returns 0 if the renderer doesn't have any symbols.
|
||||
* \since QGIS 3.42
|
||||
*/
|
||||
double maximumExtentBuffer( QgsRenderContext &context ) const;
|
||||
|
||||
protected:
|
||||
QgsFeatureRenderer( const QString &type );
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user