Skip to content

Commit 9fec8ed

Browse files
committedJan 21, 2019
Make densify interval parameter dynamic
1 parent 1e8f819 commit 9fec8ed

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed
 

‎src/analysis/processing/qgsalgorithmdensifygeometriesbyinterval.cpp

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,13 @@ QList<int> QgsDensifyGeometriesByIntervalAlgorithm::inputLayerTypes() const
6969
void QgsDensifyGeometriesByIntervalAlgorithm::initParameters( const QVariantMap &configuration )
7070
{
7171
Q_UNUSED( configuration )
72-
addParameter( new QgsProcessingParameterDistance( QStringLiteral( "INTERVAL" ),
73-
QObject::tr( "Interval between vertices to add" ),
74-
1, QStringLiteral( "INPUT" ), false, 0, 10000000 ) );
72+
std::unique_ptr<QgsProcessingParameterDistance> interval = qgis::make_unique<QgsProcessingParameterDistance>( QStringLiteral( "INTERVAL" ),
73+
QObject::tr( "Interval between vertices to add" ),
74+
1, QStringLiteral( "INPUT" ), false, 0, 10000000 );
75+
interval->setIsDynamic( true );
76+
interval->setDynamicPropertyDefinition( QgsPropertyDefinition( QStringLiteral( "Interval" ), QObject::tr( "Interval" ), QgsPropertyDefinition::DoublePositive ) );
77+
interval->setDynamicLayerParameterName( QStringLiteral( "INPUT" ) );
78+
addParameter( interval.release() );
7579
}
7680

7781
QString QgsDensifyGeometriesByIntervalAlgorithm::outputName() const
@@ -84,6 +88,11 @@ QgsFeatureList QgsDensifyGeometriesByIntervalAlgorithm::processFeature( const Qg
8488
Q_UNUSED( context );
8589
Q_UNUSED( feedback );
8690
QgsFeature modifiedFeature = feature;
91+
92+
double interval = mInterval;
93+
if ( mDynamicInterval )
94+
interval = mIntervalProperty.valueAsDouble( context.expressionContext(), interval );
95+
8796
if ( feature.hasGeometry() )
8897
modifiedFeature.setGeometry( feature.geometry().densifyByDistance( mInterval ) );
8998

@@ -94,5 +103,10 @@ bool QgsDensifyGeometriesByIntervalAlgorithm::prepareAlgorithm( const QVariantMa
94103
{
95104
Q_UNUSED( feedback );
96105
mInterval = parameterAsDouble( parameters, QStringLiteral( "INTERVAL" ), context );
106+
107+
mDynamicInterval = QgsProcessingParameters::isDynamic( parameters, QStringLiteral( "INTERVAL" ) );
108+
if ( mDynamicInterval )
109+
mIntervalProperty = parameters.value( QStringLiteral( "INTERVAL" ) ).value< QgsProperty >();
110+
97111
return true;
98112
}

‎src/analysis/processing/qgsalgorithmdensifygeometriesbyinterval.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ class QgsDensifyGeometriesByIntervalAlgorithm : public QgsProcessingFeatureBased
4949

5050
private:
5151
double mInterval = 0.0;
52+
bool mDynamicInterval = false;
53+
QgsProperty mIntervalProperty;
5254
};
5355

5456
///@endcond PRIVATE

0 commit comments

Comments
 (0)
Please sign in to comment.