From 226dc977654dc5150d279a7e72356f7790341040 Mon Sep 17 00:00:00 2001 From: regrain Date: Mon, 19 Jan 2004 14:51:29 +0000 Subject: [PATCH] * src/gdcmFile.cxx : bug fix concerning the close of file * src/gdcmParser.[h|cxx] : remove obvious Pub informations -- BeNours --- ChangeLog | 4 ++++ src/gdcmFile.cxx | 11 +++++++---- src/gdcmParser.cxx | 38 +++++++++++++++++++------------------- src/gdcmParser.h | 7 ++++--- 4 files changed, 34 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9e14294f..0eeb0871 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2004-01-19 Benoit Regrain + * src/gdcmFile.cxx : bug fix concerning the close of file + * src/gdcmParser.[h|cxx] : remove obvious Pub informations + 2004-01-19 Benoit Regrain * removal of file gdcmHeader2.cxx * split class gdcmHeader into gdcmParser and gdcmHeader, with gdcmHeader diff --git a/src/gdcmFile.cxx b/src/gdcmFile.cxx index 858ee0cb..581c5f4a 100644 --- a/src/gdcmFile.cxx +++ b/src/gdcmFile.cxx @@ -805,6 +805,8 @@ bool gdcmFile::ReadPixelData(void* destination) { // Troubles expected on Big-Endian processors ? } + + Header->CloseFile(); return(true); } @@ -828,8 +830,9 @@ bool gdcmFile::ReadPixelData(void* destination) { // ---------------------- Run Length Encoding if (Header->IsRLELossLessTransferSyntax()) { - bool res = (bool)gdcm_read_RLE_file (fp,destination); - return res; + bool res = (bool)gdcm_read_RLE_file (fp,destination); + Header->CloseFile(); + return res; } // --------------- SingleFrame/Multiframe JPEG Lossless/Lossy/2000 @@ -855,7 +858,7 @@ bool gdcmFile::ReadPixelData(void* destination) { guint16 ItemTagGr,ItemTagEl; int ln; - // Position on begining of Jpeg Pixels + // Position on begining of Jpeg Pixels fread(&ItemTagGr,2,1,fp); // Reading (fffe) : Item Tag Gr fread(&ItemTagEl,2,1,fp); // Reading (e000) : Item Tag El @@ -882,7 +885,7 @@ bool gdcmFile::ReadPixelData(void* destination) { } // parsing fragments until Sequence Delim. Tag found - while ( ( ItemTagGr == 0xfffe) && (ItemTagEl != 0xe0dd) ) { + while ( ( ItemTagGr == 0xfffe) && (ItemTagEl != 0xe0dd) ) { // --- for each Fragment fread(&ln,4,1,fp); diff --git a/src/gdcmParser.cxx b/src/gdcmParser.cxx index dead892a..a1ce1407 100644 --- a/src/gdcmParser.cxx +++ b/src/gdcmParser.cxx @@ -344,23 +344,6 @@ bool gdcmParser::CloseFile(void) return true; } -/** - * \ingroup gdcmParser - * \brief Parses the header of the file but WITHOUT loading element values. - */ -void gdcmParser::Parse(bool exception_on_error) throw(gdcmFormatError) -{ - gdcmHeaderEntry *newHeaderEntry = (gdcmHeaderEntry *)0; - - rewind(fp); - CheckSwap(); - while ( (newHeaderEntry = ReadNextHeaderEntry()) ) - { - SkipHeaderEntry(newHeaderEntry); - AddHeaderEntry(newHeaderEntry); - } -} - /** * \ingroup gdcmParser * \brief @@ -1085,6 +1068,23 @@ guint16 gdcmParser::SwapShort(guint16 a) //----------------------------------------------------------------------------- // Private +/** + * \ingroup gdcmParser + * \brief Parses the header of the file but WITHOUT loading element values. + */ +void gdcmParser::Parse(bool exception_on_error) throw(gdcmFormatError) +{ + gdcmHeaderEntry *newHeaderEntry = (gdcmHeaderEntry *)0; + + rewind(fp); + CheckSwap(); + while ( (newHeaderEntry = ReadNextHeaderEntry()) ) + { + SkipHeaderEntry(newHeaderEntry); + AddHeaderEntry(newHeaderEntry); + } +} + /** * \ingroup gdcmParser * \brief Loads the element values of all the Header Entries pointed in the @@ -1093,8 +1093,8 @@ guint16 gdcmParser::SwapShort(guint16 a) void gdcmParser::LoadHeaderEntries(void) { rewind(fp); - for (ListTag::iterator i = GetPubListEntry().begin(); - i != GetPubListEntry().end(); + for (ListTag::iterator i = GetListEntry().begin(); + i != GetListEntry().end(); ++i) { LoadHeaderEntry(*i); diff --git a/src/gdcmParser.h b/src/gdcmParser.h index 61f125fa..0984aa07 100644 --- a/src/gdcmParser.h +++ b/src/gdcmParser.h @@ -75,19 +75,18 @@ public: * \brief returns a ref to the Dicom Header H table (multimap) * return the Dicom Header H table */ - inline TagHeaderEntryHT &GetPubEntry(void) { return tagHT; }; + inline TagHeaderEntryHT &GetEntry(void) { return tagHT; }; /** * \ingroup gdcmHeader * \brief returns a ref to the Dicom Header chained list * return the Dicom Header chained list */ - inline ListTag &GetPubListEntry(void) { return listEntries; }; + inline ListTag &GetListEntry(void) { return listEntries; }; // Read (used in gdcmFile) FILE *OpenFile(bool exception_on_error = false) throw(gdcmFileError); bool CloseFile(void); - virtual void Parse(bool exception_on_error = false) throw(gdcmFormatError); // Write (used in gdcmFile) virtual bool Write(FILE *, FileType); @@ -136,6 +135,8 @@ protected: private: // Read + void Parse(bool exception_on_error = false) throw(gdcmFormatError); + void LoadHeaderEntries (void); void LoadHeaderEntry (gdcmHeaderEntry *); void AddHeaderEntry (gdcmHeaderEntry *); -- 2.45.1