18#ifndef QGSPROCESSINGCONTEXT_H
19#define QGSPROCESSINGCONTEXT_H
55 Q_DECLARE_FLAGS( Flags, Flag )
87 mFlags = other.mFlags;
88 mProject = other.mProject;
89 mTransformContext = other.mTransformContext;
90 mExpressionContext = other.mExpressionContext;
92 mInvalidGeometryCallback = other.mInvalidGeometryCallback;
93 mUseDefaultInvalidGeometryCallback = other.mUseDefaultInvalidGeometryCallback;
94 mInvalidGeometryCheck = other.mInvalidGeometryCheck;
95 mTransformErrorCallback = other.mTransformErrorCallback;
96 mDefaultEncoding = other.mDefaultEncoding;
97 mFeedback = other.mFeedback;
98 mPreferredVectorFormat = other.mPreferredVectorFormat;
99 mPreferredRasterFormat = other.mPreferredRasterFormat;
100 mEllipsoid = other.mEllipsoid;
101 mDistanceUnit = other.mDistanceUnit;
102 mAreaUnit = other.mAreaUnit;
103 mLogLevel = other.mLogLevel;
104 mTemporaryFolderOverride = other.mTemporaryFolderOverride;
105 mMaximumThreads = other.mMaximumThreads;
112 QgsProcessingContext::Flags
flags()
const {
return mFlags; }
118 void setFlags( QgsProcessingContext::Flags flags ) { mFlags = flags; }
140 if ( mEllipsoid.isEmpty() )
141 mEllipsoid = mProject->ellipsoid();
143 mDistanceUnit = mProject->distanceUnits();
145 mAreaUnit = mProject->areaUnits();
186 QString ellipsoid()
const;
196 void setEllipsoid(
const QString &ellipsoid );
274 , outputName( outputName )
275 , layerTypeHint( layerTypeHint )
295 bool forceName =
false;
316 int layerSortKey = 0;
347 void setOutputLayerName(
QgsMapLayer *layer )
const;
368 return mLayersToLoadOnCompletion;
382 return mLayersToLoadOnCompletion.contains( layer );
392 void setLayersToLoadOnCompletion(
const QMap< QString, QgsProcessingContext::LayerDetails > &layers );
419 return mLayersToLoadOnCompletion[ layer ];
446 void setInvalidGeometryCallback( SIP_PYCALLABLE / AllowNone / );
448 Py_BEGIN_ALLOW_THREADS
450 sipCpp->setInvalidGeometryCallback( [a0](
const QgsFeature &arg )
453 Py_XDECREF( sipCallMethod( NULL, a0,
"D", &arg, sipType_QgsFeature, NULL ) );
487 void setTransformErrorCallback( SIP_PYCALLABLE / AllowNone / );
489 Py_BEGIN_ALLOW_THREADS
491 sipCpp->setTransformErrorCallback( [a0](
const QgsFeature &arg )
494 Py_XDECREF( sipCallMethod( NULL, a0,
"D", &arg, sipType_QgsFeature, NULL ) );
543 QThread *
thread() {
return tempLayerStore.thread(); }
554 Q_ASSERT_X( QThread::currentThread() ==
QgsProcessingContext::thread(),
"QgsProcessingContext::pushToThread",
"Cannot push context to another thread unless the current thread matches the existing context thread affinity" );
555 tempLayerStore.moveToThread( thread );
577 QgsMapLayer *getMapLayer(
const QString &identifier );
669 LogLevel logLevel()
const;
677 void setLogLevel( LogLevel level );
688 QString temporaryFolder()
const;
699 void setTemporaryFolder(
const QString &folder );
712 int maximumThreads()
const;
729 void setMaximumThreads(
int threads );
736 QVariantMap exportToMap()
const;
745 IncludeProjectPath = 1 << 0,
747 Q_DECLARE_FLAGS( ProcessArgumentFlags, ProcessArgumentFlag )
754 QStringList asQgisProcessArguments( QgsProcessingContext::ProcessArgumentFlags flags = QgsProcessingContext::ProcessArgumentFlags() )
const;
758 QgsProcessingContext::Flags mFlags = QgsProcessingContext::Flags();
759 QPointer< QgsProject > mProject;
773 bool mUseDefaultInvalidGeometryCallback =
true;
774 std::function< void(
const QgsFeature & ) > mInvalidGeometryCallback;
776 std::function< void(
const QgsFeature & ) > mTransformErrorCallback;
777 QString mDefaultEncoding;
778 QMap< QString, LayerDetails > mLayersToLoadOnCompletion;
780 QPointer< QgsProcessingFeedback > mFeedback;
782 QString mPreferredVectorFormat;
783 QString mPreferredRasterFormat;
785 LogLevel mLogLevel = DefaultLevel;
787 QString mTemporaryFolderOverride;
788 int mMaximumThreads = QThread::idealThreadCount();
DistanceUnit
Units of distance.
@ Unknown
Unknown distance unit.
@ Unknown
Unknown areal unit.
Contains information about the context in which a coordinate transform is executed.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
void setLoadedLayerStore(QgsMapLayerStore *store)
Sets the destination layer store for any layers loaded during expression evaluation.
InvalidGeometryCheck
Handling of features with invalid geometries.
@ GeometryNoCheck
No invalid geometry checking.
An interface for objects which provide features via a getFeatures method.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
A storage object for map layers, in which the layers are owned by the store and have their lifetime b...
Base class for all map layer types.
Details for layers to load into projects.
QString groupName
Optional name for a layer tree group under which to place the layer when loading it into a project.
LayerDetails()=default
Default constructor.
QString name
Friendly name for layer, possibly for use when loading layer into project.
LayerDetails(const QString &name, QgsProject *project, const QString &outputName=QString(), QgsProcessingUtils::LayerHint layerTypeHint=QgsProcessingUtils::LayerHint::UnknownType)
Constructor for LayerDetails.
QString outputName
Associated output name from algorithm which generated the layer.
Contains information about the context in which a processing algorithm is executed.
QString defaultEncoding() const
Returns the default encoding to use for newly created files.
QThread * thread()
Returns the thread in which the context lives.
QgsProcessingContext::LayerDetails & layerToLoadOnCompletionDetails(const QString &layer)
Returns a reference to the details for a given layer which is loaded on completion of the algorithm o...
QgsProcessingFeedback * feedback()
Returns the associated feedback object.
QString preferredRasterFormat() const
Returns the preferred raster format to use for vector outputs.
QgsProcessingContext::Flags flags() const
Returns any flags set in the context.
ProcessArgumentFlag
Flags controlling the results given by asQgisProcessArguments().
LogLevel
Logging level for algorithms to use when pushing feedback messages.
@ Verbose
Verbose logging.
@ ModelDebug
Model debug level logging. Includes verbose logging and other outputs useful for debugging models (si...
QgsExpressionContext & expressionContext()
Returns the expression context.
QgsCoordinateTransformContext transformContext() const
Returns the coordinate transform context.
const QgsExpressionContext & expressionContext() const
Returns the expression context.
QgsProcessingContext(const QgsProcessingContext &other)=delete
QgsProcessingContext cannot be copied.
void setDefaultEncoding(const QString &encoding)
Sets the default encoding to use for newly created files.
void setFeedback(QgsProcessingFeedback *feedback)
Sets an associated feedback object.
void setFlags(QgsProcessingContext::Flags flags)
Sets flags for the context.
void setProject(QgsProject *project)
Sets the project in which the algorithm will be executed.
QgsProject * project() const
Returns the project in which the algorithm is being executed.
QMap< QString, QgsProcessingContext::LayerDetails > layersToLoadOnCompletion() const
Returns a map of layers (by ID or datasource) to LayerDetails, to load into the canvas upon completio...
void pushToThread(QThread *thread)
Pushes the thread affinity for the context (including all layers contained in the temporaryLayerStore...
Flag
Flags that affect how processing algorithms are run.
bool willLoadLayerOnCompletion(const QString &layer) const
Returns true if the given layer (by ID or datasource) will be loaded into the current project upon co...
QgsMapLayerStore * temporaryLayerStore()
Returns a reference to the layer store used for storing temporary layers during algorithm execution.
QgsFeatureRequest::InvalidGeometryCheck invalidGeometryCheck() const
Returns the behavior used for checking invalid geometries in input layers.
void copyThreadSafeSettings(const QgsProcessingContext &other)
Copies all settings which are safe for use across different threads from other to this context.
void setInvalidGeometryCallback(const std::function< void(const QgsFeature &) > &callback)
Sets a callback function to use when encountering an invalid geometry and invalidGeometryCheck() is s...
void setPreferredVectorFormat(const QString &format)
Sets the preferred vector format to use for vector outputs.
void setTransformContext(const QgsCoordinateTransformContext &context)
Sets the coordinate transform context.
QgsProcessingContext & operator=(const QgsProcessingContext &other)=delete
QgsProcessingContext cannot be copied.
void setTransformErrorCallback(const std::function< void(const QgsFeature &) > &callback)
Sets a callback function to use when encountering a transform error when iterating features.
QString preferredVectorFormat() const
Returns the preferred vector format to use for vector outputs.
std::function< void(const QgsFeature &) > transformErrorCallback() const
Returns the callback function to use when encountering a transform error when iterating features.
void setPreferredRasterFormat(const QString &format)
Sets the preferred raster format to use for vector outputs.
Base class for providing feedback from a processing algorithm.
An interface for layer post-processing handlers for execution following a processing algorithm operat...
virtual ~QgsProcessingLayerPostProcessorInterface()=default
virtual void postProcessLayer(QgsMapLayer *layer, QgsProcessingContext &context, QgsProcessingFeedback *feedback)=0
Post-processes the specified layer, following successful execution of a processing algorithm.
LayerHint
Layer type hints.
@ UnknownType
Unknown layer type.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
QgsCoordinateTransformContext transformContext
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsTextRendererUtils::CurvedTextFlags)