]> Creatis software - clitk.git/blobdiff - common/rtkEdfImageIO.cxx
With ITK 5, add itkReadRawBytesAfterSwappingMacro and itkWriteRawBytesAfterSwappingMacro
[clitk.git] / common / rtkEdfImageIO.cxx
index ed3cf10c0c82d5acf43fdd49cf36426c06d4ad8b..ddd4aebc91c698c4fc6a1b37f0e8211b4675e35f 100644 (file)
@@ -128,7 +128,7 @@ void rtk::EdfImageIO::ReadImageInformation()
                                 << "\"");
       }
     datalen = edf_datatype_table[k].sajzof;
-    switch(k) {
+    switch(edf_datatype_table[k].value) {
       case U_CHAR_DATATYPE:
         SetComponentType(itk::ImageIOBase::UCHAR);
         break;
@@ -148,10 +148,10 @@ void rtk::EdfImageIO::ReadImageInformation()
         SetComponentType(itk::ImageIOBase::INT);
         break;
       case U_L_INT_DATATYPE:
-        SetComponentType(itk::ImageIOBase::ULONG);
+        SetComponentType(itk::ImageIOBase::UINT);
         break;
       case L_INT_DATATYPE:
-        SetComponentType(itk::ImageIOBase::LONG);
+        SetComponentType(itk::ImageIOBase::INT);
         break;
       case FLOAT_DATATYPE:
         SetComponentType(itk::ImageIOBase::FLOAT);
@@ -203,7 +203,12 @@ void rtk::EdfImageIO::ReadImageInformation()
 
   double spacing = 1.;
   if ( (p = edf_findInHeader(header, "optic_used") ) )
+    {
     spacing = atof(p);
+    if(spacing == 0.)
+      spacing = 1.;
+    }
+
 
   free(header);
   gzclose(inp);
@@ -251,6 +256,7 @@ void rtk::EdfImageIO::Read(void * buffer)
 
   // Adapted from itkRawImageIO
     {
+#if ( ITK_VERSION_MAJOR < 5 )
     using namespace itk;
     // Swap bytes if necessary
     if itkReadRawBytesAfterSwappingMacro( unsigned short, USHORT )
@@ -259,28 +265,53 @@ void rtk::EdfImageIO::Read(void * buffer)
     else if itkReadRawBytesAfterSwappingMacro( unsigned char, UCHAR )
     else if itkReadRawBytesAfterSwappingMacro( unsigned int, UINT )
     else if itkReadRawBytesAfterSwappingMacro( int, INT )
-    else if itkReadRawBytesAfterSwappingMacro( unsigned int, ULONG )
-    else if itkReadRawBytesAfterSwappingMacro( int, LONG )
     else if itkReadRawBytesAfterSwappingMacro( float, FLOAT )
     else if itkReadRawBytesAfterSwappingMacro( double, DOUBLE );
+#else
+  #define itkReadRawBytesAfterSwappingMacro(StrongType, WeakType)   \
+    ( this->GetComponentType() == WeakType )                        \
+      {                                                             \
+      using InternalByteSwapperType = itk::ByteSwapper<StrongType>; \
+      if ( m_ByteOrder == LittleEndian )                            \
+        {                                                           \
+        InternalByteSwapperType::SwapRangeFromSystemToLittleEndian( \
+          (StrongType *)buffer, this->GetImageSizeInComponents() ); \
+        }                                                           \
+      else if ( m_ByteOrder == BigEndian )                          \
+        {                                                           \
+        InternalByteSwapperType::SwapRangeFromSystemToBigEndian(    \
+          (StrongType *)buffer, this->GetImageSizeInComponents() ); \
+        }                                                           \
+      }
+
+    // Swap bytes if necessary
+    if itkReadRawBytesAfterSwappingMacro( unsigned short, USHORT )
+    else if itkReadRawBytesAfterSwappingMacro( short, SHORT )
+    else if itkReadRawBytesAfterSwappingMacro( char, CHAR )
+    else if itkReadRawBytesAfterSwappingMacro( unsigned char, UCHAR )
+    else if itkReadRawBytesAfterSwappingMacro( unsigned int, UINT )
+    else if itkReadRawBytesAfterSwappingMacro( int, INT )
+    else if itkReadRawBytesAfterSwappingMacro( float, FLOAT )
+    else if itkReadRawBytesAfterSwappingMacro( double, DOUBLE );
+#endif
     }
 }
 
 //--------------------------------------------------------------------
 // Write Image Information
-void rtk::EdfImageIO::WriteImageInformation(bool keepOfStream)
+void rtk::EdfImageIO::WriteImageInformation( bool itkNotUsed(keepOfStream) )
 {
 }
 
 //--------------------------------------------------------------------
 // Write Image Information
-bool rtk::EdfImageIO::CanWriteFile(const char* FileNameToWrite)
+bool rtk::EdfImageIO::CanWriteFile( const char* itkNotUsed(FileNameToWrite) )
 {
   return false;
 }
 
 //--------------------------------------------------------------------
 // Write Image
-void rtk::EdfImageIO::Write(const void * buffer)
+void rtk::EdfImageIO::Write( const void * itkNotUsed(buffer) )
 {
 } ////