MeVisLab Toolbox Reference
ml::ListContainerBase Class Referenceabstract

Abstract module class ListContainerBase implementing basic functionality for a list container module. More...

#include <mlListContainer.h>

Inheritance diagram for ml::ListContainerBase:
ml::Module ml::FieldContainer ml::Base ml::ListContainerTemplate< XMarkerList > ml::ListContainerTemplate< StringList > ml::ListContainerTemplate< T > ml::XMarkerListContainer ml::StringListContainer

Public Types

enum  OverflowModes {
  OvwNone = 0 , OvwRemoveFirst , OvwRemoveLast , OvwRemoveAll ,
  OvwRemoveNew , OvwNumModes
}
 Mode constants for cases of list size overflow. More...
 
- Public Types inherited from ml::Module
enum  PERMITTED_TYPES {
  ONLY_SCALAR_TYPES , ONLY_DEFAULT_TYPES , ALL_REGISTERED_TYPES , ONLY_STANDARD_TYPES = ONLY_SCALAR_TYPES ,
  FULLY_OPERATIONAL = ONLY_DEFAULT_TYPES , MINIMUM_OPERATIONAL = 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...
 

Public Member Functions

 ListContainerBase ()
 Constructor. More...
 
 ListContainerBase (ListBase *listBasePtr, int inputNum, int outputNum)
 Constructor In listBasePtr pass a pointer to the list object, which has to be a member of the derived class. More...
 
void setHandleNotificationCB (ListContainerHandleNotificationCB *cb=nullptr, void *userData=nullptr)
 Set the callback for handleNotification. More...
 
BaseFieldgetOutputField ()
 Returns a pointer to the output field. More...
 
MLint maxNumItems () const
 
int overflowMode () const
 Returns the overflow mode. More...
 
Host communication

Handle field notifications

void handleNotification (Field *field) override
 Called when any field data in the field container of this module is modified. More...
 
void activateAttachments () override
 Update fields after an initialization without handleNotification() called. More...
 
void beginSaveFields () override
 Prepare for persistence. More...
 
void endSaveFields () override
 Clean up after persistence. More...
 
Execute list operations

These methods are called to perform an operation on the list object, e.g.

as a consequence of one of the action fields being pressed. They handle the necessary field updates as well as touching the output list and call deleteItems(), insertItem() and modifyItem() in order to carry out the list modifications themselves. A derived editor module may call these methods in order to perform a list operation.

Delete all list items

virtual void doDeleteAll ()
 
virtual void doDeleteItem (MLssize_t index)
 Delete single item at position index. More...
 
virtual void doInsertItem (MLssize_t index, bool fromCurrentItem)
 Insert an item at position index. More...
 
virtual void doModifyItem (MLssize_t index, Field *field, bool fromCurrentItem)
 Modify item at position index. More...
 
virtual void doCopyItemToTemplate (MLssize_t index)
 Copy values from item at position index to the template fields. More...
 
virtual void doClearItem (MLssize_t index)
 Init item at position index. More...
 
virtual void doSelectItem (MLssize_t index)
 Select item at position index, or deselect if item == -1. More...
 
virtual void doUpdate ()
 Update all fields and touch output list field. More...
 
- Public Member Functions inherited from ml::Module
MLMetaProfilePtrgetMetaProfile () const
 Returns the meta profile for the base operator. More...
 
const char * getTypeNameFast () const
 Macro to declare methods for the ML runtime type system (see mlRuntimeSubClass.h). More...
 
 Module (int numInputImages, int numOutputImages)
 Constructor: Initializes numInputImages input images and numOutputImages output images of the module. More...
 
 ~Module () override
 Destructor: Destroys this module. More...
 
InputConnectorFieldgetInputImageField (MLint i) const
 Returns the field representing input image i. i must be a valid index. More...
 
OutputConnectorFieldgetOutputImageField (MLint i=0) const
 Returns field representing output image i. i must be a valid index. More...
 
MLint getNumInputImages () const
 Returns number of input images of this module. More...
 
MLint getNumOutputImages () const
 Returns number of output images of this module. More...
 
PagedImagegetOutputImage (MLint outputIndex=0) const
 Returns output image outputIndex. The index needs to be in the range [0, getNumOutputImages()-1]. More...
 
InputConnectorFieldaddInputImage (const char *name=nullptr)
 Adds a new input image with name to the module. More...
 
OutputConnectorFieldaddOutputImage (const char *name=nullptr)
 Adds a new output image with name to the module. More...
 
PagedImagegetInputImage (MLint inputIndex, bool getReal=false) const
 Returns the output image of the module connected to input inputIndex. More...
 
PagedImagegetUpdatedInputImage (MLint inputIndex, bool getReal=false) const
 Convenience method for safe access to the input image at index inputIndex. More...
 
MLErrorCode processAllPages (int outputIndex=-1, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
 Processes all pages of a module for easy implementation of page-based image processing of complete images. More...
 
MLErrorCode processAllPages (ProcessAllPagesHandler &handler, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
 Process input images with a ProcessAllPagesHandler handler on a temporary output image (which allocates no data) For details, see processAllPages(-1) above. More...
 
MLErrorCode processMissingPages (int outputIndex=0, SubImageBox region=SubImageBox(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
 Processes all missing pages on the given output image. More...
 
void clearOutputImage (MLint i=0)
 Clear cached output image pages of output image i. More...
 
InputConnectorFieldaddInputConnector (const char *name, Module *module, MLint i) override
 
OutputConnectorFieldaddOutputConnector (const char *name, Module *module, MLint i) override
 
MLint getOutputImageInplace (MLint outputIndex=0) const
 Return optimization flag: Return index of input image whose input tile is used also as output page for output outputIndex in calculateOutputSubImage() (instead of allocating its own memory). More...
 
MLint getBypass (MLint outputIndex=0) const
 Returns the currently bypass index or -1 if bypassing is disabled (default). More...
 
THREAD_SUPPORT getThreadSupport () const
 Returns the multithreading mode supported by this module, default is NO_THREAD_SUPPORT. More...
 
bool areRecursiveHandleNotificationsPermitted () const
 Returns if recursive entries in handleNotification are permitted. More...
 
MLint getHandleNotificationEntryCounter () const
 A counter returning the current number of (recursive re)entries in handleNotification. More...
 
PERMITTED_TYPES getVoxelDataTypeSupport () const
 Returns the current state of supported voxel data types. More...
 
bool isSupportedVoxelDataType (MLDataType dt) const
 Check if a given data type is supported on the module as configured with setVoxelDataTypeSupport. More...
 
virtual INPUT_HANDLE handleInput (int, INPUT_STATE) const
 This method may be reimplemented to enable support for invalid input images on the module. More...
 
INPUT_STATE getInputState (MLint index)
 Returns the current state of the input connection. More...
 
INPUT_STATE getUpdatedInputState (MLint index)
 Returns the updated state of the input image by calling updateImageProperties(index) and returning getInputState(index) afterwards. More...
 
bool isInputImageField (Field *field) const
 Returns if the given field is an input image field. This can be used in handleNotification(), to check if one of the input images has changed. More...
 
void touchOutputImageFields () const
 Touch all output image fields to indicate that the images have changed. More...
 
FieldContainergetFieldContainer ()
 Returns a pointer to the container of all the module's fields. More...
 
const FieldContainergetFieldContainer () const
 Returns a constant pointer to the container of all the module's fields. More...
 
- Public Member Functions inherited from ml::FieldContainer
 FieldContainer ()
 Constructor. More...
 
 ~FieldContainer () override
 Destructor: Deletes all added fields. More...
 
std::string whoAmI (bool withInstanceName=true) const
 Returns type and instance name of format "ClassTypeName(instanceName)" if the instance name is not empty and withInstanceName is true. More...
 
FieldaddField (const char *name, const char *type, const char *value)
 Adds a new field with name name, type type and value value (coded as string) to the container. More...
 
FieldaddField (Field *field)
 Adds a field, the ownership of the field is passed to the FieldContainer. More...
 
BoolFieldaddBool (const char *name)
 Creates a BoolField with name and adds it to the container. Default value is false. More...
 
BoolFieldaddBool (const char *name, bool value)
 Creates a BoolField with name and adds it to the container. More...
 
IntFieldaddInt (const char *name)
 Creates an IntField with name and adds it to the container. Default value is 0. More...
 
IntFieldaddInt (const char *name, MLint value)
 Creates an IntField with name and adds it to the container. More...
 
EnumFieldaddEnum (const char *name, const char *const *enumerationItemNames, MLint numEnumerationItems)
 Creates an EnumField field with name and adds it to the container. More...
 
EnumFieldaddEnum (const char *name, const std::vector< std::string > &enumerationItemNames)
 Creates an EnumField field with name and adds it to the container. More...
 
template<typename EnumType >
TypedEnumField< EnumType > * addEnum (const char *name, const EnumValues< EnumType > &values, EnumType initialValue)
 Creates a TypedEnumField field with name and adds it to the container. More...
 
FloatFieldaddFloat (const char *name)
 Creates a FloatField with name and adds it to the container. Default value is 0.f. More...
 
FloatFieldaddFloat (const char *name, float value)
 Creates a FloatField with name and adds it to the container. More...
 
ProgressFieldaddProgress (const char *name)
 Creates a float ProgressField with name and adds it to the container. Default value is 0.f. More...
 
ProgressFieldaddProgress (const char *name, float value)
 Creates a float ProgressField with name and adds it to the container. More...
 
DoubleFieldaddDouble (const char *name)
 Creates a DoubleField with name and adds it to the container. Default value is 0. More...
 
DoubleFieldaddDouble (const char *name, double value)
 Creates a DoubleField with name and adds it to the container. More...
 
StringFieldaddString (const char *name)
 Creates a StringField with name and adds it to the container. Default value is empty string. More...
 
StringFieldaddString (const char *name, const std::string &value)
 Creates a StringField with name and adds it to the container. More...
 
NotifyFieldaddNotify (const char *name)
 Creates a NotifyField field with name and adds it to the container. More...
 
TriggerFieldaddTrigger (const char *name)
 Creates a TriggerField field with name and adds it to the container. More...
 
BaseFieldaddBase (const char *name)
 Creates a Base field with name and adds it to the container. Default value is NULL. More...
 
BaseFieldaddBase (const char *name, Base *value)
 Creates a Base field with name and adds it to the container. More...
 
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. More...
 
template<typename T >
BaseFieldaddBaseWithAllowedType (const char *name, T *value=nullptr)
 As above, but also sets the allowed type of the field. More...
 
template<typename T >
BaseFieldaddBaseWithAllowedType (const char *name, const ::boost::intrusive_ptr< T > &value)
 As above, but also sets the allowed type of the field. More...
 
template<typename T >
TypedBaseField< T > * addTypedBase (const char *name)
 Creates a TypedBaseField with name and adds it to the container. Default value is NULL. More...
 
template<typename T >
TypedBaseField< T > * addTypedBase (const char *name, T *value)
 Creates a TypedBaseField with name and adds it to the container. More...
 
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. More...
 
SoNodeFieldaddSoNode (const char *name)
 Creates a SoNodeField with name and adds it to the container. Default value is NULL. More...
 
SoNodeFieldaddSoNode (const char *name, SoNode *value)
 Creates a SoNodeField with name and adds it to the container. More...
 
PointerFieldaddPointer (const char *name)
 Creates a PointerField with name and adds it to the container. More...
 
Vector2FieldaddVector2 (const char *name)
 Creates a Vector2Field with name and adds it to the container. More...
 
Vector2FieldaddVector2 (const char *name, const Vector2 &value)
 Creates a Vector2Field with name and adds it to the container. More...
 
Vector2FieldaddVector2 (const char *name, double x, double y)
 Creates a Vector2Field with name and adds it to the container. More...
 
Vector3FieldaddVector3 (const char *name)
 Creates a Vector3Field with name and adds it to the container. More...
 
Vector3FieldaddVector3 (const char *name, const Vector3 &value)
 Creates a Vector3Field with name and adds it to the container. More...
 
Vector3FieldaddVector3 (const char *name, double x, double y, double z)
 Creates a Vector3Field with name and adds it to the container. More...
 
Vector4FieldaddVector4 (const char *name)
 Creates a Vector4Field with name and adds it to the container. More...
 
Vector4FieldaddVector4 (const char *name, const Vector4 &value)
 Creates a Vector4Field with name and adds it to the container. More...
 
Vector4FieldaddVector4 (const char *name, double x, double y, double z, double w)
 Creates a Vector4Field with name and adds it to the container. More...
 
Vector5FieldaddVector5 (const char *name)
 Creates a Vector5Field with name and adds it to the container. More...
 
Vector5FieldaddVector5 (const char *name, const Vector5 &value)
 Creates a Vector5Field with name and adds it to the container. More...
 
Vector6FieldaddVector6 (const char *name)
 Creates a Vector6Field with name and adds it to the container. More...
 
Vector6FieldaddVector6 (const char *name, const Vector6 &value)
 Creates a Vector6Field with name and adds it to the container. More...
 
Vector10FieldaddVector10 (const char *name)
 Creates a Vector10Field with name and adds it to the container. More...
 
Vector10FieldaddVector10 (const char *name, const Vector10 &value)
 Creates a Vector10Field with name and adds it to the container. More...
 
ImageVectorFieldaddImageVector (const char *name)
 Creates a ImageVectorField with name and adds it to the container. More...
 
ImageVectorFieldaddImageVector (const char *name, const ImageVector &value)
 Creates a ImageVectorField with name and adds it to the container. More...
 
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. More...
 
SubImageBoxFieldaddSubImageBox (const char *name)
 Creates a SubImageBoxField with name and adds it to the container. More...
 
SubImageBoxFieldaddSubImageBox (const char *name, const SubImageBox &value)
 Creates a SubImageBoxField with name and adds it to the container. More...
 
SubImageBoxdFieldaddSubImageBoxd (const char *name)
 Creates a SubImageBoxd field with name and adds it to the container. More...
 
SubImageBoxdFieldaddSubImageBoxd (const char *name, const SubImageBoxd &value)
 Creates a SubImageBoxd field with name and adds it to the container. More...
 
ColorFieldaddColor (const char *name)
 Creates a ColorField with name and adds it to the container. More...
 
ColorFieldaddColor (const char *name, float r, float g, float b)
 Creates a ColorField with name and adds it to the container. More...
 
ColorFieldaddColor (const char *name, const Vector3 &value)
 Creates a ColorField with name and adds it to the container. More...
 
PlaneFieldaddPlane (const char *name)
 Creates a PlaneField with name and adds it to the container. More...
 
PlaneFieldaddPlane (const char *name, double f0, double f1, double f2, double f3)
 Creates a PlaneField with name and adds it to the container. More...
 
PlaneFieldaddPlane (const char *name, const Plane &value)
 Creates a PlaneField with name and adds it to the container. More...
 
RotationFieldaddRotation (const char *name)
 Creates a RotationField with name and adds it to the container. More...
 
RotationFieldaddRotation (const char *name, const Rotation &value)
 Creates a RotationField with name and adds it to the container. More...
 
Matrix2FieldaddMatrix2 (const char *name)
 Creates a Matrix2Field with name and adds it to the container. More...
 
Matrix2FieldaddMatrix2 (const char *name, const Matrix2 &value)
 Creates a Matrix2Field with name and adds it to the container. More...
 
Matrix3FieldaddMatrix3 (const char *name)
 Creates a Matrix3Field with name and adds it to the container. More...
 
Matrix3FieldaddMatrix3 (const char *name, const Matrix3 &value)
 Creates a Matrix3Field with name and adds it to the container. More...
 
Matrix4FieldaddMatrix4 (const char *name)
 Creates a Matrix4Field with name and adds it to the container. More...
 
Matrix4FieldaddMatrix4 (const char *name, const Matrix4 &value)
 Creates a Matrix4Field with name and adds it to the container. More...
 
Matrix5FieldaddMatrix5 (const char *name)
 Creates a Matrix5Field with name and adds it to the container. More...
 
Matrix5FieldaddMatrix5 (const char *name, const Matrix5 &value)
 Creates a Matrix5Field with name and adds it to the container. More...
 
Matrix6FieldaddMatrix6 (const char *name)
 Creates a Matrix6Field with name and adds it to the container. More...
 
Matrix6FieldaddMatrix6 (const char *name, const Matrix6 &value)
 Creates a Matrix6Field with name and adds it to the container. More...
 
MatrixFieldaddMatrix (const char *name)
 Creates a MatrixField with name and adds it to the container. More...
 
MatrixFieldaddMatrix (const char *name, const Matrix4 &value)
 Creates a MatrixField with name and adds it to the container. More...
 
MLDataTypeFieldaddMLDataType (const char *name)
 Creates a MTDataTypeField with name and adds it to the container. More...
 
MLDataTypeFieldaddMLDataType (const char *name, MLDataType value)
 Creates a MTDataTypeField with name and adds it to the container. More...
 
UniversalTypeFieldaddUniversalType (const char *name)
 Creates an UniversalTypeField field with name and adds it to the container. More...
 
IntListFieldaddIntList (const char *name)
 Creates an IntListField field with name and empty list value and adds it to the container. More...
 
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. More...
 
DoubleListFieldaddDoubleList (const char *name)
 Creates an DoubleListField field with name and empty list value and adds it to the container. More...
 
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. More...
 
Vector2ListFieldaddVector2List (const char *name)
 Creates an Vector2ListField field with name and empty list value and adds it to the container. More...
 
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. More...
 
Vector3ListFieldaddVector3List (const char *name)
 Creates an Vector3ListField field with name and empty list value and adds it to the container. More...
 
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. More...
 
Vector4ListFieldaddVector4List (const char *name)
 Creates an Vector4ListField field with name and empty list value and adds it to the container. More...
 
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. More...
 
size_t getNumFields () const
 Returns the number of added fields. More...
 
bool hasField (const std::string &name) const
 Returns true if the field with name name exists; otherwise false is returned. More...
 
FieldgetField (const std::string &name) const
 Returns the pointer to the field with name name. More...
 
FieldgetField (MLint index) const
 Returns pointer of field at index if it exists. If not, -1 is returned. More...
 
MLint getFieldIndex (Field *field) const
 Returns index of field if it exists. If not, -1 is returned. More...
 
void setFieldStringValue (const std::string &name, const std::string &value)
 Sets the value of the field with name if it exists. More...
 
std::string getFieldStringValue (const std::string &name) const
 Returns the string value of the field with name if it is found. More...
 
virtual void deactivateAttachments ()
 Disables notification handling, i.e., all fields of this module will not send notifications to attached sensors and fields any more if their values are set or changed. More...
 
- Public Member Functions inherited from ml::Base
 Base ()
 Constructor. More...
 
virtual ~Base ()
 Destructor. More...
 
virtual BasedeepCopy () const
 Set addStateToTree version number that can be accessed via getAddStateVersion() More...
 
bool isOfAllowedType (const std::vector< const RuntimeType * > &types) const
 Check if this object's type is equal to or derived from one of the types given in the argument. More...
 
virtual bool isRefCountedBase () const
 Returns if the instance is derived from RefCountedBase. More...
 
virtual std::string detailString () const
 Return a string describing this object. More...
 
virtual bool implementsPersistence (PersistenceInterface) const
 Override this method to declare which persistence interfaces are implemented by your derived class. More...
 
virtual std::string persistentState () const
 Returns a string describing the object's internal state. More...
 
virtual void setPersistentState (const std::string &state)
 Restores the object's internal state from a string that had been previously generated using persistentState(). More...
 
virtual void addStateToTree (TreeNode *) const
 Attaches the object state as children of the given parent node. More...
 
virtual void readStateFromTree (TreeNode *)
 Reads the object state from the children of the given parent node. More...
 
virtual void writeTo (AbstractPersistenceOutputStream *) const
 Write the objects state to the data stream object. More...
 
virtual void readFrom (AbstractPersistenceInputStream *, int)
 Read the objects state from the data stream object. More...
 

Protected Member Functions

List object access

Most of these methods are overloaded by ListContainerTemplate, but do not have to be overloaded by further derived classes.

Return address of internal list object

virtual ListBasegetInternalList ()=0
 
virtual bool setActiveList (Base *basePtr)=0
 Set the active list (i.e. More...
 
virtual bool ownsList ()
 Return true if the active list is the internal list. More...
 
virtual MLssize_t getId (MLssize_t index)=0
 Return the item id of the item index. More...
 
Handle item property fields

Overload these methods for derived container modules with additional list item property fields.

Return true if field points to an item property field

virtual bool isPropertyField (Field *field)
 
virtual void resetPropertyFields ()
 Reset all property fields. More...
 
virtual void updatePropertyFields ()=0
 Update property fields from the current list item. More...
 
List modifications

These methods are called when a list operation is performed.

They are overloaded in ListContainerTemplate. The modifyItem() method has to be further overloaded for derived container modules with additional list item properties.

Remove num items, starting at item index

virtual void deleteItems (MLssize_t index, MLssize_t num)=0
 
virtual void insertItem (MLssize_t index, bool fromCurrentItem)=0
 Insert an item at position index. More...
 
virtual bool modifyItem (MLssize_t index, Field *field, bool fromCurrentItem)=0
 Modify item at position index. More...
 
virtual void copyItemToTemplate (MLssize_t index)=0
 Copy values from item at position index to the template fields. More...
 
virtual void copyTemplateToCurrent ()=0
 Copy the values of the templates fields to _currentItem. More...
 
virtual void initItem (MLssize_t index)=0
 Initialize the list item at position index. More...
 
Handle field updates

Update the list string representing the list content.

If forceEnable is true, the string is generated regardless of the _fldListStringEnable field.

virtual void updateListString (bool forceEnable=false)
 
virtual void updateDisplay ()
 Update display of list size, current item index and item properties. More...
 
virtual void updateActionFields ()
 Update last action fields. More...
 
virtual void touchList (ListBase::ActionClass actionClass, MLssize_t id, MLssize_t index)
 Set last list action and touch output list field. More...
 
- Protected Member Functions inherited from ml::Module
void handleNotificationInternal (Field *field, FieldSensor::Strength strength) override
 Called from FieldContainer whenever a field changes. More...
 
virtual void provideCustomPage (int, const SubImageBox &, MLMemoryBlockHandle &)
 This method allows a Module to provide its own pages to the Host for the outputIndex output image. More...
 
void handleNotificationOff ()
 Decreases lock counter for handleNotification calls. More...
 
void handleNotificationOn ()
 Increases lock counter for handleNotification calls. More...
 
bool isHandleNotificationOn ()
 Returns true if handleNotification calls are permitted, otherwise false. More...
 
void setOutputImageInplace (MLint outputIndex=0, MLint inputIndex=0)
 Set optimization flag: If calculating a page in calculateOutputSubImage(), the output image page of output outputIndex shall use the same memory as the input page of input inputIndex. More...
 
void unsetOutputImageInplace (MLint outputIndex=0)
 Clear optimization flag: output page of output at outputIndex and input tile shall use different memory buffers in calculateOutputSubImage(). More...
 
void setBypass (MLint outputIndex=0, MLint inputIndex=0)
 Sets the input image whose pages can also be used instead of output pages for the output image at outputIndex to avoid recalculations. More...
 
void setClampPagesToImageExtent (bool flag=true)
 Enables/disables page clamping on all output images. More...
 
void setThreadSupport (THREAD_SUPPORT supportMode)
 Pass any THREAD_SUPPORT supportMode to decide whether and what type of multithreading is supported by this module. More...
 
void permitRecursiveHandleNotifications (bool enable)
 If this flag is set to enable =true, recursive entries in handleNotification are permitted. More...
 
void setVoxelDataTypeSupport (PERMITTED_TYPES permTypes)
 Specifies which types this module supports. More...
 
virtual CalculateOutputImageHandlercreateCalculateOutputImageHandler (PagedImage *outputImage)
 Creates the CalculateOutputImageHandler for the given output image outputImage. More...
 
virtual void calculateOutputImageProperties (int outputIndex, PagedImage *)
 Set properties of output image outputImage with output index outputIndex. More...
 
virtual SubImageBox calculateInputSubImageBox (int, const SubImageBox &outputSubImageBox, int)
 Called by the Host to determine which input image region (tile) of input inputIndex is required to calculate a certain output image region (page) of output outputIndex. More...
 
virtual void calculateOutputSubImage (SubImage *outputSubImage, int outputIndex, SubImage *inputSubImages)
 Calculate page outputSubImage of output image with index outputIndex given the input image tiles in array inputSubImages. More...
 
- Protected Member Functions inherited from ml::Base
virtual char * getPersistentState () const
 Returns a C string describing the object's internal state. More...
 
virtual void setPersistentState (const char *)
 Restores the object's internal state from a string that had been previously generated using getPersistentState(). More...
 
virtual void clearPersistentState (char *) const
 Disposes a string previously allocated by getPersistentState(). More...
 

Protected Attributes

int _lockNotification
 Suppress handleNotification() if non-zero. More...
 
Field members
BaseField_fldOutputList
 Output list field, initialized by derived class. More...
 
BaseField_fldInputList
 Input list field, initialized by derived class. More...
 
StringField_fldListString
 String representation of list. More...
 
IntField_fldNumItems
 List size. More...
 
IntField_fldIndex
 Current list index. More...
 
BoolField_fldPersistent
 Activate internal list persistence. More...
 
BoolField_fldListStringEnable
 Enable list string field. More...
 
BoolField_fldOwnsList
 Reflect owner state (true if internal list is active) More...
 
BoolField_fldApplySelect
 Perform a Select-action when index is changed. More...
 
IntField_fldId
 List item id. More...
 
StringField_fldName
 List item name. More...
 
StringField_fldNewName
 List item name. More...
 
StringField_fldActionClass
 Action class of last action on list. More...
 
IntField_fldActionIndex
 Index of last action on list. More...
 
IntField_fldActionId
 Item id of last action on list. More...
 
IntField_fldCurrentIndex
 Index of currently selected item. More...
 
EnumField_fldOverflowMode
 Overflow mode, specifies which item(s) to delete on overflow. More...
 
IntField_fldMaxSize
 Maximum list size. More...
 
NotifyField_fldDelete
 Delete button. More...
 
NotifyField_fldDeleteAll
 Delete All button. More...
 
NotifyField_fldInsert
 Insert button. More...
 
NotifyField_fldAdd
 Add (= Append) button. More...
 
NotifyField_fldUpdate
 Update button. More...
 
BoolField_fldUseInsertTemplate
 If true the container should use the template fields for initializing the inserted item. More...
 
NotifyField_fldCopyItemToTemplate
 Copy values from current item to template fields. More...
 
NotifyField_fldCopyTemplateToItem
 Copy values from template fields to current item. More...
 
NotifyField_fldClearItem
 Clear the current item (i.e. init it again). More...
 
BoolField_fldUpToDate
 Indicates that the property values are up to date. More...
 

Additional Inherited Members

- 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)
 For documentation see Host::getTile() function with same signature. More...
 
static MLErrorCode getTile (PagedImage *image, SubImage &subimg, const ScaleShiftData &scaleShiftData=ScaleShiftData(), MLRequestProgressCB *progressCallback=nullptr, void *progressCallbackUserData=nullptr)
 For documentation see Host::getTile() function with same signature and Module passed as reference. More...
 
static MLErrorCode updateImageProperties (PagedImage *image)
 For documentation see Host::updateImageProperties() function with same signature. More...
 
static void freeTile (void *data)
 For documentation see Host::freeTile(). More...
 
static void updateProgress (const char *info1, const char *info2)
 For documentation see Host::updateProgress(). More...
 
static bool shouldTerminate ()
 For documentation see Host::shouldTerminate(). More...
 
static FieldgetPressedNotifyField ()
 For documentation see Host::getPressedNotifyField(). More...
 
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))
 Adapt page size. More...
 
static std::string getVoxelValueAsString (PagedImage *image, const ImageVector &position, MLErrorCode *errorCode=nullptr, const std::string &errorResult="")
 Returns the voxel value at position position of the image image. More...
 
static size_t getNumModules ()
 Returns number of instantiated modules. More...
 
static ModulegetModule (size_t index)
 Returns pointer to instantiated module index. More...
 
static MLint findModuleIndex (Module &module)
 Returns index of Module module. If not found -1 is returned. More...
 
static void destroyModule ()
 Destroys static allocated tables to avoid memory leaks. More...
 
- Protected Types inherited from ml::Module
enum  THREAD_SUPPORT {
  NO_THREAD_SUPPORT = PagedImage::NO_THREAD_SUPPORT , MULTITHREADED = PagedImage::MULTITHREADED , IO_THREAD = PagedImage::IO_THREAD , ML_CALCULATEOUTPUTSUBIMAGE_ON_STD_TYPES = PagedImage::MULTITHREADED ,
  ML_CALCULATEOUTPUTSUBIMAGE_ON_ALL_TYPES = PagedImage::MULTITHREADED
}
 Enumerator deciding whether and which type of multithreading is supported by this module. More...
 

Detailed Description

Abstract module class ListContainerBase implementing basic functionality for a list container module.

Abstract ML module class implementing basic functionality for a list container module. List container modules for a specific list class are derived from this class using the class template ListContainerTemplate. This construct can only be used for list classes derived from BaseListTemplate.

ListContainerBase supports the following functionality:

  • Common list property fields for the number of items, string representation, persistence enable/disable and last action performed on list
  • Common list item property fields for current item index, item id and item name
  • Action fields (buttons) for deleting and inserting items
  • Fields to control the maximum list size (items are deleted on overflow)
  • An output base field pointing to the list controlled by the container module
  • An input base field which allows to attach the container module to an external list object (e.g. to the output base field of a second container). In this case, control is directed to the external list, the internal list is hidden.
  • An internal method interface which allows other viewer or editor modules to be derived (e.g. graphical editor modules)

Definition at line 70 of file mlListContainer.h.

Member Enumeration Documentation

◆ OverflowModes

Mode constants for cases of list size overflow.

Enumerator
OvwNone 
OvwRemoveFirst 

Overflow ignored.

OvwRemoveLast 

First item(s) deleted.

OvwRemoveAll 

Last item(s) deleted.

OvwRemoveNew 

All item(s) deleted.

OvwNumModes 

New item is deleted (not inserted)

Number of mode constants

Definition at line 153 of file mlListContainer.h.

Constructor & Destructor Documentation

◆ ListContainerBase() [1/2]

ml::ListContainerBase::ListContainerBase ( )
inline

Constructor.

Definition at line 76 of file mlListContainer.h.

◆ ListContainerBase() [2/2]

ml::ListContainerBase::ListContainerBase ( ListBase listBasePtr,
int  inputNum,
int  outputNum 
)

Constructor In listBasePtr pass a pointer to the list object, which has to be a member of the derived class.

The values inputNum and outputNum specify the number of input and output image fields, resp.

Member Function Documentation

◆ activateAttachments()

void ml::ListContainerBase::activateAttachments ( )
overridevirtual

Update fields after an initialization without handleNotification() called.

Reimplemented from ml::FieldContainer.

◆ beginSaveFields()

void ml::ListContainerBase::beginSaveFields ( )
overridevirtual

Prepare for persistence.

Reimplemented from ml::Module.

◆ copyItemToTemplate()

virtual void ml::ListContainerBase::copyItemToTemplate ( MLssize_t  index)
protectedpure virtual

Copy values from item at position index to the template fields.

Implemented in ml::XMarkerListContainer, ml::ListContainerTemplate< T >, ml::ListContainerTemplate< XMarkerList >, and ml::ListContainerTemplate< StringList >.

◆ copyTemplateToCurrent()

virtual void ml::ListContainerBase::copyTemplateToCurrent ( )
protectedpure virtual

◆ deleteItems()

virtual void ml::ListContainerBase::deleteItems ( MLssize_t  index,
MLssize_t  num 
)
protectedpure virtual

◆ doClearItem()

virtual void ml::ListContainerBase::doClearItem ( MLssize_t  index)
virtual

Init item at position index.

◆ doCopyItemToTemplate()

virtual void ml::ListContainerBase::doCopyItemToTemplate ( MLssize_t  index)
virtual

Copy values from item at position index to the template fields.

◆ doDeleteAll()

virtual void ml::ListContainerBase::doDeleteAll ( )
virtual

◆ doDeleteItem()

virtual void ml::ListContainerBase::doDeleteItem ( MLssize_t  index)
virtual

Delete single item at position index.

◆ doInsertItem()

virtual void ml::ListContainerBase::doInsertItem ( MLssize_t  index,
bool  fromCurrentItem 
)
virtual

Insert an item at position index.

If fromCurrentItem is true, the new item is initialized from the _currentItem member of the derived ListContainerTemplate class.

◆ doModifyItem()

virtual void ml::ListContainerBase::doModifyItem ( MLssize_t  index,
Field field,
bool  fromCurrentItem 
)
virtual

Modify item at position index.

If fromCurrentItem is true, the item is copied from the _currentItem member of the derived ListContainerTemplate class, otherwise the item property corresponding to the property field field is modified.

◆ doSelectItem()

virtual void ml::ListContainerBase::doSelectItem ( MLssize_t  index)
virtual

Select item at position index, or deselect if item == -1.

◆ doUpdate()

virtual void ml::ListContainerBase::doUpdate ( )
virtual

Update all fields and touch output list field.

◆ endSaveFields()

void ml::ListContainerBase::endSaveFields ( )
overridevirtual

Clean up after persistence.

Reimplemented from ml::Module.

◆ getId()

virtual MLssize_t ml::ListContainerBase::getId ( MLssize_t  index)
protectedpure virtual

◆ getInternalList()

virtual ListBase* ml::ListContainerBase::getInternalList ( )
protectedpure virtual

◆ getOutputField()

BaseField* ml::ListContainerBase::getOutputField ( )
inline

Returns a pointer to the output field.

Definition at line 147 of file mlListContainer.h.

◆ handleNotification()

void ml::ListContainerBase::handleNotification ( Field )
overridevirtual

Called when any field data in the field container of this module is modified.

The pointer to the changed field is passed in field. Notes:

  • This method can/should be overloaded in derived modules to implement reactions of the module algorithm if fields are changed.
  • Field notifications are disabled globally within the Module::calculate*-methods. No other fields are notified and handleNotifications() is NOT called.
  • Field changes within handleNotifications() notify all attached fields (i.e., attached user interfaces are updated) but a reentry into handleNotification in this module is typically blocked. Only if permitRecursiveHandleNotification() is enabled then recursions will take place.

Reimplemented from ml::Module.

◆ initItem()

virtual void ml::ListContainerBase::initItem ( MLssize_t  index)
protectedpure virtual

Initialize the list item at position index.

This method is called by insertItem() if the fromCurrentItem argument is false.

Implemented in ml::XMarkerListContainer, ml::ListContainerTemplate< T >, ml::ListContainerTemplate< XMarkerList >, and ml::ListContainerTemplate< StringList >.

◆ insertItem()

virtual void ml::ListContainerBase::insertItem ( MLssize_t  index,
bool  fromCurrentItem 
)
protectedpure virtual

Insert an item at position index.

If fromCurrentItem is true, the new item is initialized from the _currentItem member of the derived ListContainerTemplate class.

Implemented in ml::ListContainerTemplate< T >, ml::ListContainerTemplate< XMarkerList >, and ml::ListContainerTemplate< StringList >.

◆ isPropertyField()

virtual bool ml::ListContainerBase::isPropertyField ( Field field)
protectedvirtual

Reimplemented in ml::XMarkerListContainer.

◆ maxNumItems()

MLint ml::ListContainerBase::maxNumItems ( ) const
inline

Definition at line 150 of file mlListContainer.h.

◆ modifyItem()

virtual bool ml::ListContainerBase::modifyItem ( MLssize_t  index,
Field field,
bool  fromCurrentItem 
)
protectedpure virtual

Modify item at position index.

If fromCurrentItem is true, the item is copied from the _currentItem member of the derived ListContainerTemplate class, otherwise the item property corresponding to the property field field is modified. Return true if item has been modified.

Implemented in ml::XMarkerListContainer, ml::ListContainerTemplate< T >, ml::ListContainerTemplate< XMarkerList >, and ml::ListContainerTemplate< StringList >.

◆ overflowMode()

int ml::ListContainerBase::overflowMode ( ) const
inline

Returns the overflow mode.

Definition at line 164 of file mlListContainer.h.

◆ ownsList()

virtual bool ml::ListContainerBase::ownsList ( )
inlineprotectedvirtual

Return true if the active list is the internal list.

Definition at line 184 of file mlListContainer.h.

◆ resetPropertyFields()

virtual void ml::ListContainerBase::resetPropertyFields ( )
protectedvirtual

Reset all property fields.

Reimplemented in ml::XMarkerListContainer.

◆ setActiveList()

virtual bool ml::ListContainerBase::setActiveList ( Base basePtr)
protectedpure virtual

Set the active list (i.e.

the list controlled by the container) to the object *basePtr, provided that it is of the correct type. If not, the active list pointer should be set to zero, which disables the container. Returns true if object is of correct type.

Implemented in ml::ListContainerTemplate< T >, ml::ListContainerTemplate< XMarkerList >, and ml::ListContainerTemplate< StringList >.

◆ setHandleNotificationCB()

void ml::ListContainerBase::setHandleNotificationCB ( ListContainerHandleNotificationCB cb = nullptr,
void *  userData = nullptr 
)

Set the callback for handleNotification.

◆ touchList()

virtual void ml::ListContainerBase::touchList ( ListBase::ActionClass  actionClass,
MLssize_t  id,
MLssize_t  index 
)
protectedvirtual

Set last list action and touch output list field.

Arguments id and index are ignored for all actions except those inducing a delete (ActDelete and ActInsertOvw). A derived viewer or editor module may overload this method in order to be notified of changes to the active list. In the overloaded method, first call ListContainerBase::touchList() and then use the list's getAction() method to obtain details on the action performed.

◆ updateActionFields()

virtual void ml::ListContainerBase::updateActionFields ( )
protectedvirtual

Update last action fields.

◆ updateDisplay()

virtual void ml::ListContainerBase::updateDisplay ( )
protectedvirtual

Update display of list size, current item index and item properties.

◆ updateListString()

virtual void ml::ListContainerBase::updateListString ( bool  forceEnable = false)
protectedvirtual

◆ updatePropertyFields()

virtual void ml::ListContainerBase::updatePropertyFields ( )
protectedpure virtual

Member Data Documentation

◆ _fldActionClass

StringField* ml::ListContainerBase::_fldActionClass
protected

Action class of last action on list.

Definition at line 287 of file mlListContainer.h.

◆ _fldActionId

IntField* ml::ListContainerBase::_fldActionId
protected

Item id of last action on list.

Definition at line 289 of file mlListContainer.h.

◆ _fldActionIndex

IntField* ml::ListContainerBase::_fldActionIndex
protected

Index of last action on list.

Definition at line 288 of file mlListContainer.h.

◆ _fldAdd

NotifyField* ml::ListContainerBase::_fldAdd
protected

Add (= Append) button.

Definition at line 298 of file mlListContainer.h.

◆ _fldApplySelect

BoolField* ml::ListContainerBase::_fldApplySelect
protected

Perform a Select-action when index is changed.

Definition at line 281 of file mlListContainer.h.

◆ _fldClearItem

NotifyField* ml::ListContainerBase::_fldClearItem
protected

Clear the current item (i.e. init it again).

Definition at line 304 of file mlListContainer.h.

◆ _fldCopyItemToTemplate

NotifyField* ml::ListContainerBase::_fldCopyItemToTemplate
protected

Copy values from current item to template fields.

Definition at line 302 of file mlListContainer.h.

◆ _fldCopyTemplateToItem

NotifyField* ml::ListContainerBase::_fldCopyTemplateToItem
protected

Copy values from template fields to current item.

Definition at line 303 of file mlListContainer.h.

◆ _fldCurrentIndex

IntField* ml::ListContainerBase::_fldCurrentIndex
protected

Index of currently selected item.

Definition at line 290 of file mlListContainer.h.

◆ _fldDelete

NotifyField* ml::ListContainerBase::_fldDelete
protected

Delete button.

Definition at line 295 of file mlListContainer.h.

◆ _fldDeleteAll

NotifyField* ml::ListContainerBase::_fldDeleteAll
protected

Delete All button.

Definition at line 296 of file mlListContainer.h.

◆ _fldId

IntField* ml::ListContainerBase::_fldId
protected

List item id.

Definition at line 283 of file mlListContainer.h.

◆ _fldIndex

IntField* ml::ListContainerBase::_fldIndex
protected

Current list index.

Definition at line 276 of file mlListContainer.h.

◆ _fldInputList

BaseField* ml::ListContainerBase::_fldInputList
protected

Input list field, initialized by derived class.

Definition at line 272 of file mlListContainer.h.

Referenced by ml::ListContainerTemplate< T >::ListContainerTemplate().

◆ _fldInsert

NotifyField* ml::ListContainerBase::_fldInsert
protected

Insert button.

Definition at line 297 of file mlListContainer.h.

◆ _fldListString

StringField* ml::ListContainerBase::_fldListString
protected

String representation of list.

Definition at line 274 of file mlListContainer.h.

◆ _fldListStringEnable

BoolField* ml::ListContainerBase::_fldListStringEnable
protected

Enable list string field.

Definition at line 279 of file mlListContainer.h.

◆ _fldMaxSize

IntField* ml::ListContainerBase::_fldMaxSize
protected

Maximum list size.

Definition at line 293 of file mlListContainer.h.

◆ _fldName

StringField* ml::ListContainerBase::_fldName
protected

List item name.

Definition at line 284 of file mlListContainer.h.

◆ _fldNewName

StringField* ml::ListContainerBase::_fldNewName
protected

List item name.

Definition at line 285 of file mlListContainer.h.

◆ _fldNumItems

IntField* ml::ListContainerBase::_fldNumItems
protected

List size.

Definition at line 275 of file mlListContainer.h.

◆ _fldOutputList

BaseField* ml::ListContainerBase::_fldOutputList
protected

Output list field, initialized by derived class.

Definition at line 271 of file mlListContainer.h.

Referenced by ml::ListContainerTemplate< T >::ListContainerTemplate().

◆ _fldOverflowMode

EnumField* ml::ListContainerBase::_fldOverflowMode
protected

Overflow mode, specifies which item(s) to delete on overflow.

Definition at line 292 of file mlListContainer.h.

◆ _fldOwnsList

BoolField* ml::ListContainerBase::_fldOwnsList
protected

Reflect owner state (true if internal list is active)

Definition at line 280 of file mlListContainer.h.

◆ _fldPersistent

BoolField* ml::ListContainerBase::_fldPersistent
protected

Activate internal list persistence.

Definition at line 278 of file mlListContainer.h.

◆ _fldUpdate

NotifyField* ml::ListContainerBase::_fldUpdate
protected

Update button.

Definition at line 299 of file mlListContainer.h.

◆ _fldUpToDate

BoolField* ml::ListContainerBase::_fldUpToDate
protected

Indicates that the property values are up to date.

Definition at line 306 of file mlListContainer.h.

◆ _fldUseInsertTemplate

BoolField* ml::ListContainerBase::_fldUseInsertTemplate
protected

If true the container should use the template fields for initializing the inserted item.

Definition at line 301 of file mlListContainer.h.

◆ _lockNotification

int ml::ListContainerBase::_lockNotification
protected

Suppress handleNotification() if non-zero.

Definition at line 311 of file mlListContainer.h.

Referenced by ml::ListContainerTemplate< T >::ListContainerTemplate().


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