Slicer  4.11
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
vtkMRMLAnnotationAngleNode.h
Go to the documentation of this file.
1 #ifndef __vtkMRMLAnnotationAngleNode_h
2 #define __vtkMRMLAnnotationAngleNode_h
3 
4 #include "vtkSlicerAnnotationsModuleMRMLExport.h"
6 
7 class vtkMatrix4x4;
8 class vtkAbstractTransform;
9 class vtkMRMLScene;
10 
12 class VTK_SLICER_ANNOTATIONS_MODULE_MRML_EXPORT vtkMRMLAnnotationAngleNode : public vtkMRMLAnnotationLinesNode
13 {
14 public:
17  // Description:
18  // Just prints short summary
19  void PrintAnnotationInfo(ostream& os, vtkIndent indent, int titleFlag = 1) override;
20 
21  //--------------------------------------------------------------------------
22  // MRMLNode methods
23  //--------------------------------------------------------------------------
24 
25  vtkMRMLNode* CreateNodeInstance() override;
26  // Description:
27  // Get node XML tag name (like Volume, Model)
28  const char* GetNodeTagName() override {return "AnnotationAngle";}
29 
30  // Description:
31  // Read node attributes from XML file
32  void ReadXMLAttributes( const char** atts) override;
33 
34  // Description:
35  // Write this node's information to a MRML file in XML format.
36  void WriteXML(ostream& of, int indent) override;
37 
38 
39  // Description:
40  // Copy the node's attributes to this object
41  void Copy(vtkMRMLNode *node) override;
42 
43  void UpdateScene(vtkMRMLScene *scene) override;
44 
45  // Description:
46  // alternative method to propagate events generated in Display nodes
47  void ProcessMRMLEvents ( vtkObject * /*caller*/,
48  unsigned long /*event*/,
49  void * /*callData*/ ) override;
50 
51  // Legacy code
52  // Description:
53  // get/set the first point position
54  double* GetPosition1() {return this->GetControlPointCoordinates(0);}
55 
56  int SetPosition1(double newControl[3]) { return this->SetControlPoint(0, newControl) ; }
57 
58  int SetPosition1(double nC1, double nC2, double nC3) {
59  double newControl[3] = {nC1,nC2,nC3};
60  return this->SetPosition1(newControl) ;
61  }
62 
63  double* GetPosition2() {return this->GetControlPointCoordinates(1);}
64  int SetPosition2(double newControl[3]) { return this->SetControlPoint(1, newControl);}
65 
66  int SetPosition2(double nC1, double nC2, double nC3) {
67  double newControl[3] = {nC1,nC2,nC3};
68  return this->SetPosition2(newControl) ;
69  }
70 
71  double* GetPositionCenter() { return this->GetControlPointCoordinates(2);}
72  int SetPositionCenter(double newControl[3]) { return this->SetControlPoint(2, newControl);}
73 
74  int SetPositionCenter(double nC1, double nC2, double nC3) {
75  double newControl[3] = {nC1,nC2,nC3};
76  return this->SetPositionCenter(newControl) ;
77  }
78 
79  // Description:
80  // get/set the distance annotation format, it's in standard sprintf notation
81  vtkGetStringMacro(LabelFormat);
82  vtkSetStringMacro(LabelFormat);
83 
84  // Description:
85  // KP Define - should be part of AnnotationAngleDisplayNode
86  double GetLabelScale();
87  void SetLabelScale(double init);
88 
89  // Description:
90  // get/set the distance annotation visbility
91  int GetLabelVisibility();
92  void SetLabelVisibility(int flag);
93 
94  int SetAngle(vtkIdType line1Id, vtkIdType line2Id, int sel, int vis);
95 
96  // Description:
101 
102  int GetArcVisibility() { return this->GetLabelVisibility();}
103  void SetArcVisibility(int flag) { this->SetLabelVisibility(flag);}
104 
105  // Description:
106  // get/set the resolution (number of subdivisions) of the line.
107  vtkGetMacro(Resolution, int);
108  vtkSetMacro(Resolution, int);
109 
110  // Description:
111  // get/set the point representation colour
112  double *GetPointColour();
113  void SetPointColour( double initColor[3]);
114 
115  // Description:
116  // get/set the line representation colour
117  double *GetLineColour();
118  void SetLineColour(double newColor[3]);
119 
120  // Description:
121  // get/set the distance annotation text colour
122  double *GetLabelTextColour();
123  void SetLabelTextColour(double initColor[3]);
124 
125  // Description:
126  // transform utility functions
127  void ApplyTransform(vtkAbstractTransform* transform) override;
128 
129  // Description:
130  // Create default storage node or nullptr if does not have one
132 
133  // void Initialize(vtkMRMLScene* mrmlScene);
134 
135  // Description:
136  // get/set the id of the model the ends of the widget are constrained upon
137  vtkGetStringMacro(ModelID1);
138  vtkSetStringMacro(ModelID1);
139  vtkGetStringMacro(ModelID2);
140  vtkSetStringMacro(ModelID2);
141  vtkGetStringMacro(ModelIDCenter);
142  vtkSetStringMacro(ModelIDCenter);
143 
144  void SetAngleMeasurement(double val);
145  double GetAngleMeasurement();
146 
147  enum
148  {
149  AngleNodeAddedEvent = 0,
151  };
152 
153 protected:
155  ~vtkMRMLAnnotationAngleNode() override;
158 
159  // Description:
160  // number of subdivisions on the line
162  char* LabelFormat;
163 
164  int SetControlPoint(int id, double newControl[3]);
165 
166  int AddControlPoint(double newControl[3],int selectedFlag, int visibleFlag);
167 
168  // Description:
169  // the model ids for the models that the ends of the widget are constrained
170  // to
171  char *ModelID1;
172  char *ModelID2;
175 
176 };
177 
178 #endif
int AddControlPoint(double newControl[3], int selectedFlag, int visibleFlag)
void ProcessMRMLEvents(vtkObject *, unsigned long, void *) override
alternative method to propagate events generated in Display nodes
void operator=(const vtkMRMLAnnotationLinesNode &)
void PrintAnnotationInfo(ostream &os, vtkIndent indent, int titleFlag=1) override
void ApplyTransform(vtkAbstractTransform *transform) override
int SetPosition1(double nC1, double nC2, double nC3)
int SetPosition2(double nC1, double nC2, double nC3)
void UpdateScene(vtkMRMLScene *scene) override
Finds the storage node and read the data
vtkMRMLNode * CreateNodeInstance() override
MRMLNode methods.
int SetPosition1(double newControl[3])
int SetControlPoint(int id, double newControl[3], int selectedFlag, int visibleFlag)
int SetPositionCenter(double nC1, double nC2, double nC3)
int GetAnnotationAttribute(vtkIdType id, int att)
int SetPosition2(double newControl[3])
A set of MRML Nodes that supports serialization and undo/redo.
Definition: vtkMRMLScene.h:61
int SetPositionCenter(double newControl[3])
void Copy(vtkMRMLNode *node) override
Copy the node's attributes to this object
void SetAnnotationAttribute(vtkIdType id, int att, double value)
A superclass for other storage nodes.
double * GetControlPointCoordinates(vtkIdType id)
static vtkMRMLAnnotationLinesNode * New()
const char * GetNodeTagName() override
Get node XML tag name (like Volume, Model)
vtkMRMLStorageNode * CreateDefaultStorageNode() override
void WriteXML(ostream &of, int indent) override
Write this node's information to a MRML file in XML format.
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:167
void ReadXMLAttributes(const char **atts) override
Read node attributes from XML file