]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasIRMViewManager.cxx
no message
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracasIRMViewManager.cxx
index 1f02c5b739ed3375621f99826ff0b710ac8366ad..90f581c979072546c21a6b783cc11ef9f6fe2e1d 100644 (file)
@@ -3,8 +3,8 @@
   Program:   wxMaracas
   Module:    $RCSfile: wxMaracasIRMViewManager.cxx,v $
   Language:  C++
-  Date:      $Date: 2009/04/09 13:58:38 $
-  Version:   $Revision: 1.2 $
+  Date:      $Date: 2009/05/29 14:25:26 $
+  Version:   $Revision: 1.6 $
 
   Copyright: (c) 2002, 2003
   License:
@@ -16,6 +16,8 @@
 =========================================================================*/
 #include "wxMaracasIRMViewManager.h"
 
+#include "wxMaracasIRMViewManagerDataMhd.h"
+
 /**
 **     Start of the manager class
 **/
@@ -35,7 +37,7 @@ void wxMaracasIRMViewManager::setRenderer(vtkRenderer*  renderer){
 /**
 **     Adds a prop3D to the manager and returns the identifier
 **/
-int wxMaracasIRMViewManager::addProp3D(vtkProp3D* prop3D, std::string dataname)  throw(...){
+int wxMaracasIRMViewManager::addProp3D(vtkProp3D* prop3D, std::string dataname)  throw(char*){
        checkInvariant();
        if(prop3D != NULL){
                wxMaracasIRMViewManagerData* data = new wxMaracasIRMViewManagerData(prop3D, dataname);
@@ -49,11 +51,11 @@ int wxMaracasIRMViewManager::addProp3D(vtkProp3D* prop3D, std::string dataname)
        }
        return -1;
 }
-int wxMaracasIRMViewManager::addPropMHD(vtkImageData* imagedata, std::string dataname){
+int wxMaracasIRMViewManager::addPropMHD(vtkImageData* imagedata, std::string dataname) throw(char*){
 
        checkInvariant();
        if(imagedata != NULL){
-               wxMaracasIRMViewManagerData* data = new wxMaracasIRMViewManagerData(imagedata, dataname);
+               wxMaracasIRMViewManagerData* data = new wxMaracasIRMViewManagerDataMhd(imagedata, dataname);
                prop3Dvect.push_back(data);             
                _renderer->AddActor(data->getProp3D());
                data->setId(_idCount);
@@ -68,7 +70,7 @@ int wxMaracasIRMViewManager::addPropMHD(vtkImageData* imagedata, std::string dat
 /**
 **     adds or removes an actor depending of the bool value
 **/
-void wxMaracasIRMViewManager::addRemoveActor(int propid, bool addremove)  throw(...){
+void wxMaracasIRMViewManager::addRemoveActor(int propid, bool addremove)  throw(char*){
        checkInvariant();
        
        wxMaracasIRMViewManagerData* data = this->getViewData(propid);          
@@ -85,7 +87,7 @@ void wxMaracasIRMViewManager::addRemoveActor(int propid, bool addremove)  throw(
 /**
 **     Changes the opacity in a prop3D
 **/
-void wxMaracasIRMViewManager::changeOpacity(int propid, int value)  throw(...){
+void wxMaracasIRMViewManager::changeOpacity(int propid, int value)  throw(char*){
        checkInvariant();       
 
 
@@ -98,14 +100,14 @@ void wxMaracasIRMViewManager::changeOpacity(int propid, int value)  throw(...){
 /**
 **     changes the isovalue in a prop3D
 **/
-void wxMaracasIRMViewManager::changeIsoValue(int propid, int value )throw (...){
+void wxMaracasIRMViewManager::changeIsoValue(int propid, double value )throw(char*){
        checkInvariant();       
 
        wxMaracasIRMViewManagerData* data = this->getViewData(propid);          
 
-       _renderer->RemoveViewProp(data->getProp3D());
-       data->changeIsoValue(value);
-       _renderer->AddViewProp(data->getProp3D());
+       //_renderer->RemoveActor(data->getProp3D());
+       ((wxMaracasIRMViewManagerDataMhd*)data)->changeIsoValue(value);
+       //_renderer->AddActor(data->getProp3D());
 
        _renderer->Render();
 }
@@ -141,15 +143,15 @@ vtkImageData* wxMaracasIRMViewManager::getImageData(std::string filename){
        return NULL;
 }
 
-void wxMaracasIRMViewManager::checkInvariant()  throw(...){
+void wxMaracasIRMViewManager::checkInvariant()  throw(char*){
        if(this->_renderer==NULL){
                throw "Renderer not set";
        }
 }
 
-wxMaracasIRMViewManagerData* wxMaracasIRMViewManager::getViewData(int id) throw(...){
+wxMaracasIRMViewManagerData* wxMaracasIRMViewManager::getViewData(int id) throw(char*){
     int i;
-       for(i = 0; i < prop3Dvect.size();i++){
+       for(i = 0; i < (int)(prop3Dvect.size());i++){
                if(prop3Dvect[i]->getId() == id){
                        return prop3Dvect[i];
                }
@@ -159,165 +161,47 @@ wxMaracasIRMViewManagerData* wxMaracasIRMViewManager::getViewData(int id) throw(
        return NULL;
 }
 
-int wxMaracasIRMViewManager::getMaxIsoValue(int propid){
+int wxMaracasIRMViewManager::getMaxIsoValue(int propid) throw(char*){
        
-       return this->getViewData(propid)->getMaxGreyLevel();
+       return ((wxMaracasIRMViewManagerDataMhd*)this->getViewData(propid))->getMaxGreyLevel();
 
 }
 
-void wxMaracasIRMViewManager::changeColor(int propid, double red, double green, double blue) throw (...){
+void wxMaracasIRMViewManager::changeColor(int propid, double red, double green, double blue) throw(char*){
        checkInvariant();       
        this->getViewData(propid)->changeColor(red, green, blue);
 
+       _renderer->Render();
 }
 
-/********************************************************************************************
-** Start of data viewmanagerData
-*********************************************************************************************/
-
-wxMaracasIRMViewManagerData::wxMaracasIRMViewManagerData(vtkProp3D* prop3Dvect, std::string dataname){
-
-       _prop3D = prop3Dvect;
-       _dataname = dataname;
-       _maxgreylevel=-1;
-}
-wxMaracasIRMViewManagerData::wxMaracasIRMViewManagerData(vtkImageData* imagedata, std::string dataname){
-
-       this->setVtkImageData(imagedata);
-       _dataname = dataname;
-       
-       _maxgreylevel = getMaxLevel(imagedata);
-       _prop3D=NULL;                   
+void wxMaracasIRMViewManager::deleteActor(int propid) throw (char *){
+       checkInvariant();       
 
-       this->changeIsoValue(this->_maxgreylevel);
-}
-/**
-**     changes the isovalue in a prop3D
-**/
-void wxMaracasIRMViewManagerData::changeIsoValue(int value){   
-       
+       this->addRemoveActor(propid, false);
 
-       if(_prop3D!=NULL){
-               _prop3D->Delete();
-               _polydata->Delete();
-               _dataMapper->Delete();
+       int i,n;
+       bool exit = false;
+       for(i = 0; i < (int)(prop3Dvect.size())&&!exit;i++){
+               if(prop3Dvect[i]->getId() == propid){                   
+                       n=i;
+                       exit = true;
+               }
+       }
+       if(exit){
+               wxMaracasIRMViewManagerData* data = prop3Dvect[n];                      
+               int j;
+               for(j = i; j < (int)(prop3Dvect.size())-1;j++){
+                       prop3Dvect[j] = prop3Dvect[j+1];
+               }               
+               delete data;
+               prop3Dvect.pop_back();
+       }else{
+               throw "id not found in the data";
        }
 
-       vtkMarchingCubes *cubesFilter = vtkMarchingCubes::New();
-    cubesFilter->SetInput(this->_imagedata);
-    cubesFilter->SetValue(0,value);
-       cubesFilter->ComputeGradientsOn ();
-    cubesFilter->ComputeScalarsOn ();
-       cubesFilter->SetNumberOfContours( 1 );
-       
-       // Unir puntos duplicados y remover primitivas degeneradas
-       vtkCleanPolyData *cleanFilter = vtkCleanPolyData::New();
-    cleanFilter->SetInput ( cubesFilter->GetOutput() );
-       cleanFilter->Update();
-
-       _polydata = vtkPolyData::New();
-       _polydata->DeepCopy(cleanFilter->GetOutput());
-
-       cubesFilter->Delete();
-       cleanFilter->Delete();
-
-
-       _dataMapper = vtkPolyDataMapper::New();
-       _dataMapper->SetInput(_polydata);
-
-       vtkActor* dataActor = vtkActor::New();
-       dataActor->SetMapper(_dataMapper);      
-       _prop3D = dataActor;    
        
        
+    
 }
-int wxMaracasIRMViewManagerData::getMaxGreyLevel(){
-       return _maxgreylevel;
-}
-wxMaracasIRMViewManagerData::~wxMaracasIRMViewManagerData(){
-}
-/**
-**     Adds a prop3D to the world of the application
-**/
-/**
-       ** Get's the max grey level of the image
-       **/
-int wxMaracasIRMViewManagerData::getMaxLevel(vtkImageData* img){
-
-       int ext[6], i, j, k,max=0;
-       img->GetExtent(ext);
 
-       for(i = ext[0]; i < ext[1];i++){
-               for(j = ext[2]; j < ext[3];j++){
-                       for(k = ext[4]; k < ext[5];k++){
-                unsigned short* ptr = (unsigned short*)img->GetScalarPointer(i,j,k);
-                               int temp = (int)*ptr;
-                               if(temp > max){
-                    max = temp;
-                               }
-                       }
-               }
-       }
-       return max;
 
-
-}
-void wxMaracasIRMViewManagerData::setVtkImageData(vtkImageData* imagedata){
-       _imagedata = imagedata;
-}
-/**
-**     Adds a prop3D to the world of the application
-**/
-void wxMaracasIRMViewManagerData::setProp3D(vtkProp3D* prop3D){
-       _prop3D = prop3D;
-}
-/**
-**     Changes the opacity in a prop3D
-**/
-void wxMaracasIRMViewManagerData::changeOpacity(int value){
-       vtkActor* actor = (vtkActor*)_prop3D;
-       actor->GetProperty()->SetOpacity((double)value/100.0);
-}
-
-/**
-**     Check if the variables are setted correctly
-**/
-void wxMaracasIRMViewManagerData::checkInvariant(){
-
-}
-/**
-**     get the prop3D 
-**/
-vtkProp3D* wxMaracasIRMViewManagerData::getProp3D(){
-       return _prop3D;
-}
-/**
-**     return the id from the daat
-**/
-int wxMaracasIRMViewManagerData::getId(){
-       return _id;
-}
-/**
-**     set data id
-**/
-void wxMaracasIRMViewManagerData::setId(int propid){
-       _id = propid;
-}
-
-/**
-**     Get the filanme
-**/
-std::string wxMaracasIRMViewManagerData::getDataname(){
-       return _dataname;
-}
-/**
-** Set the filanme
-**/
-void wxMaracasIRMViewManagerData::setDataname(std::string dataname){
-       _dataname = dataname;
-}
-
-void wxMaracasIRMViewManagerData::changeColor(double red, double green, double blue){
-    vtkActor* actor = (vtkActor*)_prop3D;      
-       actor->GetProperty()->SetColor(red,green,blue);
-}