#include "wxMaracasRenderTabbedPanel.h" #include #include #include "Color.xpm" /** ** **/ wxMaracasRenderTabbedPanel::wxMaracasRenderTabbedPanel(wxWindow* parent, wxMaracasMultipleVolumeRendererManager* img1, wxMaracasSurfaceRenderingManager* img2, wxMaracasSurfaceRenderingManager* img3, wxMaracasSurfaceRenderingManager* img4, wxString filename, wxString dataname) : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize) { //_propid = propid; createControls(img1, img2, img3, img4, filename, dataname); } /** ** **/ void wxMaracasRenderTabbedPanel::createControls(wxMaracasMultipleVolumeRendererManager* volmanager, wxMaracasSurfaceRenderingManager* surrendmanager1, wxMaracasSurfaceRenderingManager* surrendmanager2, wxMaracasSurfaceRenderingManager* surrendmanager3, wxString filename, wxString dataname) { wxPanel* up = new wxPanel(this, wxID_ANY); wxFlexGridSizer* sizerup = new wxFlexGridSizer(2,2,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); sizerup->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); sizerup->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); sizerup->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); sizerup->Add(checkboxSC, wxFIXED_MINSIZE); up->SetSizer(sizerup, true); up->SetAutoLayout( true ); wxPanel* down = new wxPanel(this, wxID_ANY); down->SetSize(100, 100); wxFlexGridSizer* sizerdown = new wxFlexGridSizer(1,1,1); wxtabs = new wxNotebook(this, -1); wxtabs->SetSize(100, 100); //wxtabs-> 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(volmanager, img1, s); wxMaracasSurfaceRenderingPanel* controlpan2 = addSurface1(surrendmanager1, img2, s); wxMaracasSurfaceRenderingPanel* controlpan3 = addSurface2(surrendmanager2, img3, s); wxMaracasSurfaceRenderingPanel* controlpan4 = addSurface3(surrendmanager3, 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(); sizerdown->Add(wxtabs, wxFIXED_MINSIZE); down->SetSizer(sizerdown, true); down->SetAutoLayout( true ); } wxFlexGridSizer* sizerrenderprop = new wxFlexGridSizer(2,1,5); sizerrenderprop->Add(up, wxFIXED_MINSIZE); sizerrenderprop->Add(down, 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(wxMaracasMultipleVolumeRendererManager* volmanager, 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(wxMaracasSurfaceRenderingManager* surrendmanager1, 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(wxMaracasSurfaceRenderingManager* surrendmanager2, 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(wxMaracasSurfaceRenderingManager* surrendmanager3, 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; }