]> Creatis software - creaMaracasVisu.git/blob - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRenderTabbedPanel.cpp
no message
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracasRenderTabbedPanel.cpp
1 #include "wxMaracasRenderTabbedPanel.h"
2
3 #include "HistogramDialogComboBox.h"
4 #include "wxMaracasMultipleVolumeRendererPanel.h"
5 #include "wxMaracasSurfaceRenderingPanel.h"
6 #include "wxMaracasSurfaceRenderingProp3DMHD.h"
7 #include "wxMaracasMultipleVolumeRendererManagerData.h"
8 #include "wxMaracasDialog_NViewers.h"
9 #include "wxVtkMPR3DViewCntrlPanel.h"
10
11 #include <wx/colordlg.h>
12 #include <wx/button.h> 
13 #include <vtkProp3D.h>
14 #include <OpenImage.xpm>
15
16 #include "Color.xpm"
17 //#include "creaSystem.h"
18
19 #include "creaWx.h"
20
21         BEGIN_EVENT_TABLE( wxMaracasRenderTabbedPanel, wxPanel )
22                 EVT_MENU( 12121, wxMaracasRenderTabbedPanel::OnRefreshView )
23                 //EVT_MENU( 12122, wxMaracasRenderTabbedPanel::OnDClickLeft  )
24         END_EVENT_TABLE( );
25
26 /**
27 ** Class constructor
28 **/
29 wxMaracasRenderTabbedPanel::wxMaracasRenderTabbedPanel(wxWindow* parent, int id, wxVtk3DBaseView* _baseView)
30   : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
31 {
32         _id = id;
33         baseView = _baseView;
34         dialog = NULL;
35
36         volmanager =      new wxMaracasMultipleVolumeRendererManager();
37         surrendmanager1 = new wxMaracasSurfaceRenderingManager();
38         surrendmanager2 = new wxMaracasSurfaceRenderingManager();
39         surrendmanager3 = new wxMaracasSurfaceRenderingManager();
40 }
41
42 /**
43 ** Class Destructor
44 **/
45 wxMaracasRenderTabbedPanel::~wxMaracasRenderTabbedPanel()
46 {       
47         //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorV(_propid, false);
48         //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSA(_propid, false);
49         //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSB(_propid, false);
50         //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSC(_propid, false);
51         addRemoveActorMPR(false);
52         if( vtkmpr3Ddataviewer  )   { delete vtkmpr3Ddataviewer; }
53         if( mwxvtkmpr3Dview     )   { delete mwxvtkmpr3Dview;    }
54
55         this->deleteVolume(_id);
56         delete dialog;
57         delete wxtabs;
58 }
59
60 /**
61 ** Initializes rendered images, and creates and adds elements to the panel
62 **/
63 void wxMaracasRenderTabbedPanel::createControls(vtkImageData* inImg, std::string pathfile, std::string filename)
64 {
65         wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(1);
66
67         wxFlexGridSizer* sizercheck = new wxFlexGridSizer(3);
68         checkboxVol = new  wxCheckBox(this,-1,wxString(_T("Volume Rendering")));
69         Connect(checkboxVol->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxVChange);   
70         checkboxVol->SetValue(false);   
71         sizercheck->Add(checkboxVol, wxFIXED_MINSIZE);
72
73         checkboxSA = new  wxCheckBox(this,-1,wxString(_T("Surface Rendering A")));
74         Connect(checkboxSA->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSAChange);   
75         checkboxSA->SetValue(false);    
76         sizercheck->Add(checkboxSA, wxFIXED_MINSIZE);   
77
78         checkboxViewer = new  wxCheckBox(this,-1,wxString(_T("MPR")));
79         Connect(checkboxViewer->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onMPROptions);     
80         checkboxViewer->SetValue(true);
81         sizercheck->Add(checkboxViewer, wxFIXED_MINSIZE);
82
83         checkboxSB = new  wxCheckBox(this,-1,wxString(_T("Surface Rendering B")));
84         Connect(checkboxSB->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSBChange);   
85         checkboxSB->SetValue(false);    
86         sizercheck->Add(checkboxSB, wxFIXED_MINSIZE);
87
88         checkboxSC = new  wxCheckBox(this,-1,wxString(_T("Surface Rendering C")));
89         Connect(checkboxSC->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSCChange);   
90         checkboxSC->SetValue(false);    
91         sizercheck->Add(checkboxSC, wxFIXED_MINSIZE);
92         
93         sizercheck->Add(new wxStaticText(this, -1,_T("")), wxFIXED_MINSIZE);
94
95         wxButton* _openParameters = new wxButton(this, -1, wxString(_T("Apply Transformation")));       
96         Connect(_openParameters->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onOpenParameters);                  
97         sizercheck->Add(_openParameters,wxFIXED_MINSIZE);
98
99         wxButton* _openCutter = new wxButton(this, -1, wxString(_T("Open Cutter View")));       
100         Connect(_openCutter->GetId(), wxEVT_COMMAND_BUTTON_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onOpenCutter);                  
101         sizercheck->Add(_openCutter,wxFIXED_MINSIZE);
102         sizerrenderprop->Add(sizercheck, wxFIXED_MINSIZE);
103
104         wxtabs = new wxNotebook(this, -1);
105
106         if(inImg == NULL)
107         {
108                 vtkImageData* img = volmanager->getImageData(pathfile);
109                 //vtkImageData* img1 = surrendmanager1->getImageData(pathfile);
110                 //vtkImageData* img2 = surrendmanager2->getImageData(pathfile);
111                 //vtkImageData* img3 = surrendmanager3->getImageData(pathfile);
112                 if(img!=NULL /*&& img1!=NULL && img2!=NULL && img3!=NULL*/)
113                 {
114                         addVolume(img,   filename);
115                         addSurface1(img, filename);
116                         addSurface2(img, filename);
117                         addSurface3(img, filename);     
118                         addMPROptions();
119 <<<<<<< wxMaracasRenderTabbedPanel.cpp
120 //                      volname = (wxString) filename;
121                         volname = wxString(filename.c_str(),wxConvUTF8);
122 =======
123                         volname = crea::std2wx(filename);
124 >>>>>>> 1.16
125                         wxtabs->Refresh();
126                 }
127         }       
128         else
129         {
130                 addVolume(inImg, filename);
131                 addSurface1(inImg, filename);
132                 addSurface2(inImg, filename);
133                 addSurface3(inImg, filename);   
134                 wxtabs->Refresh();
135         }
136
137         sizerrenderprop->Add(wxtabs, wxSizerFlags().Expand().Center());
138
139         this->SetSizer(sizerrenderprop, true);          
140         this->SetAutoLayout( true );
141 }
142
143
144 /**
145 ** Sets given renderer
146 **/
147 void wxMaracasRenderTabbedPanel::setRenderer(vtkRenderer* renderer)
148 {
149         volmanager->setRenderer(renderer);
150         surrendmanager1->setRenderer(renderer);
151         surrendmanager2->setRenderer(renderer);
152         surrendmanager3->setRenderer(renderer);
153 }
154
155 /**
156 ** Adds a volume using Volume Rendering
157 **/
158 void wxMaracasRenderTabbedPanel::addVolume(vtkImageData* img, std::string dataname)
159 {
160         try
161         {
162                 int _propidV = volmanager->addVolume(_id, img, dataname);
163                 if(_propidV!=-1)
164                 {
165                         wxMaracasMultipleVolumeRendererPanel* controlpanV = new wxMaracasMultipleVolumeRendererPanel(wxtabs, _propidV, img, true);
166                         wxtabs->AddPage(controlpanV, _T("Vol Rendering"), true);
167                         controlpanV->updateVolume();
168                         wxtabs->GetPage(0)->Disable();
169
170                         volmanager->addRemoveActor(this->getPropIdV(), checkboxSC->GetValue());
171                 }
172         }
173         catch(char* str)
174         {
175                 std::cout << "Exception : " << str << '\n';
176                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
177                 diag->ShowModal();
178                 delete diag;
179         }
180 }
181
182 /**
183 ** Adds a volume using surface rendering
184 **/
185 void wxMaracasRenderTabbedPanel::addSurface1(vtkImageData* img, std::string dataname)
186 {
187         try
188         {
189                 int _propidSA = surrendmanager1->addPropMHD(_id, img, dataname);
190                 
191                 if(_propidSA!=-1)
192                 {
193                         wxMaracasSurfaceRenderingPanel* controlpanSA = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSA, true, 1);
194                         int maxiso = surrendmanager1->getMaxIsoValue(_propidSA);
195                         ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSA)->createControls(maxiso);
196                         wxtabs->AddPage(controlpanSA, _T("SR A"));
197                         wxtabs->GetPage(1)->Disable();
198
199                         surrendmanager1->addRemoveActor(this->getPropIdV(), checkboxSC->GetValue());
200                 }
201         }
202         catch(char* str)
203         {
204                 std::cout << "Exception : " << str << '\n';
205                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
206                 diag->ShowModal();
207                 delete diag;
208         }
209 }
210
211 /**
212 ** Adds a volume using surface rendering
213 **/
214 void wxMaracasRenderTabbedPanel::addSurface2(vtkImageData* img, std::string dataname)
215 {
216         try
217         {
218                 int _propidSB = surrendmanager2->addPropMHD(_id, img, dataname);
219                 if(_propidSB!=-1)
220                 {
221                         wxMaracasSurfaceRenderingPanel* controlpanSB = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSB, true, 2);
222                         int maxiso = surrendmanager2->getMaxIsoValue(_propidSB);
223                         ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSB)->createControls(maxiso);
224                         wxtabs->AddPage(controlpanSB, _T("SR B"));
225                         wxtabs->GetPage(2)->Disable();
226
227                         surrendmanager2->addRemoveActor(this->getPropIdV(), checkboxSC->GetValue());
228
229                 }
230         }
231         catch(char* str)
232         {
233                 std::cout << "Exception : " << str << '\n';
234                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
235                 diag->ShowModal();
236                 delete diag;
237         }
238 }
239
240 /**
241 ** Adds a volume using Surface Rendering
242 **/
243 void wxMaracasRenderTabbedPanel::addSurface3(vtkImageData* img, std::string dataname)
244 {
245         try
246         {
247                 int _propidSC = surrendmanager3->addPropMHD(_id, img, dataname);
248
249                 if(_propidSC!=-1)
250                 {
251                         wxMaracasSurfaceRenderingPanel* controlpanSC = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSC, true, 3);
252                         int maxiso = surrendmanager3->getMaxIsoValue(_propidSC);
253                         ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSC)->createControls(maxiso);
254                         wxtabs->AddPage(controlpanSC, _T("SR C"));
255                         wxtabs->GetPage(3)->Disable();
256
257                         surrendmanager3->addRemoveActor(this->getPropIdV(), checkboxSC->GetValue());
258                 }
259         }
260         catch(char* str)
261         {
262                 std::cout << "Exception : " << str << '\n';
263                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
264                 diag->ShowModal();
265                 delete diag;
266         }
267 }
268
269 /**
270 **
271 **/
272 void wxMaracasRenderTabbedPanel::addMPROptions()
273 {
274         //Panel Construction
275         vtkMPRBaseData* mvtkmprbasedata = new vtkMPRBaseData(); 
276         marImageData*   marimagedata    = new marImageData( getVolImage() );                    
277         mvtkmprbasedata                                 ->SetMarImageData(marimagedata);
278         
279         mwxvtkmpr3Dview                                 = new wxVtkMPR3DView( baseView );
280
281         vtkmpr3Ddataviewer                              = new vtkMPR3DDataViewer();     
282
283         wxPanel                 *panelControl   = new wxPanel(wxtabs,-1);       
284         controlPanelMPR3D                               = mwxvtkmpr3Dview->CreateControlPanel(panelControl, true);
285
286         wxFlexGridSizer *sizerCtrol             = new wxFlexGridSizer(1);
287         sizerCtrol                                              ->Add(controlPanelMPR3D, 1, wxALL|wxEXPAND, 2);
288
289         panelControl->SetAutoLayout(true);
290         panelControl->SetSizer(sizerCtrol);
291         panelControl->SetSize(400,350);
292         panelControl->Layout();
293
294         //Configure MPR
295         int x = 0,y = 0,z = 0;
296         int ext[6];
297         ext[0] = 0;
298         ext[1] = 0;
299         ext[2] = 0;
300         ext[3] = 0;
301         ext[4] = 0;
302         ext[5] = 0;
303
304         double org[3],spc[3];
305         org[0] = 0;
306         org[1] = 0;
307         org[2] = 0;
308         spc[0] = 0;
309         spc[1] = 0;
310         spc[2] = 0;
311
312         if (mvtkmprbasedata!=NULL)
313         {
314                 mvtkmprbasedata->Configure();
315                 /*x = mvtkmprbasedata   ->      GetMaxPositionX()/2;
316                 y = mvtkmprbasedata     ->      GetMaxPositionY()/2;
317                 z = mvtkmprbasedata     ->      GetMaxPositionZ()/2;            */      
318                 
319                 if(mvtkmprbasedata->GetImageData() != NULL)
320                 {
321                         mvtkmprbasedata->GetImageData()->GetExtent(ext);
322                         mvtkmprbasedata->GetImageData()->GetOrigin(org);
323                         mvtkmprbasedata->GetImageData()->GetSpacing(spc);
324
325                         x = (ext[0]+ext[1])/2;
326                         y = (ext[2]+ext[3])/2;
327                         z = (ext[4]+ext[5])/2;
328
329                         mvtkmprbasedata->SetX( x );
330                         mvtkmprbasedata->SetY( y );
331                         mvtkmprbasedata->SetZ( z );
332                 }
333                 else
334                 {
335                         mvtkmprbasedata->SetX( 0 );
336                         mvtkmprbasedata->SetY( 0 );
337                         mvtkmprbasedata->SetZ( 0 );
338                 }
339         }
340
341         if (baseView!=NULL)     
342         {
343                 baseView                        ->Configure();  
344         }
345
346         if (vtkmpr3Ddataviewer  !=NULL) 
347         {
348                 vtkmpr3Ddataviewer      ->SetVtkMPRBaseData(mvtkmprbasedata);
349                 vtkmpr3Ddataviewer      ->Configure();
350         }
351         if (mwxvtkmpr3Dview     !=NULL) 
352         { 
353                 mwxvtkmpr3Dview         ->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer);            
354                 mwxvtkmpr3Dview         ->Configure();
355                 mwxvtkmpr3Dview         ->ResetCamera(ext,org,spc);
356                 vtkInteractorStyleBaseView* vtkInteractorBV = (vtkInteractorStyleBaseView*)mwxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetInteractorStyleBaseView();
357                 vtkInteractorBV->AddParentToReport(this);
358         }
359
360         int id = 4;
361         wxtabs->AddPage(panelControl, _T("MPR"));
362         wxtabs->GetPage(id)->Enable();
363         wxtabs->SetSelection(id);
364
365         ((wxVtkMPR3DViewCntrlPanel*)controlPanelMPR3D)->SetVisibleZ(true);
366         ((wxVtkMPR3DViewCntrlPanel*)controlPanelMPR3D)->SetVisibleXYZ(true);
367         mwxvtkmpr3Dview->showOutlineActor(true);
368         mwxvtkmpr3Dview->Refresh();
369                         
370 }
371
372 /**
373 ** Deletes complete volume
374 **/
375 void wxMaracasRenderTabbedPanel::deleteVolume(int volid)
376 {
377         try
378         {
379                 volmanager->deleteActor(volid);
380                 surrendmanager1->deleteActor(volid);
381                 surrendmanager2->deleteActor(volid);
382                 surrendmanager3->deleteActor(volid);
383         }
384         catch(char* str)
385         {
386                 std::cout << "Exception : " << str << '\n';
387                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
388                 diag->ShowModal();
389                 delete diag;
390         }
391 }
392
393 /**
394 ** Adds or removes volume rendering actor with given ID
395 **/
396 void wxMaracasRenderTabbedPanel::addRemoveActorV(int id, bool addremove)
397 {
398         try{
399                 volmanager->addRemoveActor(id, addremove);
400
401         }
402         catch(char* str){
403                 std::cout << "Exception : " << str << '\n';
404                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
405                 diag->ShowModal();
406                 delete diag;
407         }
408 }
409
410 /**
411 ** Adds or removes surface rendering actor with given ID
412 **/
413 void wxMaracasRenderTabbedPanel::addRemoveActorSA(int id, bool addremove)
414 {
415         try{
416                 surrendmanager1->addRemoveActor(id, addremove);
417         }
418         catch(char* str){
419                 std::cout << "Exception : " << str << '\n';
420                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
421                 diag->ShowModal();
422                 delete diag;
423         }
424 }
425
426 /**
427 ** Adds or removes surface rendering actor with given ID
428 **/
429 void wxMaracasRenderTabbedPanel::addRemoveActorSB(int id, bool addremove)
430 {
431         try{
432                 surrendmanager2->addRemoveActor(id, addremove);
433         }
434         catch(char* str){
435                 std::cout << "Exception : " << str << '\n';
436                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
437                 diag->ShowModal();
438                 delete diag;
439         }
440 }
441
442 /**
443 ** Adds or removes surface rendering actor with given ID
444 **/
445 void wxMaracasRenderTabbedPanel::addRemoveActorSC(int id, bool addremove)
446 {       
447         try{
448                 surrendmanager3->addRemoveActor(id, addremove);
449         }
450         catch(char* str){
451                 std::cout << "Exception : " << str << '\n';
452                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
453                 diag->ShowModal();
454                 delete diag;
455         }
456 }
457
458 void wxMaracasRenderTabbedPanel::addRemoveActorMPR(bool addremove)
459 {
460         int id = 4;
461         wxtabs->SetSelection(id);
462         if(addremove)
463         {
464                 wxtabs->GetPage(id)->Enable();
465
466                 bool valueX = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleX();
467                 bool valueY = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleY();
468                 bool valueZ = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleZ();
469                 bool valueXYZ = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleXYZ();
470                 bool valuePlane = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisiblePlane();
471
472                 mwxvtkmpr3Dview->VisibleImageActor( 0, valueX );
473                 mwxvtkmpr3Dview->VisibleImageActor( 1, valueY );
474                 mwxvtkmpr3Dview->VisibleImageActor( 2, valueZ );
475                 mwxvtkmpr3Dview->VisiblePointWidget(valueXYZ);
476                 mwxvtkmpr3Dview->VisiblePlaneWidget(valuePlane);
477                 mwxvtkmpr3Dview->showOutlineActor(true);
478                 
479                 mwxvtkmpr3Dview->Refresh();
480
481
482         }
483         else
484         {
485                 wxtabs->GetPage(id)->Disable();
486
487                 mwxvtkmpr3Dview->VisiblePointWidget(false);
488                 mwxvtkmpr3Dview->VisiblePlaneWidget(false);
489                 mwxvtkmpr3Dview->VisibleImageActor(0, false );
490                 mwxvtkmpr3Dview->VisibleImageActor(1, false );
491                 mwxvtkmpr3Dview->VisibleImageActor(2, false );
492                 mwxvtkmpr3Dview->showOutlineActor(false);
493                 mwxvtkmpr3Dview->Refresh();
494
495                 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
496                 mwxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
497         }
498 }
499
500
501 /**
502 ** Sets color points values for the given volume rendering identified by parameter: volumeid
503 **/
504 void wxMaracasRenderTabbedPanel::SetValuesColorPointsFunction(int volid, std::vector<double> greylevelcolors,std::vector<double> red,std::vector<double> green,std::vector<double> blue)
505 {
506         volmanager->setVolumeColor(volid, greylevelcolors, red, green, blue);
507 }
508
509 /**
510 ** Sets points values for the given volume rendering identified by parameter: volumeid
511 **/
512 void wxMaracasRenderTabbedPanel::SetValuesPointsFunction(int volid, std::vector<double> greylevel, std::vector<double> values)
513 {
514         try{
515                 volmanager->setVolumeOpacity(volid, greylevel, values);
516         }
517         catch(char* str)
518         {
519                 wxString s( str,wxConvUTF8 );
520                 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
521                 diag->ShowModal();
522                 delete diag;
523         }
524 }
525
526 /**
527 ** Returns transfer function for the given volume rendering identified by parameter: volumeid
528 **/
529 vtkPiecewiseFunction* wxMaracasRenderTabbedPanel::GetTransferFunction(int volumeid)
530 {
531         return volmanager->GetTransferFunction(volumeid);
532 }
533
534 /**
535 ** Returns color function for the given volume rendering identified by parameter: volumeid
536 **/
537 vtkColorTransferFunction* wxMaracasRenderTabbedPanel::GetColorFunction(int volumeid)
538 {
539     return volmanager->GetColorFunction(volumeid);
540 }
541
542 /**
543 ** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
544 **/
545 void wxMaracasRenderTabbedPanel::changeOpacityA(int _propid, int value)
546 {
547         surrendmanager1->changeOpacity(_propid,value);
548 }
549
550 /**
551 ** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
552 **/
553 void wxMaracasRenderTabbedPanel::changeIsoValueA(int propid, double value)
554 {
555         surrendmanager1->changeIsoValue(propid, value);
556 }
557
558 /**
559 ** Changes color for the given surface rendering image identified by parameter: propid
560 **/
561 void wxMaracasRenderTabbedPanel::changeColorA(int propid, double red, double green, double blue)
562 {
563         try
564         {
565                 surrendmanager1->changeColor(propid, red, green, blue);
566         }
567         catch(char* str)
568         {
569                 wxString s( str,wxConvUTF8 );
570                 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
571                 diag->ShowModal();
572                 delete diag;
573         }
574 }
575
576 /**
577 ** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
578 **/
579 void wxMaracasRenderTabbedPanel::changeOpacityB(int _propid, int value)
580 {
581         surrendmanager2->changeOpacity(_propid,value);
582 }
583
584 /**
585 ** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
586 **/
587 void wxMaracasRenderTabbedPanel::changeIsoValueB(int propid, double value)
588 {
589         surrendmanager2->changeIsoValue(propid, value);
590 }
591
592 /**
593 ** Changes color for the given surface rendering image identified by parameter: propid
594 **/
595 void wxMaracasRenderTabbedPanel::changeColorB(int propid, double red, double green, double blue)
596 {
597         try
598         {
599                 surrendmanager2->changeColor(propid, red, green, blue);
600         }
601         catch(char* str)
602         {
603                 wxString s( str,wxConvUTF8 );
604                 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
605                 diag->ShowModal();
606                 delete diag;
607         }
608 }
609
610 /**
611 ** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
612 **/
613 void wxMaracasRenderTabbedPanel::changeOpacityC(int _propid, int value)
614 {
615         surrendmanager3->changeOpacity(_propid,value);
616 }
617
618 /**
619 ** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
620 **/
621 void wxMaracasRenderTabbedPanel::changeIsoValueC(int propid, double value)
622 {
623         surrendmanager3->changeIsoValue(propid, value);
624 }
625
626 /**
627 ** Changes color for the given surface rendering image identified by parameter: propid
628 **/
629 void wxMaracasRenderTabbedPanel::changeColorC(int propid, double red, double green, double blue)
630 {
631         try
632         {
633                 surrendmanager3->changeColor(propid, red, green, blue);
634         }
635         catch(char* str)
636         {
637                 wxString s( str,wxConvUTF8 );
638                 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
639                 diag->ShowModal();
640                 delete diag;
641         }
642 }
643
644 /**
645 ** Method called when VolumeRendering checkbox status changes: Either shows or hides VolumeRendering image
646 **/
647 void wxMaracasRenderTabbedPanel::onCheckBoxVChange(wxCommandEvent& event)
648 {
649         try{
650                 volmanager->addRemoveActor(this->getPropIdV(), checkboxVol->GetValue());
651
652                 int id = 0;
653                 wxtabs->SetSelection(id);
654
655                 if(checkboxVol->GetValue())
656                 {
657                         wxtabs->GetPage(id)->Enable();
658                 }
659                 else
660                 {       
661                         wxtabs->GetPage(id)->Disable();
662                 }
663         }
664         catch(char* str){
665                 std::cout << "Exception : " << str << '\n';
666                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
667                 diag->ShowModal();
668                 delete diag;
669         }
670 }
671
672 /**
673 ** Method called when SurfaceRendering A checkbox status changes: Either shows or hides SurfaceRendering image
674 **/
675 void wxMaracasRenderTabbedPanel::onCheckBoxSAChange(wxCommandEvent& event)
676 {       
677         try{
678                 surrendmanager1->addRemoveActor(this->getPropIdV(), checkboxSA->GetValue());    
679
680                 int id = 1;
681                 wxtabs->SetSelection(id);
682
683                 if(checkboxSA->GetValue())
684                 {
685                         wxtabs->GetPage(id)->Enable();
686
687                 }
688                 else
689                 {       
690                         wxtabs->GetPage(id)->Disable();
691                 }
692         }
693         catch(char* str){
694                 std::cout << "Exception : " << str << '\n';
695                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
696                 diag->ShowModal();
697                 delete diag;
698         }
699 }
700
701 /**
702 ** Method called when SurfaceRendering B checkbox status changes: Either shows or hides SurfaceRendering B image
703 **/
704 void wxMaracasRenderTabbedPanel::onCheckBoxSBChange(wxCommandEvent& event)
705 {       
706         try{
707                 surrendmanager2->addRemoveActor(this->getPropIdV(), checkboxSB->GetValue());    
708
709                 int id = 2;
710                 wxtabs->SetSelection(id);
711
712                 if(checkboxSB->GetValue())
713                 {
714                         wxtabs->GetPage(id)->Enable();
715                 }
716                 else
717                 {       
718                         wxtabs->GetPage(id)->Disable();
719                 }
720         }
721         catch(char* str){
722                 std::cout << "Exception : " << str << '\n';
723                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
724                 diag->ShowModal();
725                 delete diag;
726         }
727 }
728
729 /**
730 ** Method called when SurfaceRendering C checkbox status changes: Either shows or hides SurfaceRendering C image
731 **/
732 void wxMaracasRenderTabbedPanel::onCheckBoxSCChange(wxCommandEvent& event)
733 {       
734         try{
735                 surrendmanager3->addRemoveActor(this->getPropIdV(), checkboxSC->GetValue());
736
737                 int id = 3;
738                 wxtabs->SetSelection(id);
739
740                 if(checkboxSC->GetValue())
741                 {
742                         wxtabs->GetPage(id)->Enable();
743                 }
744                 else
745                 {       
746                         wxtabs->GetPage(id)->Disable();
747                 }
748         }
749         catch(char* str){
750                 std::cout << "Exception : " << str << '\n';
751                 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
752                 diag->ShowModal();
753                 delete diag;
754         }
755 }
756
757 /**
758 ** Method called when MPR checkbox status changes: Either shows or hides actors
759 **/
760 void wxMaracasRenderTabbedPanel::onMPROptions(wxCommandEvent& event)
761 {
762         addRemoveActorMPR(checkboxViewer->IsChecked());
763         /*
764         int id = 4;
765         wxtabs->SetSelection(id);
766         if(checkboxViewer->IsChecked())
767         {
768                 
769                 wxtabs->GetPage(id)->Enable();
770
771                 bool valueX = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleX();
772                 bool valueY = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleY();
773                 bool valueZ = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleZ();
774                 bool valueXYZ = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisibleXYZ();
775                 bool valuePlane = ((wxVtkMPR3DViewCntrlPanel*) controlPanelMPR3D)->GetVisiblePlane();
776
777                 mwxvtkmpr3Dview->VisibleImageActor( 0, valueX );
778                 mwxvtkmpr3Dview->VisibleImageActor( 1, valueY );
779                 mwxvtkmpr3Dview->VisibleImageActor( 2, valueZ );
780                 mwxvtkmpr3Dview->VisiblePointWidget(valueXYZ);
781                 mwxvtkmpr3Dview->VisiblePlaneWidget(valuePlane);
782                 mwxvtkmpr3Dview->showOutlineActor(true);
783                 
784                 mwxvtkmpr3Dview->Refresh();
785
786
787         }
788         else
789         {
790                 wxtabs->GetPage(id)->Disable();
791
792                 mwxvtkmpr3Dview->VisiblePointWidget(false);
793                 mwxvtkmpr3Dview->VisiblePlaneWidget(false);
794                 mwxvtkmpr3Dview->VisibleImageActor(0, false );
795                 mwxvtkmpr3Dview->VisibleImageActor(1, false );
796                 mwxvtkmpr3Dview->VisibleImageActor(2, false );
797                 mwxvtkmpr3Dview->showOutlineActor(false);
798                 mwxvtkmpr3Dview->Refresh();
799
800                 wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
801                 mwxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
802         }*/
803 }
804
805 void wxMaracasRenderTabbedPanel::OnRefreshView(wxCommandEvent & event) 
806 {
807         printf("CPR wxMaracasRenderTabbedPanel::OnRefreshView \n");
808         mwxvtkmpr3Dview->RefreshView();
809
810         wxCommandEvent newevent1(wxEVT_COMMAND_MENU_SELECTED,12121);  // Refresh
811         mwxvtkmpr3Dview->GetWxvtk3Dbaseview()->GetWxVTKRenderWindowInteractor()->GetParent()->ProcessEvent(newevent1);
812 }
813
814 /**
815 ** 
816 **/
817 void wxMaracasRenderTabbedPanel::onOpenParameters(wxCommandEvent& event){       
818         if(dialog == NULL)
819         {
820                 dialog = new wxMaracasRenderImageManagementPanel(this, volmanager, surrendmanager1, surrendmanager2, surrendmanager3, volname, _id);
821                 dialog->SetSize(460, 580);
822                 dialog->Show();
823         }
824         else if(dialog != NULL)
825         {
826                 dialog->Show();
827         }
828 }
829
830 /**
831 **
832 **/
833 void wxMaracasRenderTabbedPanel::onOpenCutter(wxCommandEvent& event)
834 {       
835         vtkImageData* img = getVolImage();      
836         std::vector<int> type;
837         type.push_back(5);
838         type.push_back(1);
839         type.push_back(2);
840         type.push_back(0);
841         
842         wxMaracasDialog_NViewers* dialog1 = new wxMaracasDialog_NViewers(this, img, &type, wxString(_T("Cut Module") ));
843         //dialog1->SetSize(800, 700);
844         
845         /**std::string path = crea::System::GetDllAppPath("bbcreaMaracasVisu.dll");
846         cutter = CutModelMainPanel::getInstance(dialog1->getinternalPanel(), path);
847         cutter->setRenderer( dialog1->getViewer()->GetwxVtkBaseView(1)->GetRenderer() );
848         cutter->setInteractor( dialog1->getViewer()->GetwxVtkBaseView(1)->GetWxVTKRenderWindowInteractor() );
849         cutter->setImageData(getVolImage());
850         **/
851         //dialog1->AddPanel(cutter);
852         dialog1->Show();
853 }
854
855 /**
856 ** Gets volume rendering image asociated to the given ID
857 **/
858 void wxMaracasRenderTabbedPanel::onColorChange(wxCommandEvent& event)
859 {       
860         /*Temporarily disabled*/
861
862         //if(mwxwidget->ShowModal()==wxID_OK){
863         //updateVolume();
864         //      mwxwidget->Show(false);
865         //}     
866 }
867
868 /**
869 ** 
870 **/
871 vtkImageData* wxMaracasRenderTabbedPanel::getVolImage()
872 {       
873         return volmanager->getImageData();
874 }
875
876 /**
877 ** Gets surface rendering A image asociated to the given ID
878 **/
879 vtkImageData* wxMaracasRenderTabbedPanel::getSurfAImage()
880 {       
881         return surrendmanager1->getImageData();
882 }
883
884 /**
885 ** Gets surface rendering B image asociated to the given ID
886 **/
887 vtkImageData* wxMaracasRenderTabbedPanel::getSurfBImage()
888 {       
889         return surrendmanager2->getImageData();
890 }
891
892 /**
893 ** Gets surface rendering C image asociated to the given ID
894 **/
895 vtkImageData* wxMaracasRenderTabbedPanel::getSurfCImage()
896 {       
897         return surrendmanager3->getImageData();
898 }
899
900 /**
901 **
902 **/
903 int wxMaracasRenderTabbedPanel::getPropIdV()
904 {
905         return _id;
906 }