]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManager.cxx
creaButtonContainer: doxygen 90%
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracasSurfaceRenderingManager.cxx
index ac0b3f035b51279b08147535e5213dc8d2073455..e43f19ebd709a62175b38ec89b83b7fa78219596 100644 (file)
@@ -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