Medical Imaging Interaction Toolkit
2024.06.00
Medical Imaging Interaction Toolkit
|
Data management class that handles 'was created by' relations. More...
#include <mitkDataStorage.h>
Public Types | |
typedef DataStorage | Self |
typedef itk::Object | Superclass |
typedef itk::SmartPointer< Self > | Pointer |
typedef itk::SmartPointer< const Self > | ConstPointer |
typedef itk::VectorContainer< unsigned int, DataNode::Pointer > | SetOfObjects |
A Container of objects that is used as a result set of GetSubset() query operations (Set of. More... | |
typedef Message1< const DataNode * > | DataStorageEvent |
Public Member Functions | |
virtual std::vector< std::string > | GetClassHierarchy () const |
virtual const char * | GetClassName () const |
virtual void | Add (DataNode *node, const DataStorage::SetOfObjects *parents=nullptr)=0 |
Adds a DataNode containing a data object to its internal storage. More... | |
void | Add (DataNode *node, DataNode *parent) |
Convenience method to add a node that has one parent. More... | |
virtual void | Remove (const DataNode *node)=0 |
Removes node from the DataStorage. More... | |
virtual bool | Exists (const DataNode *node) const =0 |
Checks if a node exists in the DataStorage. More... | |
void | Remove (const DataStorage::SetOfObjects *nodes) |
Removes a set of nodes from the DataStorage. More... | |
SetOfObjects::ConstPointer | GetSubset (const NodePredicateBase *condition) const |
returns a set of data objects that meet the given condition(s) More... | |
virtual SetOfObjects::ConstPointer | GetSources (const DataNode *node, const NodePredicateBase *condition=nullptr, bool onlyDirectSources=true) const =0 |
returns a set of source objects for a given node that meet the given condition(s). More... | |
virtual SetOfObjects::ConstPointer | GetDerivations (const DataNode *node, const NodePredicateBase *condition=nullptr, bool onlyDirectDerivations=true) const =0 |
returns a set of derived objects for a given node. More... | |
virtual SetOfObjects::ConstPointer | GetAll () const =0 |
returns a set of all data objects that are stored in the data storage More... | |
DataNode * | GetNode (const NodePredicateBase *condition=nullptr) const |
Convenience method to get the first node that matches the predicate condition. More... | |
DataNode * | GetNamedNode (const char *name) const |
Convenience method to get the first node with a given name. More... | |
DataNode * | GetNamedNode (const std::string name) const |
Convenience method to get the first node with a given name. More... | |
DataNode * | GetNamedDerivedNode (const char *name, const DataNode *sourceNode, bool onlyDirectDerivations=true) const |
Convenience method to get the first node with a given name that is derived from sourceNode. More... | |
template<class DataType > | |
DataType * | GetNamedObject (const char *name) const |
Convenience method to get the first data object of a given data type with a given name. More... | |
template<class DataType > | |
DataType * | GetNamedObject (const std::string name) const |
Convenience method to get the first data object of a given data type with a given name. More... | |
template<class DataType > | |
DataType * | GetNamedDerivedObject (const char *name, const DataNode *sourceNode, bool onlyDirectDerivations=true) const |
Convenience method to get the first data object of a given data type with a given name that is derived. More... | |
const DataNode::GroupTagList | GetGroupTags () const |
Returns a list of used grouptags. More... | |
TimeGeometry::ConstPointer | ComputeBoundingGeometry3D (const SetOfObjects *input, const char *boolPropertyKey=nullptr, const BaseRenderer *renderer=nullptr, const char *boolPropertyKey2=nullptr) const |
Compute the axis-parallel bounding geometry of the input objects. More... | |
TimeGeometry::ConstPointer | ComputeBoundingGeometry3D (const char *boolPropertyKey=nullptr, const BaseRenderer *renderer=nullptr, const char *boolPropertyKey2=nullptr) const |
Compute the axis-parallel bounding geometry of the data tree (bounding box, minimal spacing of the considered nodes, live-span) More... | |
TimeGeometry::ConstPointer | ComputeVisibleBoundingGeometry3D (const BaseRenderer *renderer=nullptr, const char *boolPropertyKey=nullptr) |
Compute the axis-parallel bounding geometry of all visible parts of the data tree bounding box, minimal spacing of the considered nodes, live-span) More... | |
BoundingBox::Pointer | ComputeBoundingBox (const char *boolPropertyKey=nullptr, const BaseRenderer *renderer=nullptr, const char *boolPropertyKey2=nullptr) |
Compute the bounding box of data tree structure it -> an iterator to a data tree structure. More... | |
BoundingBox::Pointer | ComputeVisibleBoundingBox (const BaseRenderer *renderer=nullptr, const char *boolPropertyKey=nullptr) |
Compute the bounding box of all visible parts of the data tree structure, for general rendering or renderer specific visibility property checking. More... | |
TimeBounds | ComputeTimeBounds (const char *boolPropertyKey, const BaseRenderer *renderer, const char *boolPropertyKey2) |
Compute the time-bounds of the contents of a data tree structure. More... | |
TimeBounds | ComputeTimeBounds (const BaseRenderer *renderer, const char *boolPropertyKey) |
Compute the time-bounds of all visible parts of the data tree structure, for general rendering or renderer specific visibility property checking. More... | |
void | BlockNodeModifiedEvents (bool block) |
Defines whether or not NodeChangedEvent is invoked . More... | |
Static Public Member Functions | |
static const char * | GetStaticNameOfClass () |
Public Attributes | |
std::mutex | m_MutexOne |
DataStorageEvent | AddNodeEvent |
AddEvent is emitted whenever a new node has been added to the DataStorage. More... | |
DataStorageEvent | RemoveNodeEvent |
RemoveEvent is emitted directly before a node is removed from the DataStorage. More... | |
DataStorageEvent | ChangedNodeEvent |
ChangedEvent is emitted directly after a node was changed. More... | |
DataStorageEvent | DeleteNodeEvent |
DeleteNodeEvent is emitted directly before a node is deleted. More... | |
DataStorageEvent | InteractorChangedNodeEvent |
Protected Member Functions | |
void | EmitAddNodeEvent (const DataNode *node) |
EmitAddNodeEvent emits the AddNodeEvent. More... | |
void | EmitRemoveNodeEvent (const DataNode *node) |
EmitRemoveNodeEvent emits the RemoveNodeEvent. More... | |
void | OnNodeInteractorChanged (itk::Object *caller, const itk::EventObject &event) |
void | OnNodeModifiedOrDeleted (const itk::Object *caller, const itk::EventObject &event) |
OnNodeModified listens to modified events of DataNodes. More... | |
void | AddListeners (const DataNode *_Node) |
Adds a Modified-Listener to the given Node. More... | |
void | RemoveListeners (const DataNode *_Node) |
Removes a Modified-Listener from the given Node. More... | |
DataStorage () | |
~DataStorage () override | |
SetOfObjects::ConstPointer | FilterSetOfObjects (const SetOfObjects *set, const NodePredicateBase *condition) const |
Filters a SetOfObjects by the condition. If no condition is provided, the original set is returned. More... | |
void | PrintSelf (std::ostream &os, itk::Indent indent) const override |
Prints the contents of the DataStorage to os. Do not call directly, call ->Print() instead. More... | |
Protected Attributes | |
std::map< const DataNode *, unsigned long > | m_NodeModifiedObserverTags |
Saves Modified-Observer Tags for each node in order to remove the event listeners again. More... | |
std::map< const DataNode *, unsigned long > | m_NodeInteractorChangedObserverTags |
std::map< const DataNode *, unsigned long > | m_NodeDeleteObserverTags |
Saves Delete-Observer Tags for each node in order to remove the event listeners again. More... | |
bool | m_BlockNodeModifiedEvents |
If this class changes nodes itself, set this to TRUE in order to suppress NodeChangedEvent to be emitted. More... | |
Data management class that handles 'was created by' relations.
The DataStorage provides data storage and management functionality. It handles a 'was created by' relation by associating each data object with a set of source objects, that this object was created from. Thus, nodes are stored in a noncyclical directed graph data structure. If a new node is added to the DataStorage, AddNodeEvent is emitted. If a node is removed, RemoveNodeEvent is emitted.
Definition at line 43 of file mitkDataStorage.h.
typedef itk::SmartPointer<const Self> mitk::DataStorage::ConstPointer |
Definition at line 46 of file mitkDataStorage.h.
typedef Message1<const DataNode*> mitk::DataStorage::DataStorageEvent |
Definition at line 200 of file mitkDataStorage.h.
Definition at line 46 of file mitkDataStorage.h.
typedef DataStorage mitk::DataStorage::Self |
Definition at line 46 of file mitkDataStorage.h.
typedef itk::VectorContainer<unsigned int, DataNode::Pointer> mitk::DataStorage::SetOfObjects |
A Container of objects that is used as a result set of GetSubset() query operations (Set of.
Definition at line 46 of file mitkDataStorage.h.
typedef itk::Object mitk::DataStorage::Superclass |
Definition at line 46 of file mitkDataStorage.h.
|
protected |
|
overrideprotected |
|
pure virtual |
Adds a DataNode containing a data object to its internal storage.
This Method adds a new data object to the DataStorage. The new object is passed in the first parameter. The second parameter is a set of source objects, that were used to create this object. The new object will have a 'was created from' relation to its source objects. the addition of a new object will fire the notification mechanism. If the node parameter is nullptr or if the DataNode has already been added, an exception will be thrown.
Implemented in mitk::StandaloneDataStorage.
Convenience method to add a node that has one parent.
|
protected |
Adds a Modified-Listener to the given Node.
void mitk::DataStorage::BlockNodeModifiedEvents | ( | bool | block | ) |
Defines whether or not NodeChangedEvent is invoked .
This method can be used to set m_BlockNodeModifiedEvents.
If this flag is true, NodeChangedEvent is not invoked when a DataNode is modified. This might be undesired when setting many properties on a datanode and you do not want anyone to react.
BoundingBox::Pointer mitk::DataStorage::ComputeBoundingBox | ( | const char * | boolPropertyKey = nullptr , |
const BaseRenderer * | renderer = nullptr , |
||
const char * | boolPropertyKey2 = nullptr |
||
) |
Compute the bounding box of data tree structure it -> an iterator to a data tree structure.
boolPropertyKey | if a BoolProperty with this boolPropertyKey exists for a node (for renderer) and is set to false, the node is ignored for the bounding-box calculation. |
renderer | see boolPropertyKey |
boolPropertyKey2 | a second condition that is applied additionally to boolPropertyKey |
TimeGeometry::ConstPointer mitk::DataStorage::ComputeBoundingGeometry3D | ( | const char * | boolPropertyKey = nullptr , |
const BaseRenderer * | renderer = nullptr , |
||
const char * | boolPropertyKey2 = nullptr |
||
) | const |
Compute the axis-parallel bounding geometry of the data tree (bounding box, minimal spacing of the considered nodes, live-span)
it -> an iterator to a data tree structure
boolPropertyKey | if a BoolProperty with this boolPropertyKey exists for a node (for renderer) and is set to false, the node is ignored for the bounding-box calculation. |
renderer | see boolPropertyKey |
boolPropertyKey2 | a second condition that is applied additionally to boolPropertyKey |
TimeGeometry::ConstPointer mitk::DataStorage::ComputeBoundingGeometry3D | ( | const SetOfObjects * | input, |
const char * | boolPropertyKey = nullptr , |
||
const BaseRenderer * | renderer = nullptr , |
||
const char * | boolPropertyKey2 = nullptr |
||
) | const |
Compute the axis-parallel bounding geometry of the input objects.
Throws std::invalid_argument exception if input is nullptr
input | set of objects of the DataStorage to be included in the bounding geometry |
boolPropertyKey | if a BoolProperty with this boolPropertyKey exists for a node (for renderer) and is set to false, the node is ignored for the bounding-box calculation. |
renderer | see boolPropertyKey |
boolPropertyKey2 | a second condition that is applied additionally to boolPropertyKey |
|
inline |
Compute the time-bounds of all visible parts of the data tree structure, for general rendering or renderer specific visibility property checking.
The methods returns only [-infinity, +infinity], if all data-objects have an infinite live-span. Otherwise, all data-objects with infinite live-span are ignored. Simply calls ComputeTimeBounds(it, "visible", renderer, boolPropertyKey).
boolPropertyKey | if a BoolProperty with this boolPropertyKey exists for a node (for renderer) and is set to false, the node is ignored for the time-bounds calculation. |
renderer | see boolPropertyKey |
Definition at line 357 of file mitkDataStorage.h.
TimeBounds mitk::DataStorage::ComputeTimeBounds | ( | const char * | boolPropertyKey, |
const BaseRenderer * | renderer, | ||
const char * | boolPropertyKey2 | ||
) |
Compute the time-bounds of the contents of a data tree structure.
The methods returns only [-infinity, +infinity], if all data-objects have an infinite live-span. Otherwise, all data-objects with infinite live-span are ignored. it -> an iterator to a data tree structure
boolPropertyKey | if a BoolProperty with this boolPropertyKey exists for a node (for renderer) and is set to false, the node is ignored for the time-bounds calculation. |
renderer | see boolPropertyKey |
boolPropertyKey2 | a second condition that is applied additionally to boolPropertyKey |
|
inline |
Compute the bounding box of all visible parts of the data tree structure, for general rendering or renderer specific visibility property checking.
Simply calls ComputeBoundingBox(it, "visible", renderer, boolPropertyKey). it -> an iterator of a data tree structure
renderer | the reference to the renderer |
boolPropertyKey | if a BoolProperty with this boolPropertyKey exists for a node (for renderer) and is set to false, the node is ignored for the bounding-box calculation. |
Definition at line 327 of file mitkDataStorage.h.
TimeGeometry::ConstPointer mitk::DataStorage::ComputeVisibleBoundingGeometry3D | ( | const BaseRenderer * | renderer = nullptr , |
const char * | boolPropertyKey = nullptr |
||
) |
Compute the axis-parallel bounding geometry of all visible parts of the data tree bounding box, minimal spacing of the considered nodes, live-span)
Simply calls ComputeBoundingGeometry3D(it, "visible", renderer, boolPropertyKey). it -> an iterator of a data tree structure
renderer | the reference to the renderer |
boolPropertyKey | if a BoolProperty with this boolPropertyKey exists for a node (for renderer) and is set to false, the node is ignored for the bounding-box calculation. |
|
protected |
EmitAddNodeEvent emits the AddNodeEvent.
This method should be called by subclasses to emit the AddNodeEvent
|
protected |
EmitRemoveNodeEvent emits the RemoveNodeEvent.
This method should be called by subclasses to emit the RemoveNodeEvent
|
pure virtual |
Checks if a node exists in the DataStorage.
Implemented in mitk::StandaloneDataStorage.
|
protected |
Filters a SetOfObjects by the condition. If no condition is provided, the original set is returned.
|
pure virtual |
returns a set of all data objects that are stored in the data storage
Implemented in mitk::StandaloneDataStorage.
|
inlinevirtual |
Reimplemented in mitk::StandaloneDataStorage.
Definition at line 46 of file mitkDataStorage.h.
|
virtual |
Reimplemented in mitk::StandaloneDataStorage.
|
pure virtual |
returns a set of derived objects for a given node.
GetDerivations() returns a set of objects that are derived from the DataNode node. This means, that node was used to create the returned objects. If the parameter onlyDirectDerivations is set to true (default value), only objects that directly have node as one of their source objects will be returned. Otherwise, objects that are derived from derivations of node are returned too. The derived objects can be filtered with a predicate object as described in the GetSubset() method by providing a predicate as the condition parameter.
Implemented in mitk::StandaloneDataStorage.
const DataNode::GroupTagList mitk::DataStorage::GetGroupTags | ( | ) | const |
Returns a list of used grouptags.
DataNode* mitk::DataStorage::GetNamedDerivedNode | ( | const char * | name, |
const DataNode * | sourceNode, | ||
bool | onlyDirectDerivations = true |
||
) | const |
Convenience method to get the first node with a given name that is derived from sourceNode.
|
inline |
Convenience method to get the first data object of a given data type with a given name that is derived.
Definition at line 178 of file mitkDataStorage.h.
References mitk::DataNode::GetData().
DataNode* mitk::DataStorage::GetNamedNode | ( | const char * | name | ) | const |
Convenience method to get the first node with a given name.
|
inline |
Convenience method to get the first node with a given name.
Definition at line 142 of file mitkDataStorage.h.
References GetNamedNode().
Referenced by GetNamedNode().
|
inline |
Convenience method to get the first data object of a given data type with a given name.
Definition at line 154 of file mitkDataStorage.h.
References mitk::DataNode::GetData().
|
inline |
Convenience method to get the first data object of a given data type with a given name.
Definition at line 168 of file mitkDataStorage.h.
DataNode* mitk::DataStorage::GetNode | ( | const NodePredicateBase * | condition = nullptr | ) | const |
Convenience method to get the first node that matches the predicate condition.
|
pure virtual |
returns a set of source objects for a given node that meet the given condition(s).
Implemented in mitk::StandaloneDataStorage.
|
inlinestatic |
Definition at line 46 of file mitkDataStorage.h.
SetOfObjects::ConstPointer mitk::DataStorage::GetSubset | ( | const NodePredicateBase * | condition | ) | const |
returns a set of data objects that meet the given condition(s)
GetSubset returns a set of objects with a specific data type that meet the condition(s) specified in the condition parameter. Conditions can be
|
protected |
|
protected |
OnNodeModified listens to modified events of DataNodes.
The node is hidden behind the caller parameter, which has to be casted first. If the cast succeeds the ChangedNodeEvent is emitted with this node.
|
overrideprotected |
Prints the contents of the DataStorage to os. Do not call directly, call ->Print() instead.
|
pure virtual |
Removes node from the DataStorage.
Implemented in mitk::StandaloneDataStorage.
void mitk::DataStorage::Remove | ( | const DataStorage::SetOfObjects * | nodes | ) |
Removes a set of nodes from the DataStorage.
|
protected |
Removes a Modified-Listener from the given Node.
DataStorageEvent mitk::DataStorage::AddNodeEvent |
AddEvent is emitted whenever a new node has been added to the DataStorage.
Observers should register to this event by calling myDataStorage->AddNodeEvent.AddListener(myObject,
Definition at line 215 of file mitkDataStorage.h.
DataStorageEvent mitk::DataStorage::ChangedNodeEvent |
ChangedEvent is emitted directly after a node was changed.
Observers should register to this event by calling myDataStorage->ChangedNodeEvent.AddListener(myObject,
Definition at line 248 of file mitkDataStorage.h.
DataStorageEvent mitk::DataStorage::DeleteNodeEvent |
DeleteNodeEvent is emitted directly before a node is deleted.
Observers should register to this event by calling myDataStorage->DeleteNodeEvent.AddListener(myObject,
Definition at line 264 of file mitkDataStorage.h.
DataStorageEvent mitk::DataStorage::InteractorChangedNodeEvent |
Definition at line 266 of file mitkDataStorage.h.
|
protected |
If this class changes nodes itself, set this to TRUE in order to suppress NodeChangedEvent to be emitted.
Definition at line 416 of file mitkDataStorage.h.
|
mutable |
Definition at line 197 of file mitkDataStorage.h.
|
protected |
Saves Delete-Observer Tags for each node in order to remove the event listeners again.
Definition at line 411 of file mitkDataStorage.h.
|
protected |
Definition at line 407 of file mitkDataStorage.h.
|
protected |
Saves Modified-Observer Tags for each node in order to remove the event listeners again.
Definition at line 405 of file mitkDataStorage.h.
DataStorageEvent mitk::DataStorage::RemoveNodeEvent |
RemoveEvent is emitted directly before a node is removed from the DataStorage.
Observers should register to this event by calling myDataStorage->RemoveNodeEvent.AddListener(myObject,
Definition at line 232 of file mitkDataStorage.h.