MeVisLab Toolbox Reference
ml::CSOModificator Class Reference

Base class for performing modifications on the CSOs of a CSOList. More...

#include <CSOModificator.h>

Inheritance diagram for ml::CSOModificator:
ml::CSOGenerator ml::CSOBaseModule ml::CSOGeneratorBase ml::Module ml::FieldContainer ml::Base

Public Member Functions

 CSOModificator (const std::string &type="CSOModificator", int numInImages=0, int numOutImages=0)
 Standard constructor.
Public Member Functions inherited from ml::CSOGenerator
 CSOGenerator (std::string type="CSOGenerator", int numInImg=0, int numOutImg=0)
 Constructor.
std::string getType () const
 Returns the type of the CSOGenerator.
Public Member Functions inherited from ml::CSOBaseModule
 CSOBaseModule (const std::string &type="CSOBaseModule", int numInImages=0, int numOutImages=0)
 Standard constructor.
Public Member Functions inherited from ml::Module
MLMetaProfilePtrgetMetaProfile () const
 Returns the metaprofile for the base operator.
const char * getTypeNameFast () const
 Module (int numInputImages, int numOutputImages)
 ~Module () override
InputConnectorFieldgetInputImageField (MLint i) const
 Returns the field representing input image i. i must be a valid index.
OutputConnectorFieldgetOutputImageField (MLint i=0) const
 Returns the field representing output image i. i must be a valid index.
MLint getNumInputImages () const
 Returns the number of input images of this module.
MLint getNumOutputImages () const
 Returns the number of output images of this module.
PagedImagegetOutputImage (MLint outputIndex=0) const
 Returns the output image outputIndex. The index needs to be in the range [0, getNumOutputImages()-1].
InputConnectorFieldaddInputImage (const char *name=nullptr)
OutputConnectorFieldaddOutputImage (const char *name=nullptr)
PagedImagegetInputImage (MLint inputIndex, bool getReal=false) const
PagedImagegetUpdatedInputImage (MLint inputIndex, bool getReal=false) const
MLErrorCode processAllPages (int outputIndex=-1, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
MLErrorCode processAllPages (ProcessAllPagesHandler &handler, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
MLErrorCode processMissingPages (int outputIndex=0, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
void clearOutputImage (MLint i=0)
 Clears cached output image pages of output image i.
MLint getOutputImageInplace (MLint outputIndex=0) const
MLint getBypass (MLint outputIndex=0) const
THREAD_SUPPORT getThreadSupport () const
bool areRecursiveHandleNotificationsPermitted () const
MLint getHandleNotificationEntryCounter () const
PERMITTED_TYPES getVoxelDataTypeSupport () const
bool isSupportedVoxelDataType (MLDataType dt) const
virtual INPUT_HANDLE handleInput (int, INPUT_STATE) const
INPUT_STATE getInputState (MLint index)
INPUT_STATE getUpdatedInputState (MLint index)
bool isInputImageField (Field *field) const
void touchOutputImageFields () const
 Touches all output image fields to indicate that the images have changed.
virtual void beginSaveFields ()
virtual void endSaveFields ()
Public Member Functions inherited from ml::FieldContainer
 FieldContainer ()
 Constructor.
 ~FieldContainer () override
 Destructor: Deletes all added fields.
std::string whoAmI (bool withInstanceName=true) const
FieldaddField (const char *name, const char *type, const char *value)
FieldaddField (Field *field)
 Adds a field, the ownership of the field is passed to the FieldContainer.
BoolFieldaddBool (const char *name)
 Creates a BoolField with name and adds it to the container. Default value is false.
BoolFieldaddBool (const char *name, bool value)
 Creates a BoolField with name and adds it to the container.
IntFieldaddInt (const char *name)
 Creates an IntField with name and adds it to the container. Default value is 0.
IntFieldaddInt (const char *name, MLint value)
 Creates an IntField with name and adds it to the container.
EnumFieldaddEnum (const char *name, const char *const *enumerationItemNames, MLint numEnumerationItems)
EnumFieldaddEnum (const char *name, const std::vector< std::string > &enumerationItemNames)
template<typename EnumType>
TypedEnumField< EnumType > * addEnum (const char *name, const EnumValues< EnumType > &values, EnumType initialValue)
FloatFieldaddFloat (const char *name)
 Creates a FloatField with name and adds it to the container. Default value is 0.f.
FloatFieldaddFloat (const char *name, float value)
 Creates a FloatField with name and adds it to the container.
ProgressFieldaddProgress (const char *name)
 Creates a float ProgressField with name and adds it to the container. Default value is 0.f.
ProgressFieldaddProgress (const char *name, float value)
 Creates a float ProgressField with name and adds it to the container.
DoubleFieldaddDouble (const char *name)
 Creates a DoubleField with name and adds it to the container. Default value is 0.
DoubleFieldaddDouble (const char *name, double value)
 Creates a DoubleField with name and adds it to the container.
StringFieldaddString (const char *name)
 Creates a StringField with name and adds it to the container. Default value is empty string.
StringFieldaddString (const char *name, const std::string &value)
 Creates a StringField with name and adds it to the container.
NotifyFieldaddNotify (const char *name)
 Creates a NotifyField field with name and adds it to the container.
TriggerFieldaddTrigger (const char *name)
BaseFieldaddBase (const char *name)
 Creates a Base field with name and adds it to the container. Default value is NULL.
BaseFieldaddBase (const char *name, Base *value)
 Creates a Base field with name and adds it to the container.
BaseFieldaddBase (const char *name, const RefCountedBasePtr &value)
 Creates a Base field with name and adds it to the container. Sets the value from intrusive pointer.
template<typename T>
BaseFieldaddBaseWithAllowedType (const char *name, T *value=nullptr)
 As above, but also sets the allowed type of the field.
template<typename T>
BaseFieldaddBaseWithAllowedType (const char *name, const ::boost::intrusive_ptr< T > &value)
 As above, but also sets the allowed type of the field.
template<typename T>
TypedBaseField< T > * addTypedBase (const char *name)
 Creates a TypedBaseField with name and adds it to the container. Default value is NULL.
template<typename T>
TypedBaseField< T > * addTypedBase (const char *name, T *value)
 Creates a TypedBaseField with name and adds it to the container.
template<typename T>
TypedBaseField< T > * addTypedBase (const char *name, const ::boost::intrusive_ptr< T > &value)
 Creates a TypedBaseField with name and adds it to the container. Sets the value from intrusive pointer.
SoNodeFieldaddSoNode (const char *name)
 Creates a SoNodeField with name and adds it to the container. Default value is NULL.
SoNodeFieldaddSoNode (const char *name, SoNode *value)
 Creates a SoNodeField with name and adds it to the container.
PointerFieldaddPointer (const char *name)
 Creates a PointerField with name and adds it to the container.
Vector2FieldaddVector2 (const char *name)
 Creates a Vector2Field with name and adds it to the container.
Vector2FieldaddVector2 (const char *name, const Vector2 &value)
 Creates a Vector2Field with name and adds it to the container.
Vector2FieldaddVector2 (const char *name, double x, double y)
 Creates a Vector2Field with name and adds it to the container.
Vector3FieldaddVector3 (const char *name)
 Creates a Vector3Field with name and adds it to the container.
Vector3FieldaddVector3 (const char *name, const Vector3 &value)
 Creates a Vector3Field with name and adds it to the container.
Vector3FieldaddVector3 (const char *name, double x, double y, double z)
 Creates a Vector3Field with name and adds it to the container.
Vector4FieldaddVector4 (const char *name)
 Creates a Vector4Field with name and adds it to the container.
Vector4FieldaddVector4 (const char *name, const Vector4 &value)
 Creates a Vector4Field with name and adds it to the container.
Vector4FieldaddVector4 (const char *name, double x, double y, double z, double w)
 Creates a Vector4Field with name and adds it to the container.
Vector5FieldaddVector5 (const char *name)
 Creates a Vector5Field with name and adds it to the container.
Vector5FieldaddVector5 (const char *name, const Vector5 &value)
 Creates a Vector5Field with name and adds it to the container.
Vector6FieldaddVector6 (const char *name)
 Creates a Vector6Field with name and adds it to the container.
Vector6FieldaddVector6 (const char *name, const Vector6 &value)
 Creates a Vector6Field with name and adds it to the container.
Vector10FieldaddVector10 (const char *name)
 Creates a Vector10Field with name and adds it to the container.
Vector10FieldaddVector10 (const char *name, const Vector10 &value)
 Creates a Vector10Field with name and adds it to the container.
ImageVectorFieldaddImageVector (const char *name)
 Creates a ImageVectorField with name and adds it to the container.
ImageVectorFieldaddImageVector (const char *name, const ImageVector &value)
 Creates a ImageVectorField with name and adds it to the container.
ImageVectorFieldaddImageVector (const char *name, MLint x, MLint y, MLint z, MLint c, MLint t, MLint u)
 Creates a ImageVectorField with name and adds it to the container.
SubImageBoxFieldaddSubImageBox (const char *name)
 Creates a SubImageBoxField with name and adds it to the container.
SubImageBoxFieldaddSubImageBox (const char *name, const SubImageBox &value)
 Creates a SubImageBoxField with name and adds it to the container.
SubImageBoxdFieldaddSubImageBoxd (const char *name)
 Creates a SubImageBoxd field with name and adds it to the container.
SubImageBoxdFieldaddSubImageBoxd (const char *name, const SubImageBoxd &value)
 Creates a SubImageBoxd field with name and adds it to the container.
ColorFieldaddColor (const char *name)
 Creates a ColorField with name and adds it to the container.
ColorFieldaddColor (const char *name, float r, float g, float b)
 Creates a ColorField with name and adds it to the container.
ColorFieldaddColor (const char *name, const Vector3 &value)
 Creates a ColorField with name and adds it to the container.
PlaneFieldaddPlane (const char *name)
 Creates a PlaneField with name and adds it to the container.
PlaneFieldaddPlane (const char *name, double f0, double f1, double f2, double f3)
 Creates a PlaneField with name and adds it to the container.
PlaneFieldaddPlane (const char *name, const Plane &value)
 Creates a PlaneField with name and adds it to the container.
RotationFieldaddRotation (const char *name)
 Creates a RotationField with name and adds it to the container.
RotationFieldaddRotation (const char *name, const Rotation &value)
 Creates a RotationField with name and adds it to the container.
Matrix2FieldaddMatrix2 (const char *name)
 Creates a Matrix2Field with name and adds it to the container.
Matrix2FieldaddMatrix2 (const char *name, const Matrix2 &value)
 Creates a Matrix2Field with name and adds it to the container.
Matrix3FieldaddMatrix3 (const char *name)
 Creates a Matrix3Field with name and adds it to the container.
Matrix3FieldaddMatrix3 (const char *name, const Matrix3 &value)
 Creates a Matrix3Field with name and adds it to the container.
Matrix4FieldaddMatrix4 (const char *name)
 Creates a Matrix4Field with name and adds it to the container.
Matrix4FieldaddMatrix4 (const char *name, const Matrix4 &value)
 Creates a Matrix4Field with name and adds it to the container.
Matrix5FieldaddMatrix5 (const char *name)
 Creates a Matrix5Field with name and adds it to the container.
Matrix5FieldaddMatrix5 (const char *name, const Matrix5 &value)
 Creates a Matrix5Field with name and adds it to the container.
Matrix6FieldaddMatrix6 (const char *name)
 Creates a Matrix6Field with name and adds it to the container.
Matrix6FieldaddMatrix6 (const char *name, const Matrix6 &value)
 Creates a Matrix6Field with name and adds it to the container.
MatrixFieldaddMatrix (const char *name)
 Creates a MatrixField with name and adds it to the container.
MatrixFieldaddMatrix (const char *name, const Matrix4 &value)
 Creates a MatrixField with name and adds it to the container.
MLDataTypeFieldaddMLDataType (const char *name)
 Creates a MTDataTypeField with name and adds it to the container.
MLDataTypeFieldaddMLDataType (const char *name, MLDataType value)
 Creates a MTDataTypeField with name and adds it to the container.
UniversalTypeFieldaddUniversalType (const char *name)
 Creates an UniversalTypeField field with name and adds it to the container.
IntListFieldaddIntList (const char *name)
 Creates an IntListField field with name and empty list value and adds it to the container.
IntListFieldaddIntList (const char *name, const std::vector< MLint > &value)
 Creates an IntListField field with name and given list value and adds it to the container.
DoubleListFieldaddDoubleList (const char *name)
 Creates an DoubleListField field with name and empty list value and adds it to the container.
DoubleListFieldaddDoubleList (const char *name, const std::vector< double > &value)
 Creates an DoubleListField field with name and given list value and adds it to the container.
Vector2ListFieldaddVector2List (const char *name)
 Creates an Vector2ListField field with name and empty list value and adds it to the container.
Vector2ListFieldaddVector2List (const char *name, const std::vector< Vector2 > &value)
 Creates an Vector2ListField field with name and given list value and adds it to the container.
Vector3ListFieldaddVector3List (const char *name)
 Creates an Vector3ListField field with name and empty list value and adds it to the container.
Vector3ListFieldaddVector3List (const char *name, const std::vector< Vector3 > &value)
 Creates an Vector3ListField field with name and given list value and adds it to the container.
Vector4ListFieldaddVector4List (const char *name)
 Creates an Vector4ListField field with name and empty list value and adds it to the container.
Vector4ListFieldaddVector4List (const char *name, const std::vector< Vector4 > &value)
 Creates an Vector4ListField field with name and given list value and adds it to the container.
size_t getNumFields () const
 Returns the number of added fields.
bool hasField (const std::string &name) const
 Returns true if the field with name name exists; otherwise, false is returned.
FieldgetField (const std::string &name) const
FieldgetField (MLint index) const
 Returns pointer of field at index if it exists. If not, -1 is returned.
MLint getFieldIndex (Field *field) const
 Returns index of field if it exists. If not, -1 is returned.
void setFieldStringValue (const std::string &name, const std::string &value)
std::string getFieldStringValue (const std::string &name) const
virtual void deactivateAttachments ()
Public Member Functions inherited from ml::Base
 Base ()
 Constructor.
virtual ~Base ()
 Destructor.
virtual BasedeepCopy () const
bool isOfAllowedType (const std::vector< const RuntimeType * > &types) const
virtual bool isRefCountedBase () const
 Returns whether the instance is derived from RefCountedBase.
virtual std::string detailString () const
virtual bool implementsPersistence (PersistenceInterface) const
virtual std::string persistentState () const
 Returns a string describing the object's internal state.
virtual void setPersistentState (const std::string &state)
virtual void addStateToTree (TreeNode *) const
 Attaches the object state as children of the given parent node.
virtual void readStateFromTree (TreeNode *)
 Reads the object state from the children of the given parent node.
virtual void writeTo (AbstractPersistenceOutputStream *) const
virtual void readFrom (AbstractPersistenceInputStream *, int)
Public Member Functions inherited from ml::CSOGeneratorBase
 CSOGeneratorBase ()
 Default constructor.
virtual ~CSOGeneratorBase ()=default
CSOgeneratorAddCSO (CSOList *csoList, bool useUndoRedo=true)
CSOgeneratorAddCSONoEvent (CSOList *csoList, bool useUndoRedo=true, bool sendEvent=false)
 See generatorAddCSO, but no CSOGroup scope event is emitted. (So this method is faster!).
CSOGroupgeneratorGetParentGroup (CSOList *csoList, bool useUndoRedo=false, bool generate=false)
 Returns the parent CSOGroup according to current CSOGroup settings.
void generatorEmptyGroupOnDemand (CSOList *csoList)
 Empties a CSOGroup on demand of the given CSOList with the set label.

Protected Member Functions

 ~CSOModificator () override
 Standard destructor.
void activateAttachments () override
 Initializes the module after loading.
void handleNotification (Field *field) override
 Called when any field changes.
virtual void resetParsedIds ()
 Resets parameteres of the modificator.
virtual void process ()
virtual void clearOutput ()
 Clears all outputs (used by auto clear mode).
virtual std::vector< CSO * > getCSOsToBeProcessed (const std::vector< CSO * > &csosFromIdList)
virtual bool shouldUseUndoRedo () const
 Returns whether undo/Redo should be used.
virtual bool canProcessInput ()
virtual void _setupCSOList ()
 Sets the _outCSOList correctly.
virtual void _applyModificator ()
virtual void _applyModificatorOnCSOs (const std::vector< CSO * > &csosToBeProcessed)
virtual void _applyModificatorOn (CSO &outputCSO)
virtual void _updateCSOType (CSO &outputCSO)
 Updates the CSO's type. Most modules change the type to the modificators name, but not all do it.
virtual void _notifyObservers (bool didSomething)
 Notifies other modules that processing has finished.
virtual bool shouldTriggerInputChanged (Field *field) const
virtual bool shouldTriggerParameterApplied (Field *field) const
bool _isChangeSettingField (Field *field) const
virtual void _onInputChanged ()
 Helper methods called by handleNotification, may be overwritten in very special cases.
virtual void _onParameterApplied ()
virtual void _onCSOIdListChanged ()
virtual void _onWorkDirectlyOnInputChanged ()
virtual void _onApply ()
bool _isInIdList (CSO *cso)
void _parseCSOIds (std::set< unsigned int > &ids)
 Parse the CSO ID field into the given vector of IDs.
std::vector< CSO * > _getModifyCSOsFromIdList ()
void _storeCurrentStateInUndoManager (std::vector< CSO * > csosToBeProcessed)
void _applyChangedSettings (CSO &cso) const
 Changes the settings of the given CSO (only if _changeSettingsForModifiedCSOsFld is true).
 ML_ABSTRACT_MODULE_CLASS_HEADER (CSOModificator)
Protected Member Functions inherited from ml::CSOGenerator
CSO_addCSO (CSOList *csoList, bool useUndoRedo=true)
CSO_addCSONoEvent (CSOList *csoList, bool useUndoRedo=true)
 See _addCSO, but without CSOGroup event. (This method is faster!).
CSOGroup_getParentGroup (CSOList *csoList, bool useUndoRedo=false, bool generate=false)
 Returns the parent CSOGroup according to current CSOGroup settings.
void _emptyGroupOnDemand (CSOList *csoList)
 Empties a CSOGroup on demand of the given CSOList with the set label.
int getModuleCreatorId () const override
 Returns the module's creator ID.
std::string getModuleType () const override
 Returns the module's type string.
bool getShouldEmptyBeforeGeneration () const override
int getAddCSOToGroupMode () const override
 Returns the CSOGroup generation mode.
std::string getAddCSOToGroupLabel () const override
 Returns the label string of a target CSOGroup.
int getAddCSOToGroupId () const override
 Returns the ID of a target CSOGroup.
int getDefaultPathPointStyle () const override
 Returns the set default path point style for a new CSO.
float getDefaultPathPointWidth () const override
 Returns the set default path point width for a new CSO.
Vector3 getDefaultPathPointColor () const override
 Returns the set default path point color for a new CSO.
float getDefaultPathPointAlpha () const override
 Returns the set default path point alpha for a new CSO.
int getDefaultSeedPointStyle () const override
 Returns the set default seed point style for a new CSO.
float getDefaultSeedPointSize () const override
 Returns the set default seed point size for a new CSO.
Vector3 getDefaultSeedPointColor () const override
 Returns the set default seed point color for a new CSO.
float getDefaultSeedPointAlpha () const override
 Returns the set default seed point alpha for a new CSO.
int getDefaultVoxelWriteMode () const override
 Returns the set default voxel write mode for a new CSO.
float getDefaultVoxelWriteValue () const override
 Returns the set default voxel write value for a new CSO.
 ~CSOGenerator () override
 Destructor.
Protected Member Functions inherited from ml::CSOBaseModule
 ~CSOBaseModule () override
 Standard destructor.
virtual bool _useLegacyAutoApplyMode () const
void _setIsProcessingFlag (bool newProcessingState)
 Sets the isProcessing field if the processing state has changed.
 ML_MODULE_CLASS_HEADER (CSOBaseModule)
Protected Member Functions inherited from ml::Module
void handleNotificationInternal (Field *field, FieldSensor::Strength strength) override
virtual CalculateOutputImageHandlercreateCalculateOutputImageHandler (PagedImage *outputImage)
virtual void calculateOutputImageProperties (int outputIndex, PagedImage *outputImage)
virtual SubImageBox calculateInputSubImageBox (int, const SubImageBox &outputSubImageBox, int)
virtual void calculateOutputSubImage (SubImage *outputSubImage, int outputIndex, SubImage *inputSubImages)
virtual void provideCustomPage (int, const SubImageBox &, MLMemoryBlockHandle &)
void handleNotificationOff ()
void handleNotificationOn ()
bool isHandleNotificationOn ()
 Returns true if handleNotification calls are permitted; otherwise, it returns false.
void setOutputImageInplace (MLint outputIndex=0, MLint inputIndex=0)
void unsetOutputImageInplace (MLint outputIndex=0)
void setBypass (MLint outputIndex=0, MLint inputIndex=0)
void setClampPagesToImageExtent (bool flag=true)
void setThreadSupport (THREAD_SUPPORT supportMode)
void permitRecursiveHandleNotifications (bool enable)
void setVoxelDataTypeSupport (PERMITTED_TYPES permTypes)

Static Protected Member Functions

static void _csoListNotifyObserverCB (void *userData, int notificationFlag)
 Can be called from anywhere from the network.

Protected Attributes

BaseField_inputCSOListFld
 The input CSOList.
BaseField_outputCSOListFld
 The filtered output CSOList.
StringField_csoIdListFld
BoolField_workDirectlyOnInputListFld
BoolField_useUndoRedoFld
 Shall undo/redo be used? The value is ignored if workDirectlyOnInputList is disabled.
BoolField_listenToFinishingNotificationsFld
 Shall the module listen to finishing events?
BoolField_listenToSelectionNotificationsFld
 Shall the module listen to selection change notifications?
BoolField_changeSettingsForModifiedCSOsFld
 Shall the module's user settings be used for modified CSOs?
CSOListPtr _inCSOList
 A pointer to the input CSOList.
CSOListPtr _outCSOList
 A pointer to the output CSOList.
bool _isInNotificationCB
 Locking variable for removing/adding a notification observer.
bool _isNotifyingMyself
 Is this module notifying itself? Locking variable to avoid infinite loops.
std::set< unsigned int > _parsedIDs
 The IDs of the CSOs that should be processed according to the _csoIdListFld.
bool _parsedIDsValid
 Flag that indicates whether _parsedIDs is valid.
bool _outCSOListChanged
bool _isOutputCSOListOwner
 Flag that indicates whether this module is the owner of the output CSOList.
bool _isWorkingDirectlyOnInputCSOList
 Flag that indicates whether this module should work on its input CSOList directly.
Protected Attributes inherited from ml::CSOGenerator
BoolField_emptyGroupBeforeGenerationFld
TypedEnumField< CSOAddToGroupModes > * _addCSOToGroupMode
 Defines whether the CSOs are added to a CSOGroup and how the CSOGroup is identified.
StringField_addCSOToGroupWithLabelFld
IntField_addCSOToGroupWithIdFld
IntField_idFld
TypedEnumField< CSOPathPointsStyle > * _pathPointStyleFld
 The path point's line style (none, solid, dashed, dotted). Default is 'solid'.
FloatField_pathPointWidthFld
 The path point's line width. Default is 1.
ColorField_pathPointColorFld
 The path point's color. Default is yellow.
FloatField_pathPointAlphaFld
 The path point's alpha value. Default is 1.
TypedEnumField< CSOSeedPointStyle > * _seedPointStyleFld
 The marker's mode (none, rect, circle). Default is 'rect'.
FloatField_seedPointSizeFld
 The marker's size. Default is 3.
ColorField_seedPointColorFld
 The marker's color. Default is green.
FloatField_seedPointAlphaFld
 The marker's alpha value. Default is 1.
TypedEnumField< CSOVoxelWriteModes > * _voxelWriteModeFld
 The CSO's voxel write mode (module, const, const plus ID, ID). Default is 'module'.
FloatField_voxelWriteValueFld
 The CSO's voxel write value. Default is 1024.
Protected Attributes inherited from ml::CSOBaseModule
TypedEnumField< CSOUpdateModes > * _updateModeFld
 Enumeration field for update modes.
BoolField_autoApplyFld
NotifyField_applyFld
 Applies changes.
BoolField_isProcessingFld
 Field reflects whether the module is currently processing.
NotifyField_doneFld
 Notifies the application or other modules that the processing has ended.
std::string _type

Additional Inherited Members

Public Types inherited from ml::Module
enum  PERMITTED_TYPES { ONLY_SCALAR_TYPES , ONLY_DEFAULT_TYPES , ALL_REGISTERED_TYPES }
 See documentation of setVoxelDataTypeSupport. More...
enum  INPUT_STATE { DISCONNECTED = 0 , CONNECTED_BUT_INVALID = 1 , CONNECTED_AND_VALID = 2 , CONNECTED_BUT_NEEDS_UPDATE = 3 }
 See documentation of handleInput. More...
enum  INPUT_HANDLE { INVALIDATE = 0 , ALLOW_INVALID_INPUT = 2 }
 See documentation of handleInput. More...
Public Types inherited from ml::Base
enum  PersistenceInterface { PersistenceByString , PersistenceByTreeNode , PersistenceByStream }
 This enum describes the different persistence interfaces available. More...
Static Public Member Functions inherited from ml::Module
static MLErrorCode getTile (PagedImage *image, SubImageBox loc, MLDataType datatype, void **data, const ScaleShiftData &scaleShiftData=ScaleShiftData(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
static MLErrorCode getTile (PagedImage *image, SubImage &subimg, const ScaleShiftData &scaleShiftData=ScaleShiftData(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
static MLErrorCode updateImageProperties (PagedImage *image)
static void freeTile (void *data)
 For documentation see Host::freeTile().
static void updateProgress (const char *info1, const char *info2)
 For documentation see Host::updateProgress().
static bool shouldTerminate ()
 For documentation see Host::shouldTerminate().
static FieldgetPressedNotifyField ()
 For documentation see Host::getPressedNotifyField().
static void adaptPageExtent (ImageVector &pageExtent, MLDataType imageType, const ImageVector &newImgExtent, const ImageVector &oldImgExtent, const ImageVector &pageUnit=ImageVector(0), const ImageVector &minPageExtent=ImageVector(0), const ImageVector &maxPageExtent=ImageVector(0))
static std::string getVoxelValueAsString (PagedImage *image, const ImageVector &position, MLErrorCode *errorCode=nullptr, const std::string &errorResult="")
static size_t getNumModules ()
 Returns the number of instantiated modules.
static ModulegetModule (size_t index)
 Returns a pointer to instantiated module index.
static MLint findModuleIndex (Module &module)
 Returns the index of Module module. If not found, -1 is returned.
static void destroyModule ()
Protected Types inherited from ml::Module
enum  THREAD_SUPPORT { NO_THREAD_SUPPORT = PagedImage::NO_THREAD_SUPPORT , MULTITHREADED = PagedImage::MULTITHREADED , IO_THREAD = PagedImage::IO_THREAD }

Detailed Description

Base class for performing modifications on the CSOs of a CSOList.

Definition at line 28 of file CSOModificator.h.

Constructor & Destructor Documentation

◆ CSOModificator()

ml::CSOModificator::CSOModificator ( const std::string & type = "CSOModificator",
int numInImages = 0,
int numOutImages = 0 )

Standard constructor.

Referenced by ML_ABSTRACT_MODULE_CLASS_HEADER().

◆ ~CSOModificator()

ml::CSOModificator::~CSOModificator ( )
overrideprotected

Standard destructor.

Member Function Documentation

◆ _applyChangedSettings()

void ml::CSOModificator::_applyChangedSettings ( CSO & cso) const
protected

Changes the settings of the given CSO (only if _changeSettingsForModifiedCSOsFld is true).

◆ _applyModificator()

virtual void ml::CSOModificator::_applyModificator ( )
protectedvirtual

Applies the modification to the CSOs of the attached list. By default, it calls _applyModificatorOn() for each CSO that should be procesed.

May be overwritten if it is not suitable to overwrite the applyModificatorOn(CSO&) method, e.g., when sets of CSOs are processed in batches. Use _outCSOList to access the CSO list that should be modified here.

◆ _applyModificatorOn()

virtual void ml::CSOModificator::_applyModificatorOn ( CSO & outputCSO)
protectedvirtual

May be overwritten by subclasses if CSOs are processed one by one.

Parameters
outputCSOthe CSO from the _outCSOList on which the modification is to be applied.

◆ _applyModificatorOnCSOs()

virtual void ml::CSOModificator::_applyModificatorOnCSOs ( const std::vector< CSO * > & csosToBeProcessed)
protectedvirtual

May be overwritten by subclasses if, for example, CSOs should be processed in parallel.

Parameters
csosToBeProcessedall CSOs from the _outCSOList on which the modification is to be applied.

◆ _csoListNotifyObserverCB()

void ml::CSOModificator::_csoListNotifyObserverCB ( void * userData,
int notificationFlag )
staticprotected

Can be called from anywhere from the network.

◆ _getModifyCSOsFromIdList()

std::vector< CSO * > ml::CSOModificator::_getModifyCSOsFromIdList ( )
protected

◆ _isChangeSettingField()

bool ml::CSOModificator::_isChangeSettingField ( Field * field) const
protected

◆ _isInIdList()

bool ml::CSOModificator::_isInIdList ( CSO * cso)
protected

Checks whether the given CSO is in the list of IDs given by _csoIdListFld. If _csoIdListFld is empty, this function always returns true.

◆ _notifyObservers()

virtual void ml::CSOModificator::_notifyObservers ( bool didSomething)
protectedvirtual

Notifies other modules that processing has finished.

◆ _onApply()

virtual void ml::CSOModificator::_onApply ( )
protectedvirtual

◆ _onCSOIdListChanged()

virtual void ml::CSOModificator::_onCSOIdListChanged ( )
protectedvirtual

◆ _onInputChanged()

virtual void ml::CSOModificator::_onInputChanged ( )
protectedvirtual

Helper methods called by handleNotification, may be overwritten in very special cases.

◆ _onParameterApplied()

virtual void ml::CSOModificator::_onParameterApplied ( )
protectedvirtual

◆ _onWorkDirectlyOnInputChanged()

virtual void ml::CSOModificator::_onWorkDirectlyOnInputChanged ( )
protectedvirtual

◆ _parseCSOIds()

void ml::CSOModificator::_parseCSOIds ( std::set< unsigned int > & ids)
protected

Parse the CSO ID field into the given vector of IDs.

◆ _setupCSOList()

virtual void ml::CSOModificator::_setupCSOList ( )
protectedvirtual

Sets the _outCSOList correctly.

◆ _storeCurrentStateInUndoManager()

void ml::CSOModificator::_storeCurrentStateInUndoManager ( std::vector< CSO * > csosToBeProcessed)
protected

◆ _updateCSOType()

virtual void ml::CSOModificator::_updateCSOType ( CSO & outputCSO)
protectedvirtual

Updates the CSO's type. Most modules change the type to the modificators name, but not all do it.

◆ activateAttachments()

void ml::CSOModificator::activateAttachments ( )
overrideprotectedvirtual

Initializes the module after loading.

Reimplemented from ml::CSOBaseModule.

◆ canProcessInput()

virtual bool ml::CSOModificator::canProcessInput ( )
protectedvirtual

Returns whether the current input can be processed, i.e., there is a non-empty list attached. Subclasses may add additional conditions. (See CSOMerge as an example).

◆ clearOutput()

virtual void ml::CSOModificator::clearOutput ( )
protectedvirtual

Clears all outputs (used by auto clear mode).

◆ getCSOsToBeProcessed()

virtual std::vector< CSO * > ml::CSOModificator::getCSOsToBeProcessed ( const std::vector< CSO * > & csosFromIdList)
protectedvirtual

May be overwritten to filter out CSOs that are processed by this modificator. By default, it returns the input parameter that holds the CSOs that are in the inputList and that are included by the idList filter field.

◆ handleNotification()

void ml::CSOModificator::handleNotification ( Field * field)
overrideprotectedvirtual

Called when any field changes.

Reimplemented from ml::CSOBaseModule.

◆ ML_ABSTRACT_MODULE_CLASS_HEADER()

ml::CSOModificator::ML_ABSTRACT_MODULE_CLASS_HEADER ( CSOModificator )
protected

References CSOModificator().

◆ process()

virtual void ml::CSOModificator::process ( )
protectedvirtual

Sets up the CSOList, applies the modificator to the CSOList, and notifies other modules that processing has finished. Call this function in handleNotification when the modificator should be applied to the CSOList. A derived module does not have to override this function.

◆ resetParsedIds()

virtual void ml::CSOModificator::resetParsedIds ( )
protectedvirtual

Resets parameteres of the modificator.

◆ shouldTriggerInputChanged()

virtual bool ml::CSOModificator::shouldTriggerInputChanged ( Field * field) const
protectedvirtual

Returns whether a field notification triggers auto update. Overwrite this method if your subclass adds its own input fields. These may be input connector fields or input parameter fields. Note that the result may not only depend on the passed field but also on the modules state. For example, the creation parameters defined in CSOGeneratorBase are ignored in modificators when changeSettingsForModifiedCSOs is disabled.

legacy note: modules that support different update mechanisms for input parameter fields and input connector fields (currently, these are a lot of modules) should not add their input parameter fields to this method but to the shouldTriggerParameterApplied method.

◆ shouldTriggerParameterApplied()

virtual bool ml::CSOModificator::shouldTriggerParameterApplied ( Field * field) const
protectedvirtual

This method exists only for legacy reasons and shoult not be overwritten when writing new CSOModificators!

Returns whether a field notification triggers the legacy auto apply. This method is only overwritten by classes that use the autoApplyLegacyMode The classes with legacy mode enabled have to add their parameter input fields to this method.

◆ shouldUseUndoRedo()

virtual bool ml::CSOModificator::shouldUseUndoRedo ( ) const
protectedvirtual

Returns whether undo/Redo should be used.

Member Data Documentation

◆ _changeSettingsForModifiedCSOsFld

BoolField* ml::CSOModificator::_changeSettingsForModifiedCSOsFld
protected

Shall the module's user settings be used for modified CSOs?

Definition at line 158 of file CSOModificator.h.

◆ _csoIdListFld

StringField* ml::CSOModificator::_csoIdListFld
protected

The list of IDs of the CSOs to be transformed. If this list is empty, all CSOs are transformed.

Definition at line 143 of file CSOModificator.h.

◆ _inCSOList

CSOListPtr ml::CSOModificator::_inCSOList
protected

A pointer to the input CSOList.

Definition at line 163 of file CSOModificator.h.

◆ _inputCSOListFld

BaseField* ml::CSOModificator::_inputCSOListFld
protected

The input CSOList.

Definition at line 137 of file CSOModificator.h.

◆ _isInNotificationCB

bool ml::CSOModificator::_isInNotificationCB
protected

Locking variable for removing/adding a notification observer.

Definition at line 167 of file CSOModificator.h.

◆ _isNotifyingMyself

bool ml::CSOModificator::_isNotifyingMyself
protected

Is this module notifying itself? Locking variable to avoid infinite loops.

Definition at line 169 of file CSOModificator.h.

◆ _isOutputCSOListOwner

bool ml::CSOModificator::_isOutputCSOListOwner
protected

Flag that indicates whether this module is the owner of the output CSOList.

Definition at line 182 of file CSOModificator.h.

◆ _isWorkingDirectlyOnInputCSOList

bool ml::CSOModificator::_isWorkingDirectlyOnInputCSOList
protected

Flag that indicates whether this module should work on its input CSOList directly.

Definition at line 184 of file CSOModificator.h.

◆ _listenToFinishingNotificationsFld

BoolField* ml::CSOModificator::_listenToFinishingNotificationsFld
protected

Shall the module listen to finishing events?

Definition at line 153 of file CSOModificator.h.

◆ _listenToSelectionNotificationsFld

BoolField* ml::CSOModificator::_listenToSelectionNotificationsFld
protected

Shall the module listen to selection change notifications?

Definition at line 155 of file CSOModificator.h.

◆ _outCSOList

CSOListPtr ml::CSOModificator::_outCSOList
protected

A pointer to the output CSOList.

Definition at line 165 of file CSOModificator.h.

◆ _outCSOListChanged

bool ml::CSOModificator::_outCSOListChanged
protected

Flag that indicates that _outCSOList has been changed and thus that _outputCSOListFld has to be updated. Because new might assign the same memory block (i.e., the same pointer value), it is not enough to compare _outCSOList with _outputCSOListFld->getBaseValue() (see _notifyObservers()).

Definition at line 179 of file CSOModificator.h.

◆ _outputCSOListFld

BaseField* ml::CSOModificator::_outputCSOListFld
protected

The filtered output CSOList.

Definition at line 139 of file CSOModificator.h.

◆ _parsedIDs

std::set<unsigned int> ml::CSOModificator::_parsedIDs
protected

The IDs of the CSOs that should be processed according to the _csoIdListFld.

Definition at line 172 of file CSOModificator.h.

◆ _parsedIDsValid

bool ml::CSOModificator::_parsedIDsValid
protected

Flag that indicates whether _parsedIDs is valid.

Definition at line 174 of file CSOModificator.h.

◆ _useUndoRedoFld

BoolField* ml::CSOModificator::_useUndoRedoFld
protected

Shall undo/redo be used? The value is ignored if workDirectlyOnInputList is disabled.

Definition at line 150 of file CSOModificator.h.

◆ _workDirectlyOnInputListFld

BoolField* ml::CSOModificator::_workDirectlyOnInputListFld
protected

Shall the module work directly on the input CSOList? Otherwise, it would work on a copy that is returned by the output field.

Definition at line 147 of file CSOModificator.h.


The documentation for this class was generated from the following file: