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
vtkSlicerAnnotationModuleLogic.h
Go to the documentation of this file.
1 #ifndef __vtkSlicerAnnotationModuleLogic_h
2 #define __vtkSlicerAnnotationModuleLogic_h
3 
4 // Slicer Logic includes
5 #include "vtkSlicerAnnotationsModuleLogicExport.h"
6 #include "vtkSlicerModuleLogic.h"
7 
8 // MRML includes
14 
15 // VTK includes
16 #include <vtkStdString.h>
17 
18 // STD includes
19 #include <string>
20 
22 class VTK_SLICER_ANNOTATIONS_MODULE_LOGIC_EXPORT vtkSlicerAnnotationModuleLogic
23  :public vtkSlicerModuleLogic
24 {
25 public:
26  enum Events{
27  RefreshRequestEvent = vtkCommand::UserEvent,
28  HierarchyNodeAddedEvent
29  };
32  void PrintSelf(ostream& os, vtkIndent indent) override;
33 
36  void StartPlaceMode(bool persistent=false, vtkMRMLInteractionNode* interactionNode = nullptr);
37 
40  void StopPlaceMode(bool persistent=false, vtkMRMLInteractionNode* interactionNode = nullptr);
41 
42  // Start adding a new annotation Node
43  void AddAnnotationNode(const char * nodeDescriptor, bool persistent=false);
44 
45  // After a node was added, propagate to widget
46  void AddNodeCompleted(vtkMRMLAnnotationNode* annotationNode);
47 
50  void CancelCurrentOrRemoveLastAddedAnnotationNode(vtkMRMLInteractionNode* interactionNode = nullptr);
51 
53  void RemoveAnnotationNode(vtkMRMLAnnotationNode* annotationNode);
54 
55  //
56  // Annotation Properties (interface to MRML)
57  //
59  void RegisterNodes() override;
60 
62  bool IsAnnotationNode(const char* id);
63 
64  bool IsAnnotationHierarchyNode(const char* id);
65 
69  vtkMRMLAnnotationTextDisplayNode *GetTextDisplayNode(const char *id);
73  vtkMRMLAnnotationPointDisplayNode *GetPointDisplayNode(const char *id);
77  vtkMRMLAnnotationLineDisplayNode *GetLineDisplayNode(const char *id);
78 
80  const char * GetAnnotationName(const char * id);
81 
83  vtkStdString GetAnnotationText(const char* id);
85  void SetAnnotationText(const char* id, const char * newtext);
86 
88  double GetAnnotationTextScale(const char* id);
90  void SetAnnotationTextScale(const char* id, double textScale);
91 
93  double * GetAnnotationTextSelectedColor(const char* id);
95  void SetAnnotationTextSelectedColor(const char* id, double * color);
96 
98  double * GetAnnotationTextUnselectedColor(const char* id);
100  void SetAnnotationTextUnselectedColor(const char* id, double * color);
101 
103  double * GetAnnotationColor(const char *id);
105  void SetAnnotationColor(const char *id, double *color);
106 
108  double * GetAnnotationUnselectedColor(const char *id);
110  void SetAnnotationUnselectedColor(const char *id, double *color);
111 
113  double * GetAnnotationPointColor(const char *id);
115  void SetAnnotationPointColor(const char *id, double *color);
116 
118  double * GetAnnotationPointUnselectedColor(const char *id);
120  void SetAnnotationPointUnselectedColor(const char *id, double *color);
121 
124  const char * GetAnnotationPointGlyphTypeAsString(const char *id);
126  int GetAnnotationPointGlyphType(const char *id);
128  void SetAnnotationPointGlyphTypeFromString(const char *id, const char *glyphType);
130  void SetAnnotationPointGlyphType(const char *id, int glyphType);
131 
133  double * GetAnnotationLineColor(const char *id);
135  void SetAnnotationLineColor(const char *id, double *color);
136 
138  double * GetAnnotationLineUnselectedColor(const char *id);
140  void SetAnnotationLineUnselectedColor(const char *id, double *color);
141 
142 
144  const char * GetAnnotationMeasurement(const char * id, bool showUnits);
145 
147  const char * GetAnnotationIcon(const char * id);
148  const char * GetAnnotationIcon(vtkMRMLNode* mrmlNode);
149 
151  int GetAnnotationLockedUnlocked(const char * id);
153  void SetAnnotationLockedUnlocked(const char * id);
154 
156  int GetAnnotationVisibility(const char * id);
158  void SetAnnotationVisibility(const char * id);
159 
161  void SetAnnotationSelected(const char * id, bool selected);
163  void SetAllAnnotationsSelected(bool selected);
164 
166  void BackupAnnotationNode(const char * id);
168  void RestoreAnnotationNode(const char * id);
170  void DeleteBackupNodes(const char * id);
171 
173  void JumpSlicesToAnnotationCoordinate(const char* id);
174 
175  const char * MoveAnnotationUp(const char* id);
176  const char * MoveAnnotationDown(const char* id);
177 
178  //
179  // SnapShot functionality
180  //
182  void CreateSnapShot(const char* name, const char* description, int screenshotType, double scaleFactor, vtkImageData* screenshot);
183 
185  void ModifySnapShot(vtkStdString id, const char* name, const char* description, int screenshotType, double scaleFactor, vtkImageData* screenshot);
186 
188  vtkStdString GetSnapShotName(const char* id);
189 
191  vtkStdString GetSnapShotDescription(const char* id);
192 
194  int GetSnapShotScreenshotType(const char* id);
195 
197  double GetSnapShotScaleFactor(const char* id);
198 
200  vtkImageData* GetSnapShotScreenshot(const char* id);
201 
203  bool IsSnapshotNode(const char* id);
204 
205  //
206  // Hierarchy functionality
207  //
214  bool AddHierarchy();
215 
219  char * GetTopLevelHierarchyNodeID(vtkMRMLNode* node=nullptr);
220 
222  char * GetTopLevelHierarchyNodeIDForNodeClass(vtkMRMLAnnotationNode *annotationNode);
223 
225  vtkMRMLAnnotationHierarchyNode *GetActiveHierarchyNode();
226 
228  vtkGetStringMacro(ActiveHierarchyNodeID);
229  vtkSetStringMacro(ActiveHierarchyNodeID);
230 
232  void SetHierarchyAnnotationsVisibleFlag(vtkMRMLAnnotationHierarchyNode* hierarchyNode, bool flag);
234  void SetHierarchyAnnotationsLockFlag(vtkMRMLAnnotationHierarchyNode* hierarchyNode, bool flag);
235 
236  //
237  // Place Annotations programmatically
238  //
239 
240  //
241  // Report functionality
242  //
244  const char* GetHTMLRepresentation(vtkMRMLAnnotationNode* annotationNode, int level);
246  const char* GetHTMLRepresentation(vtkMRMLAnnotationHierarchyNode* hierarchyNode, int level);
247 
248 
251  const char* AddDisplayNodeForHierarchyNode(vtkMRMLAnnotationHierarchyNode *hnode);
252 
255  char *LoadFiducialList(const char *filename);
256 
260  char *LoadAnnotation(const char *filename, const char *name, int fileType);
262  enum
263  {
264  None = 0,
268  };
269 
274  char *AddFiducial(double r=0.0, double a=0.0, double s=0.0, const char *label=nullptr);
275 
276 protected:
277 
279 
280  ~vtkSlicerAnnotationModuleLogic() override;
281 
282  // Initialize listening to MRML events
283  void SetMRMLSceneInternal(vtkMRMLScene * newScene) override;
284  void ObserveMRMLScene() override;
285 
286  // MRML events
287  void OnMRMLSceneNodeAdded(vtkMRMLNode* node) override;
288  void OnMRMLSceneEndClose() override;
289  void ProcessMRMLNodesEvents(vtkObject *caller,
290  unsigned long event,
291  void *callData ) override;
292  virtual void OnMRMLAnnotationNodeModifiedEvent(vtkMRMLNode* node);
293 
294 private:
295 
296  vtkMRMLAnnotationNode* m_LastAddedAnnotationNode;
297 
298  std::string m_StringHolder;
299 
300  char* m_MeasurementFormat;
301  char* m_CoordinateFormat;
302 
303  // id of the currently active hierarchy node
304  char *ActiveHierarchyNodeID;
305 
306  //
307  // Private hierarchy functionality.
308  //
315  bool AddHierarchyNodeForAnnotation(vtkMRMLAnnotationNode* annotationNode=nullptr);
316 
317 private:
319  void operator=(const vtkSlicerAnnotationModuleLogic&) = delete;
320 };
321 
322 #endif
void PrintSelf(ostream &os, vtkIndent indent) override
static vtkSlicerModuleLogic * New()
The Usual vtk class functions.
virtual void OnMRMLSceneEndClose()
virtual void ProcessMRMLNodesEvents(vtkObject *caller, unsigned long event, void *callData)
A set of MRML Nodes that supports serialization and undo/redo.
Definition: vtkMRMLScene.h:61
virtual void OnMRMLSceneNodeAdded(vtkMRMLNode *)
virtual void ObserveMRMLScene()
virtual void SetMRMLSceneInternal(vtkMRMLScene *newScene)
Abstract Superclass for all specific types of MRML nodes.
Definition: vtkMRMLNode.h:167