]> Creatis software - bbtk.git/blobdiff - packages/itk/src/bbitkImageSeriesReader.cxx
We can pass the spacing,if the input image doesn't have (and if we now it)
[bbtk.git] / packages / itk / src / bbitkImageSeriesReader.cxx
index 1a18bcbb97138b1024ac4780cf6da16f7581165d..68de42d33d37370de47b2343945d0ee1138afc8a 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbitkImageSeriesReader.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/11/26 10:13:32 $
-  Version:   $Revision: 1.7 $
+  Date:      $Date: 2008/11/27 14:55:54 $
+  Version:   $Revision: 1.8 $
 =========================================================================*/
 
 /* ---------------------------------------------------------------------
@@ -44,6 +44,21 @@ namespace bbitk
   
   BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageSeriesReader);
 
+  void ImageSeriesReader::bbUserConstructor()
+  {
+    bbSetInputXSpacing(-1.);
+    bbSetInputYSpacing(-1.);
+    bbSetInputZSpacing(-1.);
+  }
+  
+  void ImageSeriesReader::bbUserCopyConstructor(bbtk::BlackBox::Pointer)
+  {    
+  }
+  
+  void ImageSeriesReader::bbUserDestructor()
+  {
+  }
+    
   void ImageSeriesReader::Read()
   {
     const std::vector<std::string>& filenames = bbGetInputFileNames();
@@ -77,6 +92,7 @@ namespace bbitk
     genericReader->SetFileName(filename.c_str());
     genericReader->ReadImageInformation();
     
+    // a stack of 2D images will result as a 3D image // JPRx
     int plusUn;
     if (filenames.size()>1)
        plusUn = 1;
@@ -84,6 +100,7 @@ namespace bbitk
        plusUn = 0;
     
     bbtk::TypeInfo typ = GetITKImagePtrTypeInfoFromPixelTypeInfoAndDimension(genericReader->GetComponentTypeInfo(), genericReader->GetNumberOfDimensions() + plusUn);
+    
       
     BBTK_TEMPLATE_ITK_IMAGE_SWITCH(typ,Read);
     
@@ -111,6 +128,29 @@ namespace bbitk
        bbtkError("could not read image series : "<<e.what());
       }
 
+    // JPRx     
+    typename itkImageType::SpacingType spacingJPRx;
+        
+    bool spacingToBeSet = false;
+    if (bbGetInputXSpacing() > 0.)
+    {
+       spacingToBeSet = true;
+       spacingJPRx[0]= bbGetInputXSpacing();
+    }
+    if (bbGetInputYSpacing() > 0.)
+    {
+       spacingToBeSet = true;
+       spacingJPRx[1]= bbGetInputYSpacing();
+    }
+    if (bbGetInputZSpacing() > 0.)
+    {
+       spacingToBeSet = true;
+       spacingJPRx[2]= bbGetInputZSpacing();
+    }
+    if (spacingToBeSet)
+       reader->GetOutput()->SetSpacing(spacingJPRx);   
+    // JPRx 
+
     reader->GetOutput()->Register();
     //    if (bbGetOutputOut()) 
     bbSetOutputOut ( reader->GetOutput() );