From 7ab309d561964c2ab5f9cd5d51d2fb212cd5dfcb Mon Sep 17 00:00:00 2001 From: jpr Date: Thu, 14 Apr 2005 14:26:19 +0000 Subject: [PATCH] Now, user can ask gdcm::DicomDir to skip SeqEntries or shadow groups, when possible : // Old style (still available) : dcmdir = new gdcm::DicomDir(dirName, true); // new style (user is allowed no to load Sequences an/or Shadow Groups) dcmdir = new gdcm::DicomDir( ); dcmdir->SetParseDir(true); dcmdir->SetLoadMode(NO_SEQ | NO_SHADOW); dcmdir->Load(dirName); --- src/gdcmDicomDir.cxx | 137 ++++++++++++++++++++++++------------------- src/gdcmDicomDir.h | 7 ++- src/gdcmDocument.h | 17 +++--- src/gdcmFile.cxx | 15 ++--- 4 files changed, 100 insertions(+), 76 deletions(-) diff --git a/src/gdcmDicomDir.cxx b/src/gdcmDicomDir.cxx index 91458171..27b840f2 100644 --- a/src/gdcmDicomDir.cxx +++ b/src/gdcmDicomDir.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDicomDir.cxx,v $ Language: C++ - Date: $Date: 2005/03/09 19:29:38 $ - Version: $Revision: 1.136 $ + Date: $Date: 2005/04/14 14:26:19 $ + Version: $Revision: 1.137 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -130,51 +130,59 @@ DicomDir::DicomDir() * and wants to use it */ DicomDir::DicomDir(std::string const &fileName, bool parseDir ): - Document( fileName ) + Document( ) { // At this step, Document constructor is already executed, // whatever user passed (a root directory or a DICOMDIR) // and whatever the value of parseDir was. // (nothing is cheked in Document constructor, to avoid overhead) - Initialize(); // sets all private fields to NULL + ParseDir = parseDir; + SetLoadMode (0x00000000); // concerns only dicom files + Load( fileName ); +} - // if user passed a root directory, sure we didn't get anything +/** + * \brief Canonical destructor + */ +DicomDir::~DicomDir() +{ + SetStartMethod(NULL); + SetProgressMethod(NULL); + SetEndMethod(NULL); - if ( GetFirstEntry() == 0 ) // when user passed a Directory to parse + ClearPatient(); + if ( MetaElems ) { - if (!parseDir) - gdcmWarningMacro( "Entry HT empty for file: "<c_str() ); - if( !header ) - { - gdcmWarningMacro( "Failure in new gdcm::File " << it->c_str() ); - continue; - } + f = new File( ); + f->SetLoadMode(LoadMode); // we allow user not to load Sequences... + f->Load( it->c_str() ); + +// if( !f ) +// { +// gdcmWarningMacro( "Failure in new gdcm::File " << it->c_str() ); +// continue; +// } - if( header->IsReadable() ) + if( f->IsReadable() ) { // Add the file to the chained list: - list.push_back(header); + list.push_back(f); gdcmWarningMacro( "Readable " << it->c_str() ); } else { - delete header; + delete f; } count++; } @@ -638,7 +657,7 @@ void DicomDir::Initialize() } /** - * \brief create a 'DicomDir' from a DICOMDIR Header + * \brief create a 'gdcm::DicomDir' from a DICOMDIR Header */ void DicomDir::CreateDicomDir() { diff --git a/src/gdcmDicomDir.h b/src/gdcmDicomDir.h index ea93005a..81ebbbbf 100644 --- a/src/gdcmDicomDir.h +++ b/src/gdcmDicomDir.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDicomDir.h,v $ Language: C++ - Date: $Date: 2005/03/09 19:29:38 $ - Version: $Revision: 1.58 $ + Date: $Date: 2005/04/14 14:26:19 $ + Version: $Revision: 1.59 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -56,8 +56,10 @@ public: ~DicomDir(); + void Load( std::string const &filename ); void Print(std::ostream &os = std::cout, std::string const &indent = "" ); + void SetParseDir(bool parseDir) { ParseDir = parseDir; }; // Informations contained in the parser virtual bool IsReadable(); @@ -168,6 +170,7 @@ private: float Progress; /// value of the ??? for any progress bar bool Abort; + bool ParseDir; }; } // end namespace gdcm //----------------------------------------------------------------------------- diff --git a/src/gdcmDocument.h b/src/gdcmDocument.h index de3ff47b..711dc121 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/03/22 11:23:51 $ - Version: $Revision: 1.107 $ + Date: $Date: 2005/04/14 14:26:19 $ + Version: $Revision: 1.108 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -49,7 +49,7 @@ public: typedef std::list ListElements; // Loading -void Load( std::string const &filename ); + virtual void Load( std::string const &filename ); // Dictionaries Dict *GetPubDict(); @@ -155,6 +155,12 @@ protected: /// List of element to Anonymize ListElements AnonymizeList; + /// \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 + int LoadMode; + private: // Methods void Initialize(); @@ -205,11 +211,6 @@ private: // void BuildFlatHashTableRecurse( TagDocEntryHT &builtHT, // DocEntrySet *set ); - /// \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 - int LoadMode; }; } // end namespace gdcm diff --git a/src/gdcmFile.cxx b/src/gdcmFile.cxx index 7351ff41..d18ce400 100644 --- a/src/gdcmFile.cxx +++ b/src/gdcmFile.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmFile.cxx,v $ Language: C++ - Date: $Date: 2005/03/22 11:37:15 $ - Version: $Revision: 1.231 $ + Date: $Date: 2005/04/14 14:26:19 $ + Version: $Revision: 1.232 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -827,20 +827,21 @@ std::string File::GetPixelType() } /** - * \brief Check whether the pixels are signed or UNsigned data. - * \warning The method defaults to false (UNsigned) when information is Missing. + * \brief Check whether the pixels are signed (1) or UNsigned (0) data. + * \warning The method defaults to false (UNsigned) when tag 0028|0103 + * is missing. * The responsability of checking this value is left to the caller. * @return True when signed, false when UNsigned */ bool File::IsSignedPixelData() { - std::string strSize = GetEntryValue( 0x0028, 0x0103 ); - if ( strSize == GDCM_UNFOUND ) + std::string strSign = GetEntryValue( 0x0028, 0x0103 ); + if ( strSign == GDCM_UNFOUND ) { gdcmWarningMacro( "(0028,0103) is supposed to be mandatory"); return false; } - int sign = atoi( strSize.c_str() ); + int sign = atoi( strSign.c_str() ); if ( sign == 0 ) { return false; -- 2.45.1