Slicer 5.9
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
vtkMRMLAnnotationDisplayableManagerHelper.h
Go to the documentation of this file.
1/*=auto=========================================================================
2
3 Portions (c) Copyright 2005 Brigham and Women's Hospital (BWH) All Rights Reserved.
4
5 See COPYRIGHT.txt
6 or http://www.slicer.org/copyright/copyright.txt for details.
7
8 Program: 3D Slicer
9 Module: $RCSfile: vtkMRMLAnnotationDisplayableManagerHelper,v $
10 Date: $Date: Aug 4, 2010 10:44:52 AM $
11 Version: $Revision: 1.0 $
12
13 =========================================================================auto=*/
14
15#ifndef vtkMRMLAnnotationDisplayableManagerHelper_h
16#define vtkMRMLAnnotationDisplayableManagerHelper_h
17
18// Annotations includes
19#include "vtkSlicerAnnotationsModuleMRMLDisplayableManagerExport.h"
20
21// Annotations MRML includes
24
25// MRML includes
27
28// VTK includes
29#include <vtkHandleWidget.h>
30#include <vtkLineWidget2.h>
31#include <vtkSeedWidget.h>
32#include <vtkSmartPointer.h>
33
34// STD includes
35#include <map>
36#include <vector>
37
38class VTK_SLICER_ANNOTATIONS_MODULE_MRMLDISPLAYABLEMANAGER_EXPORT
40 : public vtkObject
41{
42public:
43
46 void PrintSelf(ostream& os, vtkIndent indent) override;
47
53 void UpdateLockedAllWidgets(bool locked);
58 void UpdateVisible(vtkMRMLAnnotationNode* node, bool displayableInViewer = true);
61
63 vtkAbstractWidget * GetWidget(vtkMRMLAnnotationNode * node);
65 vtkAbstractWidget * GetIntersectionWidget(vtkMRMLAnnotationNode * node);
76
77
80
81 //----------------------------------------------------------------------------------
82 // The Lists!!
83 //
84 // An annotation which is managed by a displayableManager consists of
85 // a) the Annotation MRML Node (AnnotationNodeList)
86 // b) the vtkWidget to show this annotation (Widgets)
87 // c) a vtkWidget to represent sliceIntersections in the slice viewers (WidgetIntersections)
88 //
89
91 std::vector<vtkMRMLAnnotationNode*> AnnotationNodeList;
92
94 typedef std::vector<vtkMRMLAnnotationNode*>::iterator AnnotationNodeListIt;
95
97 std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*> Widgets;
98
100 typedef std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*>::iterator WidgetsIt;
101
103 std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*> WidgetIntersections;
104
106 typedef std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*>::iterator WidgetIntersectionsIt;
107
109 std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*> WidgetOverLineProjections;
110
112 typedef std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*>::iterator WidgetOverLineProjectionsIt;
113
115 std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*> WidgetUnderLineProjections;
116
118 typedef std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*>::iterator WidgetUnderLineProjectionsIt;
119
121 std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*> WidgetPointProjections;
122
124 typedef std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*>::iterator WidgetPointProjectionsIt;
125
126 //
127 // End of The Lists!!
128 //
129 //----------------------------------------------------------------------------------
130
131
133 void PlaceSeed(double x, double y, vtkRenderWindowInteractor * interactor, vtkRenderer * renderer);
134
136 vtkHandleWidget * GetSeed(int index);
137
140
141
142protected:
143
146
147private:
148
150 void operator=(const vtkMRMLAnnotationDisplayableManagerHelper&) = delete;
151
153 vtkSmartPointer<vtkSeedWidget> SeedWidget;
155 std::vector<vtkSmartPointer<vtkHandleWidget> > HandleWidgetList;
157 typedef std::vector<vtkSmartPointer<vtkHandleWidget> >::iterator HandleWidgetListIt;
158};
159
160#endif
std::map< vtkMRMLAnnotationNode *, vtkAbstractWidget * > Widgets
Map of vtkWidget indexed using associated node ID.
void UpdateLockedAllWidgets(bool locked)
Lock/Unlock all widgets.
void RemoveWidgetAndNode(vtkMRMLAnnotationNode *node)
Remove a node, its widget and its intersection widget.
std::map< vtkMRMLAnnotationNode *, vtkAbstractWidget * >::iterator WidgetUnderLineProjectionsIt
.. and its associated convenient typedef
void UpdateVisible(vtkMRMLAnnotationNode *node, bool displayableInViewer=true)
std::map< vtkMRMLAnnotationNode *, vtkAbstractWidget * >::iterator WidgetOverLineProjectionsIt
.. and its associated convenient typedef
std::map< vtkMRMLAnnotationNode *, vtkAbstractWidget * >::iterator WidgetsIt
.. and its associated convenient typedef
vtkAbstractWidget * GetOverLineProjectionWidget(vtkMRMLAnnotationNode *node)
...an its associated vtkAbstractWidget* for Slice projection representation
std::map< vtkMRMLAnnotationNode *, vtkAbstractWidget * > WidgetUnderLineProjections
Map of vtkWidgets to reflect the Slice projection indexed using associated node ID.
vtkAbstractWidget * GetPointProjectionWidget(vtkMRMLAnnotationNode *node)
...an its associated vtkAbstractWidget* for Slice projection representation
vtkAbstractWidget * GetWidget(vtkMRMLAnnotationNode *node)
Get a vtkAbstractWidget* given a node.
void UpdateWidget(vtkMRMLAnnotationNode *node)
Update lock and visibility of a widget.
static vtkMRMLAnnotationDisplayableManagerHelper * New()
void RemoveAllWidgetsAndNodes()
Remove all widgets, intersection widgets, nodes.
void PlaceSeed(double x, double y, vtkRenderWindowInteractor *interactor, vtkRenderer *renderer)
Placement of seeds for widget placement.
std::map< vtkMRMLAnnotationNode *, vtkAbstractWidget * >::iterator WidgetPointProjectionsIt
.. and its associated convenient typedef
vtkHandleWidget * GetSeed(int index)
Get a placed seed.
std::map< vtkMRMLAnnotationNode *, vtkAbstractWidget * > WidgetPointProjections
Map of vtkWidgets to reflect the Slice projection indexed using associated node ID.
vtkMRMLAnnotationNode * GetAnnotationNodeFromDisplayNode(vtkMRMLAnnotationDisplayNode *displayNode)
Search the annotation node list and return the annotation node that has this display node.
void UpdateLockedAllWidgetsFromNodes()
Lock/Unlock all widgets based on the state of the nodes.
std::map< vtkMRMLAnnotationNode *, vtkAbstractWidget * > WidgetOverLineProjections
Map of vtkWidgets to reflect the Slice projection indexed using associated node ID.
vtkAbstractWidget * GetIntersectionWidget(vtkMRMLAnnotationNode *node)
...an its associated vtkAbstractWidget* for Slice intersection representation
std::map< vtkMRMLAnnotationNode *, vtkAbstractWidget * > WidgetIntersections
Map of vtkWidgets to reflect the Slice intersections indexed using associated node ID.
void RemoveSeeds()
Remove all placed seeds.
void UpdateLocked(vtkMRMLAnnotationNode *node)
Lock/Unlock a widget.
std::map< vtkMRMLAnnotationNode *, vtkAbstractWidget * >::iterator WidgetIntersectionsIt
.. and its associated convenient typedef
void PrintSelf(ostream &os, vtkIndent indent) override
void UpdateLockedAllWidgetsFromInteractionNode(vtkMRMLInteractionNode *interactionNode)
Lock/Unlock all widgets from interaction node.
std::vector< vtkMRMLAnnotationNode * > AnnotationNodeList
List of Nodes managed by the DisplayableManager.
std::vector< vtkMRMLAnnotationNode * >::iterator AnnotationNodeListIt
.. and its associated convenient typedef
vtkAbstractWidget * GetUnderLineProjectionWidget(vtkMRMLAnnotationNode *node)
...an its associated vtkAbstractWidget* for Slice projection representation