]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/include/wxPathologyWidget_01.h
231593778d9f91372f463440178aff4c34e827bf
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / include / wxPathologyWidget_01.h
1
2 #ifndef WX_PATHOLOGY_WIDGET_01
3 #define WX_PATHOLOGY_WIDGET_01
4 #include <vector>
5
6 #include "vtkImageData.h"
7 #include "vtkActor.h"
8 #include "vtkMarchingCubes.h"
9 #include "vtkPolyDataMapper.h"
10 #include "vtkAppendFilter.h"
11 #include "vtkImageThreshold.h"
12 #include "vtkExtractVOI.h"
13 #include "vtkOutlineFilter.h"
14 #include "vtkImageGaussianSmooth.h"
15 #include "vtkImageCast.h"
16 #include "vtkImageEuclideanDistance.h"
17 #include "vtkPolyDataConnectivityFilter.h"
18 #include "vtkPointSet.h"
19 #include "vtkDataSetMapper.h"
20 #include "vtkImageContinuousDilate3D.h"
21 #include "vtkStripper.h"
22 #include "vtkImageResample.h"
23 #include "vtkPolyDataNormals.h"
24 #include "vtkCellCenters.h"
25 #include "vtkImageEuclideanDistance.h"
26 //#include "vtkSphericalVOI.h"
27
28
29 #include "wxVTKRenderWindowInteractor.h"
30 #include "wxSurfaceWidget.h"
31 #include "wxVtkBaseView.h"
32
33
34 #include "kernel/marInterface.h"
35 #include "kernel/axisExtractor02.h"
36 #include "kernel/vtkSTLExtractor.h"
37 #include "kernel/vtkDijkstraImageData.h"    
38
39
40
41 class wxPathologyWidget_01: public wxPanel{
42 public:
43         wxPathologyWidget_01(wxWindow *parentmar,marInterface *mar);
44         ~wxPathologyWidget_01();
45         void ConfigureVTK();
46         void ConfigureVTK(vtkImageData *imagedata, int x, int y, int z, double param);
47         void Refresh();
48         
49         // --------------------------------------
50         // STL FUNCTIONS DHC
51         // --------------------------------------
52         void ConfigureSTL();
53         void generateSTLSurfaces();
54         void OnBtnFileSTL(wxCommandEvent& event); 
55         void OnBtnLoadBinaryForSTL(wxCommandEvent& event);
56         void OnChangeSTLGaussLevel(wxScrollEvent& event);
57         void OnChangeSTLMarchingCubesLevel(wxScrollEvent& event);
58         void OnOpacitySTLExternal(wxScrollEvent& event);
59         void OnOpacitySTLInternal(wxScrollEvent& event);
60         void OnSTLSubdivisionLevel(wxScrollEvent& event);
61
62         //---------------------------------------
63         // PATHOLOGY FUNCTIONS
64         //---------------------------------------
65         void generatePathologySurface();
66         void OnBtnSetP1(wxCommandEvent& event);
67         void OnBtnSetP2(wxCommandEvent& event);
68         void OnBtnSetPat(wxCommandEvent& event);
69         void OnBtnExtractPat(wxCommandEvent& event);
70         void OnChangePatOpacity(wxScrollEvent& event);
71         void OnChangePatMarchingCubes(wxScrollEvent& event);
72         void OnBtnExtractAxis(wxCommandEvent& event);
73         
74
75 private:
76
77         
78         wxVtk3DBaseView         *_imageviewer3D;
79         wxPanel                         *CreateControlPanel(wxWindow *parent);
80         wxPanel                         *CreateViewPanel(wxWindow *parent);
81
82         //Maracas
83         marInterface            *_mar;
84         wxSurfaceWidget         *_maracasSurfaceWidget;
85
86
87
88         //---------------------
89         // STL SURFACES DHC
90         //---------------------
91         char* workingDir;
92         double stlDeltaGaussLevel;
93         double stlMarchingCubesLevel;
94         int stlSubdivisionLevel;
95
96         vtkImageData * stlImageData;
97         vtkPolyData *stlInterna;
98         vtkPolyData *stlExterna;
99         
100         wxSlider        *stlSliderDeltaGauss;
101         wxSlider        *stlSliderMarchingCubes;
102         wxSlider    *stlSliderSubdivision;
103         
104         vtkPolyDataMapper *dsm1;
105     vtkActor *actorInternal;
106         wxSlider *stlSliderOpacityInternal;
107     
108         vtkPolyDataMapper *dsm2; 
109     vtkActor *actorExternal;
110         wxSlider *stlSliderOpacityExternal;
111
112         vtkSTLExtractor *stlExtractor;
113         
114
115         //------------------------
116         // MPR
117         //------------------------
118         void ConfigureMPR();
119         int px, py, pz;
120         vtkSphereSource                         *mprSphereSource;
121     vtkPolyDataMapper                   *mprMapper;
122     vtkActor                                    *mprActor;
123
124
125
126         //--------------------------
127         // PATHOLOGY
128         //--------------------------
129         void ConfigurePathologyExtraction();
130
131         vtkSphereSource         *p1SphereSource;
132         vtkPolyDataMapper       *p1Mapper;
133         vtkActor                        *p1Actor;
134
135         vtkSphereSource         *p2SphereSource;
136         vtkPolyDataMapper       *p2Mapper;
137         vtkActor                        *p2Actor;
138
139         vtkSphereSource         *patSphereSource;
140         vtkPolyDataMapper       *patMapper;
141         vtkActor                        *patActor;
142
143         vtkOutlineFilter    *outlineFilter;
144         vtkPolyDataMapper   *outlineMapper;
145         vtkActor            *outlineActor;
146
147
148         vtkSphereSource         *p3SphereSource;
149         vtkPolyDataMapper       *p3Mapper;
150         vtkActor                        *p3Actor;
151
152
153         wxFrame                         *pathologyFrame;
154         
155         
156         double p1Center[3];
157         double p2Center[3];
158
159         vtkImageData            *patImageData;
160         vtkImageData            *segImageData;
161         vtkExtractVOI           *voiFilter;
162         
163         vtkMarchingCubes        *cubesFilter;
164         vtkPolyDataMapper       *dataMapper;
165         vtkActor                        *dataActor;
166
167         vtkPolyDataMapper       *caminoMapper;
168         vtkActor                        *caminoActor;
169         
170         wxSlider        *patSliderOpacity;
171         wxSlider        *patSliderMarchingCubes;
172         wxSlider        *patSliderDeltaGauss;
173         double patOpacityLevel;
174         double patMCLevel;
175         double patDeltaGauss;
176         vtkImageGaussianSmooth          *gaussFilter; 
177         vtkImageSeedConnectivity        *connectivityFilter;
178         vtkImageThreshold                       *thresholdFilter;
179         vtkImageCast                            *castFilter;
180         wxSlider        *porcentajeSlider;
181         double thresholdOTSU;
182                 
183
184         vtkDijkstraImageData *dijkstraFilter;
185
186
187         vtkImageContinuousDilate3D *dilateFilter;
188         vtkStripper *stripper;
189         vtkPolyDataConnectivityFilter *polyUnico;
190
191         
192         vtkImageData *isoBinaria;
193         vtkImageEuclideanDistance *isoDistance;
194
195 };
196
197 #endif // WX_PATHOLOGY_WIDGET_01
198
199
200
201