Skip to content

Commit bef88f3

Browse files
committedAug 14, 2018
Minor processing parameter evaluation refactoring
1 parent 9a1f129 commit bef88f3

File tree

3 files changed

+565
-20
lines changed

3 files changed

+565
-20
lines changed
 

‎python/core/auto_generated/processing/qgsprocessingparameters.sip.in

Lines changed: 197 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -491,36 +491,85 @@ be evaluated once for every input feature processed.
491491
static QString parameterAsString( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
492492
%Docstring
493493
Evaluates the parameter with matching ``definition`` to a static string value.
494+
%End
495+
496+
static QString parameterAsString( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
497+
%Docstring
498+
Evaluates the parameter with matching ``definition`` and ``value`` to a static string value.
499+
500+
.. versionadded:: 3.4
494501
%End
495502

496503
static QString parameterAsExpression( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
497504
%Docstring
498505
Evaluates the parameter with matching ``definition`` to an expression.
506+
%End
507+
508+
static QString parameterAsExpression( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
509+
%Docstring
510+
Evaluates the parameter with matching ``definitionand`` ``value`` to an expression.
511+
512+
.. versionadded:: 3.4
499513
%End
500514

501515
static double parameterAsDouble( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
502516
%Docstring
503517
Evaluates the parameter with matching ``definition`` to a static double value.
518+
%End
519+
520+
static double parameterAsDouble( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
521+
%Docstring
522+
Evaluates the parameter with matching ``definition`` and ``value`` to a static double value.
523+
524+
.. versionadded:: 3.4
504525
%End
505526

506527
static int parameterAsInt( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
507528
%Docstring
508529
Evaluates the parameter with matching ``definition`` to a static integer value.
530+
%End
531+
532+
static int parameterAsInt( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
533+
%Docstring
534+
Evaluates the parameter with matching ``definition`` and ``value`` to a static integer value.
535+
536+
.. versionadded:: 3.4
509537
%End
510538

511539
static int parameterAsEnum( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
512540
%Docstring
513541
Evaluates the parameter with matching ``definition`` to a enum value.
542+
%End
543+
544+
static int parameterAsEnum( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
545+
%Docstring
546+
Evaluates the parameter with matching ``definition`` and ``value`` to a enum value.
547+
548+
.. versionadded:: 3.4
514549
%End
515550

516551
static QList<int> parameterAsEnums( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
517552
%Docstring
518553
Evaluates the parameter with matching ``definition`` to list of enum values.
554+
%End
555+
556+
static QList<int> parameterAsEnums( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
557+
%Docstring
558+
Evaluates the parameter with matching ``definition`` and ``value`` to list of enum values.
559+
560+
.. versionadded:: 3.4
519561
%End
520562

521563
static bool parameterAsBool( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
522564
%Docstring
523565
Evaluates the parameter with matching ``definition`` to a static boolean value.
566+
%End
567+
568+
static bool parameterAsBool( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
569+
%Docstring
570+
Evaluates the parameter with matching ``definition`` and ``value`` to a static boolean value.
571+
572+
.. versionadded:: 3.4
524573
%End
525574

526575
static QgsFeatureSink *parameterAsSink( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters,
@@ -538,6 +587,25 @@ argument will be set to a string which can be used to retrieve the layer corresp
538587
to the sink, e.g. via calling :py:func:`QgsProcessingUtils.mapLayerFromString()`
539588

540589
This function creates a new object and the caller takes responsibility for deleting the returned object.
590+
%End
591+
592+
static QgsFeatureSink *parameterAsSink( const QgsProcessingParameterDefinition *definition, const QVariant &value,
593+
const QgsFields &fields, QgsWkbTypes::Type geometryType, const QgsCoordinateReferenceSystem &crs,
594+
QgsProcessingContext &context, QString &destinationIdentifier /Out/ ) /Factory/;
595+
%Docstring
596+
Evaluates the parameter with matching ``definition`` and ``value`` to a feature sink.
597+
598+
The ``fields``, ``geometryType`` and ``crs`` parameters dictate the properties
599+
of the resulting feature sink.
600+
601+
Sinks will either be taken from ``context``'s active project, or created from external
602+
providers and stored temporarily in the ``context``. The ``destinationIdentifier``
603+
argument will be set to a string which can be used to retrieve the layer corresponding
604+
to the sink, e.g. via calling :py:func:`QgsProcessingUtils.mapLayerFromString()`
605+
606+
This function creates a new object and the caller takes responsibility for deleting the returned object.
607+
608+
.. versionadded:: 3.4
541609
%End
542610

543611
static QgsProcessingFeatureSource *parameterAsSource( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context ) /Factory/;
@@ -548,6 +616,18 @@ Sources will either be taken from ``context``'s active project, or loaded from e
548616
sources and stored temporarily in the ``context``.
549617

550618
This function creates a new object and the caller takes responsibility for deleting the returned object.
619+
%End
620+
621+
static QgsProcessingFeatureSource *parameterAsSource( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context ) /Factory/;
622+
%Docstring
623+
Evaluates the parameter with matching ``definition`` and ``value`` to a feature source.
624+
625+
Sources will either be taken from ``context``'s active project, or loaded from external
626+
sources and stored temporarily in the ``context``.
627+
628+
This function creates a new object and the caller takes responsibility for deleting the returned object.
629+
630+
.. versionadded:: 3.4
551631
%End
552632

553633
static QString parameterAsCompatibleSourceLayerPath( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters,
@@ -572,6 +652,17 @@ Evaluates the parameter with matching ``definition`` to a map layer.
572652
Layers will either be taken from ``context``'s active project, or loaded from external
573653
sources and stored temporarily in the ``context``. In either case, callers do not
574654
need to handle deletion of the returned layer.
655+
%End
656+
657+
static QgsMapLayer *parameterAsLayer( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
658+
%Docstring
659+
Evaluates the parameter with matching ``definition`` and ``value`` to a map layer.
660+
661+
Layers will either be taken from ``context``'s active project, or loaded from external
662+
sources and stored temporarily in the ``context``. In either case, callers do not
663+
need to handle deletion of the returned layer.
664+
665+
.. versionadded:: 3.4
575666
%End
576667

577668
static QgsRasterLayer *parameterAsRasterLayer( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
@@ -581,16 +672,41 @@ Evaluates the parameter with matching ``definition`` to a raster layer.
581672
Layers will either be taken from ``context``'s active project, or loaded from external
582673
sources and stored temporarily in the ``context``. In either case, callers do not
583674
need to handle deletion of the returned layer.
675+
%End
676+
677+
static QgsRasterLayer *parameterAsRasterLayer( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
678+
%Docstring
679+
Evaluates the parameter with matching ``definition`` and ``value`` to a raster layer.
680+
681+
Layers will either be taken from ``context``'s active project, or loaded from external
682+
sources and stored temporarily in the ``context``. In either case, callers do not
683+
need to handle deletion of the returned layer.
684+
685+
.. versionadded:: 3.4
584686
%End
585687

586688
static QString parameterAsOutputLayer( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
587689
%Docstring
588690
Evaluates the parameter with matching ``definition`` to a output layer destination.
691+
%End
692+
693+
static QString parameterAsOutputLayer( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
694+
%Docstring
695+
Evaluates the parameter with matching ``definition`` and ``value`` to a output layer destination.
696+
697+
.. versionadded:: 3.4
589698
%End
590699

591700
static QString parameterAsFileOutput( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
592701
%Docstring
593702
Evaluates the parameter with matching ``definition`` to a file based output destination.
703+
%End
704+
705+
static QString parameterAsFileOutput( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
706+
%Docstring
707+
Evaluates the parameter with matching ``definition`` and ``value`` to a file based output destination.
708+
709+
.. versionadded:: 3.4
594710
%End
595711

596712
static QgsVectorLayer *parameterAsVectorLayer( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
@@ -600,11 +716,29 @@ Evaluates the parameter with matching ``definition`` to a vector layer.
600716
Layers will either be taken from ``context``'s active project, or loaded from external
601717
sources and stored temporarily in the ``context``. In either case, callers do not
602718
need to handle deletion of the returned layer.
719+
%End
720+
721+
static QgsVectorLayer *parameterAsVectorLayer( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
722+
%Docstring
723+
Evaluates the parameter with matching ``definition`` and ``value`` to a vector layer.
724+
725+
Layers will either be taken from ``context``'s active project, or loaded from external
726+
sources and stored temporarily in the ``context``. In either case, callers do not
727+
need to handle deletion of the returned layer.
728+
729+
.. versionadded:: 3.4
603730
%End
604731

605732
static QgsCoordinateReferenceSystem parameterAsCrs( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
606733
%Docstring
607734
Evaluates the parameter with matching ``definition`` to a coordinate reference system.
735+
%End
736+
737+
static QgsCoordinateReferenceSystem parameterAsCrs( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
738+
%Docstring
739+
Evaluates the parameter with matching ``definition`` and ``value`` to a coordinate reference system.
740+
741+
.. versionadded:: 3.4
608742
%End
609743

610744
static QgsRectangle parameterAsExtent( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context,
@@ -618,6 +752,21 @@ reprojected so that it is in the specified ``crs``. In this case the extent of t
618752
.. seealso:: :py:func:`parameterAsExtentGeometry`
619753

620754
.. seealso:: :py:func:`parameterAsExtentCrs`
755+
%End
756+
757+
static QgsRectangle parameterAsExtent( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context,
758+
const QgsCoordinateReferenceSystem &crs = QgsCoordinateReferenceSystem() );
759+
%Docstring
760+
Evaluates the parameter with matching ``definition`` and ``value`` to a rectangular extent.
761+
762+
If ``crs`` is set, and the original coordinate reference system of the parameter can be determined, then the extent will be automatically
763+
reprojected so that it is in the specified ``crs``. In this case the extent of the reproject rectangle will be returned.
764+
765+
.. seealso:: :py:func:`parameterAsExtentGeometry`
766+
767+
.. seealso:: :py:func:`parameterAsExtentCrs`
768+
769+
.. versionadded:: 3.4
621770
%End
622771

623772
static QgsGeometry parameterAsExtentGeometry( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context,
@@ -650,6 +799,18 @@ Evaluates the parameter with matching ``definition`` to a point.
650799
If ``crs`` is set then the point will be automatically reprojected so that it is in the specified ``crs``.
651800

652801
.. seealso:: :py:func:`parameterAsPointCrs`
802+
%End
803+
804+
static QgsPointXY parameterAsPoint( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context,
805+
const QgsCoordinateReferenceSystem &crs = QgsCoordinateReferenceSystem() );
806+
%Docstring
807+
Evaluates the parameter with matching ``definition`` and ``value`` to a point.
808+
809+
If ``crs`` is set then the point will be automatically reprojected so that it is in the specified ``crs``.
810+
811+
.. seealso:: :py:func:`parameterAsPointCrs`
812+
813+
.. versionadded:: 3.4
653814
%End
654815

655816
static QgsCoordinateReferenceSystem parameterAsPointCrs( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
@@ -662,27 +823,63 @@ Returns the coordinate reference system associated with an point parameter value
662823
static QString parameterAsFile( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
663824
%Docstring
664825
Evaluates the parameter with matching ``definition`` to a file/folder name.
826+
%End
827+
828+
static QString parameterAsFile( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
829+
%Docstring
830+
Evaluates the parameter with matching ``definition`` and ``value`` to a file/folder name.
831+
832+
.. versionadded:: 3.4
665833
%End
666834

667835
static QVariantList parameterAsMatrix( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
668836
%Docstring
669837
Evaluates the parameter with matching ``definition`` to a matrix/table of values.
670838
Tables are collapsed to a 1 dimensional list.
839+
%End
840+
841+
static QVariantList parameterAsMatrix( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
842+
%Docstring
843+
Evaluates the parameter with matching ``definition`` and ``value`` to a matrix/table of values.
844+
Tables are collapsed to a 1 dimensional list.
845+
846+
.. versionadded:: 3.4
671847
%End
672848

673849
static QList< QgsMapLayer *> parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
674850
%Docstring
675851
Evaluates the parameter with matching ``definition`` to a list of map layers.
852+
%End
853+
854+
static QList< QgsMapLayer *> parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
855+
%Docstring
856+
Evaluates the parameter with matching ``definition`` and ``value`` to a list of map layers.
857+
858+
.. versionadded:: 3.4
676859
%End
677860

678861
static QList<double> parameterAsRange( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
679862
%Docstring
680863
Evaluates the parameter with matching ``definition`` to a range of values.
864+
%End
865+
866+
static QList<double> parameterAsRange( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
867+
%Docstring
868+
Evaluates the parameter with matching ``definition`` and ``value`` to a range of values.
869+
870+
.. versionadded:: 3.4
681871
%End
682872

683873
static QStringList parameterAsFields( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
684874
%Docstring
685875
Evaluates the parameter with matching ``definition`` to a list of fields.
876+
%End
877+
878+
static QStringList parameterAsFields( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
879+
%Docstring
880+
Evaluates the parameter with matching ``definition`` and ``value`` to a list of fields.
881+
882+
.. versionadded:: 3.4
686883
%End
687884

688885
static QgsProcessingParameterDefinition *parameterFromVariantMap( const QVariantMap &map ) /Factory/;

‎src/core/processing/qgsprocessingparameters.cpp

Lines changed: 188 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,15 @@ QString QgsProcessingParameters::parameterAsString( const QgsProcessingParameter
6060
if ( !definition )
6161
return QString();
6262

63-
QVariant val = parameters.value( definition->name() );
63+
return parameterAsString( definition, parameters.value( definition->name() ), context );
64+
}
65+
66+
QString QgsProcessingParameters::parameterAsString( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context )
67+
{
68+
if ( !definition )
69+
return QString();
70+
71+
QVariant val = value;
6472
if ( val.canConvert<QgsProperty>() )
6573
return val.value< QgsProperty >().valueAsString( context.expressionContext(), definition->defaultValue().toString() );
6674

@@ -78,7 +86,15 @@ QString QgsProcessingParameters::parameterAsExpression( const QgsProcessingParam
7886
if ( !definition )
7987
return QString();
8088

81-
QVariant val = parameters.value( definition->name() );
89+
return parameterAsExpression( definition, parameters.value( definition->name() ), context );
90+
}
91+
92+
QString QgsProcessingParameters::parameterAsExpression( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context )
93+
{
94+
if ( !definition )
95+
return QString();
96+
97+
QVariant val = value;
8298
if ( val.canConvert<QgsProperty>() )
8399
return val.value< QgsProperty >().valueAsString( context.expressionContext(), definition->defaultValue().toString() );
84100

@@ -98,7 +114,15 @@ double QgsProcessingParameters::parameterAsDouble( const QgsProcessingParameterD
98114
if ( !definition )
99115
return 0;
100116

101-
QVariant val = parameters.value( definition->name() );
117+
return parameterAsDouble( definition, parameters.value( definition->name() ), context );
118+
}
119+
120+
double QgsProcessingParameters::parameterAsDouble( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context )
121+
{
122+
if ( !definition )
123+
return 0;
124+
125+
QVariant val = value;
102126
if ( val.canConvert<QgsProperty>() )
103127
return val.value< QgsProperty >().valueAsDouble( context.expressionContext(), definition->defaultValue().toDouble() );
104128

@@ -117,7 +141,15 @@ int QgsProcessingParameters::parameterAsInt( const QgsProcessingParameterDefinit
117141
if ( !definition )
118142
return 0;
119143

120-
QVariant val = parameters.value( definition->name() );
144+
return parameterAsInt( definition, parameters.value( definition->name() ), context );
145+
}
146+
147+
int QgsProcessingParameters::parameterAsInt( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context )
148+
{
149+
if ( !definition )
150+
return 0;
151+
152+
QVariant val = value;
121153
if ( val.canConvert<QgsProperty>() )
122154
return val.value< QgsProperty >().valueAsInt( context.expressionContext(), definition->defaultValue().toInt() );
123155

@@ -140,7 +172,7 @@ int QgsProcessingParameters::parameterAsInt( const QgsProcessingParameterDefinit
140172
//double too large to fit in int
141173
return 0;
142174
}
143-
return std::round( dbl );
175+
return static_cast< int >( std::round( dbl ) );
144176
}
145177

146178
return val.toInt();
@@ -151,7 +183,15 @@ int QgsProcessingParameters::parameterAsEnum( const QgsProcessingParameterDefini
151183
if ( !definition )
152184
return 0;
153185

154-
int val = parameterAsInt( definition, parameters, context );
186+
return parameterAsEnum( definition, parameters.value( definition->name() ), context );
187+
}
188+
189+
int QgsProcessingParameters::parameterAsEnum( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context )
190+
{
191+
if ( !definition )
192+
return 0;
193+
194+
int val = parameterAsInt( definition, value, context );
155195
const QgsProcessingParameterEnum *enumDef = dynamic_cast< const QgsProcessingParameterEnum *>( definition );
156196
if ( enumDef && val >= enumDef->options().size() )
157197
{
@@ -166,7 +206,16 @@ QList<int> QgsProcessingParameters::parameterAsEnums( const QgsProcessingParamet
166206
return QList<int>();
167207

168208
QVariantList resultList;
169-
QVariant val = parameters.value( definition->name() );
209+
return parameterAsEnums( definition, parameters.value( definition->name() ), context );
210+
}
211+
212+
QList<int> QgsProcessingParameters::parameterAsEnums( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context )
213+
{
214+
if ( !definition )
215+
return QList<int>();
216+
217+
QVariantList resultList;
218+
QVariant val = value;
170219
if ( val.canConvert<QgsProperty>() )
171220
resultList << val.value< QgsProperty >().valueAsString( context.expressionContext(), definition->defaultValue().toString() );
172221
else if ( val.type() == QVariant::List )
@@ -217,13 +266,21 @@ QList<int> QgsProcessingParameters::parameterAsEnums( const QgsProcessingParamet
217266
}
218267

219268
bool QgsProcessingParameters::parameterAsBool( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context )
269+
{
270+
if ( !definition )
271+
return false;
272+
273+
return parameterAsBool( definition, parameters.value( definition->name() ), context );
274+
}
275+
276+
bool QgsProcessingParameters::parameterAsBool( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context )
220277
{
221278
if ( !definition )
222279
return false;
223280

224281
QVariant def = definition->defaultValue();
225282

226-
QVariant val = parameters.value( definition->name() );
283+
QVariant val = value;
227284
if ( val.canConvert<QgsProperty>() )
228285
return val.value< QgsProperty >().valueAsBool( context.expressionContext(), def.toBool() );
229286
else if ( val.isValid() )
@@ -242,6 +299,13 @@ QgsFeatureSink *QgsProcessingParameters::parameterAsSink( const QgsProcessingPar
242299
val = parameters.value( definition->name() );
243300
}
244301

302+
return parameterAsSink( definition, val, fields, geometryType, crs, context, destinationIdentifier );
303+
}
304+
305+
QgsFeatureSink *QgsProcessingParameters::parameterAsSink( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsFields &fields, QgsWkbTypes::Type geometryType, const QgsCoordinateReferenceSystem &crs, QgsProcessingContext &context, QString &destinationIdentifier )
306+
{
307+
QVariant val = value;
308+
245309
QgsProject *destinationProject = nullptr;
246310
QString destName;
247311
QVariantMap createOptions;
@@ -301,9 +365,15 @@ QgsProcessingFeatureSource *QgsProcessingParameters::parameterAsSource( const Qg
301365
if ( !definition )
302366
return nullptr;
303367

304-
QVariant val = parameters.value( definition->name() );
368+
return parameterAsSource( definition, parameters.value( definition->name() ), context );
369+
}
305370

306-
return QgsProcessingUtils::variantToSource( val, context, definition->defaultValue() );
371+
QgsProcessingFeatureSource *QgsProcessingParameters::parameterAsSource( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context )
372+
{
373+
if ( !definition )
374+
return nullptr;
375+
376+
return QgsProcessingUtils::variantToSource( value, context, definition->defaultValue() );
307377
}
308378

309379
QString QgsProcessingParameters::parameterAsCompatibleSourceLayerPath( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context, const QStringList &compatibleFormats, const QString &preferredFormat, QgsProcessingFeedback *feedback )
@@ -380,7 +450,15 @@ QgsMapLayer *QgsProcessingParameters::parameterAsLayer( const QgsProcessingParam
380450
if ( !definition )
381451
return nullptr;
382452

383-
QVariant val = parameters.value( definition->name() );
453+
return parameterAsLayer( definition, parameters.value( definition->name() ), context );
454+
}
455+
456+
QgsMapLayer *QgsProcessingParameters::parameterAsLayer( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context )
457+
{
458+
if ( !definition )
459+
return nullptr;
460+
461+
QVariant val = value;
384462
if ( val.canConvert<QgsProperty>() )
385463
{
386464
val = val.value< QgsProperty >().valueAsString( context.expressionContext(), definition->defaultValue().toString() );
@@ -417,13 +495,24 @@ QgsRasterLayer *QgsProcessingParameters::parameterAsRasterLayer( const QgsProces
417495
return qobject_cast< QgsRasterLayer *>( parameterAsLayer( definition, parameters, context ) );
418496
}
419497

498+
QgsRasterLayer *QgsProcessingParameters::parameterAsRasterLayer( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context )
499+
{
500+
return qobject_cast< QgsRasterLayer *>( parameterAsLayer( definition, value, context ) );
501+
}
502+
420503
QString QgsProcessingParameters::parameterAsOutputLayer( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context )
421504
{
422505
QVariant val;
423506
if ( definition )
424507
{
425508
val = parameters.value( definition->name() );
426509
}
510+
return parameterAsOutputLayer( definition, val, context );
511+
}
512+
513+
QString QgsProcessingParameters::parameterAsOutputLayer( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context )
514+
{
515+
QVariant val = value;
427516

428517
QgsProject *destinationProject = nullptr;
429518
QVariantMap createOptions;
@@ -475,6 +564,12 @@ QString QgsProcessingParameters::parameterAsFileOutput( const QgsProcessingParam
475564
{
476565
val = parameters.value( definition->name() );
477566
}
567+
return parameterAsFileOutput( definition, val, context );
568+
}
569+
570+
QString QgsProcessingParameters::parameterAsFileOutput( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context )
571+
{
572+
QVariant val = value;
478573

479574
if ( val.canConvert<QgsProcessingOutputLayerDefinition>() )
480575
{
@@ -506,12 +601,25 @@ QgsVectorLayer *QgsProcessingParameters::parameterAsVectorLayer( const QgsProces
506601
return qobject_cast< QgsVectorLayer *>( parameterAsLayer( definition, parameters, context ) );
507602
}
508603

604+
QgsVectorLayer *QgsProcessingParameters::parameterAsVectorLayer( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context )
605+
{
606+
return qobject_cast< QgsVectorLayer *>( parameterAsVectorLayer( definition, value, context ) );
607+
}
608+
509609
QgsCoordinateReferenceSystem QgsProcessingParameters::parameterAsCrs( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context )
510610
{
511611
if ( !definition )
512612
return QgsCoordinateReferenceSystem();
513613

514-
QVariant val = parameters.value( definition->name() );
614+
return parameterAsCrs( definition, parameters.value( definition->name() ), context );
615+
}
616+
617+
QgsCoordinateReferenceSystem QgsProcessingParameters::parameterAsCrs( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context )
618+
{
619+
if ( !definition )
620+
return QgsCoordinateReferenceSystem();
621+
622+
QVariant val = value;
515623

516624
if ( val.canConvert<QgsProcessingFeatureSourceDefinition>() )
517625
{
@@ -571,7 +679,15 @@ QgsRectangle QgsProcessingParameters::parameterAsExtent( const QgsProcessingPara
571679
if ( !definition )
572680
return QgsRectangle();
573681

574-
QVariant val = parameters.value( definition->name() );
682+
return parameterAsExtent( definition, parameters.value( definition->name() ), context, crs );
683+
}
684+
685+
QgsRectangle QgsProcessingParameters::parameterAsExtent( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context, const QgsCoordinateReferenceSystem &crs )
686+
{
687+
if ( !definition )
688+
return QgsRectangle();
689+
690+
QVariant val = value;
575691

576692
if ( val.canConvert< QgsRectangle >() )
577693
{
@@ -881,7 +997,15 @@ QgsPointXY QgsProcessingParameters::parameterAsPoint( const QgsProcessingParamet
881997
if ( !definition )
882998
return QgsPointXY();
883999

884-
QVariant val = parameters.value( definition->name() );
1000+
return parameterAsPoint( definition, parameters.value( definition->name() ), context, crs );
1001+
}
1002+
1003+
QgsPointXY QgsProcessingParameters::parameterAsPoint( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context, const QgsCoordinateReferenceSystem &crs )
1004+
{
1005+
if ( !definition )
1006+
return QgsPointXY();
1007+
1008+
QVariant val = value;
8851009
if ( val.canConvert< QgsPointXY >() )
8861010
{
8871011
return val.value<QgsPointXY>();
@@ -904,7 +1028,7 @@ QgsPointXY QgsProcessingParameters::parameterAsPoint( const QgsProcessingParamet
9041028
return rp;
9051029
}
9061030

907-
QString pointText = parameterAsString( definition, parameters, context );
1031+
QString pointText = parameterAsString( definition, value, context );
9081032
if ( pointText.isEmpty() )
9091033
pointText = definition->defaultValue().toString();
9101034

@@ -913,7 +1037,7 @@ QgsPointXY QgsProcessingParameters::parameterAsPoint( const QgsProcessingParamet
9131037

9141038
QRegularExpression rx( QStringLiteral( "^\\s*\\(?\\s*(.*?)\\s*,\\s*(.*?)\\s*(?:\\[(.*)\\])?\\s*\\)?\\s*$" ) );
9151039

916-
QString valueAsString = parameterAsString( definition, parameters, context );
1040+
QString valueAsString = parameterAsString( definition, value, context );
9171041
QRegularExpressionMatch match = rx.match( valueAsString );
9181042
if ( match.hasMatch() )
9191043
{
@@ -987,13 +1111,32 @@ QString QgsProcessingParameters::parameterAsFile( const QgsProcessingParameterDe
9871111
return fileText;
9881112
}
9891113

1114+
QString QgsProcessingParameters::parameterAsFile( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context )
1115+
{
1116+
if ( !definition )
1117+
return QString();
1118+
1119+
QString fileText = parameterAsString( definition, value, context );
1120+
if ( fileText.isEmpty() )
1121+
fileText = definition->defaultValue().toString();
1122+
return fileText;
1123+
}
1124+
9901125
QVariantList QgsProcessingParameters::parameterAsMatrix( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context )
1126+
{
1127+
if ( !definition )
1128+
return QVariantList();
1129+
1130+
return parameterAsMatrix( definition, parameters.value( definition->name() ), context );
1131+
}
1132+
1133+
QVariantList QgsProcessingParameters::parameterAsMatrix( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context )
9911134
{
9921135
if ( !definition )
9931136
return QVariantList();
9941137

9951138
QString resultString;
996-
QVariant val = parameters.value( definition->name() );
1139+
QVariant val = value;
9971140
if ( val.canConvert<QgsProperty>() )
9981141
resultString = val.value< QgsProperty >().valueAsString( context.expressionContext(), definition->defaultValue().toString() );
9991142
else if ( val.type() == QVariant::List )
@@ -1022,7 +1165,15 @@ QList<QgsMapLayer *> QgsProcessingParameters::parameterAsLayerList( const QgsPro
10221165
if ( !definition )
10231166
return QList<QgsMapLayer *>();
10241167

1025-
QVariant val = parameters.value( definition->name() );
1168+
return parameterAsLayerList( definition, parameters.value( definition->name() ), context );
1169+
}
1170+
1171+
QList<QgsMapLayer *> QgsProcessingParameters::parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context )
1172+
{
1173+
if ( !definition )
1174+
return QList<QgsMapLayer *>();
1175+
1176+
QVariant val = value;
10261177
if ( QgsMapLayer *layer = qobject_cast< QgsMapLayer * >( qvariant_cast<QObject *>( val ) ) )
10271178
{
10281179
return QList<QgsMapLayer *>() << layer;
@@ -1100,12 +1251,20 @@ QList<QgsMapLayer *> QgsProcessingParameters::parameterAsLayerList( const QgsPro
11001251
}
11011252

11021253
QList<double> QgsProcessingParameters::parameterAsRange( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context )
1254+
{
1255+
if ( !definition )
1256+
return QList<double>();
1257+
1258+
return parameterAsRange( definition, parameters.value( definition->name() ), context );
1259+
}
1260+
1261+
QList<double> QgsProcessingParameters::parameterAsRange( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context )
11031262
{
11041263
if ( !definition )
11051264
return QList<double>();
11061265

11071266
QStringList resultStringList;
1108-
QVariant val = parameters.value( definition->name() );
1267+
QVariant val = value;
11091268
if ( val.canConvert<QgsProperty>() )
11101269
resultStringList << val.value< QgsProperty >().valueAsString( context.expressionContext(), definition->defaultValue().toString() );
11111270
else if ( val.type() == QVariant::List )
@@ -1146,7 +1305,16 @@ QStringList QgsProcessingParameters::parameterAsFields( const QgsProcessingParam
11461305
return QStringList();
11471306

11481307
QStringList resultStringList;
1149-
QVariant val = parameters.value( definition->name() );
1308+
return parameterAsFields( definition, parameters.value( definition->name() ), context );
1309+
}
1310+
1311+
QStringList QgsProcessingParameters::parameterAsFields( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context )
1312+
{
1313+
if ( !definition )
1314+
return QStringList();
1315+
1316+
QStringList resultStringList;
1317+
QVariant val = value;
11501318
if ( val.isValid() )
11511319
{
11521320
if ( val.canConvert<QgsProperty>() )

‎src/core/processing/qgsprocessingparameters.h

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,36 +563,78 @@ class CORE_EXPORT QgsProcessingParameters
563563
*/
564564
static QString parameterAsString( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
565565

566+
/**
567+
* Evaluates the parameter with matching \a definition and \a value to a static string value.
568+
* \since QGIS 3.4
569+
*/
570+
static QString parameterAsString( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
571+
566572
/**
567573
* Evaluates the parameter with matching \a definition to an expression.
568574
*/
569575
static QString parameterAsExpression( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
570576

577+
/**
578+
* Evaluates the parameter with matching \a definitionand \a value to an expression.
579+
* \since QGIS 3.4
580+
*/
581+
static QString parameterAsExpression( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
582+
571583
/**
572584
* Evaluates the parameter with matching \a definition to a static double value.
573585
*/
574586
static double parameterAsDouble( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
575587

588+
/**
589+
* Evaluates the parameter with matching \a definition and \a value to a static double value.
590+
* \since QGIS 3.4
591+
*/
592+
static double parameterAsDouble( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
593+
576594
/**
577595
* Evaluates the parameter with matching \a definition to a static integer value.
578596
*/
579597
static int parameterAsInt( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
580598

599+
/**
600+
* Evaluates the parameter with matching \a definition and \a value to a static integer value.
601+
* \since QGIS 3.4
602+
*/
603+
static int parameterAsInt( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
604+
581605
/**
582606
* Evaluates the parameter with matching \a definition to a enum value.
583607
*/
584608
static int parameterAsEnum( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
585609

610+
/**
611+
* Evaluates the parameter with matching \a definition and \a value to a enum value.
612+
* \since QGIS 3.4
613+
*/
614+
static int parameterAsEnum( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
615+
586616
/**
587617
* Evaluates the parameter with matching \a definition to list of enum values.
588618
*/
589619
static QList<int> parameterAsEnums( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
590620

621+
/**
622+
* Evaluates the parameter with matching \a definition and \a value to list of enum values.
623+
* \since QGIS 3.4
624+
*/
625+
static QList<int> parameterAsEnums( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
626+
591627
/**
592628
* Evaluates the parameter with matching \a definition to a static boolean value.
593629
*/
594630
static bool parameterAsBool( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, const QgsProcessingContext &context );
595631

632+
/**
633+
* Evaluates the parameter with matching \a definition and \a value to a static boolean value.
634+
* \since QGIS 3.4
635+
*/
636+
static bool parameterAsBool( const QgsProcessingParameterDefinition *definition, const QVariant &value, const QgsProcessingContext &context );
637+
596638
/**
597639
* Evaluates the parameter with matching \a definition to a feature sink.
598640
*
@@ -610,6 +652,25 @@ class CORE_EXPORT QgsProcessingParameters
610652
const QgsFields &fields, QgsWkbTypes::Type geometryType, const QgsCoordinateReferenceSystem &crs,
611653
QgsProcessingContext &context, QString &destinationIdentifier SIP_OUT ) SIP_FACTORY;
612654

655+
/**
656+
* Evaluates the parameter with matching \a definition and \a value to a feature sink.
657+
*
658+
* The \a fields, \a geometryType and \a crs parameters dictate the properties
659+
* of the resulting feature sink.
660+
*
661+
* Sinks will either be taken from \a context's active project, or created from external
662+
* providers and stored temporarily in the \a context. The \a destinationIdentifier
663+
* argument will be set to a string which can be used to retrieve the layer corresponding
664+
* to the sink, e.g. via calling QgsProcessingUtils::mapLayerFromString().
665+
*
666+
* This function creates a new object and the caller takes responsibility for deleting the returned object.
667+
*
668+
* \since QGIS 3.4
669+
*/
670+
static QgsFeatureSink *parameterAsSink( const QgsProcessingParameterDefinition *definition, const QVariant &value,
671+
const QgsFields &fields, QgsWkbTypes::Type geometryType, const QgsCoordinateReferenceSystem &crs,
672+
QgsProcessingContext &context, QString &destinationIdentifier SIP_OUT ) SIP_FACTORY;
673+
613674
/**
614675
* Evaluates the parameter with matching \a definition to a feature source.
615676
*
@@ -620,6 +681,18 @@ class CORE_EXPORT QgsProcessingParameters
620681
*/
621682
static QgsProcessingFeatureSource *parameterAsSource( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context ) SIP_FACTORY;
622683

684+
/**
685+
* Evaluates the parameter with matching \a definition and \a value to a feature source.
686+
*
687+
* Sources will either be taken from \a context's active project, or loaded from external
688+
* sources and stored temporarily in the \a context.
689+
*
690+
* This function creates a new object and the caller takes responsibility for deleting the returned object.
691+
*
692+
* \since QGIS 3.4
693+
*/
694+
static QgsProcessingFeatureSource *parameterAsSource( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context ) SIP_FACTORY;
695+
623696
/**
624697
* Evaluates the parameter with matching \a definition to a source vector layer file path of compatible format.
625698
*
@@ -644,6 +717,17 @@ class CORE_EXPORT QgsProcessingParameters
644717
*/
645718
static QgsMapLayer *parameterAsLayer( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
646719

720+
/**
721+
* Evaluates the parameter with matching \a definition and \a value to a map layer.
722+
*
723+
* Layers will either be taken from \a context's active project, or loaded from external
724+
* sources and stored temporarily in the \a context. In either case, callers do not
725+
* need to handle deletion of the returned layer.
726+
*
727+
* \since QGIS 3.4
728+
*/
729+
static QgsMapLayer *parameterAsLayer( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
730+
647731
/**
648732
* Evaluates the parameter with matching \a definition to a raster layer.
649733
*
@@ -653,16 +737,39 @@ class CORE_EXPORT QgsProcessingParameters
653737
*/
654738
static QgsRasterLayer *parameterAsRasterLayer( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
655739

740+
/**
741+
* Evaluates the parameter with matching \a definition and \a value to a raster layer.
742+
*
743+
* Layers will either be taken from \a context's active project, or loaded from external
744+
* sources and stored temporarily in the \a context. In either case, callers do not
745+
* need to handle deletion of the returned layer.
746+
*
747+
* \since QGIS 3.4
748+
*/
749+
static QgsRasterLayer *parameterAsRasterLayer( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
750+
656751
/**
657752
* Evaluates the parameter with matching \a definition to a output layer destination.
658753
*/
659754
static QString parameterAsOutputLayer( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
660755

756+
/**
757+
* Evaluates the parameter with matching \a definition and \a value to a output layer destination.
758+
* \since QGIS 3.4
759+
*/
760+
static QString parameterAsOutputLayer( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
761+
661762
/**
662763
* Evaluates the parameter with matching \a definition to a file based output destination.
663764
*/
664765
static QString parameterAsFileOutput( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
665766

767+
/**
768+
* Evaluates the parameter with matching \a definition and \a value to a file based output destination.
769+
* \since QGIS 3.4
770+
*/
771+
static QString parameterAsFileOutput( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
772+
666773
/**
667774
* Evaluates the parameter with matching \a definition to a vector layer.
668775
*
@@ -672,11 +779,28 @@ class CORE_EXPORT QgsProcessingParameters
672779
*/
673780
static QgsVectorLayer *parameterAsVectorLayer( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
674781

782+
/**
783+
* Evaluates the parameter with matching \a definition and \a value to a vector layer.
784+
*
785+
* Layers will either be taken from \a context's active project, or loaded from external
786+
* sources and stored temporarily in the \a context. In either case, callers do not
787+
* need to handle deletion of the returned layer.
788+
*
789+
* \since QGIS 3.4
790+
*/
791+
static QgsVectorLayer *parameterAsVectorLayer( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
792+
675793
/**
676794
* Evaluates the parameter with matching \a definition to a coordinate reference system.
677795
*/
678796
static QgsCoordinateReferenceSystem parameterAsCrs( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
679797

798+
/**
799+
* Evaluates the parameter with matching \a definition and \a value to a coordinate reference system.
800+
* \since QGIS 3.4
801+
*/
802+
static QgsCoordinateReferenceSystem parameterAsCrs( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
803+
680804
/**
681805
* Evaluates the parameter with matching \a definition to a rectangular extent.
682806
*
@@ -689,6 +813,20 @@ class CORE_EXPORT QgsProcessingParameters
689813
static QgsRectangle parameterAsExtent( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context,
690814
const QgsCoordinateReferenceSystem &crs = QgsCoordinateReferenceSystem() );
691815

816+
/**
817+
* Evaluates the parameter with matching \a definition and \a value to a rectangular extent.
818+
*
819+
* If \a crs is set, and the original coordinate reference system of the parameter can be determined, then the extent will be automatically
820+
* reprojected so that it is in the specified \a crs. In this case the extent of the reproject rectangle will be returned.
821+
*
822+
* \see parameterAsExtentGeometry()
823+
* \see parameterAsExtentCrs()
824+
*
825+
* \since QGIS 3.4
826+
*/
827+
static QgsRectangle parameterAsExtent( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context,
828+
const QgsCoordinateReferenceSystem &crs = QgsCoordinateReferenceSystem() );
829+
692830
/**
693831
* Evaluates the parameter with matching \a definition to a rectangular extent, and returns a geometry covering this extent.
694832
*
@@ -720,6 +858,17 @@ class CORE_EXPORT QgsProcessingParameters
720858
static QgsPointXY parameterAsPoint( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context,
721859
const QgsCoordinateReferenceSystem &crs = QgsCoordinateReferenceSystem() );
722860

861+
/**
862+
* Evaluates the parameter with matching \a definition and \a value to a point.
863+
*
864+
* If \a crs is set then the point will be automatically reprojected so that it is in the specified \a crs.
865+
*
866+
* \see parameterAsPointCrs()
867+
* \since QGIS 3.4
868+
*/
869+
static QgsPointXY parameterAsPoint( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context,
870+
const QgsCoordinateReferenceSystem &crs = QgsCoordinateReferenceSystem() );
871+
723872
/**
724873
* Returns the coordinate reference system associated with an point parameter value.
725874
*
@@ -732,27 +881,58 @@ class CORE_EXPORT QgsProcessingParameters
732881
*/
733882
static QString parameterAsFile( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
734883

884+
/**
885+
* Evaluates the parameter with matching \a definition and \a value to a file/folder name.
886+
* \since QGIS 3.4
887+
*/
888+
static QString parameterAsFile( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
889+
735890
/**
736891
* Evaluates the parameter with matching \a definition to a matrix/table of values.
737892
* Tables are collapsed to a 1 dimensional list.
738893
*/
739894
static QVariantList parameterAsMatrix( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
740895

896+
/**
897+
* Evaluates the parameter with matching \a definition and \a value to a matrix/table of values.
898+
* Tables are collapsed to a 1 dimensional list.
899+
* \since QGIS 3.4
900+
*/
901+
static QVariantList parameterAsMatrix( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
902+
741903
/**
742904
* Evaluates the parameter with matching \a definition to a list of map layers.
743905
*/
744906
static QList< QgsMapLayer *> parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
745907

908+
/**
909+
* Evaluates the parameter with matching \a definition and \a value to a list of map layers.
910+
* \since QGIS 3.4
911+
*/
912+
static QList< QgsMapLayer *> parameterAsLayerList( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
913+
746914
/**
747915
* Evaluates the parameter with matching \a definition to a range of values.
748916
*/
749917
static QList<double> parameterAsRange( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
750918

919+
/**
920+
* Evaluates the parameter with matching \a definition and \a value to a range of values.
921+
* \since QGIS 3.4
922+
*/
923+
static QList<double> parameterAsRange( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
924+
751925
/**
752926
* Evaluates the parameter with matching \a definition to a list of fields.
753927
*/
754928
static QStringList parameterAsFields( const QgsProcessingParameterDefinition *definition, const QVariantMap &parameters, QgsProcessingContext &context );
755929

930+
/**
931+
* Evaluates the parameter with matching \a definition and \a value to a list of fields.
932+
* \since QGIS 3.4
933+
*/
934+
static QStringList parameterAsFields( const QgsProcessingParameterDefinition *definition, const QVariant &value, QgsProcessingContext &context );
935+
756936
/**
757937
* Creates a new QgsProcessingParameterDefinition using the configuration from a
758938
* supplied variant \a map.

0 commit comments

Comments
 (0)
Please sign in to comment.