X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxMaracasRendererView.cxx;h=108944d96e8e4bfddc5b56d4bfeb8a613c314bc7;hb=db86dba6381cc26c3fa1070608b2ac56abeb823c;hp=f0436e84dce173be094affc27bab8f6ea5e3c4a8;hpb=52134c6f15827d0ae9ea8cf0ffaa15867ab87dcc;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRendererView.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRendererView.cxx index f0436e8..108944d 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRendererView.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasRendererView.cxx @@ -1,3 +1,28 @@ +/*# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Sant�) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ */ + /*========================================================================= Program: wxMaracas @@ -17,20 +42,16 @@ wxMaracasRendererView* wxMaracasRendererView::instance=NULL; /** -** +** Class constructor **/ wxMaracasRendererView::wxMaracasRendererView(wxWindow* parent,std::string path) : wxPanel(parent, -1, wxDefaultPosition, wxDefaultSize){ wxauimanager = new wxAuiManager(this); + _idCount = 0; _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); @@ -43,7 +64,7 @@ wxMaracasRendererView::wxMaracasRendererView(wxWindow* parent,std::string path) } /** -** +** Class destructor **/ wxMaracasRendererView::~wxMaracasRendererView( ) { @@ -51,15 +72,7 @@ wxMaracasRendererView::~wxMaracasRendererView( ) } /** -** -**/ -std::string wxMaracasRendererView::getPath() -{ - return _path; -} - -/** -** +** Gets class instance correponding to given parameters **/ wxMaracasRendererView* wxMaracasRendererView::getInstance(wxWindow* parent,std::string path) { @@ -71,7 +84,7 @@ wxMaracasRendererView* wxMaracasRendererView::getInstance(wxWindow* parent,std:: } /** -** +** Gets class intance **/ wxMaracasRendererView* wxMaracasRendererView::getInstance() { @@ -79,203 +92,110 @@ wxMaracasRendererView* wxMaracasRendererView::getInstance() } /** -** +** Gets path for the given panel **/ -void wxMaracasRendererView::setRenderer(vtkRenderer* renderer) +std::string wxMaracasRendererView::getPath() { - volmanager->setRenderer(renderer); - surrendmanager1->setRenderer(renderer); - surrendmanager2->setRenderer(renderer); - surrendmanager3->setRenderer(renderer); + return _path; } /** -** Adds or removes a volume rendering actor +** Returns internal panel **/ -void wxMaracasRendererView::addRemoveActorVol(int id, bool addremove) +wxMaracasRenderTabbedPanel* wxMaracasRendererView::getTabbedPanel(int id) throw(char*) { - volmanager->addRemoveActor(id, addremove); -} + int i; + for(i = 0; i < (int)tabsVector.size(); i++) + { + if(tabsVector[i]->getPropIdV() == id) + return tabsVector[i]; + } + throw "id not found"; -/** -** Adds or removes a surface rendering actor -**/ -void wxMaracasRendererView::addRemoveSurf1Actor(int id, bool addremove) -{ - surrendmanager1->addRemoveActor(id, addremove); + return NULL; } /** -** Adds or removes a surface rendering actor +** **/ -void wxMaracasRendererView::addRemoveSurf2Actor(int id, bool addremove) +void wxMaracasRendererView::setRenderer(vtkRenderer* renderer) { - surrendmanager2->addRemoveActor(id, addremove); + _renderer = renderer; } -/** -** Adds or removes a surface rendering actor -**/ -void wxMaracasRendererView::addRemoveSurf3Actor(int id, bool addremove) +void wxMaracasRendererView::setVtkBaseView(wxVtk3DBaseView* vbv) { - surrendmanager3->addRemoveActor(id, addremove); + baseView = vbv; } /** -** +** Called when an image file is opened **/ 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")) ); + 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 filename = fildial->GetFilename(); + files.push_back( std::string(filename.mb_str()) ); wxString pathfile(fildial->GetDirectory() + _T("/") + filename); + if(filename.EndsWith(mhd)) { - loadVolume(pathfile,filename); + std::string sPath = std::string(pathfile.mb_str()); + std::string sFileName = std::string(filename.mb_str()); + printf("wxMaracasRendererView::onLoadImageFile->Opening file... \n"); + addVolumes(NULL, sPath, sFileName); } } delete fildial; } - -/* -* -*/ -void wxMaracasRendererView::addPanels(wxString filename, wxString dataname) +/** +** Constructs and adds internal panel +**/ +void wxMaracasRendererView::addPanels(wxMaracasRenderTabbedPanel* wxtabs, vtkImageData* img, std::string pathfile, std::string filename) { - wxString s(dataname.c_str(),wxConvUTF8 ); + wxString s(filename.c_str(),wxConvUTF8); - wxtabs = new wxMaracasRenderTabbedPanel(this, volmanager, surrendmanager1, surrendmanager2, surrendmanager3, filename, dataname); + wxtabs->createControls(img, pathfile, filename); 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) +/** +** Returns internal panel +**/ +void wxMaracasRendererView::addVolumes(vtkImageData* img, std::string pathfile, std::string filename) { - 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(); - } -} + wxMaracasRenderTabbedPanel* wxtabs = new wxMaracasRenderTabbedPanel(this, _idCount, baseView); + wxtabs->setRenderer(_renderer); -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); + tabsVector.push_back(wxtabs); + addPanels(wxtabs, img, pathfile, filename); - 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(); - } + _idCount++; } - -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) +/** +** Deletes current volume +**/ +void wxMaracasRendererView::deleteVolume(int volid) { - addPanels(filename, dataname); - + getTabbedPanel(volid)->deleteVolume(volid); } -void wxMaracasRendererView::deleteVolume(int volid) +/** +** Gets opened file names +**/ +std::vector wxMaracasRendererView::getFiles() { - 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); + return files; } /** @@ -291,15 +211,6 @@ ToolBarRenderer::ToolBarRenderer(wxWindow * parent,std::string iconsdir) 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();