]> Creatis software - bbtk.git/blobdiff - packages/itk/src/bbitkImageSeriesReader.cxx
*** empty log message ***
[bbtk.git] / packages / itk / src / bbitkImageSeriesReader.cxx
index 26fa4fadd6a49058aa0164c19ec4f5eb0d601fa6..68de42d33d37370de47b2343945d0ee1138afc8a 100644 (file)
@@ -2,8 +2,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbitkImageSeriesReader.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/10/17 08:18:21 $
-  Version:   $Revision: 1.6 $
+  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();
@@ -65,21 +80,30 @@ namespace bbitk
       }
 
     std::string filename = filenames[0];
-
+    
     itk::ImageIOBase::Pointer genericReader = 
       itk::ImageIOFactory::CreateImageIO(filename.c_str(), 
                                         itk::ImageIOFactory::ReadMode);
+                                        
     if (!genericReader)
       {
-       bbtkError(bbGetFullName()<<" : File format unknown (while reading \"" << filename << "\")");
+       bbtkError(bbGetFullName()<<" : File format unknown (while reading [" << filename << "])");
       }
     genericReader->SetFileName(filename.c_str());
-    genericReader->ReadImageInformation();  
+    genericReader->ReadImageInformation();
+    
+    // a stack of 2D images will result as a 3D image // JPRx
+    int plusUn;
+    if (filenames.size()>1)
+       plusUn = 1;
+    else
+       plusUn = 0;
     
-    bbtk::TypeInfo typ = GetITKImagePtrTypeInfoFromPixelTypeInfoAndDimension(genericReader->GetComponentTypeInfo(), genericReader->GetNumberOfDimensions());
+    bbtk::TypeInfo typ = GetITKImagePtrTypeInfoFromPixelTypeInfoAndDimension(genericReader->GetComponentTypeInfo(), genericReader->GetNumberOfDimensions() + plusUn);
     
+      
     BBTK_TEMPLATE_ITK_IMAGE_SWITCH(typ,Read);
-  
+    
   }
 
   /** 
@@ -104,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() );
@@ -112,10 +159,6 @@ namespace bbitk
   }
 
 
-
-
-
-
 }
 // eo namespace bbtk