X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxMaracasSurfaceRenderingManager.cxx;h=e43f19ebd709a62175b38ec89b83b7fa78219596;hb=c1b7d6e874f1bfcac251e852ae37229c12c61656;hp=ac0b3f035b51279b08147535e5213dc8d2073455;hpb=52134c6f15827d0ae9ea8cf0ffaa15867ab87dcc;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.cxx index ac0b3f0..e43f19e 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.cxx @@ -3,8 +3,8 @@ Program: wxMaracas Module: $RCSfile: wxMaracasSurfaceRenderingManager.cxx,v $ Language: C++ - Date: $Date: 2009/10/15 11:56:43 $ - Version: $Revision: 1.1 $ + Date: $Date: 2010/01/21 13:54:15 $ + Version: $Revision: 1.7 $ Copyright: (c) 2002, 2003 License: @@ -15,7 +15,6 @@ =========================================================================*/ #include "wxMaracasSurfaceRenderingManager.h" - #include "wxMaracasSurfaceRenderingManagerDataMhd.h" /** @@ -23,6 +22,7 @@ **/ wxMaracasSurfaceRenderingManager::wxMaracasSurfaceRenderingManager(){ _renderer = NULL; + _interactor = NULL; _idCount=0; } wxMaracasSurfaceRenderingManager::~wxMaracasSurfaceRenderingManager(){ @@ -34,38 +34,77 @@ wxMaracasSurfaceRenderingManager::~wxMaracasSurfaceRenderingManager(){ void wxMaracasSurfaceRenderingManager::setRenderer(vtkRenderer* renderer){ _renderer = renderer; } + +/** +** Sets the renderer to manage the prop3D from the surface render +**/ +void wxMaracasSurfaceRenderingManager::setInteractor(vtkRenderWindowInteractor* interactor){ + _interactor = interactor; +} + + +/** +** Gets the renderer to manage the prop3D from the surface render +**/ +vtkRenderer* wxMaracasSurfaceRenderingManager::getRenderer(){ + return _renderer; +} + +/** +** Updates volume +**/ +void wxMaracasSurfaceRenderingManager::Update(int pid)throw(char*){ + wxMaracasSurfaceRenderingManagerData* data = this->getViewData(pid); + ((wxMaracasSurfaceRenderingManagerDataMhd*)data)->UpdateSurface(); + _renderer->Render(); +} + /** ** Adds a prop3D to the manager and returns the identifier **/ -int wxMaracasSurfaceRenderingManager::addProp3D(vtkProp3D* prop3D, std::string dataname) throw(char*){ +int wxMaracasSurfaceRenderingManager::addProp3D(int idTP, vtkProp3D* prop3D, std::string dataname) throw(char*){ checkInvariant(); if(prop3D != NULL){ - wxMaracasSurfaceRenderingManagerData* data = new wxMaracasSurfaceRenderingManagerData(prop3D, dataname); + wxMaracasSurfaceRenderingManagerData* data = new wxMaracasSurfaceRenderingManagerData(prop3D, dataname, _interactor); prop3Dvect.push_back(data); _renderer->AddActor(data->getProp3D()); - data->setId(_idCount); - _idCount++; + if(idTP == -1) + { + data->setId(_idCount); + _idCount++; + } + else + { + data->setId(idTP); + } return data->getId(); }else{ throw "Check vtkProp3D file or input"; } return -1; } -int wxMaracasSurfaceRenderingManager::addPropMHD(vtkImageData* imagedata, std::string dataname) throw(char*){ - +int wxMaracasSurfaceRenderingManager::addPropMHD(int idTP, vtkImageData* imagedata, std::string dataname) throw(char*){ checkInvariant(); if(imagedata != NULL){ - wxMaracasSurfaceRenderingManagerData* data = new wxMaracasSurfaceRenderingManagerDataMhd(imagedata, dataname); + image = imagedata; + wxMaracasSurfaceRenderingManagerData* data = new wxMaracasSurfaceRenderingManagerDataMhd(imagedata, dataname, _interactor); prop3Dvect.push_back(data); _renderer->AddActor(data->getProp3D()); - data->setId(_idCount); - _idCount++; + if(idTP == -1) + { + data->setId(_idCount); + _idCount++; + } + else + { + data->setId(idTP); + } + printf("wxMaracasSurfaceRenderingManager::addPropMHD->idSurfaceRender: %i\n", data->getId()); return data->getId(); }else{ throw "Check ImageData file or input"; } return -1; - } /** ** adds or removes an actor depending of the bool value @@ -82,8 +121,27 @@ void wxMaracasSurfaceRenderingManager::addRemoveActor(int propid, bool addremove } _renderer->Render(); } +} +/** +** adds or removes the surface box depending of the bool value +**/ +void wxMaracasSurfaceRenderingManager::addRemoveSurfaceBox(int propid, bool addremove) throw(char*){ + checkInvariant(); + + wxMaracasSurfaceRenderingManagerData* data = this->getViewData(propid); + if(data->getProp3D()!=NULL){ + data->addRemoveSurfaceBox(addremove); + /*if(addremove){ + data-> + _renderer->AddViewProp(data->getProp3D()); + }else{ + _renderer->RemoveViewProp(data->getProp3D()); + } + _renderer->Render();*/ + } } + /** ** Changes the opacity in a prop3D **/ @@ -132,7 +190,6 @@ vtkProp3D* wxMaracasSurfaceRenderingManager:: getProp3D(std::string filename){ vtkImageData* wxMaracasSurfaceRenderingManager::getImageData(std::string filename){ if(filename.compare("")!= 0){ - vtkMetaImageReader* reader = vtkMetaImageReader::New(); reader->SetFileName(filename.c_str()); reader->Update(); @@ -143,6 +200,10 @@ vtkImageData* wxMaracasSurfaceRenderingManager::getImageData(std::string filenam return NULL; } +vtkImageData* wxMaracasSurfaceRenderingManager::getImageData(){ + return image; +} + void wxMaracasSurfaceRenderingManager::checkInvariant() throw(char*){ if(this->_renderer==NULL){ throw "Renderer not set"; @@ -196,12 +257,15 @@ void wxMaracasSurfaceRenderingManager::deleteActor(int propid) throw (char *){ delete data; prop3Dvect.pop_back(); }else{ + throw "id not found in the data"; - } + } +} +void wxMaracasSurfaceRenderingManager::Transform(vtkMatrix4x4* tmatrix){ - - } - +bool wxMaracasSurfaceRenderingManager::interactorSet(){ + return _interactor? true:false; +} \ No newline at end of file