]> Creatis software - bbtk.git/blobdiff - packages/vtk/src/bbvtkImagePlanes.cxx
*** empty log message ***
[bbtk.git] / packages / vtk / src / bbvtkImagePlanes.cxx
index 0f5e34b66c4ab462c9fb74165f0ba7d7908936c3..06253d0d93dead3af2bee24e9fff937a04136b4f 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbvtkImagePlanes.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/10/17 08:18:30 $
-  Version:   $Revision: 1.9 $
+  Date:      $Date: 2008/11/27 16:38:32 $
+  Version:   $Revision: 1.13 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -63,13 +63,13 @@ namespace bbvtk
 namespace bbvtk
 {
 
-
    BBTK_ADD_BLACK_BOX_TO_PACKAGE(vtk,ImagePlanes)
    BBTK_BLACK_BOX_IMPLEMENTATION(ImagePlanes,bbtk::AtomicBlackBox);
 
    void ImagePlanes::bbUserConstructor() 
    { 
      planeWidgetX = planeWidgetY = planeWidgetZ = 0;
+     imageX       = imageY       = imageZ       = 0;
      bbSetInputIn(0);
      std::vector<double> vect;
      vect.push_back(512);
@@ -77,13 +77,15 @@ namespace bbvtk
      bbSetInputWindowLevel (vect);
    }
    
-   void ImagePlanes::bbUserCopyConstructor() 
+   void ImagePlanes::bbUserCopyConstructor(bbtk::BlackBox::Pointer
    { 
      planeWidgetX = planeWidgetY = planeWidgetZ = 0;
+     imageX       = imageY       = imageZ       = 0;
    }
 
    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
@@ -141,18 +143,31 @@ namespace bbvtk
         int xMin, xMax, yMin, yMax, zMin, zMax;
         bbGetInputIn()->GetExtent(xMin, xMax, yMin, yMax, zMin, zMax);
 
+         // Initial values : center of the volume (in real world, not in pixels!)
+         double xSpacing, ySpacing, zSpacing;
+        bbGetInputIn()->GetSpacing(xSpacing, ySpacing, zSpacing);
+        
         planeWidgetX->SetInput(bbGetInputIn());
-        planeWidgetX->SetPlaneOrientationToXAxes();
-        planeWidgetX->SetSlicePosition((xMax+xMin)/2.); 
+        planeWidgetX->SetPlaneOrientationToXAxes();     
+        planeWidgetX->SetSlicePosition((xMax+xMin)/2.*xSpacing);
+        planeWidgetX->GetResliceOutput()->Update();
+        bbSetOutput("ImageX", planeWidgetX->GetResliceOutput());
+        //planeWidgetX->GetResliceOutput()->Print(std::cout);
 
         planeWidgetY->SetInput(bbGetInputIn());
         planeWidgetY->SetPlaneOrientationToYAxes();
-        planeWidgetY->SetSlicePosition((yMax+yMin)/2.); 
-
+        planeWidgetY->SetSlicePosition((yMax+yMin)/2.*ySpacing);
+        planeWidgetY->GetResliceOutput()->Update(); 
+        bbSetOutput("ImageY", planeWidgetY->GetResliceOutput());
+        //planeWidgetY->GetResliceOutput()->Print(std::cout);
+        
         planeWidgetZ->SetInput(bbGetInputIn());
         planeWidgetZ->SetPlaneOrientationToZAxes();
-        planeWidgetZ->SetSlicePosition((zMax+zMin)/2.); 
-
+        planeWidgetZ->SetSlicePosition((zMax+zMin)/2.*zSpacing);
+        planeWidgetZ->GetResliceOutput()->Update(); 
+        bbSetOutput("ImageZ", planeWidgetZ->GetResliceOutput());
+       // planeWidgetZ->GetResliceOutput()->Print(std::cout);
+       
        // planeWidgetZ->SetWindowLevel(512,256);
 
          planeWidgetZ->SetWindowLevel(bbGetInputWindowLevel()[0],bbGetInputWindowLevel()[1]);