+2004-06-21 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * Test/TestWriteSimple.cxx: fix to gdcmHeader-gdcmHeaderHelper revamping.
+ The default constructor invoked by the line
+ gdcmHeader *f1 = new gdcmHeader( header );
+ was gdcmHeader::gdcmHeader(bool) instead of the expected
+ gdcmHeader::gdcmHeader(std::string const &, bool = false, bool, bool).
+ Hence the parsing wasn't executed... See also below.
+ * src/gdcmHeader.h: the declaration of gdcmHeader::gdcmHeader(bool)
+ as explicit constructor didn't do the trick to fix the above problem.
+ Could anyone explain why ?
+ * src/gdcmBinEntry.cxx, gdcmValEntry.cxx: gdcmBinEntry::Print() now
+ properly calls gdcmValEntry::Print() (that was weed out from
+ code related to gdcmBinEntry).
+
+2004-06-20 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * In order to fix memory leaks:
+ - Test/TestWriteSimple.cxx: added cleaning of free store through
+ some delete calls.
+ - src/gdcmBinEntry.cxx: fix to avoid SegFault.
+ - src/gdcmDicomDir.[cxx|h]: fixed initialisation in constructor
+ gdcmDicomDir::gdcmDicomDir(bool) [either the constructor itself
+ (through the call to ::AddDicomDirMeta()) or the destructor
+ would crash when deleting uninitialized ::metaElems].
+ - src/gdcmDictEntry.cxx: annotation of ununderstood memory leak.
+ - src/gdcmDocument.cxx:
+ -- ::~gdcmDocument() destructor now cleans up all dictionary entries
+ from dynamic stores.
+ -- ::ParseDES() misplaced deletion of temporary NewDocEntry
+ was causing memory leaks.
+ - src/gdcmSQItem.cxx:
+ -- ::~gdcmSQItem() dummy code cleaned (learned that deletion is
+ cleanly handled with polymophism: sorry but my milage is low).
+ -- ::SetEntryByNumber(string, guint16, guint16) now cleanly allocates
+ a gdcmValENtry, and makes no assumption on type (gdcmDocEntry,
+ gdcmSeqEntry vs gdcmValEntry) of existing entry (when present).
+ This avoids SegFaulting.
+ - src/gdcmSQItem.h: coding style.
+ * Conclusion:
+ - Test/TestWriteSimple still severely sucks. The output image content
+ (when $(GDCMDATA_HOME)/012345.002.050.dcm in input) is brain
+ damaged when displayed with vtkgdcmViewer.
+ - on memory leaks: TestWriteSimple leaks really less (see entry
+ of 2004-06-18 in Changelog file for the call to valgrind).
+ - on segfaults: ctest now passes all the tests but one (no more
+ segfaults).
+ * Erroneous leading white fix:
+ - src/gdcmDict.cxx: getline(from,xxx) doesn't remove the leading
+ white[s] (as opposed to from >> xxx, that removes it [them].
+ - src/gdcmTS.cxx: ditto.
+ - gdcmPython/testSuite.py: dirty related kludge removed.
+ * src/*: remaining references to gdcmParser removed.
+ * src/*[cxx|h]: added copy[way]left header.
+
+2004-06-18 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * In order to fix writing of dicom files:
+ - Test/TestWriteSimple.cxx: a simpler example of writing.
+ - Test/CMakeLists.txt changed accordingly.
+ - src/gdcmDocument.cxx:
+ -- The destructor now recursilvely removes potential sequences.
+ -- Bug fix in ::IsJPEG2000()
+ -- ::ReplaceOrCreateByNumber(std::string, guint16, guint16)
+ now handles promotion of gdcmDocEntry to gdcmValEntry in a cleaner
+ manner.
+ -- ::GetValEntryByNumber(guint16, guint16) now defined (as opposed
+ to only declared) and build on top of
+ ::GetDocEntryByNumber(guint16, guint16).
+ -- ::SetEntryByNumber() now uses GetValEntryByNumber(group, element)
+ - src/gdcmElementSet.[h|cxx]: added ::RemoveEntry(gdcmDocEntry *)
+ for usage in destructor and treatement of promotion in
+ ::ReplaceOrCreateByNumber().
+ - src/gdcmSQItem.cxx: destructor should better handle his job.
+ Test/TestWriteSimple now runs (or at least it DOES something).
+ * We can now start hutting memory links. A good starting point is:
+ valgrind -q --skin=memcheck --leak-check=yes --leak-resolution=high
+ --num-callers=100 --show-reachable=yes gdcmTests TestWriteSimple
+ $(GDCMDATA_HOME)/012345.002.050.dcm foo.dcm
+
+2004-06-18 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * Valgrind note: after Mathieu Malaterre teached me how to read
+ the valgrind FAQ ;-] (see http://valgrind.kde.org/faq.html), I
+ learned that:
+ Using gcc, you can force the STL to use malloc and to free memory as
+ soon as possible by globally disabling memory caching.
+ With 3.2.2 and later, you should export the environment variable
+ GLIBCPP_FORCE_NEW before running your program.
+ By setting GLIBCPP_FORCE_NEW, STL related memory leak messages of gdcm
+ simply vanish (it is still not clear to me, whether this means that
+ STL std::string leaks or if valgrind believes it leaks...).
+ * Fixing of SegFault of Test/makeDicomDir (as shown by ctest or by
+ running bin/gdcmTests makeDicomDir):
+ - src/gdcmDicomDir.cxx: dynamic casting used + clean up.
+ - Test/makeDicomDir.cxx now properly traps empty lists and returns
+ with 1.
+ NOW, makeDicomDir cleanly fails (in ctest terminology) instead of
+ SegFaulting (I drowned in DicomDir related code when trying to
+ understand why the list is empty...).
+ * src/gdcmDocument.h: first BSD license header try.
+ * Doc/License.txt added.
+
+2004-06-15 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * src/gdcmDocument.[h|cxx]:
+ - Clean up of the Transfer related predicates. They are now all based
+ on new method isGivenTransferSyntax, that (should) handle properly
+ the padding problem.
+ - general clean up, simplification, and coding style.
+ - Specific clean up of Parse7FE0() (umproperly named actually).
+ * gdcmPython/testSuite.py: an odd temporary kludge introduced.
+
+2004-06-14 Jean-Pierre Roux
+ * gdcmSeqEntry.cxx
+ - fix the display of Sequence Delimitor (SQDepthLevel pb)
+ - fix the display of SQItem ordinal number
+ - add the GetSQItemByOrdinalNumber method
+ - remove some useless never written private methods
+
+2004-06-14 Jean-Pierre Roux
+ * gdcmBinEntry.cxx
+ - adding a constructor taking a gdcmDocEntry as an input param
+ - ReplaceOrCreateByNumber now returns :
+ a gdcmBinEntry * if a Binary (void *) value is passed as a param
+ a gdcmValEntry * if a string value is passed as a param
+ * dcmDocument.cxx
+ - SetEntryByNumber now allows setting gdcmValEntry or gdcmBinEntry,
+ according to the param type (no longer sets a gdcmDocEntry)
+ - GetValEntryByNumber, GetBinEntryByNumber added
+ - NewValEntryByNumber and NewBinEntryByNumber added
+ * gdcmFile.cxx
+ - Pixel Data are now linked to the (7fe0,0010) elements, after reading
+ * gdcmSQItem.h
+ - GetSQItemNumber and SetSQItemNumber added, to provide
+ a (relative) Item identier inside a given Sequence
+ \warning : some pb remaining around this number
+ will be solved asap
+ - AddEntry now takes the Item Number as a param
+ * gdcmValEntry.cxx
+ - adding a constructor taking a gdcmDocEntry as an input param
+
+2004-06-14 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * Memory leak hunt with the following command:
+ valgrind --leak-check=yes --leak-resolution=high --num-callers=40
+ --show-reachable=yes gdcmTests PrintDocument
+ It looks like many (all?) leaks are due to the STL (or a bad usage
+ of the STL. The lines producing the leaks now have a comment with
+ a "MEMORY LEAK" tag: you can retrieve them with
+ grep "MEMORY LEAK" src/*
+ Here are two typical examples which I can't help fixing:
+ -----
+ #include <string>
+ int main() {
+ std::string name;
+ char * test = "babo";
+ name = test; //// <--- valgrind detects 960 bytes lost in
+ //// call to std::string::operator=(char const*)
+ name.clear(); //// Doesn't help !
+ return 0;
+ }
+ -----
+ #include <string>
+ #include <iostream>
+ int main() {
+ std::string line;
+ std::cout << "Type a bunch of characters followed by RETURN: ";
+ getline(std::cin, line); //// <--- valgrind dectects a loss
+ //// of 1320 bytes in call to
+ /// std::basic_istream<>& std::getline<>
+ return 0;
+ }
+ -----
+
+
+2004-06-10 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * src/gdcmHeader.[cxx|h]:
+ - Predicates on the Transfer syntax (of the form Is[JPEG|RLE]*)
+ and related, moved away to gdcmDocument.
+ - Accessors (on the form [Get|Set]Entry*) set up to expose publicly
+ the corresponding protected accessors of inherited class
+ gdcmDocument, removed ! As a consequence gdcmFile had to be
+ declared friend of class gdcmDocument (see below).
+ - operator< moved to gdcmDocument (in fact it belongs to gdcmDicomDir).
+ - Clean up of undefined or unused methods.
+ * src/gdcmFile.[cxx|h]: added SetEntryByNumber (in order to take into
+ account the changes to gdcmHeader.h).
+ * src/gdcmDocument.h:
+ - gdcmFile is now a friend class (in order to take into account the
+ changes to gdcmHeader.h).
+ - Predicates on the Transfer syntax (of the form Is[JPEG|RLE]*) added
+ (see changes to gdcmHeader.h).
+ - Accessors (reading on the form GetEntry*) are now public.
+ - Clean up of undefined or unused methods.
+ * src/gdcmDocument.cxx:
+ - adaptation to changes to gdcmDocument.h
+ - ::OpenFile now writes a verbose message when file cannot be opened.
+ - some std::string properly set to VRKey
+ * src/gdcmDicomDir.h: historical references to gdcmHeader changed to
+ references to gdcmDocument.
+ * Test/TestFindTags.cxx: changed accordingly to above changes.
+ * gdcmPython/testSuite.py: adapted to renaming of acr files in
+ cvs repository gdcmData.
+
+2004-06-09 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * src/gdcmValEntry.h: member voidArea type changed from char* to void*.
+ * src/gdcmBinEntry.h: member voidArea commented out, since it potentially
+ conflicts with gdcmValEntry::voidArea.
+ * src/gdcmValEntry.cxx: unmatching comment wiped out.
+ * src/gdcmVR.[h|cxx]: added two predicates that partition the possible
+ Value representation between StringRepresentable and BinaryRepresentable.
+ * src/gdcmDocument.cxx:
+ - method ParseDES: proper indentation restored and usage of
+ gdcmVR::IsVROfGdcmStringRepresentable wired in.
+ - method LoadDocEntry: the fingerprint left in the SetValue() of
+ unloaded entries (length > MaxSizeLoadEntry) had curiously been
+ removed. Reverting to previous code segment with the proper
+ dynamic_cast< gdcmValEntry* >.
+ Note: this was (partially) breaking the python test suite
+ (gdcmPython/testSuite.py) that made usage of the above
+ fingerprint to check presence of "Pixel Data".
+ * src/gdcmDocEntry.h: coding style.
+ * gdcmPython/__init__.py: environement variable GDCM_DATA_PATH is
+ now taken into account.
+ * gdcmPython/gdcm.i: adaptation to the new internal representation
+ of gdcm (exit gdcmParser, hello gdcmDocument).
+ * gdcmPython/testSuite.py: quick and dirty fix for loading vtkgdcmPython
+ on posix.
+ * gdcmPython/demo/PrintHeader.py: doesn't use the gdcmDocument::Print()
+ anymore, but instead prints the loaded Python dictionary.
+ * .... alas, the python testSuite is still broken.
+
+2004-05-18 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
+ * gdcmPython/gdcm.i : remove useless lines concerning the gdcmGlobal
+ gdcmGlob
+ * gdcmPython/setup.py : replace the use of cvar.gdcmGlob to gdcmGlobal
+ * src/gdcmUtil.h : export methods
+
+2004-05-16 Mathieu Malaterre <Mathieu.Malaterre@creatis.insa-lyon.fr>
+ * Some more cleanup/enhancement in gdcmPython/CMakeLists.txt getting close
+ to right behavior
+ * Initial addition of automatic python testing
+ * Initial addition of automatic image comparison
+
+2004-05-04 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
+ * src/gdcmCommon.h, gdcmDicomDir.cxx, gdcmFile.cxx, gdcmHeaderHelper.h,
+ gdcmParser.cxx, gdcmParser.h : bug fix for the Microsoft .Net compilation
+
+2004-05-04 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
+ * src/gdcmFile.cxx, gdcmHeader.cxx : bug fix for the msvc compilation
+ * Test/ShowDicom.cxx : bug fix for msvc compilation
+ * vtk/vtkgdcmViewer.cxx : bug fix for msvc compilation
+
+2004-05-04 Jean-Pierre Roux
+ * ADD Taking into account the 'Dicom Sequences' leads up to introduce
+ new concepts (and new classes) :
+ a 'gdcmDocument' is composed of a set of Doc Entries, that are
+ - elementary gdcmDocEntries (former gdcmHeaderEntries)
+ - Sequence Doc Entries (gdcmSeqEntries)
+ a Sequence is composed of Items.
+ Each item is a set of Doc Entries (this is recursive)
+ The non uniqueness of the 'Dicom tag' is due to this recursivity
+ (never taken into account)
+ Our unability to add a new 'entry' in the header
+ at the proper location (neither in the H-Table (map or multimap),
+ nor in the Chained List is also due to this recursivity.
+ Don't try, right now, to use/modify/compile these new sources :
+ nothing is finished.
+ We just commit all the stuff, 'as is', in order not to loose it.
+
+2004-05-04 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
+ * vtk/vtkGdcmReader.cxx : bug fix in the setting of file name
+
+2004-05-03 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
+ * vtk/vtkGdcmReader.cxx : bug fix when loading a list of files using the
+ file prefix (SetFilePrefix)
+
+2004-05-02 Mathieu Malaterre <Mathieu.Malaterre@creatis.insa-lyon.fr>
+ * Add a new test: ShowDicom, for now this is just the c++ version of
+ checkRead.sh, later it will be able to compare the image read against a
+ baseline.
+ * Replace the DEBUG on the stack with a global entry in cmake interface:
+ GDCM_DEBUG, so you can turn verbosity ON/OFF for debug statement.
+
+2004-04-30 Mathieu Malaterre <Mathieu.Malaterre@creatis.insa-lyon.fr>
+ * Add an example subdir, with a real example on how to read + write a
+ dicom image
+
+2004-04-30 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * Doc/gdcmUML.xmi added raw UML class view (umbrello format)
+ * Doc/CMakeLists.txt: the main page is now properly differentiated
+ between the developper and user version.
+ * Doc/doxygen.config.in: dropped search related obsolete flags
+ * src/gdcmParser.h, gdcmHeader.h: doxygenation
+
+2004-04-29 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * DEVELOPPER: added some helpfull comments for compile/test/install
+ when using cmake.
+
+2004-04-29 Mathieu Malaterre <Mathieu.Malaterre@creatis.insa-lyon.fr>
+ * ENH: 1. Remove remp solution of gdcmTests.cxx+ gdcmMain directly in
+ src directory, now generated in the build dir.
+ 2. Tests as mentionned smarter
+ 3. Some clean up
+ 4. Add a new method in gdcmDict that return the PubDict by name
+ this is interesting for 3rd party lib like ITK,
+ where we could set the institution name / patient name...
+
+ * ENH: 1. Now the test suite is working for real
+ 2. All binaries are now output in the gdcm-bin directory
+ (this was not true before)
+
+2004-04-28 Jean-Pierre Roux
+ * ENH add the provisional gdcmHeader::SQDepthLevel to allow
+ SeQuence indented printing of Dicom Header.
+ * ENH merge methods gdcmParser::Parse and gdcmParser::LoadHeaderEntries
+ into the single gdcmParser::LoadHeaderEntries for efficiency purpose.
+ Computation of SQDepthLevel is now part of gdcmHeader constructor
+ * ENH add self defined param 'new' to PrintHeader to 'show' the SeQuence
+ tree-like structure of a Dicom Header.
+ * FIX Test code cleaning
+
+2004-04-25 Mathieu Malaterre <Mathieu.Malaterre@creatis.insa-lyon.fr>
+ * ENH: Adding automatic testing
+ 1. Need a DartConfig.cmake to submit to public
+ 2. Add a test driver gdcmTest.cxx
+ 3. gdcmTestMain, an helper for the main test driver gdcmTest
+ 4. Files in Test don't have a main anymore, this becomes interesting
+ when we add more and more tests, thus dsw don't have to load
+ too many projects
+ * ENH: Adding a GDCM_DATA_ROOT for testing
+ * ENH: Remove redundancie about GDCM_DICT stuff, now we only need to modify
+ one file instead of seven + some small cleanup
+
+2004-04-22 Jean-Pierre Roux
+ * ENH Minor changes to the Print() methods.
+ * ADD gdcmParser::PrintEntryNiceSQ() to allow SQ-indented
+ Header printing. Example given with :
+ > PrintHeader fileName 2 new
+ (SQ based tree-like structure still to be done for the Header ...)
+
+2004-04-22 Mathieu Malaterre <Mathieu.Malaterre@creatis.insa-lyon.fr>
+ * ENH: Some cosmetic clean up for compilation with -W -Wall -Werror
+ 1. I have added some unsigned where needed
+ 2. Some function parameter not used -> (void)
+ 3. In gdcmDicomDir.cxx, add GDCM_DICOMDIR_NONE case
+ 4. g++ don't like character '\' in comment
+ 5. #define jpeg_create_decompress jCreaDecompress
+ this really need to be fixed
+ 6. virtualize destructor of gdcmObject ... leakage
+ 7. sscanf(g->first.c_str(),"%x",&gr_bid);
+ this also really need to be fixed
+ 8. gdcm/src/jpeg/libijg8/CMakeLists.txt,
+ remove compression file
+ (as we only do decompression, right ?)
+ * ENH: Change malloc/calloc/free with c++ equivalent
+
+2004-04-21 Jean-Pierre Roux
+ * FIX gdcmHeaderHelper::GetXSpacing
+ when a single value is found (bug ?), xpacing is now
+ defaulted to yspacing
+
+2004-04-19 Jean-Pierre Roux
+ * ADD gdcmData/Wrist.pap (PAPYRUS 3.0 -single frame-) for checking purpose
+ * ENH add parameters :
+ bool exception_on_error = false,
+ bool enable_sequences = false,
+ bool ignore_shadow = false
+ to the gdcmFile constructors to be full gdcmParser compliant
+ * FIX vtk/vtkGdcmReader.cxx now uses enable_sequences = true in gdcmFile
+ to allow reading of PAPYRUS 3.0 files
+
+2004-04-06 Jean-Pierre Roux
+ * ADD gdcmData/E00001S03I0015.dcm for SQ checking purpose
+
+2004-04-02 Jean-Pierre Roux
+ * ADD : Test/checksequence.sh, for a general recap on SQ pb
+ * FIX : gdcmParser::WriteEntryTagVRLength emprovement of special treatement
+ for Philips spurious Tag fffe|0000 while rewritting Dicom files
+
+2004-03-30 Jean-Pierre Roux
+ * FIX gdcmParser::ReplaceOrCreateByNumber shouldn't seg fault any more
+ for ACR file, written out as DICOM files (hope so...)
+
+2004-03-30 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * src/gdcmParser.[cxx|h] and gdcmHeader.[cxx.h]: gdcmHeader::Write split
+ in WriteEntryTagVRLength and WriteEntryValue. Those methods were
+ moved to base class gdcmParser and only the specialisation is kept
+ in gdcmHeader.
+ * src/gdcmParser.[cxx|h]: ReplaceOrCreateByNumber(char*, guint16, guint16)
+ trashed out (because ReplaceOrCreateByNumber(string, guint16, guint16)
+ already does the job.
+ * src/gdcmDicomDir.[cxx|h]: WriteDicomDirEntries renamed to WriteEntries
+ (to be consistent with gdcmParser::WriteEntries).
+
+2004-03-30 Benoit Regrain
+ * vtk/vtkGdcmReader.[h|cxx] : fix the read of 3 gdcmHeader when making an
+ upate of the object's instance. It's passed to 2 in the unfavorable
+ case : one in the ExecuteInformation, one in the ExecuteData
+
+2004-03-29 Jean-Pierre Roux
+ * ENH : Check on file type to be written moved
+ from gdcmParser::WriteEntry to gdcmParser::WriteEntries
+ * FIX : gdcmObject::ResetBoundaries now stops properly
+ when end-of-list is reached
+ : gdcmVersion modified (as Benoit Regrain asked)
+
+2004-03-29 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * src/gdcmParser.cxx: removal of all TAB character. Indentation fixed.
+ * src/gdcmUtil.cxx: added forgotten iostream include.
+ * src/gdcmCommon.h: FileType enum entry DICOMDIR removed (since
+ equivalent to ExplicitVR in existing code).
+
+2004-03-27 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * src/gdcmUtil.[cxx|h] split in two. Additional file gdcmGlobal.[cxx|h]
+ now contains all the gdcmGlobal related code.
+ * minor coding style and doxygenation changes.
+
+2004-03-26 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * src/gdcmUtil.[cxx|h] split in two. Additional file gdcmDebug.[cxx|h]
+ now contains all the Debug related code.
+ * minor clean-up of includes in src/*.cxx
+ * src/gdcmUtil.[cxx|h] _cleanString C style function (replaced with
+ CreateCleanString) removed.
+ * src/gdcmUtil.[cxx|h] _CreateCleanString renamed to CreateCleanString
+ * Doc/DoxyMainPageUser.txt added.
+ * Doc/Doc/DoxyfileUsers updated to version 1.3.4 of Doxygen.
+ * src/gdcmCommon.h now defines getcwd for Win32 (moved away from
+ src/gdcmDirList.cxx)
+
+2004-03-24 Jean-Pierre Roux
+ * FIX a lot of little surface modifications to be doxygen 1.3.6 compliant
+
+2004-03-23 Jean-Pierre Roux
+ * FIX Now gdcmFile::SwapZone doesn't seg faults any longer for
+ big endian made volumes
+ * ENH Now gdcmParser constructor and destructor are protected to forbid
+ end user to instanciate class gdcmParser
+ (only gdcmHeader and gdcmDicomDir are meaningfull)
+
+2004-03-22 Benoit Regrain
+ * FIX : src/gdcmDicomDir.cxx : make windows compilable
+ * FIX : gdcmPython/gdcm.i : change gdcmStudy to gdcmDicomDirStudy and
+ gdcmSerie to gdcmDicomDirSerie
+
+2004-03-19 Jean-Pierre Roux
+ * ENH Now the tree-like structure describing a DICOMDIR comming from
+ an already existing DICOMDIR file is consistent with
+ the home-made tree-like structure build ex-nihilo
+ or build from the files held (recursively) in a Directory
+ functions gdcmDicomDir::CheckBoundaries()
+ gdcmObject::SetBoundaries() added
+
+2004-03-17 Jean-Pierre Roux
+ * REM (Eric Boix bug) : removal of meaningless
+ gdcmDicomDirImage::NewImage function.
+ * FIX now file names and directory name are written properly in the
+ DICOMDIR
+ * FIX now gdcmDicomDir constructor may be call without any trick
+ about the name
+
+2004-03-16 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+ * FIX (JPR bug) : src/gdcmDicomDirImage.cxx added missing definition
+ of gdcmDicomDirImage::NewImage as empty function.
+
+2004-02-28 Jean-Pierre Roux
+ * ENH add gdcmDicomDir:NewPatient
+ add gdcmDicomDirPatient:NewStudy
+ add gdcmDicomDirStudy:NewSerie
+ add gdcmDicomDirSerie:NewImage
+ to allow making gdcDicomDir object.
+ * ADD PrintDicomDir executable that uses gdcmDicomDir tree-like structure
+ (as opposite to the gdcmHeader chained list)
+
+2004-02-11 Benoit Regrain
+ * FIX : memory leaks and the set of ArgDelete methods in gdcmDicomDir
+ when using from python
+
+2004-02-10 Benoit Regrain
+ * FIX : bug fix in the gdcmDirList for the recursivity in directories
+ * FIX : in gdcmDicomDir when the directory is empty
+ * ENH : add callback and methods to get the progression of dicomDir
+ directory parsing
+
+2004-02-06 Jean-Pierre Roux
+ * ENH : - now gdcmDicomDir::CreateDicomDir() returns also the meta elements
+ - GDCM_META added to gdcmDicomDirType
+ - class gdcmMeta created
+ * ENH : - A brief summary is now displayed at the beginning of
+ 'testDicomDir' to help disaster magnitude estimation
+ * REM : Now useless Test/explDICOMDIR.cxx
+
+2004-02-05 Benoit Regrain
+ * ENH : add methods in gdcmObject to get the hash table or the list of
+ header entries
+ * FIX : wrapping python for ListPatient, ListStudy, ListSerie, ListImage
+ * FIX : wrapping python for TagHeaderEntryHT
+
+2004-02-04 Benoit Regrain
+ * FIX : even length for some strings when writting the dicom dir
+ * FIX : sort the images in the dicom dir
+ * FIX : Bug fix for python use of dicom dir
+ * ADD : a python demo
+
+2004-02-04 Jean-Pierre Roux
+ * FIX : Final solution (?) for icone embedded images
+ * FIX : dicomVR.dic Overlay group is not *only* 6000, but 60xxx
+ (see http://medical.nema.org/dicom/2003/03_06PU.PDF)
+ add groups 6002, 6004, 6006, to allow 'clean' parsing of
+ gdcmData/gdcm-MR-SIEMENS-16.acr1
+ * ENH add gdcmData/checkWriteExplicit.sh gdcmData/checkWriteImplicit.sh
+ to make full checking easier
+
+2004-02-04 Benoit Regrain
+ * FIX : WriteEntries : coding style & logic in parameters
+ * FIX : Set the elements to create the DicomDir in a dictionary file
+
+2004-02-03 Benoit Regrain
+ * gdcmDirList : to parse a hard drive directory in recursive (or not)
+ * gdcmDicomDir : add the load of directory
+ * Bug fix and print add-on
+
+2004-02-03 Jean-Pierre Roux
+ * ENH gdcmParser : allows "DICM" files, with NO group '0002'
+ * FIX handling 'non string elements' unsecure area (LUT, overlays, etc)
+ * FIX Dicts/dicomV3.dic : Add a few missing 'group length' Elements
+ * FIX gdcmParser.cxx : 'group length' elements are now considered
+ as integers, even for shadow groups, when file is Implicit VR
+
+2004-02-02 Jean-Pierre Roux
+ * FIX : gdcmWrite : equal_range() for multimap doesn't return a 'second'
+ iterator on last
+ of the last synonym :-(
+ * FIX : gdcmWrite::WriteBase : method stops if Pixels not yet Read (except
+ for DICOMDIR ;-)
+ * ENH gdcmData/checkWrite.sh :modif for full check of Explicit VR writting
+ * FIX taking into account the possible 7fe0,0010 multiplicity
+ * FIX add GRPixel,NumPixel,countGrPixel (gdcmParser protected members)
+ to allow removal of references to 7fe0,0010, to deal with
+ ACR-NEMA images, when 0028,0200 is meaningfull
+
+2004-01-31 Jean-Pierre Roux
+ * FIX gdcmParser::WriteEntries : when a VR is tagged as 'Unknown'
+ no longer writes 'Un' on disk
+ * FIX SQ elements with actual length are now dealt with corectly
+ * FIX gdcmFile::WriteBase make the difference, for color images, between
+ the length (for Palette expanded images)
+ and Raw Length (non expanded image + Palette)
+ * FIX Dicts/dicomV3.dic : removal of 'CTX' (context dependant) VR
+ (that broke Write). Replaced by UL.
+ Aware user will reload the field if he
+ thinks it's necesssary
+
+2004-01-30 Jean-Pierre Roux
+ * gdcmParser::CheckSwap() now defaults the filetype to ACR
+ when 'dirty Acr' is found, to be compliant with the new
+ IsReadable() methods.
+
+ * gdcmHeaderHelper :add Pixel Type 'FD', for dealing with 'double' images.
+ (no DOUBLE images in kosher DICOM,
+ but so usefull for people that miss them ;-)
+
+ * add Test/testDicomDir.cxx, Test/makeDicomDir.cxx , Test/explDICOMDIR.cxx
+ DICOMDIR related utilities (not checked as Windoze compliant)
+
+2004-01-28 Jean-Pierre Roux
+ * upgrade GdcmHeaderEntry Print Method for DICOMDIR
+
+2004-01-27 Jean-Pierre Roux
+ * gdcmParser constructor has a new boolean param,'ignore_shadow',
+ to allow skipping the shadow elements, to save memory space.
+ The TRUE value for this param has to be used
+ with a FALSE value for the 'enable_sequence' param.
+ ('public elements' may be embedded in 'shadow Sequences')
+ * gdcmHeader methods now deal with 'embedded icones images' in the header
+ (even when an 'icone image sequence' is announced by the
+ element (0x0088,0x0200), but there is NO icone at all ...
+
+ * gdcmHeader sometimes Image Location value doesn't follow
+ the supposed processor endianity (see gdcmData/cr172241.dcm).
+ Fixed
+
+ * gdcmHeader add the method
+ IterHT GetHeaderEntrySameNumber(grPixel,numPixel);
+ to get *all* the Header Entries with the same tag.
+ GetHeaderEntrySameName is probabely *useless*
+ (no meaning : Name is *not* an identifier within the Dictionnary)
+
+2004-01-26 Benoit Regrain
+ * Bug fix in the print of hexadecimal representations. Remove long fields
+ in the print and add a third level of print to print them
+
+2004-01-23 Benoit Regrain
+ * Bug fix on field having a VR = 'UI'. Assume that is a string field
+ * Bug fix on test suite after remove the strip made on not string fields
+ * Split the IsReadable method between gdcmParser which test that the file
+ is dicom and gdcmHeader which test that it's an image file
+
+2004-01-22 Benoit Regrain
+ * DicomDir : clean code, add methods, set variables in protected or private
+ * gdcmUtil : bug fix for the clean string method
+
+2004-01-19 Benoit Regrain
+ * Add the use of shadow dictionaries
+ * bug fix and coding style
+
+2004-01-19 Benoit Regrain
+ * src/gdcmFile.cxx : bug fix concerning the close of file
+ * src/gdcmParser.[h|cxx] : remove obvious Pub informations
+ * Add the update of header entries using the shadow library
+
+2004-01-19 Benoit Regrain
+ * removal of file gdcmHeader2.cxx
+ * split class gdcmHeader into gdcmParser and gdcmHeader, with gdcmHeader
+ inheriting from gdcmParser. This split is to prepare the integration
+ of dicom dir parsing
+ * bug fix under python
+
+2004-01-16 Jean-Pierre Roux
+ * REM removal of class gdcmHeaderEntrySet
+ * REM removal of files gdcmHeaderEntrySet.cxx, gdcmHeaderEntrySet.h
+ * ADD add file gdcmHeader2.cxx
+ * ADD add method gdcmHeader::SetPrintLevel (for PrintHeader)
+
+2004-01-15 Benoit Regrain
+ * src/gdcmDicSet.[h|cxx] : add virtual entries to have a reference of
+ entries created while parsing the header. Thus, they will be destroyed
+ when the gdcmDictSet will be destroyed
+ * src/gdcmHeader.cxx, gdcmHeaderEntrySet.cxx : uses virtual entries of
+ gdcmDictSet
+