/*========================================================================= Program: wxMaracas Module: $RCSfile: wxMaracasRendererView.cxx,v $ Language: C++ =========================================================================*/ #include "wxMaracasRendererView.h" #include #include #include #include wxMaracasRendererView* wxMaracasRendererView::instance=NULL; /** ** **/ wxMaracasRendererView::wxMaracasRendererView(wxWindow* parent,std::string path) : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize){ wxauimanager = new wxAuiManager(this); _path = path; volmanager = new wxMaracasMultipleVolumeRendererManager(); surrendmanager1 = new wxMaracasSurfaceRenderingManager(); surrendmanager2 = new wxMaracasSurfaceRenderingManager(); surrendmanager3 = new wxMaracasSurfaceRenderingManager(); std::string iconsdir = path; iconsdir+="/data/Icons"; this->_toolb = new ToolBarRenderer(this,iconsdir); wxStaticText* txt = new wxStaticText(this, -1, wxString(_T(" Open File "))); wxAuiPaneInfo paneinfo; wxauimanager->AddPane(txt,paneinfo.ToolbarPane().Top()); wxauimanager->AddPane(_toolb,paneinfo.ToolbarPane().Top()); wxauimanager->Update(); } /** ** **/ wxMaracasRendererView::~wxMaracasRendererView( ) { delete _toolb; } /** ** **/ std::string wxMaracasRendererView::getPath() { return _path; } /** ** **/ wxMaracasRendererView* wxMaracasRendererView::getInstance(wxWindow* parent,std::string path) { if(instance==NULL) { instance = new wxMaracasRendererView(parent,path); } return instance; } /** ** **/ wxMaracasRendererView* wxMaracasRendererView::getInstance() { return instance; } /** ** **/ void wxMaracasRendererView::setRenderer(vtkRenderer* renderer) { volmanager->setRenderer(renderer); surrendmanager1->setRenderer(renderer); surrendmanager2->setRenderer(renderer); surrendmanager3->setRenderer(renderer); } /** ** Adds or removes a volume rendering actor **/ void wxMaracasRendererView::addRemoveActorVol(int id, bool addremove) { volmanager->addRemoveActor(id, addremove); } /** ** Adds or removes a surface rendering actor **/ void wxMaracasRendererView::addRemoveSurf1Actor(int id, bool addremove) { surrendmanager1->addRemoveActor(id, addremove); } /** ** Adds or removes a surface rendering actor **/ void wxMaracasRendererView::addRemoveSurf2Actor(int id, bool addremove) { surrendmanager2->addRemoveActor(id, addremove); } /** ** Adds or removes a surface rendering actor **/ void wxMaracasRendererView::addRemoveSurf3Actor(int id, bool addremove) { surrendmanager3->addRemoveActor(id, addremove); } /** ** **/ void wxMaracasRendererView::onLoadImageFile() { wxString mhd(_T("mhd")); wxFileDialog* fildial = new wxFileDialog(this, wxString(_T("Select a MHD file")),wxString(_T("")), wxString(_T("")),wxString(_T("MHD files (*.mhd)|*.mhd")) ); if(fildial->ShowModal()==wxID_OK) { wxString filename = fildial->GetFilename(); wxString pathfile(fildial->GetDirectory() + _T("/") + filename); if(filename.EndsWith(mhd)) { loadVolume(pathfile,filename); } } delete fildial; } /* * */ void wxMaracasRendererView::addPanels(wxString filename, wxString dataname) { wxString s(dataname.c_str(),wxConvUTF8 ); wxtabs = new wxMaracasRenderTabbedPanel(this, volmanager, surrendmanager1, surrendmanager2, surrendmanager3, filename, dataname); wxAuiPaneInfo paneinfo; wxauimanager->AddPane(wxtabs, paneinfo.DefaultPane().Centre().DestroyOnClose().Caption(s)); wxauimanager->Update(); } /* * */ wxMaracasMultipleVolumeRendererPanel* wxMaracasRendererView::addVolume(vtkImageData* img, std::string dataname) { try { int id = volmanager->addVolume(img, dataname); if(id!=-1) { wxMaracasMultipleVolumeRendererPanel* controlpan = new wxMaracasMultipleVolumeRendererPanel(this, 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* wxMaracasRendererView::addSurface1(vtkImageData* img, std::string dataname) { try { int id = surrendmanager1->addPropMHD(img, dataname); if(id!=-1) { wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(this, 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* wxMaracasRendererView::addSurface2(vtkImageData* img, std::string dataname) { try { int id = surrendmanager2->addPropMHD(img, dataname); if(id!=-1) { wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(this, 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* wxMaracasRendererView::addSurface3(vtkImageData* img, std::string dataname) { try { int id = surrendmanager3->addPropMHD(img, dataname); if(id!=-1) { wxMaracasSurfaceRenderingPanel* controlpan = new wxMaracasSurfaceRenderingProp3DMHD(this, 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 wxMaracasRendererView::loadVolume(wxString filename, wxString dataname) { addPanels(filename, dataname); } void wxMaracasRendererView::deleteVolume(int volid) { volmanager->deleteActor(volid); surrendmanager1->deleteActor(volid); surrendmanager2->deleteActor(volid); surrendmanager3->deleteActor(volid); } void wxMaracasRendererView::SetValuesColorPointsFunction(int volid, std::vector greylevelcolors,std::vector red,std::vector green,std::vector blue){ volmanager->setVolumeColor(volid, greylevelcolors, red, green, blue); } void wxMaracasRendererView::SetValuesPointsFunction(int volid, std::vector greylevel, std::vector values){ volmanager->setVolumeOpacity(volid, greylevel, values); } vtkPiecewiseFunction* wxMaracasRendererView::GetTransferFunction(int volumeid){ return volmanager->GetTransferFunction(volumeid); } vtkColorTransferFunction* wxMaracasRendererView::GetColorFunction(int volumeid){ return volmanager->GetColorFunction(volumeid); } /** ** **/ ToolBarRenderer::ToolBarRenderer(wxWindow * parent,std::string iconsdir) : wxToolBar(parent, -1, wxDefaultPosition, wxDefaultSize) { std::string iconfil = iconsdir; //iconfil+= "/OpenImage.png"; //wxBitmap* bitmap0 = new wxBitmap(wxString(iconfil.c_str(),wxConvUTF8), wxBITMAP_TYPE_PNG); wxBitmap bitmap0(OpenImage_xpm); this->AddTool(1, wxString(_T("test")),bitmap0, NULL, wxITEM_NORMAL, wxString(_T("Open File"))); /*iconfil+= "/Open.png"; wxBitmap* bitmap2 = new wxBitmap(wxString(iconfil.c_str(),wxConvUTF8), wxBITMAP_TYPE_PNG); this->AddTool(2, wxString(_T("test")),*bitmap2); */ /*iconfil = iconsdir; iconfil+= "/Open.png"; wxBitmap* bitmap30 = new wxBitmap(wxString(iconfil.c_str(),wxConvUTF8), wxBITMAP_TYPE_PNG); this->AddTool(30, wxString(_T("test")),*bitmap30);*/ this->Realize(); _evthand = new ToolBarEventHandlerRenderer(); this->SetEventHandler(_evthand); } ToolBarRenderer::~ToolBarRenderer(void){ } ToolBarEventHandlerRenderer::ToolBarEventHandlerRenderer() : wxEvtHandler(){ } ToolBarEventHandlerRenderer::~ToolBarEventHandlerRenderer(){ } void ToolBarEventHandlerRenderer::onLoadImageFile(wxCommandEvent& event){ wxMaracasRendererView::getInstance()->onLoadImageFile(); } BEGIN_EVENT_TABLE(ToolBarEventHandlerRenderer, wxEvtHandler) EVT_MENU(1, ToolBarEventHandlerRenderer::onLoadImageFile) END_EVENT_TABLE()