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=65c158dc171f8d3114ee3544b2a94a1f41880df0;hp=64e0197a1fafab47711367c73b942d04b2761cfd;hpb=28c74ab5eb531ce001260e9bc3fcb0151fcfc56b;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.cxx index 64e0197..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/30 20:06:07 $ - Version: $Revision: 1.2 $ + Date: $Date: 2010/01/21 13:54:15 $ + Version: $Revision: 1.7 $ Copyright: (c) 2002, 2003 License: @@ -22,6 +22,7 @@ **/ wxMaracasSurfaceRenderingManager::wxMaracasSurfaceRenderingManager(){ _renderer = NULL; + _interactor = NULL; _idCount=0; } wxMaracasSurfaceRenderingManager::~wxMaracasSurfaceRenderingManager(){ @@ -33,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 @@ -81,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 **/ @@ -131,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(); @@ -142,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"; @@ -195,7 +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