]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/Extensions/Visualization/Image3DMPR.h
bc9b22776323b8ee0cad951a74a0beb7f1ef59fb
[cpPlugins.git] / lib / cpPlugins / Extensions / Visualization / Image3DMPR.h
1 #ifndef __CPPLUGINS__EXTENSIONS__VISUALIZATION__IMAGE3DMPR__H__
2 #define __CPPLUGINS__EXTENSIONS__VISUALIZATION__IMAGE3DMPR__H__
3
4 #include <cpPlugins/Extensions/cpPlugins_Extensions_Export.h>
5
6 #include <vtkActor.h>
7 #include <vtkCellPicker.h>
8 #include <vtkHandleWidget.h>
9 #include <vtkImageData.h>
10 #include <vtkImagePlaneWidget.h>
11 #include <vtkOutlineSource.h>
12 #include <vtkPointHandleRepresentation3D.h>
13 #include <vtkPolyDataMapper.h>
14 #include <vtkProperty.h>
15 #include <vtkRenderer.h>
16 #include <vtkRendererCollection.h>
17 #include <vtkRenderWindow.h>
18 #include <vtkRenderWindowInteractor.h>
19 #include <vtkSeedRepresentation.h>
20 #include <vtkSeedWidget.h>
21 #include <vtkSmartPointer.h>
22 #include <vtkSphereSource.h>
23 #include <vtkLookupTable.h>
24
25 namespace cpPlugins
26 {
27   namespace Extensions
28   {
29     namespace Visualization
30     {
31       /**
32        */
33       class cpPlugins_Extensions_EXPORT Image3DMPR
34       {
35       public:
36         Image3DMPR( );
37         virtual ~Image3DMPR( );
38
39         void SetImage( vtkImageData* image );
40         void SetBackground( double r, double g, double b );
41         void SetSize( unsigned int w, unsigned int h );
42         void SetWindowLevel( double w, double l );
43
44         void AddPolyData( vtkPolyData* pd, double opacity = double( 1 ) );
45         void AddPolyData(
46           vtkPolyData* pd,
47           double r, double g, double b, double opacity = double( 1 )
48           );
49         void AddPolyData(
50           vtkPolyData* pd,
51           vtkLookupTable* lut,
52           double opacity = double( 1 )
53           );
54
55         unsigned int GetNumberOfSeeds( ) const;
56         void GetSeed( int n, double* s ) const;
57         unsigned int AddSeed(
58           const double& x, const double& y, const double& z
59           ) const;
60
61         vtkRenderWindow* GetWindow( ) const;
62         vtkRenderer* GetRenderer( ) const;
63
64         void Start( );
65         void Render( );
66
67       protected:
68         vtkSmartPointer< vtkImageData >              m_Image;
69         vtkSmartPointer< vtkOutlineSource >          m_Outline;
70         vtkSmartPointer< vtkPolyDataMapper >         m_OutlineMapper;
71         vtkSmartPointer< vtkActor >                  m_OutlineActor;
72         vtkSmartPointer< vtkCellPicker >             m_Picker;
73         vtkSmartPointer< vtkImagePlaneWidget >       m_WidgetX;
74         vtkSmartPointer< vtkImagePlaneWidget >       m_WidgetY;
75         vtkSmartPointer< vtkImagePlaneWidget >       m_WidgetZ;
76         vtkSmartPointer< vtkRenderer >               m_Renderer;
77         vtkSmartPointer< vtkRenderWindow >           m_Window;
78         vtkSmartPointer< vtkRenderWindowInteractor > m_Interactor;
79
80         std::vector< vtkSmartPointer< vtkPolyData > >       m_PolyDatas;
81         std::vector< vtkSmartPointer< vtkPolyDataMapper > > m_Mappers;
82         std::vector< vtkSmartPointer< vtkActor > >          m_Actors;
83
84         // Create the widget and its representation
85         vtkSmartPointer< vtkPointHandleRepresentation3D >
86           m_SeedHandleRepresentation;
87         vtkSmartPointer< vtkSeedRepresentation > m_SeedRepresentation;
88         vtkSmartPointer< vtkSeedWidget >         m_SeedWidget;
89       };
90
91     } // ecapseman
92
93   } // ecapseman
94
95 } // ecapseman
96
97 #endif // __CPPLUGINS__EXTENSIONS__VISUALIZATION__IMAGE3DMPR__H__
98
99 // eof - $RCSfile$