4 //EED 29Dic2006 Borrame prueba mara Michael
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>
20 #include "vtkSphereSource.h"
21 #include "vtkPolyDataMapper.h"
22 #include "vtkImageData.h"
23 #include "vtkImageCast.h"
25 #include "wxEmptyPanel_3_Widget.h"
29 #include <wx/splitter.h>
31 //-------------------------------------------------------------------
32 //-------------------------------------------------------------------
33 //-------------------------------------------------------------------
34 BEGIN_EVENT_TABLE( wxEmptyPanel_3_Widget, wxPanel )
35 EVT_MENU( 12121, wxEmptyPanel_3_Widget::OnRefreshView )
37 //-------------------------------------------------------------------
38 wxEmptyPanel_3_Widget::wxEmptyPanel_3_Widget(wxWindow *parent)
39 : wxPanel( parent, -1)
41 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL );
42 wxSplitterWindow *pnlSplitter = new wxSplitterWindow( this , -1);
43 wxPanel *viewPanel = CreateViewPanel(pnlSplitter);
44 wxPanel *controlPanel = CreateControlPanel(pnlSplitter);
46 sizer -> Add( pnlSplitter ,1,wxGROW ,0);
47 pnlSplitter -> SetMinimumPaneSize( 50 );
48 pnlSplitter -> SplitVertically( viewPanel, controlPanel );
49 this -> SetSizer(sizer);
53 //-------------------------------------------------------------------
54 wxEmptyPanel_3_Widget::~wxEmptyPanel_3_Widget(){
55 delete _imageviewer2D_1;
57 //-------------------------------------------------------------------
58 wxPanel* wxEmptyPanel_3_Widget::CreateViewPanel(wxWindow *parent)
60 wxPanel *panel = new wxPanel(parent,-1);
61 wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL);
63 _imageviewer2D_1 = new wxVtk2DBaseView(panel);
64 wxVTKRenderWindowInteractor *iren = _imageviewer2D_1->GetWxVTKRenderWindowInteractor();
65 sizer->Add(iren , 1, wxEXPAND, 0);
68 panel->SetSizer(sizer);
69 panel->SetAutoLayout(true);
70 panel->SetSize(400,400);
74 //-------------------------------------------------------------------
75 wxPanel* wxEmptyPanel_3_Widget::CreateControlPanel(wxWindow *parent)
78 wxPanel *panel = new wxPanel(parent,-1);
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"));
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);
92 panel->SetSizer(sizer);
93 panel->SetAutoLayout(true);
94 panel->SetSize(400,400);
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 );
101 //------------------------------------------------------------------------
102 void wxEmptyPanel_3_Widget::Refresh()
104 _imageviewer2D_1->Refresh();
106 //----------------------------------------------------------------------------
107 void wxEmptyPanel_3_Widget::OnRefreshView(wxCommandEvent & event)
113 //------------------------------------------------------------------------
115 void wxEmptyPanel_3_Widget::ConfigureVTK(marImageData *marimagedata)
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();
131 // vtkImageViewer2 *_imageViewer=_imageviewer2D_1->_imageViewer2XYZ->GetVtkImageViewer2();
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 );
144 _mViewContour_1->SetSpacing(spc);
148 _mViewContour_1->SetColorNormalContour(0, 0, 1);
149 _mViewContour_1->SetColorEditContour(0, 0.5, 0.5);
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();
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 );
168 _mViewRoi->SetSpacing(spc);
170 _manRoiControl->SetModelView( _mContourModel , _mViewRoi );
171 _imageviewer2D_1->GetInteractorStyleBaseView()->AddInteractorStyleMaracas( _manRoiControl );
172 _manRoiControl->CreateNewManualContour();
173 _manRoiControl->SetActive(true);
174 _mViewRoi->RefreshContour();
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 );
186 _mViewContour_2->SetSpacing(spc);
189 _mViewContour_2->SetColorNormalContour(1, 1, 1);
190 _mViewContour_2->SetColorEditContour(0.5, 0.5, 0.5);
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();
199 CreateNewPoint( 0,0);
205 //----------------------------------------------------------------------------
207 void wxEmptyPanel_3_Widget::CreateNewPoint(double x, double y)
211 vtkSphereSource* aSphere =vtkSphereSource::New();
212 aSphere->SetRadius(0.2);
213 aSphere->SetCenter(x,y,0.5);
215 point_mapped.push_back(vtkPolyDataMapper::New());
216 point_mapped.back()->ImmediateModeRenderingOn();
217 //point_mapped.back()->ScalarVisibilityOff( );
218 point_mapped.back()->SetInput(aSphere->GetOutput());
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);
225 point_actor.back()->ApplyProperties();
227 _wxvtkbaseview->GetRenderer()->AddActor(point_actor.back());
228 _wxvtkbaseview->GetRenWin()->Render();
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 );
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 );
261 //------------------------------------------------------------------------
262 void wxEmptyPanel_3_Widget::OnContourA(wxCommandEvent& event)
264 _manRoiControl -> SetActive(false);
265 _manContourControl_1 -> SetActive(true);
266 _manContourControl_2 -> SetActive(false);
268 //------------------------------------------------------------------------
269 void wxEmptyPanel_3_Widget::OnContourB(wxCommandEvent& event)
271 _manRoiControl -> SetActive(false);
272 _manContourControl_1 -> SetActive(false);
273 _manContourControl_2 -> SetActive(true);
275 //------------------------------------------------------------------------
276 void wxEmptyPanel_3_Widget::OnContourAB(wxCommandEvent& event)
278 _manRoiControl -> SetActive(false);
279 _manContourControl_1 -> SetActive(true);
280 _manContourControl_2 -> SetActive(true);
282 //------------------------------------------------------------------------