]> Creatis software - bbtk.git/blobdiff - packages/itk/src/bbitkImageReader.cxx
*** empty log message ***
[bbtk.git] / packages / itk / src / bbitkImageReader.cxx
diff --git a/packages/itk/src/bbitkImageReader.cxx b/packages/itk/src/bbitkImageReader.cxx
new file mode 100644 (file)
index 0000000..bb7938d
--- /dev/null
@@ -0,0 +1,93 @@
+/*=========================================================================
+                                                                                
+  Program:   bbtk
+  Module:    $RCSfile: bbitkImageReader.cxx,v $
+  Language:  C++
+  Date:      $Date: 2008/02/05 12:03:01 $
+  Version:   $Revision: 1.1 $
+                                                                                
+  Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
+  l'Image). All rights reserved. See Doc/License.txt or
+  http://www.creatis.insa-lyon.fr/Public/bbtk/License.html for details.
+                                                                                
+     This software is distributed WITHOUT ANY WARRANTY; without even
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
+     PURPOSE.  See the above copyright notices for more information.
+                                                                                
+=========================================================================*/
+/**
+ *  \file 
+ *  \brief 
+ */
+#ifdef _USE_ITK_
+
+#include "bbitkImageReader.h"
+#include "bbitkPackage.h"
+#include "itkImageFileReader.h"
+
+namespace bbitk 
+{
+  BBTK_USER_BLACK_BOX_IMPLEMENTATION(ImageReader,bbtk::UserBlackBox);
+
+  BBTK_ADD_BLACK_BOX_TO_PACKAGE(itk,ImageReader);
+
+
+
+
+  void ImageReader::Read()
+  {
+    std::string filename = bbGetInputFilename();
+
+    itk::ImageIOBase::Pointer genericReader = 
+      itk::ImageIOFactory::CreateImageIO(filename.c_str(), 
+                                        itk::ImageIOFactory::ReadMode);
+    if (!genericReader)
+      {
+       bbtkError("File format unknown (while reading \"" << filename << "\")");
+      }
+    genericReader->SetFileName(filename.c_str());
+    genericReader->ReadImageInformation();  
+    
+    bbtk::TypeInfo typ = GetITKImagePtrTypeInfoFromPixelTypeInfoAndDimension(genericReader->GetComponentTypeInfo(), genericReader->GetNumberOfDimensions());
+
+    BBTK_TEMPLATE_ITK_IMAGE_SWITCH( typ, Read);
+  }
+
+
+
+  /** 
+      Template Processing 
+  */
+  template<class itkImageType>
+  void ImageReader::Read()
+  {
+    bbtkDebugMessageInc("Core",9,"itkImageReader<"<<
+                       bbtk::TypeName<itkImageType>()
+                       <<">::Read()"<<std::endl);
+
+    typedef itk::ImageFileReader< itkImageType > itkReaderType;
+
+    typename itkReaderType::Pointer reader = itkReaderType::New();
+    std::string filename = bbGetInputFilename();
+    reader->SetFileName(filename.c_str());
+    try { reader->Update(); }
+    catch( std::exception& e ) 
+      {
+       bbtkError("could not read image \""<< filename << "\" : "<<e.what());
+      }
+
+    reader->GetOutput()->Register();
+    bbSetOutputOut( reader->GetOutput() );
+
+    bbtkDebugDecTab("Core",9);
+  }
+
+
+
+
+
+
+}
+// eo namespace bbtk
+
+#endif