MeVisLab Toolbox Reference
mlModuleBackgroundTask.h
Go to the documentation of this file.
1/*************************************************************************************
2**
3** Copyright 2009, MeVis Medical Solutions AG
4**
5** The user may use this file in accordance with the license agreement provided with
6** the Software or, alternatively, in accordance with the terms contained in a
7** written agreement between the user and MeVis Medical Solutions AG.
8**
9** For further information use the contact form at https://www.mevislab.de/contact
10**
11**************************************************************************************/
12
13#ifndef ML_MODULE_BACKGROUND_TASK_H
14#define ML_MODULE_BACKGROUND_TASK_H
15
16// Local includes
18
20
22
23class ProcessAllPagesHandler;
24
27public:
31 _pageExtent(pagedImage.getPageExtent())
32 {
33 // Clear the image properties, since they are not thread-safe!
35 }
36
38 const ImageVector& getPageExtent() const { return _pageExtent; }
39
40protected:
42};
43
44//----------------------------------------------------------------------------------------------------
45
51{
52public:
53 ModuleBackgroundTask(Module* module, FloatField* progressField = nullptr, StringField* statusField= nullptr);
54
56
59 void setProgressField(FloatField* field) { _progressField = field; }
60
63 void setStatusField(StringField* field) { _statusField = field; }
64
67 bool hasProgressField() { return !_progressField.isNull(); }
68
71 bool hasStatusField() { return !_statusField.isNull(); }
72
75 void setStatusString(const std::string& status) override;
76
79 void setProgress(float progress) override;
80
84 int getTileFlags = ImagingBackgroundTask::UseMemoryManager);
85
93 ManagedSubImage* externalBuffer, int getTileFlags = ImagingBackgroundTask::ExternalBuffer);
94
98
116
123
130 virtual bool shouldCancelOnInputImageChange(int /*inputIndex*/) const { return true; }
131
133 ImageVector getInputImageExtent(int index = 0) const;
134
137
139 MLDataType getInputImageDataType(int index = 0) const;
140
142 double getInputImageMinVoxelValue(int index = 0) const;
143
145 double getInputImageMaxVoxelValue(int index = 0) const;
146
148
153
155 bool hasValidInputImage(int index = 0) const;
156
158 int getNumInputImages() const { return _numInputImages; }
159
160private:
161
162 Module* _module;
163 DistantObject<FloatField> _progressField;
164 DistantObject<StringField> _statusField;
165
166 int _numInputImages;
167 PagedImageProperties** _inputImageProperties;
168};
169
171
172#endif
173
174
#define MLBACKGROUNDTASKS_EXPORT
A DistantObject stores the pointer to an object of type T and forbids direct access to the stored poi...
Field to encapsulate a float value.
Definition mlFields.h:389
void clear()
Removes all entries from the container.
An asynchronous tile request. This is copyable!
An asynchronous process all pages request. This is copyable!
ManagedSubImage is derived from SubImage and frees its allocated memory automatically when it is dest...
This class encapsulates basic medical image properties:
ImagePropertyExtensionContainer & getImagePropertyContainer()
Permits access to the container for user image properties.
ModuleBackgroundTask extends the ImagingBackgroundTask with several useful methods that allow asynchr...
double getInputImageMinVoxelValue(int index=0) const
Returns the minimum voxel value of the input image at index.
~ModuleBackgroundTask() override
void setStatusString(const std::string &status) override
Updates the status string while processing.
void setProgressField(FloatField *field)
Sets the progress field.
MLDataType getInputImageDataType(int index=0) const
Returns the data type of the input image at index.
AsyncTileRequest requestTile(int inputImageIndex, const SubImageBox &box, MLDataType type, const ScaleShiftData &shift=ScaleShiftData(), int getTileFlags=ImagingBackgroundTask::UseMemoryManager)
Asynchronously request the tile.
ModuleBackgroundTask(Module *module, FloatField *progressField=nullptr, StringField *statusField=nullptr)
void setProgress(float progress) override
Updates the progress while processing.
ProcessAllPagesRequest requestProcessAllPages(ProcessAllPagesHandler *handler, const SubImageBox &box=SubImageBox())
Asynchronously request a processing of pages using the given handler.
bool hasValidInputImage(int index=0) const
Returns whether the input image at index is valid and thus its properties can be requested.
ImageVector getInputImagePageExtent(int index=0) const
Returns the page extent of the input image at index.
double getInputImageMaxVoxelValue(int index=0) const
Returns the maximum voxel value of the input image at index.
ProcessAllPagesRequest requestProcessAllPages(const SubImageBox &box=SubImageBox())
Asynchronously request a processing of pages and running Module::processAllPages(-1).
void setStatusField(StringField *field)
Sets the status field.
bool hasStatusField()
Returns whether this task has a status field.
virtual bool shouldCancelOnInputImageChange(int) const
Returns whether the task should be canceled when the given input image has changed.
const MedicalImageProperties & getInputImageProperties(int index=0) const
Returns the image properties of the input image at index.
AsyncTileRequest requestTileWithExternalBuffer(int inputImageIndex, const SubImageBox &box, MLDataType type, const ScaleShiftData &shift, ManagedSubImage *externalBuffer, int getTileFlags=ImagingBackgroundTask::ExternalBuffer)
Asynchronously request the tile.
ImageVector getInputImageExtent(int index=0) const
Returns the extent of the input image at index.
bool hasProgressField()
Returns whether this task has a progress field.
int getNumInputImages() const
Returns the number of input images.
Base class for an image processing module of the ML.
Definition mlModule.h:151
PagedImageProperties extends the MedicalImageProperties with the page extent.
const ImageVector & getPageExtent() const
Returns the page extent.
PagedImageProperties(const PagedImage &pagedImage)
The class PagedImage, representing a fragmented image that manages properties and data of an image lo...
Base class for handlers that are used for the Module::processAllPages facility.
Field to encapsulate a string value.
Definition mlFields.h:553
MLint32 MLDataType
MLDataType.
Definition mlTypeDefs.h:596
Target mlrange_cast(Source arg)
Generic version of checked ML casts.
TScaleShiftData< MLdouble > ScaleShiftData
Double version of TScaleShiftData for maximum reasonable precision.
TSubImageBox< MLint > SubImageBox
Defines the standard SubImageBox type used in the ML. Its size varies with the size of the MLint type...