Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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 {
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 {
126 };
127
129
132 virtual char* GetAssociatedNodeID()
133 {
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
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 char * GetParentNodeIDReference()
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.
virtual char * GetAssociatedNodeIDReference()
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()
friend class vtkMRMLScene