]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracasSurfaceRenderingManagerDataMhd.cxx
external mvtkmprbasedata, to get the point
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMaracasSurfaceRenderingManagerDataMhd.cxx
index 55d46a9d425e3af24403a7e98a3777f1f262a7fe..58a5db3e135886d61ad18016c8dcbd0aebecffe1 100644 (file)
@@ -1,9 +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);
@@ -12,44 +13,88 @@ 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();
 
-       this->_prop3D = dataActor;
+       //if(_boxWidgetS1){
+       if(interactor){
+
+               _boxWidgetS1 = vtkBoxWidget::New();
+               _boxWidgetS1->SetInteractor( interactor );
+               _boxWidgetS1->SetPlaceFactor(1.25); 
+
+               _boxWidgetS1->SetInput( this->_imagedata );
+               _boxWidgetS1->PlaceWidget();    
+               boxSurfaceObserver* observer = boxSurfaceObserver::New();               
 
-       if(_boxWidgetS1){
                vtkStripper* striper = vtkStripper::New();
            striper->SetInput( _cleanFilter->GetOutput() );
+               //striper->SetInput( _cubesFilter->GetOutput() );
+               
+               striper->Update();
                _boxWidgetS1->SetInput(striper->GetOutput());
                _boxWidgetS1->PlaceWidget();
+
+               _boxWidgetS1->HandlesOn ();
+               _boxWidgetS1->On();
+
+               _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 );
+
+
+               _boxWidgetS1->HandlesOn ();
+               _boxWidgetS1->On();
+       }else{          
+               _dataMapper->SetInput(_cleanFilter->GetOutput());                               
        }
+       
+       dataActor->SetMapper(_dataMapper);      
+       this->_prop3D = dataActor;
 
        
+       
 
        this->changeIsoValue(this->_maxgreylevel);      
 
 
 }
 
-wxMaracasSurfaceRenderingManagerDataMhd::~wxMaracasSurfaceRenderingManagerDataMhd(){   
+
+wxMaracasSurfaceRenderingManagerDataMhd::~wxMaracasSurfaceRenderingManagerDataMhd()
+{
        _cubesFilter->Delete();
        _cleanFilter->Delete();
        _dataMapper->Delete();
 }
        
-void wxMaracasSurfaceRenderingManagerDataMhd::UpdateSurface(){
+void wxMaracasSurfaceRenderingManagerDataMhd::UpdateSurface()
+{
        _cubesFilter->Update();    
        _cleanFilter->Update();
        _dataMapper->Update();