#include "wxMaracasRenderTabbedPanel.h" #include #include #include "Color.xpm" /** ** **/ wxMaracasRenderTabbedPanel::wxMaracasRenderTabbedPanel(wxWindow* parent, wxMaracasMultipleVolumeRendererManager* _volmanager, wxMaracasSurfaceRenderingManager* _surrendmanager1, wxMaracasSurfaceRenderingManager* _surrendmanager2, wxMaracasSurfaceRenderingManager* _surrendmanager3, wxString filename, wxString dataname) : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize) { //_propid = propid; volmanager = _volmanager; surrendmanager1 = _surrendmanager1; surrendmanager2 = _surrendmanager2; surrendmanager3 = _surrendmanager3; createControls(filename, dataname); } /** ** **/ void wxMaracasRenderTabbedPanel::createControls(wxString filename, wxString dataname) { //wxPanel* up = new wxPanel(this, wxID_ANY); wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(2,3,1); wxString choices[2]; choices[0] = wxString(_T("On")); choices[1] = wxString(_T("Off")); checkboxVol = new wxCheckBox(this,-1,wxString(_T("Volume Rendering"))); Connect(checkboxVol->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxVChange); checkboxVol->SetValue(true); sizerrenderprop->Add(checkboxVol, wxFIXED_MINSIZE); //wxString choices[2]; //choices[0] = wxString(_T("On")); //choices[1] = wxString(_T("Off")); checkboxSA = new wxCheckBox(this,-1,wxString(_T("Surface Rendering A"))); Connect(checkboxSA->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSAChange); checkboxSA->SetValue(true); sizerrenderprop->Add(checkboxSA, wxFIXED_MINSIZE); //wxString choices[2]; //choices[0] = wxString(_T("On")); //choices[1] = wxString(_T("Off")); checkboxSB = new wxCheckBox(this,-1,wxString(_T("Surface Rendering B"))); Connect(checkboxSB->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSBChange); checkboxSB->SetValue(true); sizerrenderprop->Add(checkboxSB, wxFIXED_MINSIZE); //wxString choices[2]; //choices[0] = wxString(_T("On")); //choices[1] = wxString(_T("Off")); checkboxSC = new wxCheckBox(this,-1,wxString(_T("Surface Rendering C"))); Connect(checkboxSC->GetId(), wxEVT_COMMAND_CHECKBOX_CLICKED, (wxObjectEventFunction)&wxMaracasRenderTabbedPanel::onCheckBoxSCChange); checkboxSC->SetValue(true); sizerrenderprop->Add(checkboxSC, wxFIXED_MINSIZE); //up->SetSizer(sizerup, true); //up->SetAutoLayout( true ); wxtabs = new wxNotebook(this, -1); std::string s = std::string(filename.mb_str()); vtkImageData* img1 = volmanager->getImageData(s); vtkImageData* img2 = surrendmanager1->getImageData(s); vtkImageData* img3 = surrendmanager2->getImageData(s); vtkImageData* img4 = surrendmanager3->getImageData(s); if(img1!=NULL) { s = std::string(dataname.mb_str()); wxMaracasMultipleVolumeRendererPanel* controlpan1 = addVolume(img1, s); wxMaracasSurfaceRenderingPanel* controlpan2 = addSurface1(img2, s); wxMaracasSurfaceRenderingPanel* controlpan3 = addSurface2(img3, s); wxMaracasSurfaceRenderingPanel* controlpan4 = addSurface3(img4, s); wxtabs->AddPage(controlpan1, _T("Volume Rendering"), true); wxtabs->AddPage(controlpan2, _T("Surf Rend A")); wxtabs->AddPage(controlpan3, _T("Surf Rend B")); wxtabs->AddPage(controlpan4, _T("Surf Rend C")); wxtabs->Refresh(); } //wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(2,1,5); //sizerrenderprop->Add(up, wxFIXED_MINSIZE); sizerrenderprop->Add(wxtabs, wxFIXED_MINSIZE); this->SetSizer(sizerrenderprop, true); this->SetAutoLayout( true ); } wxMaracasRenderTabbedPanel::~wxMaracasRenderTabbedPanel() { //wxMaracasIRMView::getInstance()->addRemoveActor(_propid, false); //wxMaracasRenderTabbedPanel::getInstance()->deleteVolume(_propid); delete wxtabs; //delete surview1; //delete surview2; //delete surview3; } /* * */ wxMaracasMultipleVolumeRendererPanel* wxMaracasRenderTabbedPanel::addVolume(vtkImageData* img, std::string dataname) { try { int id = volmanager->addVolume(img, dataname); if(id!=-1) { wxMaracasMultipleVolumeRendererPanel* controlpan = new wxMaracasMultipleVolumeRendererPanel(wxtabs, id,img); //controlpan->updateVolume(); return controlpan; } } catch(char* str) { std::cout << "Exception : " << str << '\n'; wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR); diag->ShowModal(); } } wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface1(vtkImageData* img, std::string dataname) { try { int id = surrendmanager1->addPropMHD(img, dataname); if(id!=-1) { wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, id); //int maxiso = surrendmanager1->getMaxIsoValue(id); //((wxMaracasSurfaceRenderingProp3DMHD*)controlpan)->createControls(maxiso); return controlpan; } } catch(char* str) { std::cout << "Exception : " << str << '\n'; wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR); diag->ShowModal(); } } wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface2(vtkImageData* img, std::string dataname) { try { int id = surrendmanager2->addPropMHD(img, dataname); if(id!=-1) { wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, id); //int maxiso = surrendmanager2->getMaxIsoValue(id); //((wxMaracasSurfaceRenderingProp3DMHD*)controlpan)->createControls(maxiso); return controlpan; } } catch(char* str) { std::cout << "Exception : " << str << '\n'; wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR); diag->ShowModal(); } } wxMaracasSurfaceRenderingPanel* wxMaracasRenderTabbedPanel::addSurface3(vtkImageData* img, std::string dataname) { try { int id = surrendmanager3->addPropMHD(img, dataname); if(id!=-1) { wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(wxtabs, id); //int maxiso = surrendmanager3->getMaxIsoValue(id); //((wxMaracasSurfaceRenderingProp3DMHD*)controlpan)->createControls(maxiso); return controlpan; } } catch(char* str) { std::cout << "Exception : " << str << '\n'; wxMessageDialog* diag = new wxMessageDialog(this, wxString(str,wxConvUTF8 ), wxString(str,wxConvUTF8 ), wxICON_ERROR); diag->ShowModal(); } } void wxMaracasRenderTabbedPanel::onOK(wxCommandEvent& event) { updateVolume(); //_frame->Show(false); } void wxMaracasRenderTabbedPanel::onCancel(wxCommandEvent& event) { //_frame->Show(false); } void wxMaracasRenderTabbedPanel::onUpdate(wxCommandEvent& event) { updateVolume(); } void wxMaracasRenderTabbedPanel::updateVolume() { //std::vector greylevelcolors; //std::vector red; //std::vector green; //std::vector blue; //std::vector greylevel; //std::vector values; //mwxwidget->GetValuesColorPointsFunction(greylevelcolors, red, green, blue); //mwxwidget->GetValuesPointsFunction(greylevel, values); //wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesColorPointsFunction(this->_propid, greylevelcolors, red, green, blue); //wxMaracasMultipleVolumeRendererView::getInstance()->SetValuesPointsFunction(this->_propid, greylevel, values); } void wxMaracasRenderTabbedPanel::onColorChange(wxCommandEvent& event) { //if(mwxwidget->ShowModal()==wxID_OK){ //updateVolume(); // mwxwidget->Show(false); //} } /** ** **/ void wxMaracasRenderTabbedPanel::onViewImage(wxCommandEvent& event){ } /** ** **/ void wxMaracasRenderTabbedPanel::onCheckBoxVChange(wxCommandEvent& event) { //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue()); } /** ** **/ void wxMaracasRenderTabbedPanel::onCheckBoxSAChange(wxCommandEvent& event) { //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue()); } /** ** **/ void wxMaracasRenderTabbedPanel::onCheckBoxSBChange(wxCommandEvent& event) { //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue()); } /** ** **/ void wxMaracasRenderTabbedPanel::onCheckBoxSCChange(wxCommandEvent& event) { //wxMaracasMultipleVolumeRendererView::getInstance()->addRemoveActor(this->getPropId(), checkbox->GetValue()); } /** ** **/ int wxMaracasRenderTabbedPanel::getPropId(){ return _propid; }