Slicer 5.9
Slicer is a multi-platform, free and open source software package for visualization and medical image computing
Loading...
Searching...
No Matches
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 vtkMRMLAnnotationDisplayableManagerHelper : public vtkObject
39{
40public:
43 void PrintSelf(ostream& os, vtkIndent indent) override;
44
50 void UpdateLockedAllWidgets(bool locked);
55 void UpdateVisible(vtkMRMLAnnotationNode* node, bool displayableInViewer = true);
58
60 vtkAbstractWidget* GetWidget(vtkMRMLAnnotationNode* node);
73
76
77 //----------------------------------------------------------------------------------
78 // The Lists!!
79 //
80 // An annotation which is managed by a displayableManager consists of
81 // a) the Annotation MRML Node (AnnotationNodeList)
82 // b) the vtkWidget to show this annotation (Widgets)
83 // c) a vtkWidget to represent sliceIntersections in the slice viewers (WidgetIntersections)
84 //
85
87 std::vector<vtkMRMLAnnotationNode*> AnnotationNodeList;
88
90 typedef std::vector<vtkMRMLAnnotationNode*>::iterator AnnotationNodeListIt;
91
93 std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*> Widgets;
94
96 typedef std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*>::iterator WidgetsIt;
97
99 std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*> WidgetIntersections;
100
102 typedef std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*>::iterator WidgetIntersectionsIt;
103
105 std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*> WidgetOverLineProjections;
106
108 typedef std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*>::iterator WidgetOverLineProjectionsIt;
109
111 std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*> WidgetUnderLineProjections;
112
114 typedef std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*>::iterator WidgetUnderLineProjectionsIt;
115
117 std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*> WidgetPointProjections;
118
120 typedef std::map<vtkMRMLAnnotationNode*, vtkAbstractWidget*>::iterator WidgetPointProjectionsIt;
121
122 //
123 // End of The Lists!!
124 //
125 //----------------------------------------------------------------------------------
126
128 void PlaceSeed(double x, double y, vtkRenderWindowInteractor* interactor, vtkRenderer* renderer);
129
131 vtkHandleWidget* GetSeed(int index);
132
135
136protected:
139
140private:
142 void operator=(const vtkMRMLAnnotationDisplayableManagerHelper&) = delete;
143
145 vtkSmartPointer<vtkSeedWidget> SeedWidget;
147 std::vector<vtkSmartPointer<vtkHandleWidget>> HandleWidgetList;
149 typedef std::vector<vtkSmartPointer<vtkHandleWidget>>::iterator HandleWidgetListIt;
150};
151
152#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