]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/CutModule2/kernel/CutModel2Data.cxx
*** empty log message ***
[creaMaracasVisu.git] / lib / maracasVisuLib / src / CutModule2 / kernel / CutModel2Data.cxx
diff --git a/lib/maracasVisuLib/src/CutModule2/kernel/CutModel2Data.cxx b/lib/maracasVisuLib/src/CutModule2/kernel/CutModel2Data.cxx
deleted file mode 100644 (file)
index 5e37efb..0000000
+++ /dev/null
@@ -1,388 +0,0 @@
-/*=========================================================================
-
-  Program:   wxMaracas
-  Module:    $RCSfile: CutModel2Data.cxx,v $
-  Language:  C++
-  Date:      $Date: 2009/11/19 15:24:57 $
-  Version:   $Revision: 1.1 $
-
-  Copyright: (c) 2002, 2003
-  License:
-
-     This software is distributed WITHOUT ANY WARRANTY; without even
-     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
-     PURPOSE.  See the above copyright notice for more information.
-
-=========================================================================*/
-#include "CutModel2Data.h"
-
-/**
-**     Start of the manager class
-**/
-CutModel2Data::CutModel2Data(int id, vtkRenderWindowInteractor* interactor, vtkCommand* observer, vtkImageData* img){
-       
-       initializeData(id, interactor, observer, img);
-       
-}
-CutModel2Data::CutModel2Data(){
-
-}
-void CutModel2Data::initializeData(int id, vtkRenderWindowInteractor* interactor, vtkCommand* observer, vtkImageData* img){
-       _id = id;
-       _currentshape=0;
-       createBoxWidget(interactor, observer);
-       setTransform(img);
-       createActor();
-       createShapes();
-       ChangeShape(0);
-       checkInvariant();
-}
-CutModel2Data::~CutModel2Data(){
-       checkInvariant();
-       _boxWidgetVolume->Off();
-       _boxWidgetVolume->Delete();     
-       _Mapper->Delete();      
-       _Actor->Delete();       
-       delete _cubefigure;
-       delete _cylinderfigure;
-       delete _spherefigure;
-       currentmatrix->Delete();
-       inversModel->Delete();
-}
-void CutModel2Data::RefreshViewBox(){
-               
-}
-void CutModel2Data::createBoxWidget(vtkRenderWindowInteractor* interactor, vtkCommand* observer){
-
-       _boxWidgetVolume = vtkBoxWidget::New();
-       _boxWidgetVolume->SetInteractor( interactor );
-       //_boxWidgetVolume->SetPlaceFactor(1);
-       //_boxWidgetVolume->SetInput( img );    
-       //_boxWidgetVolume->PlaceWidget();
-
-       _boxWidgetVolume->AddObserver( vtkCommand::InteractionEvent              , observer );
-       _boxWidgetVolume->AddObserver( vtkCommand::StartInteractionEvent                 , observer );
-       _boxWidgetVolume->AddObserver( vtkCommand::RightButtonReleaseEvent               , observer );
-       
-       _boxWidgetVolume->HandlesOn ();
-       _boxWidgetVolume->On();
-       //_boxWidgetVolume->GetHandleProperty()->SetOpacity(0.5);       
-       //_boxWidgetVolume->GetOutlineProperty()->SetOpacity(0.5);      
-}
-void CutModel2Data::setTransform(vtkImageData* img)throw( CutModel2Exception){
-       
-       currentmatrix = vtkTransform::New();
-       modeltransform = vtkTransform::New();
-       inversModel     = vtkTransform::New();    
-
-       vtkMatrix4x4* matrix = vtkMatrix4x4::New();  
-       matrix->Identity();     
-       int *ext = img->GetExtent();
-       double *spc = img->GetSpacing();
-
-       
-       matrix->SetElement(0,0,(ext[1]-ext[0])/4*spc[0]);
-       matrix->SetElement(1,1,(ext[3]-ext[2])/4*spc[1]);       
-       matrix->SetElement(2,2,(ext[5]-ext[4])/4*spc[2]);
-
-       double orgx = (ext[1]-ext[0])/2*spc[0];
-       double orgy = (ext[3]-ext[2])/2*spc[1];
-       double orgz = (ext[5]-ext[4])/2*spc[2];
-
-       matrix->SetElement(0,3,orgx);
-       matrix->SetElement(1,3,orgy);
-       matrix->SetElement(2,3,orgz);
-
-       
-       currentmatrix->SetMatrix(matrix);
-       _boxWidgetVolume->SetTransform(currentmatrix);  
-               
-}
-void CutModel2Data::createActor(){     
-
-       _Mapper = vtkPolyDataMapper::New();     
-       _Actor  = vtkActor::New();
-       _Actor->SetMapper(_Mapper);     
-       _Actor->GetProperty()->SetColor(1, 0, 0);
-       _Actor->GetProperty()->SetOpacity(0.5); 
-       
-}
-void CutModel2Data::udapteActorDirection()throw( CutModel2Exception){
-       checkInvariant();
-       
-       _boxWidgetVolume->GetTransform(currentmatrix);          
-       _Actor->SetUserMatrix(currentmatrix->GetMatrix());//SetUserTransform(currentmatrix );
-}
-void CutModel2Data::createShapes(){
-       _cubefigure = new CutModel2FigureCube();
-       _cylinderfigure = new CutModel2FigureCylinder();
-       _spherefigure = new CutModel2FigureSphere();
-}
-void CutModel2Data::changeOpacity(int opacity)throw( CutModel2Exception){
-       checkInvariant();       
-       _Actor->GetProperty()->SetOpacity((double)opacity/100.0);
-}
-
-void CutModel2Data::ShowViewBox(bool check)throw( CutModel2Exception){
-       checkInvariant();
-       if(check){
-               _boxWidgetVolume->On();
-       }else{
-               _boxWidgetVolume->Off();
-       }    
-}
-
-void CutModel2Data::ChangeShape(int selection)throw( CutModel2Exception){
-       checkInvariant();
-       
-       if(selection == 0){
-               _Mapper->SetInput(_spherefigure->getPolyData());
-       }else if(selection == 1){
-               _Mapper->SetInput(_cylinderfigure->getPolyData());
-       }else if(selection == 2){
-               _Mapper->SetInput(_cubefigure->getPolyData());
-       }else{
-               throw CutModel2Exception("Shape type not found");
-       }
-
-       _currentshape=selection;
-}
-
-void CutModel2Data::checkInvariant()throw( CutModel2Exception){
-       if(_boxWidgetVolume==NULL){
-               throw CutModel2Exception("Box Widget not created");
-       }
-       if(_Mapper==NULL){
-               throw CutModel2Exception("Mapper not created");
-       }
-       if(_Actor==NULL){
-               throw CutModel2Exception("Actor not created");
-       }
-       if(_cubefigure==NULL){
-               throw CutModel2Exception("Cube not created");
-       }
-       if(_cylinderfigure==NULL){
-               throw CutModel2Exception("Cylinder not created");
-       }
-       if(_spherefigure==NULL){
-               throw CutModel2Exception("Sphere not created");
-       }        
-       
-}
-
-vtkActor* CutModel2Data::getActor()throw( CutModel2Exception){
-       checkInvariant();
-       return _Actor;
-}
-
-void CutModel2Data::changeColor(double r,double g,double b)throw( CutModel2Exception){
-       checkInvariant();               
-       _Actor->GetProperty()->SetColor( r, g, b );     
-}
-CutModel2Figure* CutModel2Data::getCurentCuttingModel(){
-    checkInvariant();
-       
-       if(_currentshape == 0){
-               return _spherefigure;
-       }else if(_currentshape == 1){
-               return _cylinderfigure;
-       }else if(_currentshape == 2){
-               return _cubefigure;
-       }else{
-               throw CutModel2Exception("Shape type not found");
-       }       
-}
-void CutModel2Data::ExecuteCut( double* range, bool isinside, vtkImageData* copyimage)throw( CutModel2Exception)
-{
-
-       wxBusyCursor wait;
-
-       CutModel2Figure* actualCuttingModel = getCurentCuttingModel();
-
-       //_boxWidgetVolume->GetTransform(currentmatrix);        
-       actualCuttingModel->SetVtkTransform(getModelTransform(copyimage));
-       //actualCuttingModel->SetVtkTransform(currentmatrix);
-       actualCuttingModel->SetInversVtkTransform(getModelTransformInvers());   
-
-       bool                    inside;
-       bool                    volInt, volExt;
-       int                             xx,yy,zz;
-       unsigned short* pOrg;   
-       int                             ext[6];
-       double                  spc[3];
-       long int                contAfter = 0;
-       long int                contBefor = 0;
-       
-       double minvalue = range[0]; 
-       double value    = range[1];
-       double maxvalue = range[2]; 
-
-               
-       copyimage->GetExtent(ext);        
-       
-       for (xx=ext[0];xx<ext[1]; xx++)
-       {
-               for (yy=ext[2];yy<ext[3]; yy++)
-               {
-                       for (zz=ext[4];zz<ext[5];zz++)
-                       {
-                               inside=actualCuttingModel->IfPointInside(xx,yy,zz);
-                               if (  ((inside==true)&&(isinside==true)) || ((!inside==true)&&(!isinside)) )
-                               {
-                                       pOrg=(unsigned short*)copyimage->GetScalarPointer (xx,yy,zz); 
-
-                                       //std::cout<<"xx,yy,zz "<<xx<<","<<yy<<","<<zz<<" "<<*pOrg<<std::endl;
-                                       if ((unsigned short)minvalue <=(*pOrg)&&(*pOrg)<=(unsigned short)maxvalue)
-                                       {       
-                                               
-                                               *pOrg=(unsigned short)value;
-                                               
-                                       }                                       
-                               } // if inside
-                       } // for zz
-               } // for yy
-       } // for xx
-       
-}
-
-void CutModel2Data::ExecuteUnCut(bool isinside, vtkImageData* image, vtkImageData* copyimage)throw( CutModel2Exception)
-{
-
-       wxBusyCursor wait;
-
-       CutModel2Figure* actualCuttingModel = getCurentCuttingModel();
-       
-       actualCuttingModel->SetVtkTransform(getModelTransform(copyimage));
-       
-       actualCuttingModel->SetInversVtkTransform(getModelTransformInvers());   
-
-       bool                    inside;
-       bool                    volInt, volExt;
-       int                             xx,yy,zz;
-       unsigned short* pOrg;   
-       int                             ext[6];
-       double                  spc[3];
-       long int                contAfter = 0;
-       long int                contBefor = 0;  
-       
-       double value;
-       
-
-               
-       copyimage->GetExtent(ext);        
-       
-       for (xx=ext[0];xx<ext[1]; xx++)
-       {
-               for (yy=ext[2];yy<ext[3]; yy++)
-               {
-                       for (zz=ext[4];zz<ext[5];zz++)
-                       {
-                               inside=actualCuttingModel->IfPointInside(xx,yy,zz);
-                               if (  ((inside==true)&&(isinside==true)) || ((!inside==true)&&(!isinside)) )
-                               {
-                                       value = *((unsigned short*)image->GetScalarPointer (xx,yy,zz));
-                                       pOrg=(unsigned short*)copyimage->GetScalarPointer (xx,yy,zz); 
-                                       //std::cout<<"CutModel2Data::ExecuteUnCut() "<<value<<" "<<*pOrg<<std::endl;
-                                       *pOrg=(unsigned short)value;
-                               } // if inside
-                       } // for zz
-               } // for yy
-       } // for xx
-       
-}
-
-vtkTransform* CutModel2Data::getModelTransform(vtkImageData* copyimage){
-
-       double *spc = copyimage->GetSpacing();
-       modeltransform->Identity();
-
-    vtkMatrix4x4* matrix = currentmatrix->GetMatrix();
-       vtkMatrix4x4* matrixmodel = modeltransform->GetMatrix();
-       matrixmodel->SetElement(0,0,matrix->GetElement(0,0)/spc[0]);
-       matrixmodel->SetElement(1,0,matrix->GetElement(1,0)/spc[0]);
-       matrixmodel->SetElement(2,0,matrix->GetElement(2,0)/spc[0]);
-       matrixmodel->SetElement(0,1,matrix->GetElement(0,1)/spc[1]);
-       matrixmodel->SetElement(1,1,matrix->GetElement(1,1)/spc[1]);
-       matrixmodel->SetElement(2,1,matrix->GetElement(2,1)/spc[1]);
-       matrixmodel->SetElement(0,2,matrix->GetElement(0,2)/spc[2]);
-       matrixmodel->SetElement(1,2,matrix->GetElement(1,2)/spc[2]);
-       matrixmodel->SetElement(2,2,matrix->GetElement(2,2)/spc[2]);            
-       matrixmodel->SetElement(0,3,matrix->GetElement(0,3)/spc[0]);
-       matrixmodel->SetElement(1,3,matrix->GetElement(1,3)/spc[1]);
-       matrixmodel->SetElement(2,3,matrix->GetElement(2,3)/spc[2]);    
-
-       /*
-       
-       double* pos = currentmatrix->GetPosition();
-       modeltransform->Translate(pos[0]/spc[0],pos[1]/spc[1],pos[2]/spc[2]);   
-
-       double* scal = currentmatrix->GetScale();       
-       modeltransform->Scale(scal[0]/spc[0],scal[1]/spc[1],scal[2]/spc[2]);
-
-       //double* orient = currentmatrix->GetOrientation();
-       //modeltransform->RotateZ(orient[2]);   
-       //modeltransform->RotateY(orient[1]);   
-       //modeltransform->RotateX(orient[0]);   
-       double* orient = currentmatrix->GetOrientationWXYZ();   
-       modeltransform->RotateWXYZ(orient[0],orient[1],orient[2],orient[3]);    
-       
-       */
-               
-
-       modeltransform->Update();
-
-       return modeltransform;
-
-       
-}
-void CutModel2Data::setTransform(vtkTransform* transform, vtkImageData* img)throw( CutModel2Exception){
-               
-
-       double *spc = img->GetSpacing();
-
-       currentmatrix->Identity();      
-
-       /*double* orient = transform->GetOrientationWXYZ();
-       currentmatrix->RotateWXYZ(orient[0],orient[1],orient[2],orient[3]);     
-
-       double* pos = transform->GetPosition();
-       currentmatrix->Translate(pos[0]/spc[0],pos[1]/spc[1],pos[2]/spc[2]);
-
-       double* scal = transform->GetScale();   
-       currentmatrix->Scale(scal[0]/spc[0],scal[1]/spc[1],scal[2]/spc[2]);
-
-       currentmatrix->Update();        */
-               
-       _boxWidgetVolume->SetTransform(transform);
-
-    /*vtkMatrix4x4* matrix = transform->GetMatrix();
-       vtkMatrix4x4* matrixcurrent = currentmatrix->GetMatrix();
-       matrixcurrent->SetElement(0,0,matrix->GetElement(0,0)/spc[0]);
-       matrixcurrent->SetElement(1,0,matrix->GetElement(1,0)/spc[0]);
-       matrixcurrent->SetElement(2,0,matrix->GetElement(2,0)/spc[0]);
-       matrixcurrent->SetElement(0,1,matrix->GetElement(0,1)/spc[1]);
-       matrixcurrent->SetElement(1,1,matrix->GetElement(1,1)/spc[1]);
-       matrixcurrent->SetElement(2,1,matrix->GetElement(2,1)/spc[1]);
-       matrixcurrent->SetElement(0,2,matrix->GetElement(0,2)/spc[2]);
-       matrixcurrent->SetElement(1,2,matrix->GetElement(1,2)/spc[2]);
-       matrixcurrent->SetElement(2,2,matrix->GetElement(2,2)/spc[2]);          
-       matrixcurrent->SetElement(0,3,matrix->GetElement(0,3)/spc[0]);
-       matrixcurrent->SetElement(1,3,matrix->GetElement(1,3)/spc[1]);
-       matrixcurrent->SetElement(2,3,matrix->GetElement(2,3)/spc[2]);  */
-
-
-       udapteActorDirection();
-       getModelTransform(img);
-
-}
-vtkTransform* CutModel2Data::getModelTransformInvers(){
-       inversModel->Identity ();
-       inversModel->Concatenate ( modeltransform );
-       inversModel->Inverse(); 
-       return inversModel;
-}
-
-vtkPolyData* CutModel2Data::getPolyData()throw( CutModel2Exception){
-       return _Mapper->GetInput();
-}
-