]> Creatis software - clitk.git/blobdiff - common/clitkEsrfHstImageIO.cxx
With ITK 5, add itkReadRawBytesAfterSwappingMacro and itkWriteRawBytesAfterSwappingMacro
[clitk.git] / common / clitkEsrfHstImageIO.cxx
index e9b8fdf3ed6227a14670706c91bcf21f3b3fbe23..a17807c2df2c61494d3144e1a3eb33a5d147f29e 100644 (file)
@@ -107,6 +107,7 @@ void clitk::EsrfHstImageIO::Read(void * buffer)
 
   // Adapted from itkRawImageIO
   {
+#if ( ITK_VERSION_MAJOR < 5 )
     using namespace itk;
     // Swap bytes if necessary
     if itkReadRawBytesAfterSwappingMacro( unsigned short, USHORT )
@@ -115,10 +116,35 @@ void clitk::EsrfHstImageIO::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 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
   }
 }