Slicer  5.0
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
vtkMRMLAnnotationControlPointsNode.h
Go to the documentation of this file.
1 // .NAME vtkMRMLAnnotationControlPointsNode - MRML node to represent a fiber bundle from tractography in DTI data.
2 // .SECTION Description
3 // Annotation nodes contains control points, internally represented as vtkPolyData.
4 // A Annotation node contains many control points and forms the smallest logical unit of tractography
5 // that MRML will manage/read/write. Each control point has accompanying data.
6 // Visualization parameters for these nodes are controlled by the vtkMRMLAnnotationPointDisplayNode class.
7 //
8 
9 #ifndef __vtkMRMLAnnotationControlPointsNode_h
10 #define __vtkMRMLAnnotationControlPointsNode_h
11 
12 #include "vtkMRMLAnnotationNode.h"
13 
15 
17 class VTK_SLICER_ANNOTATIONS_MODULE_MRML_EXPORT vtkMRMLAnnotationControlPointsNode
18  : public vtkMRMLAnnotationNode
19 {
20 public:
23 
24  // void PrintSelf(ostream& os, vtkIndent indent) override;
25  // Description:
26  // Just prints short summary
27  void PrintAnnotationInfo(ostream& os, vtkIndent indent, int titleFlag = 1) override;
28 
29  //--------------------------------------------------------------------------
30  // MRMLNode methods
31  //--------------------------------------------------------------------------
32 
33  vtkMRMLNode* CreateNodeInstance() override;
34  // Description:
35  // Get node XML tag name (like Volume, Model)
36  const char* GetNodeTagName() override {return "AnnotationControlPoints";}
37 
38  // Description:
39  // Read node attributes from XML file
40  void ReadXMLAttributes( const char** atts) override;
41 
42  // Description:
43  // Write this node's information to a MRML file in XML format.
44  void WriteXML(ostream& of, int indent) override;
45 
50  void WriteCLI(std::vector<std::string>& commandLine,
51  std::string prefix, int coordinateSystem = 0,
52  int multipleFlag = 1) override;
53 
57 
58  void UpdateScene(vtkMRMLScene *scene) override;
59 
60  // Description:
61  // alternative method to propagate events generated in Display nodes
62  void ProcessMRMLEvents ( vtkObject * /*caller*/,
63  unsigned long /*event*/,
64  void * /*callData*/ ) override;
65 
66 
67  enum
68  {
69  ControlPointModifiedEvent = 19010,
70  };
71 
72  void Modified() override
73  {
75 
76  if (!this->GetDisableModifiedEvent())
77  {
79  }
80  }
81 
87  {
88  if ( this->GetModifiedEventPending() )
89  {
91  }
93  }
94 
95  // Description:
96  // get associated display node or nullptr if not set
97  vtkMRMLAnnotationPointDisplayNode* GetAnnotationPointDisplayNode();
98 
99  // Description:
100  // Create default storage node or nullptr if does not have one
102 
103  int AddControlPoint(double newControl[3],int selectedFlag, int visibleFlag);
104 
105  int SetControlPoint(int id, double newControl[3],int selectedFlag, int visibleFlag);
106 
107  int SetControlPointWorldCoordinates(int id, double newControl[3], int selectedFlag, int visibleFlag);
108 
109  int SetControlPoint(int id, double newControl[3]);
110 
111  int SetControlPointWorldCoordinates(int id, double newControl[3]);
112 
113  void DeleteControlPoint(int id);
117  double* GetControlPointCoordinates(vtkIdType id);
118 
119  void GetControlPointWorldCoordinates(vtkIdType id, double *point);
120 
121  int GetNumberOfControlPoints();
122 
123  enum
124  {
127  NUM_CP_ATTRIBUTE_TYPES
128  };
129 
130  const char *GetAttributeTypesEnumAsString(int val) override;
131 
132 
133  // Description:
134  // Initializes all variables associated with annotations
135  void ResetAnnotations() override;
136 
137  // Description:
138  // add display node if not already present
139  void CreateAnnotationPointDisplayNode();
140 
143  {
144  SchemeMin = 0,
145  UseID = SchemeMin,
148  SchemeMax = UsePrevious,
149  };
150 
151 
153  virtual void SetNumberingScheme(int numberingScheme);
154  vtkGetMacro(NumberingScheme, int);
155 
157  const char* GetNumberingSchemeAsString();
158  const char* GetNumberingSchemeAsString(int g);
159  void SetNumberingSchemeFromString(const char *schemeString);
160 
161  void Initialize(vtkMRMLScene* mrmlScene) override;
162 
163 protected:
165  ~vtkMRMLAnnotationControlPointsNode() override = default;
168 
169  // Description:
170  // Create Poly data with substructures necessary for this class
171  void CreatePolyData();
172 
173  // Description:
174  // Initializes control points as well as attributes
175  void ResetControlPoints();
176 
177  // Description:
178  // Initializes all attributes
179  void ResetControlPointsAttributesAll();
180 
183 };
184 
185 #endif
NumberingSchemes
flags to determine how the next fiducial added to the list is labelled
virtual int InvokePendingModifiedEvent()
Invokes any modified events that are pending.
Definition: vtkMRMLNode.h:534
void ReadXMLAttributes(const char **atts) override
Read node attributes from XML file
virtual int GetDisableModifiedEvent()
Turn on/off generating InvokeEvent for set macros.
const char * GetNodeTagName() override
Get node XML tag name (like Volume, Model)
int NumberingScheme
How the next annotation will be numbered in it&#39;s Text field.
void ProcessMRMLEvents(vtkObject *, unsigned long, void *) override
alternative method to propagate events generated in Display nodes
vtkMRMLNode * CreateNodeInstance() override
MRMLNode methods.
virtual void WriteCLI(std::vector< std::string > &vtkNotUsed(commandLine), std::string vtkNotUsed(prefix), int vtkNotUsed(coordinateSystemFlag)=vtkMRMLStorageNode::CoordinateSystemRAS, int vtkNotUsed(multipleFlag)=1)
A set of MRML Nodes that supports serialization and undo/redo.
Definition: vtkMRMLScene.h:57
void operator=(const vtkMRMLAnnotationNode &)
void UpdateScene(vtkMRMLScene *scene) override
Finds the storage node and read the data
virtual const char * GetAttributeTypesEnumAsString(int val)
A superclass for other storage nodes.
virtual int GetModifiedEventPending()
static vtkMRMLAnnotationNode * New()
virtual void Initialize(vtkMRMLScene *mrmlScene)
virtual void PrintAnnotationInfo(ostream &os, vtkIndent indent, int titleFlag=1)
vtkMRMLStorageNode * CreateDefaultStorageNode() override
#define vtkMRMLCopyContentDefaultMacro(thisClassName)
Definition: vtkMRMLNode.h:155
void Modified() override
Customized version of Modified() allowing to compress vtkCommand::ModifiedEvent.
Definition: vtkMRMLNode.h:515
void WriteXML(ostream &of, int indent) override
Write this node&#39;s information to a MRML file in XML format.
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:167
virtual void ResetAnnotations()