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
|
:param destRenderer: destination renderer for copied effect
|
||||||
|
|
||||||
.. versionadded:: 3.22
|
.. 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
|
%End
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -628,6 +628,18 @@ Currently clones
|
|||||||
:param destRenderer: destination renderer for copied effect
|
:param destRenderer: destination renderer for copied effect
|
||||||
|
|
||||||
.. versionadded:: 3.22
|
.. 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
|
%End
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -38,6 +38,7 @@
|
|||||||
#include <QDomDocument>
|
#include <QDomDocument>
|
||||||
#include <QPolygonF>
|
#include <QPolygonF>
|
||||||
#include <QThread>
|
#include <QThread>
|
||||||
|
#include <algorithm>
|
||||||
|
|
||||||
QgsPropertiesDefinition QgsFeatureRenderer::sPropertyDefinitions;
|
QgsPropertiesDefinition QgsFeatureRenderer::sPropertyDefinitions;
|
||||||
|
|
||||||
@ -417,6 +418,38 @@ QgsLegendSymbolList QgsFeatureRenderer::legendSymbolItems() const
|
|||||||
return QgsLegendSymbolList();
|
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 *> QgsFeatureRenderer::createLegendNodes( QgsLayerTreeLayer *nodeLayer ) const
|
||||||
{
|
{
|
||||||
QList<QgsLayerTreeModelLegendNode *> nodes;
|
QList<QgsLayerTreeModelLegendNode *> nodes;
|
||||||
|
@ -653,6 +653,15 @@ class CORE_EXPORT QgsFeatureRenderer
|
|||||||
*/
|
*/
|
||||||
void copyRendererData( QgsFeatureRenderer *destRenderer ) const;
|
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:
|
protected:
|
||||||
QgsFeatureRenderer( const QString &type );
|
QgsFeatureRenderer( const QString &type );
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user