1 /*# ---------------------------------------------------------------------
3 # Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
5 # Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
6 # Previous Authors : Laurent Guigues, Jean-Pierre Roux
7 # CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
9 # This software is governed by the CeCILL-B license under French law and
10 # abiding by the rules of distribution of free software. You can use,
11 # modify and/ or redistribute the software under the terms of the CeCILL-B
12 # license as circulated by CEA, CNRS and INRIA at the following URL
13 # http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
14 # or in the file LICENSE.txt.
16 # As a counterpart to the access to the source code and rights to copy,
17 # modify and redistribute granted by the license, users are provided only
18 # with a limited warranty and the software's author, the holder of the
19 # economic rights, and the successive licensors have only limited
22 # The fact that you are presently reading this means that you have had
23 # knowledge of the CeCILL-B license and that you accept its terms.
24 # ------------------------------------------------------------------------ */
26 #include "wxMaracasRenderTabbedPanel.h"
28 #include "HistogramDialogComboBox.h"
29 #include "wxMaracasMultipleVolumeRendererPanel.h"
30 #include "wxMaracasSurfaceRenderingPanel.h"
31 #include "wxMaracasSurfaceRenderingProp3DMHD.h"
32 #include "volumerenderermanagerdata.h"
33 #include "wxMaracasDialog_NViewers.h"
34 #include "wxVtkMPR3DViewCntrlPanel.h"
36 #include <wx/colordlg.h>
37 #include <wx/button.h>
38 #include <vtkProp3D.h>
39 #include <OpenImage.xpm>
42 //#include "creaSystem.h"
46 BEGIN_EVENT_TABLE( wxMaracasRenderTabbedPanel, wxPanel )
47 EVT_MENU( 12121, wxMaracasRenderTabbedPanel::OnRefreshView )
48 //EVT_MENU( 12122, wxMaracasRenderTabbedPanel::OnDClickLeft )
54 wxMaracasRenderTabbedPanel::wxMaracasRenderTabbedPanel(wxWindow* parent, int id, wxVtk3DBaseView* _baseView)
55 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
61 volmanager = new VolumeRendererManager();
62 surrendmanager1 = new wxMaracasSurfaceRenderingManager();
63 surrendmanager2 = new wxMaracasSurfaceRenderingManager();
64 surrendmanager3 = new wxMaracasSurfaceRenderingManager();
70 wxMaracasRenderTabbedPanel::~wxMaracasRenderTabbedPanel()
72 //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorV(_propid, false);
73 //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSA(_propid, false);
74 //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSB(_propid, false);
75 //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSC(_propid, false);
76 addRemoveActorMPR(false);
77 if( vtkmpr3Ddataviewer ) { delete vtkmpr3Ddataviewer; }
78 if( mwxvtkmpr3Dview ) { delete mwxvtkmpr3Dview; }
80 this->deleteVolume(_id);
86 ** Initializes rendered images, and creates and adds elements to the panel
88 void wxMaracasRenderTabbedPanel::createControls(vtkImageData* inImg, std::string pathfile, std::string filename)
90 wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(1);
92 wxFlexGridSizer* sizercheck = new wxFlexGridSizer(3);
93 checkboxVol = new wxCheckBox(this,-1,wxString(_T("Volume Rendering")));
94 Connect(checkboxVol->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxVChange);
95 checkboxVol->SetValue(false);
96 sizercheck->Add(checkboxVol, wxFIXED_MINSIZE);
98 checkboxSA = new wxCheckBox(this,-1,wxString(_T("Surface Rendering A")));
99 Connect(checkboxSA->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSAChange);
100 checkboxSA->SetValue(false);
101 sizercheck->Add(checkboxSA, wxFIXED_MINSIZE);
103 checkboxViewer = new wxCheckBox(this,-1,wxString(_T("MPR")));
104 Connect(checkboxViewer->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onMPROptions);
105 checkboxViewer->SetValue(true);
106 sizercheck->Add(checkboxViewer, wxFIXED_MINSIZE);
108 checkboxSB = new wxCheckBox(this,-1,wxString(_T("Surface Rendering B")));
109 Connect(checkboxSB->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSBChange);
110 checkboxSB->SetValue(false);
111 sizercheck->Add(checkboxSB, wxFIXED_MINSIZE);
113 checkboxSC = new wxCheckBox(this,-1,wxString(_T("Surface Rendering C")));
114 Connect(checkboxSC->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSCChange);
115 checkboxSC->SetValue(false);
116 sizercheck->Add(checkboxSC, wxFIXED_MINSIZE);
118 sizercheck->Add(new wxStaticText(this, -1,_T("")), wxFIXED_MINSIZE);
120 wxButton* _openParameters = new wxButton(this, -1, wxString(_T("Apply Transformation")));
121 Connect(_openParameters->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onOpenParameters);
122 sizercheck->Add(_openParameters,wxFIXED_MINSIZE);
124 wxButton* _openCutter = new wxButton(this, -1, wxString(_T("Open Cutter View")));
125 Connect(_openCutter->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onOpenCutter);
126 sizercheck->Add(_openCutter,wxFIXED_MINSIZE);
127 sizerrenderprop->Add(sizercheck, wxFIXED_MINSIZE);
129 wxtabs = new wxNotebook(this, -1);
133 vtkImageData* img = volmanager->getImageData(pathfile);
134 //vtkImageData* img1 = surrendmanager1->getImageData(pathfile);
135 //vtkImageData* img2 = surrendmanager2->getImageData(pathfile);
136 //vtkImageData* img3 = surrendmanager3->getImageData(pathfile);
137 if(img!=NULL /*&& img1!=NULL && img2!=NULL && img3!=NULL*/)
139 addVolume(img, filename);
140 addSurface1(img, filename);
141 addSurface2(img, filename);
142 addSurface3(img, filename);
144 volname = crea::std2wx(filename);
150 addVolume(inImg, filename);
151 addSurface1(inImg, filename);
152 addSurface2(inImg, filename);
153 addSurface3(inImg, filename);
157 sizerrenderprop->Add(wxtabs, wxSizerFlags().Expand().Center());
159 this->SetSizer(sizerrenderprop, true);
160 this->SetAutoLayout( true );
165 ** Sets given renderer
167 void wxMaracasRenderTabbedPanel::setRenderer(vtkRenderer* renderer)
169 volmanager->setRenderer(renderer);
170 surrendmanager1->setRenderer(renderer);
171 surrendmanager2->setRenderer(renderer);
172 surrendmanager3->setRenderer(renderer);
176 ** Adds a volume using Volume Rendering
178 void wxMaracasRenderTabbedPanel::addVolume(vtkImageData* img, std::string dataname)
182 int _propidV = volmanager->addVolume(_id, img, dataname);
185 wxMaracasMultipleVolumeRendererPanel* controlpanV = new wxMaracasMultipleVolumeRendererPanel(wxtabs, _propidV, img, true);
186 wxtabs->AddPage(controlpanV, _T("Vol Rendering"), true);
187 controlpanV->updateVolume();
188 wxtabs->GetPage(0)->Disable();
190 volmanager->addRemoveActor(this->getPropIdV(), checkboxSC->GetValue());
195 std::cout << "Exception : " << str << '\n';
196 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
203 ** Adds a volume using surface rendering
205 void wxMaracasRenderTabbedPanel::addSurface1(vtkImageData* img, std::string dataname)
209 int _propidSA = surrendmanager1->addPropMHD(_id, img, dataname);
213 wxMaracasSurfaceRenderingPanel* controlpanSA = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSA, true, 1);
214 int maxiso = surrendmanager1->getMaxIsoValue(_propidSA);
215 ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSA)->createControls(maxiso);
216 wxtabs->AddPage(controlpanSA, _T("SR A"));
217 wxtabs->GetPage(1)->Disable();
219 surrendmanager1->addRemoveActor(this->getPropIdV(), checkboxSC->GetValue());
224 std::cout << "Exception : " << str << '\n';
225 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
232 ** Adds a volume using surface rendering
234 void wxMaracasRenderTabbedPanel::addSurface2(vtkImageData* img, std::string dataname)
238 int _propidSB = surrendmanager2->addPropMHD(_id, img, dataname);
241 wxMaracasSurfaceRenderingPanel* controlpanSB = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSB, true, 2);
242 int maxiso = surrendmanager2->getMaxIsoValue(_propidSB);
243 ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSB)->createControls(maxiso);
244 wxtabs->AddPage(controlpanSB, _T("SR B"));
245 wxtabs->GetPage(2)->Disable();
247 surrendmanager2->addRemoveActor(this->getPropIdV(), checkboxSC->GetValue());
253 std::cout << "Exception : " << str << '\n';
254 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
261 ** Adds a volume using Surface Rendering
263 void wxMaracasRenderTabbedPanel::addSurface3(vtkImageData* img, std::string dataname)
267 int _propidSC = surrendmanager3->addPropMHD(_id, img, dataname);
271 wxMaracasSurfaceRenderingPanel* controlpanSC = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSC, true, 3);
272 int maxiso = surrendmanager3->getMaxIsoValue(_propidSC);
273 ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSC)->createControls(maxiso);
274 wxtabs->AddPage(controlpanSC, _T("SR C"));
275 wxtabs->GetPage(3)->Disable();
277 surrendmanager3->addRemoveActor(this->getPropIdV(), checkboxSC->GetValue());
282 std::cout << "Exception : " << str << '\n';
283 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
292 void wxMaracasRenderTabbedPanel::addMPROptions()
295 vtkMPRBaseData* mvtkmprbasedata = new vtkMPRBaseData();
296 marImageData* marimagedata = new marImageData( getVolImage() );
297 mvtkmprbasedata ->SetMarImageData(marimagedata);
299 mwxvtkmpr3Dview = new wxVtkMPR3DView( baseView );
301 vtkmpr3Ddataviewer = new vtkMPR3DDataViewer();
303 wxPanel *panelControl = new wxPanel(wxtabs,-1);
304 controlPanelMPR3D = mwxvtkmpr3Dview->CreateControlPanel(panelControl, true);
306 wxFlexGridSizer *sizerCtrol = new wxFlexGridSizer(1);
307 sizerCtrol ->Add(controlPanelMPR3D, 1, wxALL|wxEXPAND, 2);
309 panelControl->SetAutoLayout(true);
310 panelControl->SetSizer(sizerCtrol);
311 panelControl->SetSize(400,350);
312 panelControl->Layout();
315 int x = 0,y = 0,z = 0;
324 double org[3],spc[3];
332 if (mvtkmprbasedata!=NULL)
334 mvtkmprbasedata->Configure();
335 /*x = mvtkmprbasedata -> GetMaxPositionX()/2;
336 y = mvtkmprbasedata -> GetMaxPositionY()/2;
337 z = mvtkmprbasedata -> GetMaxPositionZ()/2; */
339 if(mvtkmprbasedata->GetImageData() != NULL)
341 mvtkmprbasedata->GetImageData()->GetExtent(ext);
342 mvtkmprbasedata->GetImageData()->GetOrigin(org);
343 mvtkmprbasedata->GetImageData()->GetSpacing(spc);
345 x = (ext[0]+ext[1])/2;
346 y = (ext[2]+ext[3])/2;
347 z = (ext[4]+ext[5])/2;
349 mvtkmprbasedata->SetX( x );
350 mvtkmprbasedata->SetY( y );
351 mvtkmprbasedata->SetZ( z );
355 mvtkmprbasedata->SetX( 0 );
356 mvtkmprbasedata->SetY( 0 );
357 mvtkmprbasedata->SetZ( 0 );
363 baseView ->Configure();
366 if (vtkmpr3Ddataviewer !=NULL)
368 vtkmpr3Ddataviewer ->SetVtkMPRBaseData(mvtkmprbasedata);
369 vtkmpr3Ddataviewer ->Configure();
371 if (mwxvtkmpr3Dview !=NULL)
373 mwxvtkmpr3Dview ->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer);
374 mwxvtkmpr3Dview ->Configure();
376 mwxvtkmpr3Dview ->GetWxvtk3Dbaseview()->ResetCamera(ext ,spc);
377 vtkInteractorStyleBaseView* vtkInteractorBV = (vtkInteractorStyleBaseView*)mwxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetInteractorStyleBaseView();
378 vtkInteractorBV->AddParentToReport(this);
382 wxtabs->AddPage(panelControl, _T("MPR"));
383 wxtabs->GetPage(id)->Enable();
384 wxtabs->SetSelection(id);
386 ((wxVtkMPR3DViewCntrlPanel*)controlPanelMPR3D)->SetVisibleZ(true);
387 ((wxVtkMPR3DViewCntrlPanel*)controlPanelMPR3D)->SetVisibleXYZ(true);
388 mwxvtkmpr3Dview->showOutlineActor(true);
389 mwxvtkmpr3Dview->Refresh();
394 ** Deletes complete volume
396 void wxMaracasRenderTabbedPanel::deleteVolume(int volid)
400 volmanager->deleteActor(volid);
401 surrendmanager1->deleteActor(volid);
402 surrendmanager2->deleteActor(volid);
403 surrendmanager3->deleteActor(volid);
407 std::cout << "Exception : " << str << '\n';
408 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
415 ** Adds or removes volume rendering actor with given ID
417 void wxMaracasRenderTabbedPanel::addRemoveActorV(int id, bool addremove)
420 volmanager->addRemoveActor(id, addremove);
424 std::cout << "Exception : " << str << '\n';
425 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
432 ** Adds or removes surface rendering actor with given ID
434 void wxMaracasRenderTabbedPanel::addRemoveActorSA(int id, bool addremove)
437 surrendmanager1->addRemoveActor(id, addremove);
440 std::cout << "Exception : " << str << '\n';
441 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
448 ** Adds or removes surface rendering actor with given ID
450 void wxMaracasRenderTabbedPanel::addRemoveActorSB(int id, bool addremove)
453 surrendmanager2->addRemoveActor(id, addremove);
456 std::cout << "Exception : " << str << '\n';
457 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
464 ** Adds or removes surface rendering actor with given ID
466 void wxMaracasRenderTabbedPanel::addRemoveActorSC(int id, bool addremove)
469 surrendmanager3->addRemoveActor(id, addremove);
472 std::cout << "Exception : " << str << '\n';
473 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
479 void wxMaracasRenderTabbedPanel::addRemoveActorMPR(bool addremove)
482 wxtabs->SetSelection(id);
485 wxtabs->GetPage(id)->Enable();
487 bool valueX = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleX();
488 bool valueY = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleY();
489 bool valueZ = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleZ();
490 bool valueXYZ = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleXYZ();
491 bool valuePlane = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisiblePlane();
493 mwxvtkmpr3Dview->VisibleImageActor( 0, valueX );
494 mwxvtkmpr3Dview->VisibleImageActor( 1, valueY );
495 mwxvtkmpr3Dview->VisibleImageActor( 2, valueZ );
496 mwxvtkmpr3Dview->VisiblePointWidget(valueXYZ);
497 mwxvtkmpr3Dview->VisiblePlaneWidget(valuePlane);
498 mwxvtkmpr3Dview->showOutlineActor(true);
500 mwxvtkmpr3Dview->Refresh();
506 wxtabs->GetPage(id)->Disable();
508 mwxvtkmpr3Dview->VisiblePointWidget(false);
509 mwxvtkmpr3Dview->VisiblePlaneWidget(false);
510 mwxvtkmpr3Dview->VisibleImageActor(0, false );
511 mwxvtkmpr3Dview->VisibleImageActor(1, false );
512 mwxvtkmpr3Dview->VisibleImageActor(2, false );
513 mwxvtkmpr3Dview->showOutlineActor(false);
514 mwxvtkmpr3Dview->Refresh();
516 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
517 mwxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
523 ** Sets color points values for the given volume rendering identified by parameter: volumeid
525 void wxMaracasRenderTabbedPanel::SetValuesColorPointsFunction(int volid, std::vector<double> greylevelcolors,std::vector<double> red,std::vector<double> green,std::vector<double> blue)
527 volmanager->setVolumeColor(volid, greylevelcolors, red, green, blue);
531 ** Sets points values for the given volume rendering identified by parameter: volumeid
533 void wxMaracasRenderTabbedPanel::SetValuesPointsFunction(int volid, std::vector<double> greylevel, std::vector<double> values)
536 volmanager->setVolumeOpacity(volid, greylevel, values);
540 wxString s( str,wxConvUTF8 );
541 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
548 ** Returns transfer function for the given volume rendering identified by parameter: volumeid
550 vtkPiecewiseFunction* wxMaracasRenderTabbedPanel::GetTransferFunction(int volumeid)
552 return volmanager->GetTransferFunction(volumeid);
556 ** Returns color function for the given volume rendering identified by parameter: volumeid
558 vtkColorTransferFunction* wxMaracasRenderTabbedPanel::GetColorFunction(int volumeid)
560 return volmanager->GetColorFunction(volumeid);
564 ** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
566 void wxMaracasRenderTabbedPanel::changeOpacityA(int _propid, int value)
568 surrendmanager1->changeOpacity(_propid,value);
572 ** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
574 void wxMaracasRenderTabbedPanel::changeIsoValueA(int propid, double value)
576 surrendmanager1->changeIsoValue(propid, value);
580 ** Changes color for the given surface rendering image identified by parameter: propid
582 void wxMaracasRenderTabbedPanel::changeColorA(int propid, double red, double green, double blue)
586 surrendmanager1->changeColor(propid, red, green, blue);
590 wxString s( str,wxConvUTF8 );
591 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
598 ** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
600 void wxMaracasRenderTabbedPanel::changeOpacityB(int _propid, int value)
602 surrendmanager2->changeOpacity(_propid,value);
606 ** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
608 void wxMaracasRenderTabbedPanel::changeIsoValueB(int propid, double value)
610 surrendmanager2->changeIsoValue(propid, value);
614 ** Changes color for the given surface rendering image identified by parameter: propid
616 void wxMaracasRenderTabbedPanel::changeColorB(int propid, double red, double green, double blue)
620 surrendmanager2->changeColor(propid, red, green, blue);
624 wxString s( str,wxConvUTF8 );
625 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
632 ** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
634 void wxMaracasRenderTabbedPanel::changeOpacityC(int _propid, int value)
636 surrendmanager3->changeOpacity(_propid,value);
640 ** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
642 void wxMaracasRenderTabbedPanel::changeIsoValueC(int propid, double value)
644 surrendmanager3->changeIsoValue(propid, value);
648 ** Changes color for the given surface rendering image identified by parameter: propid
650 void wxMaracasRenderTabbedPanel::changeColorC(int propid, double red, double green, double blue)
654 surrendmanager3->changeColor(propid, red, green, blue);
658 wxString s( str,wxConvUTF8 );
659 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
666 ** Method called when VolumeRendering checkbox status changes: Either shows or hides VolumeRendering image
668 void wxMaracasRenderTabbedPanel::onCheckBoxVChange(wxCommandEvent& event)
671 volmanager->addRemoveActor(this->getPropIdV(), checkboxVol->GetValue());
674 wxtabs->SetSelection(id);
676 if(checkboxVol->GetValue())
678 wxtabs->GetPage(id)->Enable();
682 wxtabs->GetPage(id)->Disable();
686 std::cout << "Exception : " << str << '\n';
687 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
694 ** Method called when SurfaceRendering A checkbox status changes: Either shows or hides SurfaceRendering image
696 void wxMaracasRenderTabbedPanel::onCheckBoxSAChange(wxCommandEvent& event)
699 surrendmanager1->addRemoveActor(this->getPropIdV(), checkboxSA->GetValue());
702 wxtabs->SetSelection(id);
704 if(checkboxSA->GetValue())
706 wxtabs->GetPage(id)->Enable();
711 wxtabs->GetPage(id)->Disable();
715 std::cout << "Exception : " << str << '\n';
716 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
723 ** Method called when SurfaceRendering B checkbox status changes: Either shows or hides SurfaceRendering B image
725 void wxMaracasRenderTabbedPanel::onCheckBoxSBChange(wxCommandEvent& event)
728 surrendmanager2->addRemoveActor(this->getPropIdV(), checkboxSB->GetValue());
731 wxtabs->SetSelection(id);
733 if(checkboxSB->GetValue())
735 wxtabs->GetPage(id)->Enable();
739 wxtabs->GetPage(id)->Disable();
743 std::cout << "Exception : " << str << '\n';
744 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
751 ** Method called when SurfaceRendering C checkbox status changes: Either shows or hides SurfaceRendering C image
753 void wxMaracasRenderTabbedPanel::onCheckBoxSCChange(wxCommandEvent& event)
756 surrendmanager3->addRemoveActor(this->getPropIdV(), checkboxSC->GetValue());
759 wxtabs->SetSelection(id);
761 if(checkboxSC->GetValue())
763 wxtabs->GetPage(id)->Enable();
767 wxtabs->GetPage(id)->Disable();
771 std::cout << "Exception : " << str << '\n';
772 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
779 ** Method called when MPR checkbox status changes: Either shows or hides actors
781 void wxMaracasRenderTabbedPanel::onMPROptions(wxCommandEvent& event)
783 addRemoveActorMPR(checkboxViewer->IsChecked());
786 wxtabs->SetSelection(id);
787 if(checkboxViewer->IsChecked())
790 wxtabs->GetPage(id)->Enable();
792 bool valueX = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleX();
793 bool valueY = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleY();
794 bool valueZ = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleZ();
795 bool valueXYZ = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleXYZ();
796 bool valuePlane = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisiblePlane();
798 mwxvtkmpr3Dview->VisibleImageActor( 0, valueX );
799 mwxvtkmpr3Dview->VisibleImageActor( 1, valueY );
800 mwxvtkmpr3Dview->VisibleImageActor( 2, valueZ );
801 mwxvtkmpr3Dview->VisiblePointWidget(valueXYZ);
802 mwxvtkmpr3Dview->VisiblePlaneWidget(valuePlane);
803 mwxvtkmpr3Dview->showOutlineActor(true);
805 mwxvtkmpr3Dview->Refresh();
811 wxtabs->GetPage(id)->Disable();
813 mwxvtkmpr3Dview->VisiblePointWidget(false);
814 mwxvtkmpr3Dview->VisiblePlaneWidget(false);
815 mwxvtkmpr3Dview->VisibleImageActor(0, false );
816 mwxvtkmpr3Dview->VisibleImageActor(1, false );
817 mwxvtkmpr3Dview->VisibleImageActor(2, false );
818 mwxvtkmpr3Dview->showOutlineActor(false);
819 mwxvtkmpr3Dview->Refresh();
821 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
822 mwxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
826 void wxMaracasRenderTabbedPanel::OnRefreshView(wxCommandEvent & event)
828 printf("CPR wxMaracasRenderTabbedPanel::OnRefreshView \n");
829 mwxvtkmpr3Dview->RefreshView();
831 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
832 mwxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
838 void wxMaracasRenderTabbedPanel::onOpenParameters(wxCommandEvent& event){
841 dialog = new wxMaracasRenderImageManagementPanel(this, volmanager, surrendmanager1, surrendmanager2, surrendmanager3, volname, _id);
842 dialog->SetSize(460, 580);
845 else if(dialog != NULL)
854 void wxMaracasRenderTabbedPanel::onOpenCutter(wxCommandEvent& event)
856 vtkImageData* img = getVolImage();
857 std::vector<int> type;
863 wxMaracasDialog_NViewers* dialog1 = new wxMaracasDialog_NViewers(this, img, &type, wxString(_T("Cut Module") ));
864 //dialog1->SetSize(800, 700);
866 /**std::string path = crea::System::GetDllAppPath("bbcreaMaracasVisu.dll");
867 cutter = CutModelMainPanel::getInstance(dialog1->getinternalPanel(), path);
868 cutter->setRenderer( dialog1->getViewer()->GetwxVtkBaseView(1)->GetRenderer() );
869 cutter->setInteractor( dialog1->getViewer()->GetwxVtkBaseView(1)->GetWxVTKRenderWindowInteractor() );
870 cutter->setImageData(getVolImage());
872 //dialog1->AddPanel(cutter);
877 ** Gets volume rendering image asociated to the given ID
879 void wxMaracasRenderTabbedPanel::onColorChange(wxCommandEvent& event)
881 /*Temporarily disabled*/
883 //if(mwxwidget->ShowModal()==wxID_OK){
885 // mwxwidget->Show(false);
892 vtkImageData* wxMaracasRenderTabbedPanel::getVolImage()
894 return volmanager->getImageData();
898 ** Gets surface rendering A image asociated to the given ID
900 vtkImageData* wxMaracasRenderTabbedPanel::getSurfAImage()
902 return surrendmanager1->getImageData();
906 ** Gets surface rendering B image asociated to the given ID
908 vtkImageData* wxMaracasRenderTabbedPanel::getSurfBImage()
910 return surrendmanager2->getImageData();
914 ** Gets surface rendering C image asociated to the given ID
916 vtkImageData* wxMaracasRenderTabbedPanel::getSurfCImage()
918 return surrendmanager3->getImageData();
924 int wxMaracasRenderTabbedPanel::getPropIdV()