]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxImageViewerWidget.h
c01f915754bd3456b4678452987d96676b517d76
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxImageViewerWidget.h
1 /*=========================================================================
2
3   Program:   wxMaracas
4   Module:    $RCSfile: wxImageViewerWidget.h,v $
5   Language:  C++
6   Date:      $Date: 2008/10/31 16:32:42 $
7   Version:   $Revision: 1.1 $
8
9   Copyright: (c) 2002, 2003
10   License:
11   
12      This software is distributed WITHOUT ANY WARRANTY; without even 
13      the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
14      PURPOSE.  See the above copyright notice for more information.
15
16 =========================================================================*/
17
18 #ifndef __WX__IMAGE__VIEWER__WIDGET__
19 #define __WX__IMAGE__VIEWER__WIDGET__
20
21 //As it is extremely easy to use vtkImageViewer/ vtkImageViewer2, I gave up with
22 //vtkImagePlaneWidget
23 #include <wx/wx.h>
24
25 #include "InterfaceVtkPanelWidgets.h"
26 //  #include "vtk3DSurfaceWidget.h"  //EED pour avoir access a la classe "InterfaceVtkPanelWidgets"
27
28 #include "../manualContour.h"
29 #include "wxVTKRenderWindowInteractorEditContour.h"
30
31 #include "wxVTKRenderWindowInteractor.h"
32 #include "vtkImageViewer2.h"
33 #include "vtkImageData.h"
34 #include "vtkActor.h"
35 #include "vtkPoints.h"
36
37 class marZoomROIObserver;
38
39
40 class wxVtk2DView_TMP : public wxVtkBaseView{
41 public:
42         wxVtk2DView_TMP(vtkImageViewer2 *imageviewer2);
43         ~wxVtk2DView_TMP();
44         virtual vtkRenderer             *GetRenderer(); 
45         virtual vtkRenderWindow *GetRenWin();
46         virtual void                    Configure();
47         void                                    SetWxVTKRenderWindowInteractor( wxVTKRenderWindowInteractor *wxVTKiren);
48         virtual wxVTKRenderWindowInteractor *GetWxVTKRenderWindowInteractor();
49
50 private:
51         wxVTKRenderWindowInteractor *_wxVTKiren;
52         vtkImageViewer2                         *_imageviewer2;
53 };
54
55
56 /**
57  * \brief Panel class composed of a vtk renderwindow with double click available 
58  * and add some buttons
59  */
60 class wxImageViewerWidget : public wxPanel{
61 public:
62
63     wxImageViewerWidget(
64         wxWindow                *parent,
65         wxWindowID              id              = -1,
66         const wxPoint   &pos    = wxDefaultPosition,
67         const wxSize&   size    = wxDefaultSize,
68         long                    style   = wxSUNKEN_BORDER, //wxTAB_TRAVERSAL,
69         const wxString& name    = wxPanelNameStr
70         );
71     ~wxImageViewerWidget( );
72     
73          virtual void ConstructVTK(vtkImageData *imageData);
74      virtual void ExecuteEvent(vtkObject *wdg, unsigned long event, void* calldata);
75                          void ExecuteEvent1(vtkObject *wdg, unsigned long event, void* calldata);
76                          void ExecuteEvent2(vtkObject *wdg, unsigned long event, void* calldata);
77                          void SetImage(vtkImageData* imagedata);
78                          void SetInterfaceVtkPanelWidgets(InterfaceVtkPanelWidgets * intVtkPanWid) { _intVtkPanWid = intVtkPanWid; };
79
80                          void    SetState(int state);
81                          void    SetStateManualContour(int state);
82                          void    CreateNewManualContour();
83                          int     GetNumberOfPointsSplineManualContour();
84                          double* GetVectorPointsXManualContour();
85                          double* GetVectorPointsYManualContour();
86                          void    EraseManualContour();
87                          void    SetZSlice(int z);
88                          int     GetZSlice();
89                          void    Render();
90
91
92         void AddObserver_1();
93         void AddObserver_2();
94
95 protected:
96         int                                                                              _state;
97         marZoomROIObserver                                              *_Observer;
98         vtkInteractorStyle2DMaracas                             *_interactorStyle2DMaracas;
99         vtkImageViewer2                                                 *_imageViewer;
100         InterfaceVtkPanelWidgets                                *_intVtkPanWid;
101         wxVTKRenderWindowInteractorEditContour  *_wxVTKiren;
102
103 private:
104     manualContourControler                                      *_manContControl;
105         manualContourModel                                              *_mContourModel;
106         manualViewContour                                               *_mViewContour;
107
108 };
109
110 //----------------------------------------------------------------------------
111
112 class wxImageViewerWidgetRoi : public wxImageViewerWidget{
113 public :
114         wxImageViewerWidgetRoi(
115         wxWindow* parent,
116         wxWindowID              id              = -1,
117         const wxPoint   &pos    = wxDefaultPosition,
118         const wxSize&   size    = wxDefaultSize,
119                           long          style   = wxSUNKEN_BORDER, //wxTAB_TRAVERSAL,
120         const wxString& name    = wxPanelNameStr
121         );
122     ~wxImageViewerWidgetRoi( );
123         void GetROI( int extent[6] );
124         virtual void ConstructVTK(vtkImageData *imageData);
125         void TransfromeCoordViewWorld(int &X, int &Y, int &Z);
126         bool GetRoiSelected();
127
128 private :
129     virtual void ExecuteEvent(vtkObject *wdg, unsigned long event, void* calldata);
130         bool                                            _bboxEnabled;
131         bool                                            _sliceEnabled;
132         bool                                            _RoiSelected;
133         vtkPoints                                       *_pts;
134         vtkActor                                        *_bboxActor;
135         vtkPolyDataMapper                       *_bboxMapper;
136     vtkPolyData                                 *_pd;
137 };
138 #endif // __WX__IMAGE__VIEWER__WIDGET__