]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxSTLWidget_03.h
916ca395d252a37104542472e27cdb5be2d98222
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxSTLWidget_03.h
1
2 #ifndef WX_STL_WIDGET_03
3 #define WX_STL_WIDGET_03
4
5 #include <vector>
6
7 #include <vtkImageData.h>
8 #include <vtkActor.h>
9 #include <vtkMarchingCubes.h>
10 #include <vtkPolyDataMapper.h>
11 #include <vtkAppendFilter.h>
12 #include <vtkImageThreshold.h>
13 #include <vtkExtractVOI.h>
14 #include <vtkOutlineFilter.h>
15 #include <vtkImageSeedConnectivity.h>
16 #include <vtkImageCast.h>
17
18 #include "wxVTKRenderWindowInteractor.h"
19 //#include "wxSurfaceWidget.h"
20 #include "wxVtkBaseView.h"
21
22
23 #include "../wxMaracasMPR.h"
24 #include "pPlotter/mBarRange.h"//SIL//
25
26 //#include <marInterface.h>
27 #include <axisExtractor02.h>
28
29
30 #include "vtkSTLExtractor.h"    
31 #include "vtkJoiner.h"
32
33 #include "marTypes.h"
34
35
36
37
38 //------------------------------------------------------------------
39 //------------------------------------------------------------------
40 //------------------------------------------------------------------
41
42 class creaMaracasVisu_EXPORT wxSTLWidget_03: public wxPanel{
43 public:
44         wxSTLWidget_03(wxWindow *parentmar);//,marInterface *mar);
45         ~wxSTLWidget_03();
46         void ConfigureVTK();
47         void Refresh();
48
49         void OnOpacity_Vol(wxScrollEvent& event);               // Result Volume 
50         void OnMinSpin ( wxScrollEvent & event );
51         void OnMaxSpin ( wxScrollEvent & event ); 
52
53         //SIL new// 
54         void OnRangeSpin( wxScrollEvent & event );
55
56         //Handled events form the bar
57         void OnStartChanged_range(wxCommandEvent& event);
58         void OnEndChanged_range(wxCommandEvent& event);
59         void OnBarMoved_range(wxCommandEvent& event);
60
61
62         void OnBtnExtraction(wxCommandEvent& event);
63         void OnBtnSaveBinaryFile(wxCommandEvent& event);
64
65         //
66         void Reset_vtk_STLFile();
67         void OnBtnSTLFileLoad(wxCommandEvent& event);
68         void OnBtnSTLFileErase(wxCommandEvent& event);
69         void OnOpacitySTLFile(wxScrollEvent& event);            
70
71
72         // --------------------------------------
73         // STL FUNCTIONS DHC
74         // --------------------------------------
75         void generateSTLSurfaces();
76         void OnBtnCreateFileSTL(wxCommandEvent& event); 
77         void OnChangeSTLGaussLevel(wxScrollEvent& event);
78         void OnChangeSTLMarchingCubesLevel(wxScrollEvent& event);
79         void OnOpacitySTLExternal(wxScrollEvent& event);
80         void OnOpacitySTLInternal(wxScrollEvent& event);
81
82         
83         //---------------------------------------
84         // JOIN REGIONS FUNCTIONS
85         //---------------------------------------
86         void OnJoinRegions(wxCommandEvent& event);
87
88         //JCP 01-03-08
89         void setImage(vtkImageData* img);
90
91 private:
92
93         //Processing
94         vtkImageData                            *_imagedata;
95         double                                          _range[2];
96         vtkImageCast                            *cast2;
97         vtkImageCast                            *cast3;
98         vtkImageCast                            *cast4; // binary segmentation result
99         vtkImageThreshold                       *_thresh;
100         vtkImageThreshold                       *_thresh2;
101         vtkImageSeedConnectivity        *_connect;
102         vtkImageSeedConnectivity        *_connect2;
103
104
105
106         vtkPolyDataMapper       *_2_mapfinal;
107         vtkActor                        *_2_stripfinal;
108         vtkPolyDataMapper       *_2_isoMapperMC6;
109         vtkActor                        *_2_isoActorMC6;
110         vtkMarchingCubes        *_2_isoMC6;
111         double                          _sensibility_JF;
112         int                                     _maxSize;
113         int                                     _minSize;
114
115         // Load STL file
116         vtkPolyDataMapper *_loadSTLMapper;
117         vtkActor                  *_loadActorSTL;
118
119
120         wxSlider                        *_opacity_Vol;
121         wxSlider                        *_sl_minSize;
122         wxSlider                        *_sl_maxSize;
123         wxSlider                        *_sl_minSizeSpin;
124         wxSlider                        *_sl_maxSizeSpin;
125         wxSlider                        *_sl_RangeSizeSpin;
126
127         
128         /*
129         * Represents the bar of min and max for merging the functionality of two sliders for controlling the segmentation parameters
130         */
131         mBarRange                       * sl_barrange_segmentation;
132         int                                     lastResizeRef_Value;
133         int                                     minRangeValue;
134         int                                     maxRangeValue;
135         
136         wxVtk3DBaseView         *_imageviewer3D;
137         wxPanel                         *CreateControlPanel(wxWindow *parent);
138         wxPanel                         *CreateViewPanel(wxWindow *parent);
139
140         //Maracas
141         //marInterface          *_mar;
142         wxMaracasMPR            *_wxMaracasMPR;
143
144         void ResetTree2_JF();
145         void ExtractSurface(int x, int y, int z);
146
147         wxWindow* CreateSelectAPointPanel(wxWindow *parent);
148         wxWindow* CreateSegmentationPanel(wxWindow *parent);
149         wxWindow* CreateSmoothingPanel(wxWindow *parent);
150         wxWindow* CreateReadSTLFilePanel(wxWindow *parent);
151
152         //---------------------
153         // Processing
154         //---------------------
155         void ConfigureProcessing(marImageData *marimagedata, int x, int y, int z);
156
157
158         //---------------------
159         // STL SURFACES DHC
160         //---------------------
161         void            ConfigureSTL();
162         double          _stlDeltaGaussLevel;
163         double          _stlMarchingCubesLevel;
164
165         
166         vtkPolyData *stlInterna;
167         vtkPolyData *stlExterna;
168         
169         wxSlider        *stlSliderDeltaGauss;
170         wxSlider        *stlSliderMarchingCubes;
171         
172         vtkPolyDataMapper *dsm1;
173     vtkActor    *actorInternal;
174         wxSlider        *stlSliderOpacityInternal;
175     
176         vtkPolyDataMapper *dsm2; 
177     vtkActor    *actorExternal;
178         wxSlider        *stlSliderOpacityExternal;
179
180         vtkSTLExtractor *stlExtractor;   
181
182         wxSlider        *_sl_opacity_STL_file;
183
184
185
186         //--------------------------
187         // JOIN REGIONS
188         //--------------------------
189
190         vtkImageData            *arteryImageData;
191         vtkJoiner                       *joiner;
192         vtkMarchingCubes        *joinMarchingCubes;
193     vtkPolyDataMapper   *joinMapper; 
194         vtkActor                        *joinActor; 
195
196 };
197
198 #endif // WX_STL_WIDGET_03
199
200
201
202