]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx
*** empty log message ***
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracasSurfaceRenderingManagerDataMhd.cxx
index 031c9752febea3e79689837e2f69f7c6c285b9d9..cb6734ccdfb13f6c87cb0cbe20a08dd39789de07 100644 (file)
@@ -1,8 +1,10 @@
 
 #include "wxMaracasSurfaceRenderingManagerDataMhd.h"
 
+#include "vtkStripper.h"
+
 wxMaracasSurfaceRenderingManagerDataMhd::wxMaracasSurfaceRenderingManagerDataMhd(vtkImageData* imagedata, std::string dataname, vtkRenderWindowInteractor*  interactor)
-: wxMaracasSurfaceRenderingManagerData(NULL, dataname, interactor)
+: wxMaracasSurfaceRenderingManagerData(NULL, dataname)
 {
 
        this->setVtkImageData(imagedata);
@@ -11,27 +13,71 @@ wxMaracasSurfaceRenderingManagerDataMhd::wxMaracasSurfaceRenderingManagerDataMhd
        _maxgreylevel = getMaxLevel(imagedata);
        _prop3D=NULL;                   
 
-       _cubesFilter = vtkMarchingCubes::New();
-       _cleanFilter = vtkCleanPolyData::New();         
-       _dataMapper = vtkPolyDataMapper::New();
-       vtkActor* dataActor = vtkActor::New();
-       
-       _cubesFilter->SetInput(this->_imagedata);
+       _cubesFilter = vtkMarchingCubes::New(); 
+       _cubesFilter->SetInput(this->_imagedata);               
        _cubesFilter->ComputeGradientsOn ();
        _cubesFilter->ComputeScalarsOn ();
        _cubesFilter->SetNumberOfContours( 1 );
+       _cleanFilter = vtkCleanPolyData::New();         
        _cleanFilter->SetInput ( _cubesFilter->GetOutput() );
-       _dataMapper->SetInput(_cleanFilter->GetOutput());
-       _dataMapper->ScalarVisibilityOff();
+
+       _dataMapper = vtkPolyDataMapper::New( );
+       _dataMapper->ScalarVisibilityOff( );
        _dataMapper->ImmediateModeRenderingOn();
-       dataActor->SetMapper(_dataMapper);      
+       vtkActor* dataActor = vtkActor::New();
 
-       if(_boxWidgetS1){
-               _boxWidgetS1->SetInput(imagedata);
-       }
+       if(interactor){
+
+               _boxWidgetS1 = vtkBoxWidget::New();
+               _boxWidgetS1->SetInteractor( interactor );
+               _boxWidgetS1->SetPlaceFactor(1.25); 
+
+               _boxWidgetS1->SetInput( this->_imagedata );
+               _boxWidgetS1->PlaceWidget();    
+               boxSurfaceObserver* observer = boxSurfaceObserver::New();
+               
+               _boxWidgetS1->HandlesOn ();
+               _boxWidgetS1->On();
+
+               vtkStripper* striper = vtkStripper::New();
+           striper->SetInput( _cleanFilter->GetOutput() );
+               //striper->SetInput( _cubesFilter->GetOutput() );
+               
+               striper->Update();
+               _boxWidgetS1->SetInput(striper->GetOutput());
+               _boxWidgetS1->PlaceWidget();
 
+               _tissuePlanes  = vtkPlanes::New();
+   
+               int x1,x2,y1,y2,z1,z2;
+               this->_imagedata->GetExtent(x1,x2,y1,y2,z1,z2);
+               _tissuePlanes->SetBounds  (x1,x2,y1,y2,z1,z2);
+
+
+               
+               _boxWidgetS1->GetPlanes( _tissuePlanes );
+               
+               _tissueClipper = vtkClipPolyData::New();
+               _tissueClipper->SetInput( striper->GetOutput() );
+               _tissueClipper->SetClipFunction( _tissuePlanes );
+               _tissueClipper->InsideOutOn( );
+               _dataMapper->SetInput( _tissueClipper->GetOutput() );
+               observer->SetPlanes( _tissuePlanes );
+               observer->SetActor( dataActor );
+               _boxWidgetS1->AddObserver( vtkCommand::InteractionEvent          , observer );
+
+
+               
+       }else{          
+               _dataMapper->SetInput(_cleanFilter->GetOutput());                               
+       }
+       
+       dataActor->SetMapper(_dataMapper);      
        this->_prop3D = dataActor;
 
+       
+       
+
        this->changeIsoValue(this->_maxgreylevel);