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
vtkMRMLAnnotationLinesNode.h
Go to the documentation of this file.
1 // .NAME vtkMRMLAnnotationLinesNode - 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 vtkMRMLAnnotationLineDisplayNode class.
7 //
8 
9 #ifndef __vtkMRMLAnnotationLinesNode_h
10 #define __vtkMRMLAnnotationLinesNode_h
11 
13 
15 
17 class VTK_SLICER_ANNOTATIONS_MODULE_MRML_EXPORT vtkMRMLAnnotationLinesNode
19 {
20 public:
23  // void PrintSelf(ostream& os, vtkIndent indent) override;
24  // Description:
25  // Just prints short summary
26  void PrintAnnotationInfo(ostream& os, vtkIndent indent, int titleFlag = 1) override;
27 
28  //--------------------------------------------------------------------------
29  // MRMLNode methods
30  //--------------------------------------------------------------------------
31 
32  vtkMRMLNode* CreateNodeInstance() override;
33  // Description:
34  // Get node XML tag name (like Volume, Model)
35  const char* GetNodeTagName() override {return "AnnotationLines";}
36 
37  // Description:
38  // Read node attributes from XML file
39  void ReadXMLAttributes( const char** atts) override;
40 
41  // Description:
42  // Write this node's information to a MRML file in XML format.
43  void WriteXML(ostream& of, int indent) override;
44 
48 
49  void UpdateScene(vtkMRMLScene *scene) override;
50 
51  // Description:
52  // alternative method to propagate events generated in Display nodes
53  void ProcessMRMLEvents ( vtkObject * /*caller*/,
54  unsigned long /*event*/,
55  void * /*callData*/ ) override;
56 
57 
58  // Description:
59  // get associated display node or nullptr if not set
60  vtkMRMLAnnotationLineDisplayNode* GetAnnotationLineDisplayNode();
61 
62  // Description:
63  // Create default storage node or nullptr if does not have one
65 
66  // Define line between control points
67  int AddLine(int ctrlPtIdStart, int ctrlPtIdEnd,int selectedFlag, int visibleFlag);
68  int SetLine(int id, int ctrlPtIdStart, int ctrlPtIdEnd, int selectedFlag, int visibleFlag);
69 
70  int SetControlPoint(int id, double newControl[3],int selectedFlag, int visibleFlag);
71 
72  int SetControlPointWorldCoordinates(int id, double newControl[3],int selectedFlag, int visibleFlag)
73  {
74  double localPoint[4]={0,0,0,1};
75  this->TransformPointFromWorld(newControl, localPoint);
76  return this->SetControlPoint(id, localPoint, selectedFlag, visibleFlag);
77  }
78 
79  void DeleteLine(int id);
80  int GetEndPointsId(vtkIdType lineID, vtkIdType ctrlPtID[2]);
81  int GetNumberOfLines();
82 
83  // Description:
84  // add line display node if not already present
85  void CreateAnnotationLineDisplayNode();
86 
87  enum
88  {
91  NUM_LINE_ATTRIBUTE_TYPES
92  };
93 
94  const char *GetAttributeTypesEnumAsString(int val) override;
95 
96  // Description:
97  // Initializes all variables associated with annotations
98  void ResetAnnotations() override;
99 
100  void Initialize(vtkMRMLScene* mrmlScene) override;
101 
102 protected:
104  ~vtkMRMLAnnotationLinesNode() override;
107 
108  // Description:
109  // Create Poly data with substructures necessary for this class
110  void CreatePolyData();
111 
112  // Description:
113  // Initializes control points as well as attributes
114  void ResetLines();
115 
116  // Description:
117  // Initializes all attributes
118  void ResetLinesAttributesAll();
119 
121 };
122 
123 #endif
vtkMRMLCopyContentDefaultMacro(vtkMRMLAnnotationControlPointsNode)
void ReadXMLAttributes(const char **atts) override
Read node attributes from XML file
int SetControlPointWorldCoordinates(int id, double newControl[3], int selectedFlag, int visibleFlag)
void Initialize(vtkMRMLScene *mrmlScene) override
void ProcessMRMLEvents(vtkObject *, unsigned long, void *) override
alternative method to propagate events generated in Display nodes
static vtkMRMLAnnotationControlPointsNode * New()
void PrintAnnotationInfo(ostream &os, vtkIndent indent, int titleFlag=1) override
void WriteXML(ostream &of, int indent) override
Write this node's information to a MRML file in XML format.
vtkMRMLNode * CreateNodeInstance() override
MRMLNode methods.
const char * GetNodeTagName() override
Get node XML tag name (like Volume, Model)
A set of MRML Nodes that supports serialization and undo/redo.
Definition: vtkMRMLScene.h:57
A superclass for other storage nodes.
vtkMRMLStorageNode * CreateDefaultStorageNode() override
void operator=(const vtkMRMLAnnotationControlPointsNode &)
void UpdateScene(vtkMRMLScene *scene) override
Finds the storage node and read the data
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:167
const char * GetAttributeTypesEnumAsString(int val) override
virtual void TransformPointFromWorld(const double inWorld[3], double outLocal[3])
int SetControlPoint(int id, double newControl[3], int selectedFlag, int visibleFlag)