Slicer 5.4
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
vtkMRMLHierarchyNode.h
Go to the documentation of this file.
1/*=auto=========================================================================
2
3 Portions (c) Copyright 2005 Brigham and Women's Hospital (BWH) All Rights Reserved.
4
5 See COPYRIGHT.txt
6 or http://www.slicer.org/copyright/copyright.txt for details.
7
8 Program: 3D Slicer
9 Module: $RCSfile: vtkMRMLHierarchyNode.h,v $
10 Date: $Date: 2006/03/19 17:12:29 $
11 Version: $Revision: 1.13 $
12
13=========================================================================auto=*/
14
15#ifndef __vtkMRMLHierarchyNode_h
16#define __vtkMRMLHierarchyNode_h
17
18// MRML includes
19#include "vtkMRMLNode.h"
20
21// VTK includes
22class vtkCollection;
23
24// STD includes
25#include <vector>
26
28class VTK_MRML_EXPORT vtkMRMLHierarchyNode : public vtkMRMLNode
29{
30public:
33 void PrintSelf(ostream& os, vtkIndent indent) override;
34
36
39 void ReadXMLAttributes( const char** atts) override;
40
43 void WriteXML(ostream& of, int indent) override;
44
47 void Copy(vtkMRMLNode *node) override;
48
51 const char* GetNodeTagName() override {return "Hierarchy";}
52
54 void SetSceneReferences() override;
55
59 void UpdateReferences() override;
60
63 void UpdateScene(vtkMRMLScene *scene) override;
64
67 void UpdateReferenceID(const char *oldID, const char *newID) override;
68
72
76
79 virtual char* GetParentNodeID()
80 {
81 return GetParentNodeIDReference();
82 }
83
84 virtual void SetParentNodeID(const char* ref);
85
88 void GetAllChildrenNodes(std::vector< vtkMRMLHierarchyNode *> &childrenNodes);
89
94 std::vector< vtkMRMLHierarchyNode *> GetChildrenNodes();
95
98 {
99 return static_cast<int>(this->GetChildrenNodes().size());
100 }
101
104
107
109 void SetIndexInParent(int index);
110
113 void MoveInParent(int increment);
114
117
120
122 enum
123 {
124 ChildNodeAddedEvent = 15550,
125 ChildNodeRemovedEvent = 15551
126 };
127
129
132 virtual char* GetAssociatedNodeID()
133 {
134 return GetAssociatedNodeIDReference();
135 }
136
137 virtual void SetAssociatedNodeID(const char* ref);
138
139
142
143
146 virtual void GetAssociatedChildrenNodes(vtkCollection *children, const char* childClass=nullptr);
147
151 const char *associatedNodeID);
154 //vtkSetMacro(SortingValue, double);
156 //nodes (since the order of that associated node could have changed as well)
157 void SetSortingValue(double value);
158 vtkGetMacro(SortingValue, double);
159
160
164 vtkGetMacro(AllowMultipleChildren, int);
165 vtkSetMacro(AllowMultipleChildren, int);
166 vtkBooleanMacro(AllowMultipleChildren, int);
167
168protected:
173
174
177 void SetParentNodeIDReference(const char* id);
178 vtkGetStringMacro(ParentNodeIDReference);
179
181
184
185
187
193
195 vtkGetStringMacro(AssociatedNodeIDReference);
196
197 typedef std::map<std::string, std::vector< vtkMRMLHierarchyNode *> > HierarchyChildrenNodesType;
198
199 static std::map< vtkMRMLScene*, HierarchyChildrenNodesType> SceneHierarchyChildrenNodes;
200 static std::map< vtkMRMLScene*, vtkMTimeType> SceneHierarchyChildrenNodesMTime;
201
207
208 typedef std::map<std::string, vtkMRMLHierarchyNode *> AssociatedHierarchyNodesType;
209
210 static std::map< vtkMRMLScene*, AssociatedHierarchyNodesType> SceneAssociatedHierarchyNodes;
211
212 static std::map< vtkMRMLScene*, vtkMTimeType> SceneAssociatedHierarchyNodesMTime;
213
215
216 static double MaximumSortingValue;
217
219
222
229};
230
231#endif
232
233
234
235
Abstract class representing a hierarchy member.
void InvokeHierarchyModifiedEvent(vtkMRMLNode *node=nullptr)
void UpdateReferenceID(const char *oldID, const char *newID) override
Update the stored reference to another node in the scene.
virtual vtkMRMLNode * GetAssociatedNode()
Get node associated with this hierarchy node.
virtual void GetAssociatedChildrenNodes(vtkCollection *children, const char *childClass=nullptr)
static std::map< vtkMRMLScene *, AssociatedHierarchyNodesType > SceneAssociatedHierarchyNodes
void SetAssociatedNodeIDReference(const char *)
void SetIndexInParent(int index)
Set index of this node in it's parent based on the value of their SortingValue.
int GetNumberOfChildrenNodes()
Returns the number of immediate children in the hierarchy.
vtkMRMLHierarchyNode * GetTopParentNode()
Get the top parent node in the hierarchy.
void SetParentNodeIDReference(const char *id)
String ID of the parent hierarchy MRML node.
virtual void SetAssociatedNodeID(const char *ref)
virtual char * GetParentNodeID()
String ID of the parent hierarchy MRML node.
vtkMRMLHierarchyNode * GetParentNode()
Associated parent MRML node.
static vtkMRMLHierarchyNode * GetAssociatedHierarchyNode(vtkMRMLScene *scene, const char *associatedNodeID)
Get Hierarchy node for a given associated node.
static std::map< vtkMRMLScene *, vtkMTimeType > SceneAssociatedHierarchyNodesMTime
virtual void SetParentNodeID(const char *ref)
std::vector< vtkMRMLHierarchyNode * > GetChildrenNodes()
int AllowMultipleChildren
is this a node that's only supposed to have one child?
const char * GetNodeTagName() override
Get node XML tag name (like Volume, Model)
void RemoveHierarchyChildrenNodes()
Removes immediate children nodes, their children are reparented to this parent node.
char * AssociatedNodeIDReference
String ID of the associated MRML node.
void Copy(vtkMRMLNode *node) override
Copy the node's attributes to this object.
void MoveInParent(int increment)
virtual char * GetAssociatedNodeID()
String ID of the corresponding displayable MRML node.
~vtkMRMLHierarchyNode() override
void PrintSelf(ostream &os, vtkIndent indent) override
int GetIndexInParent()
Get index of this node in it's parent based on the value of their SortingValue.
void operator=(const vtkMRMLHierarchyNode &)
void ReadXMLAttributes(const char **atts) override
Read node attributes from XML file.
void SetSortingValue(double value)
Node's Sorting Value.
vtkMRMLHierarchyNode(const vtkMRMLHierarchyNode &)
vtkMRMLNode * CreateNodeInstance() override
Create instance of the default node. Like New only virtual.
vtkMRMLHierarchyNode * GetNthChildNode(int index)
Get n-th child node sorted in the order of their SortingValue.
static void AssociatedHierarchyIsModified(vtkMRMLScene *scene)
Mark hierarchy as modified.
void GetAllChildrenNodes(std::vector< vtkMRMLHierarchyNode * > &childrenNodes)
Given this hierarchy node returns all it's children recursively.
static void HierarchyIsModified(vtkMRMLScene *scene)
Mark hierarchy as modified when you.
void UpdateReferences() override
std::map< std::string, std::vector< vtkMRMLHierarchyNode * > > HierarchyChildrenNodesType
static int UpdateAssociatedToHierarchyMap(vtkMRMLScene *scene)
void SetSceneReferences() override
Set the reference node to current scene.
void UpdateScene(vtkMRMLScene *scene) override
Observe the reference transform node.
static std::map< vtkMRMLScene *, vtkMTimeType > SceneHierarchyChildrenNodesMTime
static std::map< vtkMRMLScene *, HierarchyChildrenNodesType > SceneHierarchyChildrenNodes
std::map< std::string, vtkMRMLHierarchyNode * > AssociatedHierarchyNodesType
void RemoveAllHierarchyChildrenNodes()
Removes all children hierarchy nodes including children of children, etc.
void WriteXML(ostream &of, int indent) override
Write this node's information to a MRML file in XML format.
static vtkMRMLHierarchyNode * New()
Abstract Superclass for all specific types of MRML nodes.
A set of MRML Nodes that supports serialization and undo/redo.