]> Creatis software - cpPlugins.git/blob - plugins/Widgets/SeedWidget.h
0f565969d7e7b93af06f64985d189d4a1cdadd0c
[cpPlugins.git] / plugins / Widgets / SeedWidget.h
1 #ifndef __CPPLUGINSWIDGETS__SEEDWIDGET__H__
2 #define __CPPLUGINSWIDGETS__SEEDWIDGET__H__
3
4 #include <plugins/cpPluginsWidgets_Export.h>
5 #include <cpPlugins/BaseObjects/Widget.h>
6
7 #include <cpExtensions/Interaction/ImageSlicePointPlacer.h>
8 #include <cpExtensions/Visualization/WindowLevelImageActor.h>
9 #include <vtkImageSlice.h>
10 #include <vtkPointHandleRepresentation3D.h>
11 #include <vtkSeedRepresentation.h>
12 #include <vtkSmartPointer.h>
13 #include <map>
14
15 // -------------------------------------------------------------------------
16 namespace cpExtensions { namespace Interaction { class SeedWidget; } }
17
18 // -------------------------------------------------------------------------
19 namespace cpPluginsWidgets
20 {
21   /**
22    */
23   class cpPluginsWidgets_EXPORT SeedWidget
24     : public cpPlugins::BaseObjects::Widget
25   {
26     cpPluginsObject( SeedWidget, cpPlugins::BaseObjects::Widget, Widgets );
27
28   public:
29     typedef cpExtensions::Interaction::SeedWidget              TWidget;
30     typedef cpExtensions::Visualization::WindowLevelImageActor TImageActor;
31
32   public:
33     /* TODO
34        struct TWidgetData
35        {
36        typedef cpExtensions::Interaction::SeedWidget            _TWidget;
37        typedef cpExtensions::Interaction::ImageSlicePointPlacer _TPlacer;
38
39        std::vector< vtkSmartPointer< _TWidget > >                       Widgets;
40        std::vector< vtkSmartPointer< _TPlacer > >                       Placers;
41        std::vector< vtkSmartPointer< vtkPointHandleRepresentation3D > > Handles;
42        std::vector< vtkSmartPointer< vtkSeedRepresentation > >  Representations;
43        unsigned int ActualWidgetId;
44        vtkSmartPointer< vtkCommand > Command;
45
46        TWidgetData(
47        SeedWidget* seedWidget,
48        TImageActor* actor,
49        vtkRenderWindowInteractor* iren
50        );
51        virtual ~TWidgetData( );
52        };
53     */
54
55     struct TWidgetData
56     {
57       typedef cpExtensions::Interaction::ImageSlicePointPlacer _TPlacer;
58
59       vtkSmartPointer< TWidget >                        Widget;
60       vtkSmartPointer< _TPlacer >                       Placer;
61       vtkSmartPointer< vtkPointHandleRepresentation3D > Handle;
62       vtkSmartPointer< vtkSeedRepresentation >  Representation;
63
64       TWidgetData(
65         SeedWidget* seedWidget,
66         TImageActor* actor,
67         vtkRenderWindowInteractor* iren,
68         vtkCommand* cmd
69         );
70       virtual ~TWidgetData( );
71     };
72
73   protected:
74     void _Configure( );
75
76     inline void _GD0_Image( vtkImageData* image );
77
78   protected:
79     std::map< vtkRenderWindowInteractor*, TWidgetData* > m_Data;
80     vtkSmartPointer< vtkCommand > m_Command;
81
82     /* TODO
83        std::map< vtkProp*, vtkRenderWindowInteractor* > m_Props;
84        std::vector< TWidgetData* > m_Widgets;
85        bool m_Configured;
86     */
87   };
88
89 } // ecapseman
90
91 #endif // __CPPLUGINSWIDGETS__SEEDWIDGET__H__
92
93 // eof - $RCSfile$