From: jpr Date: Wed, 29 Jun 2005 15:58:33 +0000 (+0000) Subject: Add the NO_SHADOWSEQ load mode X-Git-Tag: Version1.2.bp~398 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=a36f19bbc17a18bb85e99c11e6290642189ec6a2;p=gdcm.git Add the NO_SHADOWSEQ load mode --- diff --git a/src/gdcmDocument.cxx b/src/gdcmDocument.cxx index fd3758e0..ce90658f 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/06/24 10:53:46 $ - Version: $Revision: 1.251 $ + Date: $Date: 2005/06/29 15:58:33 $ + Version: $Revision: 1.252 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -994,7 +994,8 @@ void Document::ParseDES(DocEntrySet *set, long offset, } else { - // VR = "SQ" + /////////////////////// SeqEntry : VR = "SQ" + unsigned long l = newDocEntry->GetReadLength(); if ( l != 0 ) // don't mess the delim_mode for zero-length sequence { @@ -1008,8 +1009,20 @@ void Document::ParseDES(DocEntrySet *set, long offset, } } - if ( (LoadMode & NO_SEQ) && ! delim_mode ) // User asked to skip SQ + if ( (LoadMode & NO_SHADOWSEQ) && ! delim_mode ) + { + // User asked to skip SQ only if they belong to Shadow group + if ( newDocEntry->GetGroup()%2 != 0 ) + { + Fp->seekg( l, std::ios::cur); + used = false; + continue; + } + } + + if ( (LoadMode & NO_SEQ) && ! delim_mode ) { + // User asked to skip *any* SeQuence Fp->seekg( l, std::ios::cur); used = false; continue; @@ -2104,7 +2117,7 @@ DocEntry *Document::ReadNextDocEntry() /** * \brief Handle broken private tag from Philips NTSCAN - * where the endianess is being switch to BigEndian for no + * where the endianess is being switched to BigEndian for no * apparent reason * @return no return */ diff --git a/src/gdcmDocument.h b/src/gdcmDocument.h index d164af6a..0ee2f3a0 100644 --- a/src/gdcmDocument.h +++ b/src/gdcmDocument.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDocument.h,v $ Language: C++ - Date: $Date: 2005/06/03 09:05:15 $ - Version: $Revision: 1.112 $ + Date: $Date: 2005/06/29 15:58:33 $ + Version: $Revision: 1.113 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -28,9 +28,10 @@ #include #include -#define NO_SEQ 0x0000001 -#define NO_SHADOW 0x00000002 - +#define NO_SEQ 0x00000001 // Don't load odd groups +#define NO_SHADOW 0x00000002 // Don't load Sequences +#define NO_SHADOWSEQ 0x00000004 // Don't load Sequences if they belong to odd group + // (*exclusive* from NO_SEQ and NO_SHADOW) namespace gdcm { class ValEntry; @@ -100,7 +101,8 @@ typedef std::list ListElements; /** * \brief Sets the LoadMode as a boolean string. - * NO_SEQ, NO_SHADOW, ... (nothing more, right now) + * NO_SEQ, NO_SHADOW, NO_SHADOWSEQ + ... (nothing more, right now) * WARNING : before using NO_SHADOW, be sure *all* your files * contain accurate values in the 0x0000 element (if any) * of *each* Shadow Group. The parser will fail if the size is wrong ! @@ -164,7 +166,7 @@ protected: /// \brief Bit string integer (each one considered as a boolean) /// Bit 0 : Skip Sequences, if possible /// Bit 1 : Skip Shadow Groups if possible - /// Some more to add + /// Probabely, some more to add int LoadMode; /// Whether the gdcm::Document is already parsed/loaded