1 #include "wxMaracasRenderTabbedPanel.h"
2 #include "HistogramDialogComboBox.h"
4 #include <wx/colordlg.h>
5 #include <OpenImage.xpm>
12 wxMaracasRenderTabbedPanel::wxMaracasRenderTabbedPanel(wxWindow* parent/*, wxMaracasMultipleVolumeRendererManager* _volmanager, wxMaracasSurfaceRenderingManager* _surrendmanager1, wxMaracasSurfaceRenderingManager* _surrendmanager2,
13 wxMaracasSurfaceRenderingManager* _surrendmanager3, wxString pathfile, wxString filename*/)
14 : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize)
17 volmanager = new wxMaracasMultipleVolumeRendererManager();
18 surrendmanager1 = new wxMaracasSurfaceRenderingManager();
19 surrendmanager2 = new wxMaracasSurfaceRenderingManager();
20 surrendmanager3 = new wxMaracasSurfaceRenderingManager();
27 void wxMaracasRenderTabbedPanel::createControls(wxString pathfile, wxString filename)
29 //wxPanel* up = new wxPanel(this, wxID_ANY);
30 wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(1);
32 //wxString choices[2];
33 //choices[0] = wxString(_T("On"));
34 //choices[1] = wxString(_T("Off"));
35 wxFlexGridSizer* sizercheck = new wxFlexGridSizer(2);
36 checkboxVol = new wxCheckBox(this,-1,wxString(_T("Volume Rendering")));
37 Connect(checkboxVol->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxVChange);
38 checkboxVol->SetValue(true);
39 sizercheck->Add(checkboxVol, wxFIXED_MINSIZE);
41 //wxString choices[2];
42 //choices[0] = wxString(_T("On"));
43 //choices[1] = wxString(_T("Off"));
44 checkboxSA = new wxCheckBox(this,-1,wxString(_T("Surface Rendering A")));
45 Connect(checkboxSA->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSAChange);
46 checkboxSA->SetValue(true);
48 sizercheck->Add(checkboxSA, wxFIXED_MINSIZE);
50 //wxString choices[2];
51 //choices[0] = wxString(_T("On"));
52 //choices[1] = wxString(_T("Off"));
53 checkboxSB = new wxCheckBox(this,-1,wxString(_T("Surface Rendering B")));
54 Connect(checkboxSB->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSBChange);
55 checkboxSB->SetValue(true);
57 sizercheck->Add(checkboxSB, wxFIXED_MINSIZE);
59 //wxString choices[2];
60 //choices[0] = wxString(_T("On"));
61 //choices[1] = wxString(_T("Off"));
62 checkboxSC = new wxCheckBox(this,-1,wxString(_T("Surface Rendering C")));
63 Connect(checkboxSC->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSCChange);
64 checkboxSC->SetValue(true);
66 sizercheck->Add(checkboxSC, wxFIXED_MINSIZE);
67 sizerrenderprop->Add(sizercheck, wxFIXED_MINSIZE);
68 //up->SetSizer(sizerup, true);
69 //up->SetAutoLayout( true );
71 wxtabs = new wxNotebook(this, -1);
73 std::string s = std::string(pathfile.mb_str());
74 vtkImageData* img1 = volmanager->getImageData(s);
75 vtkImageData* img2 = surrendmanager1->getImageData(s);
76 vtkImageData* img3 = surrendmanager2->getImageData(s);
77 vtkImageData* img4 = surrendmanager3->getImageData(s);
81 s = std::string(filename.mb_str());
89 //wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(2,1,5);
90 //sizerrenderprop->Add(up, wxFIXED_MINSIZE);
92 sizerrenderprop->Add(wxtabs, wxFIXED_MINSIZE);
94 this->SetSizer(sizerrenderprop, true);
95 this->SetAutoLayout( true );
99 wxMaracasRenderTabbedPanel::~wxMaracasRenderTabbedPanel()
101 //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorV(_propid, false);
102 //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSA(_propid, false);
103 //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSB(_propid, false);
104 //wxMaracasRenderTabbedPanel::getInstance()->addRemoveActorSC(_propid, false);
105 //wxMaracasRenderTabbedPanel::getInstance()->deleteVolume(_propid);
109 void wxMaracasRenderTabbedPanel::setRenderer(vtkRenderer* renderer)
111 volmanager->setRenderer(renderer);
112 surrendmanager1->setRenderer(renderer);
113 surrendmanager2->setRenderer(renderer);
114 surrendmanager3->setRenderer(renderer);
120 void wxMaracasRenderTabbedPanel::addVolume(vtkImageData* img, std::string dataname)
124 int _propidV = volmanager->addVolume(img, dataname);
127 controlpanV = new wxMaracasMultipleVolumeRendererPanel(wxtabs, _propidV, img, true);
128 wxtabs->AddPage(controlpanV, _T("Volume Rendering"), true);
134 std::cout << "Exception : " << str << '\n';
135 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
140 void wxMaracasRenderTabbedPanel::addSurface1(vtkImageData* img, std::string dataname)
144 int _propidSA = surrendmanager1->addPropMHD(img, dataname);
148 controlpanSA = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSA, true, 1);
149 int maxiso = surrendmanager1->getMaxIsoValue(_propidSA);
150 ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSA)->createControls(maxiso);
151 wxtabs->AddPage(controlpanSA, _T("Surf Rendering A"));
156 std::cout << "Exception : " << str << '\n';
157 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
162 void wxMaracasRenderTabbedPanel::addSurface2(vtkImageData* img, std::string dataname)
166 int _propidSB = surrendmanager2->addPropMHD(img, dataname);
169 controlpanSB = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSB, true, 2);
170 int maxiso = surrendmanager2->getMaxIsoValue(_propidSB);
171 ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSB)->createControls(maxiso);
172 wxtabs->AddPage(controlpanSB, _T("Surf Rendering B"));
178 std::cout << "Exception : " << str << '\n';
179 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
184 void wxMaracasRenderTabbedPanel::addSurface3(vtkImageData* img, std::string dataname)
188 _propidSC = surrendmanager3->addPropMHD(img, dataname);
192 controlpanSC = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, _propidSC, true, 3);
193 int maxiso = surrendmanager3->getMaxIsoValue(_propidSC);
194 ((wxMaracasSurfaceRenderingProp3DMHD*)controlpanSC)->createControls(maxiso);
195 wxtabs->AddPage(controlpanSC, _T("Surf Rendering C"));
200 std::cout << "Exception : " << str << '\n';
201 wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR);
207 ** Deletes complete volume
209 void wxMaracasRenderTabbedPanel::deleteVolume(int volid)
211 volmanager->deleteActor(volid);
212 surrendmanager1->deleteActor(volid);
213 surrendmanager2->deleteActor(volid);
214 surrendmanager3->deleteActor(volid);
218 ** Adds or removes volume rendering actor with given ID
220 void wxMaracasRenderTabbedPanel::addRemoveActorV(int id, bool addremove)
222 volmanager->addRemoveActor(id, addremove);
226 ** Adds or removes surface rendering actor with given ID
228 void wxMaracasRenderTabbedPanel::addRemoveActorSA(int id, bool addremove)
230 surrendmanager1->addRemoveActor(id, addremove);
234 ** Adds or removes surface rendering actor with given ID
236 void wxMaracasRenderTabbedPanel::addRemoveActorSB(int id, bool addremove)
238 surrendmanager2->addRemoveActor(id, addremove);
242 ** Adds or removes surface rendering actor with given ID
244 void wxMaracasRenderTabbedPanel::addRemoveActorSC(int id, bool addremove)
246 surrendmanager3->addRemoveActor(id, addremove);
250 ** Sets color points values for the given volume rendering identified by parameter: volumeid
252 void wxMaracasRenderTabbedPanel::SetValuesColorPointsFunction(int volid, std::vector<double> greylevelcolors,std::vector<double> red,std::vector<double> green,std::vector<double> blue)
254 volmanager->setVolumeColor(volid, greylevelcolors, red, green, blue);
258 ** Sets points values for the given volume rendering identified by parameter: volumeid
260 void wxMaracasRenderTabbedPanel::SetValuesPointsFunction(int volid, std::vector<double> greylevel, std::vector<double> values)
262 volmanager->setVolumeOpacity(volid, greylevel, values);
266 ** Returns transfer function for the given volume rendering identified by parameter: volumeid
268 vtkPiecewiseFunction* wxMaracasRenderTabbedPanel::GetTransferFunction(int volumeid)
270 return volmanager->GetTransferFunction(volumeid);
274 ** Returns color function for the given volume rendering identified by parameter: volumeid
276 vtkColorTransferFunction* wxMaracasRenderTabbedPanel::GetColorFunction(int volumeid)
278 return volmanager->GetColorFunction(volumeid);
282 ** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
284 void wxMaracasRenderTabbedPanel::changeOpacityA(int _propid, int value)
286 surrendmanager1->changeOpacity(_propid,value);
290 ** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
292 void wxMaracasRenderTabbedPanel::changeIsoValueA(int propid, double value)
294 surrendmanager1->changeIsoValue(propid, value);
298 ** Changes color for the given surface rendering image identified by parameter: propid
300 void wxMaracasRenderTabbedPanel::changeColorA(int propid, double red, double green, double blue)
304 surrendmanager1->changeColor(propid, red, green, blue);
308 wxString s( str,wxConvUTF8 );
309 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
316 ** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
318 void wxMaracasRenderTabbedPanel::changeOpacityB(int _propid, int value)
320 surrendmanager2->changeOpacity(_propid,value);
324 ** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
326 void wxMaracasRenderTabbedPanel::changeIsoValueB(int propid, double value)
328 surrendmanager2->changeIsoValue(propid, value);
332 ** Changes color for the given surface rendering image identified by parameter: propid
334 void wxMaracasRenderTabbedPanel::changeColorB(int propid, double red, double green, double blue)
338 surrendmanager2->changeColor(propid, red, green, blue);
342 wxString s( str,wxConvUTF8 );
343 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
350 ** Changes color function by the given value for the given volume rendering identified by parameter: volumeid
352 void wxMaracasRenderTabbedPanel::changeOpacityC(int _propid, int value)
354 surrendmanager3->changeOpacity(_propid,value);
358 ** Changes isoValue by the given value for the given surface rendering image identified by parameter: propid
360 void wxMaracasRenderTabbedPanel::changeIsoValueC(int propid, double value)
362 surrendmanager3->changeIsoValue(propid, value);
366 ** Changes color for the given surface rendering image identified by parameter: propid
368 void wxMaracasRenderTabbedPanel::changeColorC(int propid, double red, double green, double blue)
372 surrendmanager3->changeColor(propid, red, green, blue);
376 wxString s( str,wxConvUTF8 );
377 wxMessageDialog* diag = new wxMessageDialog(this, s, s, wxICON_ERROR);
386 void wxMaracasRenderTabbedPanel::onUpdate(wxCommandEvent& event)
394 void wxMaracasRenderTabbedPanel::updateVolume()
396 /*Temporarily disabled*/
398 std::vector<double> greylevelcolors;
399 std::vector<double> red;
400 std::vector<double> green;
401 std::vector<double> blue;
403 std::vector<double> greylevel;
404 std::vector<double> values;
406 HistogramDialogComboBox* histo = controlpanV->getMwxwidget();
407 histo->GetValuesColorPointsFunction(greylevelcolors, red, green, blue);
408 histo->GetValuesPointsFunction(greylevel, values);
411 volmanager->setVolumeColor(controlpanV->getPropId(), greylevelcolors, red, green, blue);
412 volmanager->setVolumeOpacity(controlpanV->getPropId(), greylevel, values);
413 //wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue);
414 //wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values);
421 void wxMaracasRenderTabbedPanel::onColorChange(wxCommandEvent& event)
423 /*Temporarily disabled*/
425 //if(mwxwidget->ShowModal()==wxID_OK){
427 // mwxwidget->Show(false);
434 void wxMaracasRenderTabbedPanel::onViewImage(wxCommandEvent& event)
440 ** Method called when VolumeRendering checkbox status changes: Either shows or hides VolumeRendering image
442 void wxMaracasRenderTabbedPanel::onCheckBoxVChange(wxCommandEvent& event)
444 volmanager->addRemoveActor(this->getPropIdV(), checkboxVol->GetValue());
448 ** Method called when SurfaceRendering A checkbox status changes: Either shows or hides SurfaceRendering image
450 void wxMaracasRenderTabbedPanel::onCheckBoxSAChange(wxCommandEvent& event)
452 surrendmanager1->addRemoveActor(this->getPropIdSA(), checkboxSA->GetValue());
456 ** Method called when SurfaceRendering B checkbox status changes: Either shows or hides SurfaceRendering B image
458 void wxMaracasRenderTabbedPanel::onCheckBoxSBChange(wxCommandEvent& event)
460 surrendmanager2->addRemoveActor(this->getPropIdSB(), checkboxSB->GetValue());
464 ** Method called when SurfaceRendering C checkbox status changes: Either shows or hides SurfaceRendering C image
466 void wxMaracasRenderTabbedPanel::onCheckBoxSCChange(wxCommandEvent& event)
468 surrendmanager3->addRemoveActor(this->getPropIdSC(), checkboxSC->GetValue());
474 int wxMaracasRenderTabbedPanel::getPropIdV()
482 int wxMaracasRenderTabbedPanel::getPropIdSA()
490 int wxMaracasRenderTabbedPanel::getPropIdSB()
498 int wxMaracasRenderTabbedPanel::getPropIdSC()