X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDocument.cxx;h=0b907069e0465b3684389aeb0dd4747898ee550d;hb=9c711bc2285888933edee3221e5c37f01077a2ef;hp=088c4097a16a14f5f98acd1fcd297b78624b7f11;hpb=f558e91ca92b7b2b5820bebc01e000a926d0828f;p=gdcm.git diff --git a/src/gdcmDocument.cxx b/src/gdcmDocument.cxx index 088c4097..0b907069 100644 --- a/src/gdcmDocument.cxx +++ b/src/gdcmDocument.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDocument.cxx,v $ Language: C++ - Date: $Date: 2005/02/11 16:36:52 $ - Version: $Revision: 1.227 $ + Date: $Date: 2005/02/14 10:45:04 $ + Version: $Revision: 1.230 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -32,15 +32,6 @@ #include #include -// For nthos: -#if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__MINGW32__) - #include -#endif - -#ifdef CMAKE_HAVE_NETINET_IN_H - #include -#endif - namespace gdcm { //----------------------------------------------------------------------------- @@ -352,7 +343,9 @@ uint16_t Document::SwapShort(uint16_t a) { if ( SwapCode == 4321 || SwapCode == 2143 ) { - a = ((( a << 8 ) & 0xff00 ) | (( a >> 8 ) & 0x00ff ) ); + //a = ((( a << 8 ) & 0xff00 ) | (( a >> 8 ) & 0x00ff ) ); + // Save CPU time + a = ( a << 8 ) | ( a >> 8 ); } return a; } @@ -369,11 +362,15 @@ uint32_t Document::SwapLong(uint32_t a) case 1234 : break; case 4321 : - a=( ((a<<24) & 0xff000000) | ((a<<8) & 0x00ff0000) | - ((a>>8) & 0x0000ff00) | ((a>>24) & 0x000000ff) ); +// a=( ((a<<24) & 0xff000000) | ((a<<8) & 0x00ff0000) | +// ((a>>8) & 0x0000ff00) | ((a>>24) & 0x000000ff) ); +// save CPU time + a=( ( a<<24) | ((a<<8) & 0x00ff0000) | + ((a>>8) & 0x0000ff00) | (a>>24) ); break; case 3412 : - a=( ((a<<16) & 0xffff0000) | ((a>>16) & 0x0000ffff) ); +// a=( ((a<<16) & 0xffff0000) | ((a>>16) & 0x0000ffff) ); + a=( (a<<16) | (a>>16) ); break; case 2143 : a=( ((a<< 8) & 0xff00ff00) | ((a>>8) & 0x00ff00ff) ); @@ -1721,8 +1718,6 @@ bool Document::CheckSwap() // 0x00000004. Finding the swap code in then straigthforward. Trouble // occurs when we can't find such group... - uint32_t x = 4; // x : for ntohs - bool net2host; // true when HostByteOrder is the same as NetworkByteOrder uint32_t s32; uint16_t s16; @@ -1730,14 +1725,7 @@ bool Document::CheckSwap() // First, compare HostByteOrder and NetworkByteOrder in order to // determine if we shall need to swap bytes (i.e. the Endian type). - if ( x == ntohs(x) ) - { - net2host = true; - } - else - { - net2host = false; - } + bool net2host = Util::IsCurrentProcessorBigEndian(); // The easiest case is the one of a 'true' DICOM header, we just have // to look for the string "DICM" inside the file preamble.