]> Creatis software - gdcm.git/blobdiff - src/gdcmPixelReadConvert.cxx
Swap64 deals with double (VR=FD)
[gdcm.git] / src / gdcmPixelReadConvert.cxx
index 1b8db70d519ae2b79ab115b9a98054c7639498b0..523201ce06ec5dbdea6054538819f22c1e56de8e 100644 (file)
@@ -3,8 +3,8 @@
   Program:   gdcm
   Module:    $RCSfile: gdcmPixelReadConvert.cxx,v $
   Language:  C++
-  Date:      $Date: 2005/10/23 15:09:19 $
-  Version:   $Revision: 1.85 $
+  Date:      $Date: 2005/10/26 14:54:51 $
+  Version:   $Revision: 1.92 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -114,24 +114,37 @@ void PixelReadConvert::GrabInformationsFromFile( File *file )
    //PixelSize       = file->GetPixelSize();  Useless
    PixelSign       = file->IsSignedPixelData();
    SwapCode        = file->GetSwapCode();
-   std::string ts  = file->GetTransferSyntax();
-   IsRaw =
-        ( ! file->IsDicomV3() )
-     || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ImplicitVRLittleEndian
-     || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ImplicitVRBigEndianPrivateGE
-     || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ExplicitVRLittleEndian
-     || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ExplicitVRBigEndian
-     || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::DeflatedExplicitVRLittleEndian;
+   
+   if (! file->IsDicomV3() )  // Should be ACR-NEMA file
+   {
+      IsRaw = true;
+      // Don't loose time checking unexistant Transfer Syntax !
+      IsPrivateGETransferSyntax = IsMPEG
+             = IsJPEG2000 = IsJPEGLS = IsJPEGLossy  
+             = IsJPEGLossless = IsRLELossless 
+             = false;
+   }
+   else
+   {
+      std::string ts = file->GetTransferSyntax();
+
+      IsRaw =
+           Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ImplicitVRLittleEndian
+        || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ImplicitVRBigEndianPrivateGE
+        || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ExplicitVRLittleEndian
+        || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ExplicitVRBigEndian
+        || Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::DeflatedExplicitVRLittleEndian;
      
-   IsPrivateGETransferSyntax = 
+      IsPrivateGETransferSyntax = 
                 ( Global::GetTS()->GetSpecialTransferSyntax(ts) == TS::ImplicitVRBigEndianPrivateGE );
 
-   IsMPEG          = Global::GetTS()->IsMPEG(ts);
-   IsJPEG2000      = Global::GetTS()->IsJPEG2000(ts);
-   IsJPEGLS        = Global::GetTS()->IsJPEGLS(ts);
-   IsJPEGLossy     = Global::GetTS()->IsJPEGLossy(ts);
-   IsJPEGLossless  = Global::GetTS()->IsJPEGLossless(ts);
-   IsRLELossless   = Global::GetTS()->IsRLELossless(ts);
+      IsMPEG          = Global::GetTS()->IsMPEG(ts);
+      IsJPEG2000      = Global::GetTS()->IsJPEG2000(ts);
+      IsJPEGLS        = Global::GetTS()->IsJPEGLS(ts);
+      IsJPEGLossy     = Global::GetTS()->IsJPEGLossy(ts);
+      IsJPEGLossless  = Global::GetTS()->IsJPEGLossless(ts);
+      IsRLELossless   = Global::GetTS()->IsRLELossless(ts);
+   }
 
    PixelOffset     = file->GetPixelOffset();
    PixelDataLength = file->GetPixelAreaLength();
@@ -796,7 +809,9 @@ void PixelReadConvert::ConvertSwapZone()
    // Therefore, in either case, if the file is in
    // 'ImplicitVR BigEndian PrivateGE Transfer Syntax', then GDCM needs to switch
    // the byte swapping code when entering the pixel data.
-    
+
+/* //Let me check something.
+   //I wait for the Dashboard !   
    if ( IsPrivateGETransferSyntax )
    {
       // PrivateGETransferSyntax only exists for 'true' Dicom images
@@ -811,7 +826,7 @@ void PixelReadConvert::ConvertSwapZone()
             break;
       }  
    }
-   
+*/   
    if ( BitsAllocated == 16 )
    {
       uint16_t *im16 = (uint16_t*)Raw;