]> Creatis software - bbtk.git/blobdiff - packages/vtk/src/bbvtkImagePlanes.cxx
Try to display planes (from Image Planes)
[bbtk.git] / packages / vtk / src / bbvtkImagePlanes.cxx
index 487292ee8e8a4386cbdc2240e539cfbfd4583623..79ab3850b81e61815cc83328d6940080d02b13cb 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkImagePlanes.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/11/27 14:57:38 $
-  Version:   $Revision: 1.12 $
+  Date:      $Date: 2008/12/03 09:34:39 $
+  Version:   $Revision: 1.14 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -38,6 +38,7 @@
 #include "bbvtkPackage.h"
 #include "vtkCellPicker.h"
 #include "vtkProperty.h"
+#include "vtkMetaImageWriter.h"
 
 #include "bbstdCast.h"
 namespace bbstd
@@ -74,7 +75,9 @@ namespace bbvtk
      std::vector<double> vect;
      vect.push_back(512);
      vect.push_back(256);
-     bbSetInputWindowLevel (vect);
+     bbSetInputWindowLevel (vect);  
+
+     bbSetModifiedStatus();
    }
    
    void ImagePlanes::bbUserCopyConstructor(bbtk::BlackBox::Pointer) 
@@ -84,9 +87,9 @@ namespace bbvtk
    }
 
    void ImagePlanes::Init() 
-   {
-   
+   {  
      if (planeWidgetX != 0) return;
+       
      // The shared picker enables us to use 3 planes at one time
      // and gets the picking order right
      vtkCellPicker* picker = vtkCellPicker::New();
@@ -121,6 +124,12 @@ namespace bbvtk
      bbSetOutputPlaneZ(planeWidgetZ);
 
      picker->UnRegister(NULL);
+     
+     myCallbackPlane *_myCallback = myCallbackPlane::New();
+     _myCallback->SetCurrentBlackBox(this);
+     planeWidgetX->AddObserver(vtkCommand::InteractionEvent,_myCallback);
+     planeWidgetY->AddObserver(vtkCommand::InteractionEvent,_myCallback);
+     planeWidgetZ->AddObserver(vtkCommand::InteractionEvent,_myCallback);  
    }
 
 //---------------------------------------------------------------------
@@ -148,23 +157,51 @@ namespace bbvtk
         bbGetInputIn()->GetSpacing(xSpacing, ySpacing, zSpacing);
         
         planeWidgetX->SetInput(bbGetInputIn());
-        planeWidgetX->SetPlaneOrientationToXAxes();
+        planeWidgetX->SetPlaneOrientationToXAxes();     
         planeWidgetX->SetSlicePosition((xMax+xMin)/2.*xSpacing);
+        planeWidgetX->GetResliceOutput()->Update();
         bbSetOutput("ImageX", planeWidgetX->GetResliceOutput());
+        
+        
+        vtkMetaImageWriter *writer = vtkMetaImageWriter::New();
+        
+        std::string newFilenameX("newFilenameX.mhd");
+        writer->SetInput(planeWidgetX->GetResliceOutput());
+        writer->SetFileName(newFilenameX.c_str());
+        writer->Update();
+        
+        //planeWidgetX->GetResliceOutput()->Print(std::cout);
 
         planeWidgetY->SetInput(bbGetInputIn());
         planeWidgetY->SetPlaneOrientationToYAxes();
-        planeWidgetY->SetSlicePosition((yMax+yMin)/2.*ySpacing); 
+        planeWidgetY->SetSlicePosition((yMax+yMin)/2.*ySpacing);
+        planeWidgetY->GetResliceOutput()->Update(); 
         bbSetOutput("ImageY", planeWidgetY->GetResliceOutput());
+        //planeWidgetY->GetResliceOutput()->Print(std::cout);
         
+        std::string newFilenameY("newFilenameY.mhd");
+        writer->SetInput(planeWidgetY->GetResliceOutput());
+        writer->SetFileName(newFilenameY.c_str());
+        writer->Update();
+                
         planeWidgetZ->SetInput(bbGetInputIn());
         planeWidgetZ->SetPlaneOrientationToZAxes();
-        planeWidgetZ->SetSlicePosition((zMax+zMin)/2.*zSpacing); 
+        planeWidgetZ->SetSlicePosition((zMax+zMin)/2.*zSpacing);
+        planeWidgetZ->GetResliceOutput()->Update(); 
         bbSetOutput("ImageZ", planeWidgetZ->GetResliceOutput());
-        
+       // planeWidgetZ->GetResliceOutput()->Print(std::cout);
+       
        // planeWidgetZ->SetWindowLevel(512,256);
-
+       
+        std::string newFilenameZ("newFilenameZ.mhd");
+        writer->SetInput(planeWidgetZ->GetResliceOutput());
+        writer->SetFileName(newFilenameZ.c_str());
+        writer->Update();
+       
          planeWidgetZ->SetWindowLevel(bbGetInputWindowLevel()[0],bbGetInputWindowLevel()[1]);
+       
+       // writer->vtkMetaImageWriter::Delete();
+        
        }
    }
 }//namespace bbtk