X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2FCutModule2%2Fkernel%2FCutModel2Data.cxx;fp=lib%2FmaracasVisuLib%2Fsrc%2FCutModule2%2Fkernel%2FCutModel2Data.cxx;h=0000000000000000000000000000000000000000;hb=7e651737b5c12358da7971183af61abb6381a3fc;hp=5e37efb6af3a36ed2bef1efc11f69933f92301e0;hpb=7c6b87928c952de6b86ce9499d9a5c953bf490ad;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/CutModule2/kernel/CutModel2Data.cxx b/lib/maracasVisuLib/src/CutModule2/kernel/CutModel2Data.cxx deleted file mode 100644 index 5e37efb..0000000 --- a/lib/maracasVisuLib/src/CutModule2/kernel/CutModel2Data.cxx +++ /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];xxIfPointInside(xx,yy,zz); - if ( ((inside==true)&&(isinside==true)) || ((!inside==true)&&(!isinside)) ) - { - pOrg=(unsigned short*)copyimage->GetScalarPointer (xx,yy,zz); - - //std::cout<<"xx,yy,zz "<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];xxIfPointInside(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() "<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(); -} -