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
vtkMRMLAnnotationNode.h
Go to the documentation of this file.
1 // .NAME vtkMRMLAnnotationNode - 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 vtkMRMLAnnotationTextDisplayNode class.
7 //
8 
9 #ifndef __vtkMRMLAnnotationNode_h
10 #define __vtkMRMLAnnotationNode_h
11 
12 // MRML includes
13 #include "vtkMRMLModelNode.h"
14 class vtkMRMLCameraNode;
15 class vtkMRMLSliceNode;
16 
17 // Annotations includes
18 #include "vtkSlicerAnnotationsModuleMRMLExport.h"
20 
21 // VTK includes
22 #include <vtkSmartPointer.h>
23 class vtkCellArray;
24 class vtkPoints;
25 class vtkStringArray;
26 
28 class VTK_SLICER_ANNOTATIONS_MODULE_MRML_EXPORT vtkMRMLAnnotationNode : public vtkMRMLModelNode
29 {
30 public:
31  static vtkMRMLAnnotationNode *New();
33  void PrintSelf(ostream& os, vtkIndent indent) override;
34  // Description:
35  // Just prints short summary
36  virtual void PrintAnnotationInfo(ostream& os, vtkIndent indent, int titleFlag = 1);
37 
38  virtual const char* GetIcon() {return "";}
39 
40  //--------------------------------------------------------------------------
41  // MRMLNode methods
42  //--------------------------------------------------------------------------
43 
44  vtkMRMLNode* CreateNodeInstance() override;
45  // Description:
46  // Get node XML tag name (like Volume, Model)
47  const char* GetNodeTagName() override {return "Annotation";}
48 
49  // Description:
50  // Read node attributes from XML file
51  void ReadXMLAttributes( const char** atts) override;
52 
53  // Description:
54  // Write this node's information to a MRML file in XML format.
55  void WriteXML(ostream& of, int indent) override;
56 
57 
61 
62  void UpdateScene(vtkMRMLScene *scene) override;
63 
64  // Description:
65  // alternative method to propagate events generated in Display nodes
66  void ProcessMRMLEvents ( vtkObject * /*caller*/,
67  unsigned long /*event*/,
68  void * /*callData*/ ) override;
69 
70  // vtkMRMLModelNode overrides it and it handles models only, while in annotations
71  // we have all kinds of nodes (e.g., screenshot), so we need to revert to the generic
72  // storable node implementation.
73  std::string GetDefaultStorageNodeClassName(const char* filename /* =nullptr */) override;
74 
75  // Description:
76  // Create default storage node or nullptr if does not have one
78 
81  bool CanApplyNonLinearTransforms()const override {return false;}
82 
83  int AddText(const char *newText,int selectedFlag, int visibleFlag);
84  void SetText(int id, const char *newText,int selectedFlag, int visibleFlag);
85  vtkStdString GetText(int id);
86  int DeleteText(int id);
87 
88  int GetNumberOfTexts();
89 
90  enum
91  {
92  TEXT_SELECTED = 0,
96  };
97  virtual const char *GetAttributeTypesEnumAsString(int val);
98  vtkDataArray* GetAnnotationAttributes(int att);
99  int GetAnnotationAttribute(vtkIdType id, int att);
100  void SetAnnotationAttribute(vtkIdType id, int att, double value);
101  int DeleteAttribute(vtkIdType idAttEntry, vtkIdType idAttType);
102 
103  // Description:
104  // Initializes all variables associated with annotations
105  virtual void ResetAnnotations();
106 
107  // Description:
108  // add display node if not already present
109  void CreateAnnotationTextDisplayNode();
110 
111  vtkMRMLAnnotationTextDisplayNode* GetAnnotationTextDisplayNode();
112 
114  void SetTextScale(double textScale);
116  double GetTextScale();
117 
118 
119  // Description:
120  // Reference of this annotation - can be an image, model, scene , ...
121  vtkGetStringMacro (ReferenceNodeID);
122  vtkSetStringMacro (ReferenceNodeID);
123 
127  vtkGetMacro(Locked, int);
128  void SetLocked(int init);
129 
130  virtual void Initialize(vtkMRMLScene* mrmlScene);
131 
132  // Functionality for backups of this node
134  void CreateBackup();
135  void ClearBackup();
137  vtkMRMLAnnotationNode * GetBackup();
139  void RestoreBackup();
140 
141  // Functionality to save the current view
143  void SaveView();
145  void RestoreView();
146 
147 protected:
149  ~vtkMRMLAnnotationNode() override;
151  void operator=(const vtkMRMLAnnotationNode&);
152 
153  // Description:
154  // Initializes Text as well as attributes
155  // void ResetAnnotations();
156 
157  // Description:
158  // Only initializes attributes with ID
159  void ResetAttributes(int id);
160  // Description:
161  // Initializes all attributes
162  void ResetTextAttributesAll();
163  void SetAttributeSize(vtkIdType id, vtkIdType n);
164 
165  void CreatePolyData();
166  vtkPoints* GetPoints();
167  vtkCellArray* GetLines();
168 
169  vtkStringArray *TextList;
171 
172  int Locked;
173 
175 
176  vtkSmartPointer<vtkMRMLSliceNode> m_RedSliceNode;
177  vtkSmartPointer<vtkMRMLSliceNode> m_YellowSliceNode;
178  vtkSmartPointer<vtkMRMLSliceNode> m_GreenSliceNode;
179  vtkSmartPointer<vtkMRMLCameraNode> m_CameraNode;
180 
181 };
182 
183 #endif
void ReadXMLAttributes(const char **atts) override
Read node attributes from XML file
vtkSmartPointer< vtkMRMLCameraNode > m_CameraNode
void PrintSelf(ostream &os, vtkIndent indent) override
std::string GetDefaultStorageNodeClassName(const char *filename) override
MRML node to represent a 3D surface model.
vtkMRMLCopyContentMacro(vtkMRMLModelNode)
MRML node for storing a slice through RAS space.
bool CanApplyNonLinearTransforms() const override
void WriteXML(ostream &of, int indent) override
Write this node&#39;s information to a MRML file in XML format.
vtkMRMLAnnotationNode * m_Backup
static vtkMRMLModelNode * New()
A set of MRML Nodes that supports serialization and undo/redo.
Definition: vtkMRMLScene.h:57
void operator=(const vtkMRMLModelNode &)
vtkSmartPointer< vtkMRMLSliceNode > m_GreenSliceNode
A superclass for other storage nodes.
vtkMRMLStorageNode * CreateDefaultStorageNode() override
MRML node to represent camera node.
void ProcessMRMLEvents(vtkObject *, unsigned long, void *) override
alternative method to propagate events generated in Display nodes
vtkSmartPointer< vtkMRMLSliceNode > m_RedSliceNode
const char * GetNodeTagName() override
Get node XML tag name (like Volume, Model)
void UpdateScene(vtkMRMLScene *scene) override
Finds the storage node and read the data
virtual const char * GetIcon()
vtkMRMLNode * CreateNodeInstance() override
MRMLNode methods.
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:167
vtkSmartPointer< vtkMRMLSliceNode > m_YellowSliceNode