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->showOutlineBoxActor(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();
486 bool valueX = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleX();
487 bool valueY = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleY();
488 bool valueZ = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleZ();
489 bool valueXYZ = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleXYZ();
490 bool valuePlane = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisiblePlane();
491 mwxvtkmpr3Dview->VisibleImageActor( 0, valueX );
492 mwxvtkmpr3Dview->VisibleImageActor( 1, valueY );
493 mwxvtkmpr3Dview->VisibleImageActor( 2, valueZ );
494 mwxvtkmpr3Dview->VisiblePointWidget(valueXYZ);
495 mwxvtkmpr3Dview->VisiblePlaneWidget(valuePlane);
496 mwxvtkmpr3Dview->showOutlineBoxActor(true);
497 mwxvtkmpr3Dview->Refresh();
499 wxtabs->GetPage(id)->Disable();
500 mwxvtkmpr3Dview->VisiblePointWidget(false);
501 mwxvtkmpr3Dview->VisiblePlaneWidget(false);
502 mwxvtkmpr3Dview->VisibleImageActor(0, false );
503 mwxvtkmpr3Dview->VisibleImageActor(1, false );
504 mwxvtkmpr3Dview->VisibleImageActor(2, false );
505 mwxvtkmpr3Dview->showOutlineBoxActor(false);
506 mwxvtkmpr3Dview->Refresh();
507 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
508 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
509 #if wxMAJOR_VERSION <= 2
510 mwxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
512 mwxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
519 ** Sets color points values for the given volume rendering identified by parameter: volumeid
521 void wxMaracasRenderTabbedPanel::SetValuesColorPointsFunction(int volid, std::vector<double> greylevelcolors,std::vector<double> red,std::vector<double> green,std::vector<double> blue)
523 volmanager->setVolumeColor(volid, greylevelcolors, red, green, blue);
527 ** Sets points values for the given volume rendering identified by parameter: volumeid
529 void wxMaracasRenderTabbedPanel::SetValuesPointsFunction(int volid, std::vector<double> greylevel, std::vector<double> values)
532 volmanager->setVolumeOpacity(volid, greylevel, values);
536 wxString s( str,wxConvUTF8 );
537 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
544 ** Returns transfer function for the given volume rendering identified by parameter: volumeid
546 vtkPiecewiseFunction* wxMaracasRenderTabbedPanel::GetTransferFunction(int volumeid)
548 return volmanager->GetTransferFunction(volumeid);
552 ** Returns color function for the given volume rendering identified by parameter: volumeid
554 vtkColorTransferFunction* wxMaracasRenderTabbedPanel::GetColorFunction(int volumeid)
556 return volmanager->GetColorFunction(volumeid);
560 ** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
562 void wxMaracasRenderTabbedPanel::changeOpacityA(int _propid, int value)
564 surrendmanager1->changeOpacity(_propid,value);
568 ** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
570 void wxMaracasRenderTabbedPanel::changeIsoValueA(int propid, double value)
572 surrendmanager1->changeIsoValue(propid, value);
576 ** Changes color for the given surface rendering image identified by parameter: propid
578 void wxMaracasRenderTabbedPanel::changeColorA(int propid, double red, double green, double blue)
582 surrendmanager1->changeColor(propid, red, green, blue);
586 wxString s( str,wxConvUTF8 );
587 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
594 ** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
596 void wxMaracasRenderTabbedPanel::changeOpacityB(int _propid, int value)
598 surrendmanager2->changeOpacity(_propid,value);
602 ** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
604 void wxMaracasRenderTabbedPanel::changeIsoValueB(int propid, double value)
606 surrendmanager2->changeIsoValue(propid, value);
610 ** Changes color for the given surface rendering image identified by parameter: propid
612 void wxMaracasRenderTabbedPanel::changeColorB(int propid, double red, double green, double blue)
616 surrendmanager2->changeColor(propid, red, green, blue);
620 wxString s( str,wxConvUTF8 );
621 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
628 ** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
630 void wxMaracasRenderTabbedPanel::changeOpacityC(int _propid, int value)
632 surrendmanager3->changeOpacity(_propid,value);
636 ** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
638 void wxMaracasRenderTabbedPanel::changeIsoValueC(int propid, double value)
640 surrendmanager3->changeIsoValue(propid, value);
644 ** Changes color for the given surface rendering image identified by parameter: propid
646 void wxMaracasRenderTabbedPanel::changeColorC(int propid, double red, double green, double blue)
650 surrendmanager3->changeColor(propid, red, green, blue);
654 wxString s( str,wxConvUTF8 );
655 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
662 ** Method called when VolumeRendering checkbox status changes: Either shows or hides VolumeRendering image
664 void wxMaracasRenderTabbedPanel::onCheckBoxVChange(wxCommandEvent& event)
667 volmanager->addRemoveActor(this->getPropIdV(), checkboxVol->GetValue());
670 wxtabs->SetSelection(id);
672 if(checkboxVol->GetValue())
674 wxtabs->GetPage(id)->Enable();
678 wxtabs->GetPage(id)->Disable();
682 std::cout << "Exception : " << str << '\n';
683 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
690 ** Method called when SurfaceRendering A checkbox status changes: Either shows or hides SurfaceRendering image
692 void wxMaracasRenderTabbedPanel::onCheckBoxSAChange(wxCommandEvent& event)
695 surrendmanager1->addRemoveActor(this->getPropIdV(), checkboxSA->GetValue());
698 wxtabs->SetSelection(id);
700 if(checkboxSA->GetValue())
702 wxtabs->GetPage(id)->Enable();
707 wxtabs->GetPage(id)->Disable();
711 std::cout << "Exception : " << str << '\n';
712 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
719 ** Method called when SurfaceRendering B checkbox status changes: Either shows or hides SurfaceRendering B image
721 void wxMaracasRenderTabbedPanel::onCheckBoxSBChange(wxCommandEvent& event)
724 surrendmanager2->addRemoveActor(this->getPropIdV(), checkboxSB->GetValue());
727 wxtabs->SetSelection(id);
729 if(checkboxSB->GetValue())
731 wxtabs->GetPage(id)->Enable();
733 wxtabs->GetPage(id)->Disable();
737 std::cout << "Exception : " << str << '\n';
738 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
745 ** Method called when SurfaceRendering C checkbox status changes: Either shows or hides SurfaceRendering C image
747 void wxMaracasRenderTabbedPanel::onCheckBoxSCChange(wxCommandEvent& event)
750 surrendmanager3->addRemoveActor(this->getPropIdV(), checkboxSC->GetValue());
753 wxtabs->SetSelection(id);
755 if(checkboxSC->GetValue())
757 wxtabs->GetPage(id)->Enable();
761 wxtabs->GetPage(id)->Disable();
765 std::cout << "Exception : " << str << '\n';
766 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
773 ** Method called when MPR checkbox status changes: Either shows or hides actors
775 void wxMaracasRenderTabbedPanel::onMPROptions(wxCommandEvent& event)
777 addRemoveActorMPR(checkboxViewer->IsChecked());
780 wxtabs->SetSelection(id);
781 if(checkboxViewer->IsChecked())
784 wxtabs->GetPage(id)->Enable();
786 bool valueX = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleX();
787 bool valueY = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleY();
788 bool valueZ = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleZ();
789 bool valueXYZ = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleXYZ();
790 bool valuePlane = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisiblePlane();
792 mwxvtkmpr3Dview->VisibleImageActor( 0, valueX );
793 mwxvtkmpr3Dview->VisibleImageActor( 1, valueY );
794 mwxvtkmpr3Dview->VisibleImageActor( 2, valueZ );
795 mwxvtkmpr3Dview->VisiblePointWidget(valueXYZ);
796 mwxvtkmpr3Dview->VisiblePlaneWidget(valuePlane);
797 mwxvtkmpr3Dview->showOutlineActor(true);
799 mwxvtkmpr3Dview->Refresh();
805 wxtabs->GetPage(id)->Disable();
807 mwxvtkmpr3Dview->VisiblePointWidget(false);
808 mwxvtkmpr3Dview->VisiblePlaneWidget(false);
809 mwxvtkmpr3Dview->VisibleImageActor(0, false );
810 mwxvtkmpr3Dview->VisibleImageActor(1, false );
811 mwxvtkmpr3Dview->VisibleImageActor(2, false );
812 mwxvtkmpr3Dview->showOutlineActor(false);
813 mwxvtkmpr3Dview->Refresh();
815 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
816 mwxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
821 void wxMaracasRenderTabbedPanel::OnRefreshView(wxCommandEvent & event)
823 printf("CPR wxMaracasRenderTabbedPanel::OnRefreshView \n");
824 mwxvtkmpr3Dview->RefreshView();
825 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121); // Refresh
826 //EED 2017-09-16 Migration wxWidgets 2.8 to 3.0
827 #if wxMAJOR_VERSION <= 2
828 mwxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
830 mwxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessWindowEvent(newevent1);
837 void wxMaracasRenderTabbedPanel::onOpenParameters(wxCommandEvent& event){
840 dialog = new wxMaracasRenderImageManagementPanel(this, volmanager, surrendmanager1, surrendmanager2, surrendmanager3, volname, _id);
841 dialog->SetSize(460, 580);
844 else if(dialog != NULL)
853 void wxMaracasRenderTabbedPanel::onOpenCutter(wxCommandEvent& event)
855 vtkImageData* img = getVolImage();
856 std::vector<int> type;
862 wxMaracasDialog_NViewers* dialog1 = new wxMaracasDialog_NViewers(this, img, &type, wxString(_T("Cut Module") ));
863 //dialog1->SetSize(800, 700);
865 /**std::string path = crea::System::GetDllAppPath("bbcreaMaracasVisu.dll");
866 cutter = CutModelMainPanel::getInstance(dialog1->getinternalPanel(), path);
867 cutter->setRenderer( dialog1->getViewer()->GetwxVtkBaseView(1)->GetRenderer() );
868 cutter->setInteractor( dialog1->getViewer()->GetwxVtkBaseView(1)->GetWxVTKRenderWindowInteractor() );
869 cutter->setImageData(getVolImage());
871 //dialog1->AddPanel(cutter);
876 ** Gets volume rendering image asociated to the given ID
878 void wxMaracasRenderTabbedPanel::onColorChange(wxCommandEvent& event)
880 /*Temporarily disabled*/
882 //if(mwxwidget->ShowModal()==wxID_OK){
884 // mwxwidget->Show(false);
891 vtkImageData* wxMaracasRenderTabbedPanel::getVolImage()
893 return volmanager->getImageData();
897 ** Gets surface rendering A image asociated to the given ID
899 vtkImageData* wxMaracasRenderTabbedPanel::getSurfAImage()
901 return surrendmanager1->getImageData();
905 ** Gets surface rendering B image asociated to the given ID
907 vtkImageData* wxMaracasRenderTabbedPanel::getSurfBImage()
909 return surrendmanager2->getImageData();
913 ** Gets surface rendering C image asociated to the given ID
915 vtkImageData* wxMaracasRenderTabbedPanel::getSurfCImage()
917 return surrendmanager3->getImageData();
923 int wxMaracasRenderTabbedPanel::getPropIdV()