]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxEmptyPanel_3_Widget.cxx
creaMaracasVisu Library
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxEmptyPanel_3_Widget.cxx
1
2
3
4 //EED 29Dic2006 Borrame prueba mara Michael
5
6 #include <vtkMetaImageReader.h>
7 #include <vtkMetaImageWriter.h>
8 #include <vtkPlaneSource.h>
9 #include <vtkProbeFilter.h>
10 #include <vtkDataSet.h>
11 #include <vtkStructuredPoints.h>
12 #include <vtkPointData.h>
13 #include <vtkImageResample.h>
14 #include <vtkJPEGWriter.h>
15 #include <vtkBMPWriter.h>
16  
17
18
19 #include "vtkActor.h"
20 #include "vtkSphereSource.h"
21 #include "vtkPolyDataMapper.h"
22 #include "vtkImageData.h"
23 #include "vtkImageCast.h"
24
25 #include "wxEmptyPanel_3_Widget.h"
26
27
28
29 #include <wx/splitter.h>
30
31 //-------------------------------------------------------------------
32 //-------------------------------------------------------------------
33 //-------------------------------------------------------------------
34 BEGIN_EVENT_TABLE( wxEmptyPanel_3_Widget, wxPanel )
35         EVT_MENU( 12121, wxEmptyPanel_3_Widget::OnRefreshView )
36 END_EVENT_TABLE( );
37 //-------------------------------------------------------------------
38 wxEmptyPanel_3_Widget::wxEmptyPanel_3_Widget(wxWindow *parent)
39 : wxPanel( parent, -1) 
40 {
41         wxBoxSizer                      *sizer                  = new wxBoxSizer(wxVERTICAL  );
42     wxSplitterWindow    *pnlSplitter    = new wxSplitterWindow( this , -1);
43         wxPanel                         *viewPanel              = CreateViewPanel(pnlSplitter);
44         wxPanel                         *controlPanel   = CreateControlPanel(pnlSplitter);
45
46         sizer           -> Add( pnlSplitter ,1,wxGROW  ,0);
47         pnlSplitter     -> SetMinimumPaneSize( 50 );
48     pnlSplitter -> SplitVertically( viewPanel, controlPanel );
49         this            -> SetSizer(sizer);
50 //EEDxx2.4
51 //      FitInside();
52 }
53 //-------------------------------------------------------------------
54 wxEmptyPanel_3_Widget::~wxEmptyPanel_3_Widget(){
55         delete _imageviewer2D_1;
56 }
57 //-------------------------------------------------------------------
58 wxPanel* wxEmptyPanel_3_Widget::CreateViewPanel(wxWindow *parent)
59 {
60         wxPanel *panel          =       new wxPanel(parent,-1);
61     wxBoxSizer *sizer   =       new wxBoxSizer(wxVERTICAL);
62
63         _imageviewer2D_1        = new wxVtk2DBaseView(panel);
64         wxVTKRenderWindowInteractor *iren   = _imageviewer2D_1->GetWxVTKRenderWindowInteractor();
65         sizer->Add(iren , 1, wxEXPAND, 0);
66
67
68         panel->SetSizer(sizer);
69         panel->SetAutoLayout(true);
70         panel->SetSize(400,400);
71         panel->Layout();
72         return panel;
73 }
74 //-------------------------------------------------------------------
75 wxPanel* wxEmptyPanel_3_Widget::CreateControlPanel(wxWindow *parent)
76 {
77         _parent=parent;
78         wxPanel *panel  = new wxPanel(parent,-1);
79
80         wxButton *btnContourA   = new wxButton( panel, -1, _T("Active Contour A"));
81         wxButton *btnContourB   = new wxButton( panel, -1, _T("Active Contour B"));
82         wxButton *btnContourAB  = new wxButton( panel, -1, _T("Active Contour AB"));
83
84
85     wxFlexGridSizer *sizer = new wxFlexGridSizer(1);
86         sizer->Add(new wxStaticText(panel,-1,_T("  ")));
87         sizer->Add(new wxStaticText(panel,-1,_T("  ")));
88         sizer->Add(btnContourA);
89         sizer->Add(btnContourB);
90         sizer->Add(btnContourAB);
91
92         panel->SetSizer(sizer);
93         panel->SetAutoLayout(true);
94         panel->SetSize(400,400);
95         panel->Layout();
96         Connect(btnContourA->GetId()            , wxEVT_COMMAND_BUTTON_CLICKED  , (wxObjectEventFunction) &wxEmptyPanel_3_Widget::OnContourA  );
97         Connect(btnContourB->GetId()            , wxEVT_COMMAND_BUTTON_CLICKED  , (wxObjectEventFunction) &wxEmptyPanel_3_Widget::OnContourB  );
98         Connect(btnContourAB->GetId()           , wxEVT_COMMAND_BUTTON_CLICKED  , (wxObjectEventFunction) &wxEmptyPanel_3_Widget::OnContourAB );
99         return panel;
100 }
101 //------------------------------------------------------------------------
102 void wxEmptyPanel_3_Widget::Refresh()
103 {
104         _imageviewer2D_1->Refresh();
105 }
106 //----------------------------------------------------------------------------
107 void wxEmptyPanel_3_Widget::OnRefreshView(wxCommandEvent & event)
108 {
109         Refresh();
110 }
111
112
113 //------------------------------------------------------------------------
114
115 void wxEmptyPanel_3_Widget::ConfigureVTK(marImageData *marimagedata)
116 {
117     wxBusyCursor wait;
118         double spc[3];
119         
120         vtkImageData *vtkimagedata = marimagedata->GetImageData(); // image t=0
121         vtkimagedata->UpdateInformation();
122         vtkimagedata->SetUpdateExtent(vtkimagedata->GetWholeExtent());
123         vtkimagedata->Update();
124         _data = vtkimagedata;
125         _data->GetSpacing(spc);
126         _vtkbasedata_1 = new vtkBaseData();
127         _vtkbasedata_1->SetMarImageData(marimagedata);  
128         _imageviewer2D_1->SetVtkBaseData( _vtkbasedata_1 );
129         _imageviewer2D_1->Configure();
130
131 //      vtkImageViewer2 *_imageViewer=_imageviewer2D_1->_imageViewer2XYZ->GetVtkImageViewer2();
132
133         // Contorno 1
134         _manContourControl_1    = new manualContourControler();
135         _mContourModel_1                = new manualContourModel();
136         _mViewContour_1                 = new manualViewContour();
137         _mViewContour_1->SetModel( _mContourModel_1 );
138         _mViewContour_1->SetWxVtkBaseView( _imageviewer2D_1 );
139         _mViewContour_1->SetRange( 2 );
140         _mViewContour_1->SetZ( 1000 );
141
142
143 //EED 3 oct 2006
144         _mViewContour_1->SetSpacing(spc);
145
146
147 //EED 3 oct 2006
148         _mViewContour_1->SetColorNormalContour(0, 0, 1);
149         _mViewContour_1->SetColorEditContour(0, 0.5, 0.5);
150
151
152         _manContourControl_1->SetModelView( _mContourModel_1 , _mViewContour_1 );
153         _imageviewer2D_1->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _manContourControl_1 );
154         _manContourControl_1->CreateNewManualContour();
155         _manContourControl_1->SetActive(false);
156         _mViewContour_1->RefreshContour();
157
158         // Rectangulo
159         _manRoiControl  = new manualRoiControler();
160         _mContourModel  = new manualContourModel();
161         _mViewRoi               = new manualViewRoi();
162         _mViewRoi->SetModel( _mContourModel );
163         _mViewRoi->SetWxVtkBaseView( _imageviewer2D_1 );
164         _mViewRoi->SetRange( 2 );
165         _mViewRoi->SetZ( 1000 );
166
167 //EED 3 oct 2006
168         _mViewRoi->SetSpacing(spc);
169
170         _manRoiControl->SetModelView( _mContourModel , _mViewRoi );
171         _imageviewer2D_1->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _manRoiControl );
172         _manRoiControl->CreateNewManualContour();
173         _manRoiControl->SetActive(true);
174         _mViewRoi->RefreshContour();
175
176         // Contorno 2
177         _manContourControl_2    = new manualContourControler();
178         _mContourModel_2                = new manualContourModel();
179         _mViewContour_2                 = new manualViewContour();
180         _mViewContour_2->SetModel( _mContourModel_2 );
181         _mViewContour_2->SetWxVtkBaseView( _imageviewer2D_1 );
182         _mViewContour_2->SetRange( 2 );
183         _mViewContour_2->SetZ( 1000 );
184
185 //EED 3 oct 2006
186         _mViewContour_2->SetSpacing(spc);
187
188 //EED 3 oct 2006
189         _mViewContour_2->SetColorNormalContour(1, 1, 1);
190         _mViewContour_2->SetColorEditContour(0.5, 0.5, 0.5);
191
192
193         _manContourControl_2->SetModelView( _mContourModel_2 , _mViewContour_2 );
194         _imageviewer2D_1->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _manContourControl_2 );
195         _manContourControl_2->CreateNewManualContour();
196         _manContourControl_2->SetActive(false);
197         _mViewContour_2->RefreshContour();
198
199 CreateNewPoint( 0,0);
200
201         Refresh();      
202 }
203
204
205 //----------------------------------------------------------------------------
206 //eedx21
207 void wxEmptyPanel_3_Widget::CreateNewPoint(double x, double y)
208 {
209 /*
210
211                 vtkSphereSource* aSphere =vtkSphereSource::New();
212         aSphere->SetRadius(0.2);
213         aSphere->SetCenter(x,y,0.5);
214
215         point_mapped.push_back(vtkPolyDataMapper::New());
216         point_mapped.back()->ImmediateModeRenderingOn();
217         //point_mapped.back()->ScalarVisibilityOff( );
218         point_mapped.back()->SetInput(aSphere->GetOutput());
219
220         point_actor.push_back(vtkActor::New());
221         point_actor.back()->SetMapper(point_mapped.back());
222         point_actor.back()->GetProperty()->BackfaceCullingOff();
223         point_actor.back()->GetProperty()->SetColor(0, 1, 0);
224
225         point_actor.back()->ApplyProperties();
226
227         _wxvtkbaseview->GetRenderer()->AddActor(point_actor.back());
228         _wxvtkbaseview->GetRenWin()->Render();
229 */
230
231 /*
232                 vtkActor                        *spheresActor   = vtkActor::New( );
233         vtkSphereSource         *spheres                = vtkSphereSource::New( );
234         vtkPolyDataMapper       *spheresMapper  = vtkPolyDataMapper::New( );
235         spheresMapper   -> SetInput( spheres->GetOutput( ) );
236         spheresActor    -> SetMapper( spheresMapper );
237                 _imageviewer2D_1 -> GetRenderer() -> AddActor( spheresActor );
238                 spheres->SetCenter( x,y,0 );
239                 spheres->SetRadius( 10 );
240 */
241
242         vtkSphereSource         *spheres                = vtkSphereSource::New( );
243                 spheres->SetCenter( x,y,0 );
244                 spheres->SetRadius( 5 );
245         vtkPolyDataMapper       *spheresMapper  = vtkPolyDataMapper::New( );
246                 spheresMapper   ->ImmediateModeRenderingOn();
247         spheresMapper   -> SetInput( spheres->GetOutput( ) );
248         vtkActor                        *spheresActor   = vtkActor::New( );
249         spheresActor    -> SetMapper( spheresMapper );
250         spheresActor    ->GetProperty()->BackfaceCullingOff();
251         spheresActor    ->GetProperty()->SetColor(0, 1, 0);
252         spheresActor    ->ApplyProperties();
253                 _imageviewer2D_1 -> GetRenderer() -> AddActor( spheresActor );
254
255
256 }
257
258
259
260
261 //------------------------------------------------------------------------
262 void wxEmptyPanel_3_Widget::OnContourA(wxCommandEvent& event)
263 {
264         _manRoiControl           -> SetActive(false);
265         _manContourControl_1 -> SetActive(true);
266         _manContourControl_2 -> SetActive(false);
267 }
268 //------------------------------------------------------------------------
269 void wxEmptyPanel_3_Widget::OnContourB(wxCommandEvent& event)
270 {
271         _manRoiControl           -> SetActive(false);
272         _manContourControl_1 -> SetActive(false);
273         _manContourControl_2 -> SetActive(true);
274 }
275 //------------------------------------------------------------------------
276 void wxEmptyPanel_3_Widget::OnContourAB(wxCommandEvent& event)
277 {
278         _manRoiControl           -> SetActive(false);
279         _manContourControl_1 -> SetActive(true);
280         _manContourControl_2 -> SetActive(true);
281 }
282 //------------------------------------------------------------------------
283