]> Creatis software - gdcm.git/blobdiff - ChangeLog
ENH: Some cosmetic cleanup of gdcmFile, main changes are: lgrTotal -> ImageDataSize...
[gdcm.git] / ChangeLog
index d9a35b9cf039923cc0761da17c7e19983614f378..eb732c6c24418c923226f41d25093475735ccb63 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,729 @@
+2004-06-23 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+   * Test/PrintAllDocument.cxx: looping on files is now effective. It used to
+     loop on the same image until memory went out. 
+     Note: this means we still have gobs of memory loss in PrintDocument
+   * src/gdcmDocument.cxx: fixes problem on parsing on file
+     gdcmData/16BitsJpegLosslessGrayScale.dcm.
+2004-06-24 Jean-Pierre Roux
+FIX : Write - All the Sequences and Sequence Item are now written 
+            as 'no length' stuff, and a Sequence Delimitor aor an Item Delimitor
+                               is added a the end, when necessary.
+            - A lot of brain-damaged images, that were read correctly are 
+                     now written correctly
+                               - length compatible BinEntry are now loaded correctly 
+                               (even for odd groups) 
+        Note : only Explicit Value Representation was checked.
+                               (question : is implicit VR really necessary for gdcm ?)
+
+2004-06-23 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+   * DEVELOPPER: added a proposition of coding style.
+   * src/gdcmDocEntry.h: removed every inline declaration (for test of 
+     coding style).
+
+2004-06-23 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+   * gdcmDocEntry::PrintCommonPart() and ::WriteCommonPart() removed.
+     Use the gdcmDocEntry::Print() and Write() instead.
+   * src/gdcmDocument.cxx: bug fix.
+
+2004-06-22 Jean-Pierre Roux
+   FIX : gdcmDocument.cxx
+      - Now we do recognize the JpegLossLess format (there was a misstyping in
+        code 'beautyfication' :-(
+      - Now we automaticaticaly load the Luts, if any
+
+2004-06-22 Jean-Pierre Roux
+   In order : to write Sequences, whatever their imbrication level, 
+                : to allow user to create his own Sequences
+       a lot of modif where necessary (adding, moving, or virtualising methods)
+
+WARNING : save your own sources *before* cvs up !
+       
+       - gdcmBinEntry
+         ADD virtual void Write(FILE *fp, FileType filetype);
+         
+   - gdcmDocEntry
+         ADD virtual void Write(FILE *fp, FileType filetype);
+         ADD void gdcmDocEntry::WriteCommonPart(FILE *fp, FileType filetype);
+         
+       - gdcmDocEntrySet
+         ADD virtual void Write (FILE *fp, FileType filetype)=0;
+         ADD   virtual gdcmDocEntry *GetDocEntryByNumber(guint16 group,guint16 element) = 0;
+     ADD gdcmDocEntry *GetDocEntryByName(std::string name);
+     ADD virtual std::string GetEntryByNumber(guint16 group,guint16 element) = 0;
+     ADD std::string GetEntryByName(TagName name);                      
+     ADD gdcmDictEntry *NewVirtualDictEntry(guint16 group, 
+                                            guint16 element,
+                                            std::string vr     = "unkn",
+                                            std::string fourth = "unkn",
+                                            std::string name   = "unkn"); 
+         ADD gdcmValEntry *NewValEntryByNumber(guint16 group, guint16 element);                                                                                                 
+     ADD gdcmBinEntry *NewBinEntryByNumber(guint16 group, guint16 element);    
+     ADD gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element); 
+     ADD gdcmDocEntry *NewDocEntryByName  (std::string Name);   
+     ADD gdcmDictEntry *GetDictEntryByName   (std::string Name);
+     ADD gdcmDictEntry *GetDictEntryByNumber(guint16, guint16);
+         REM virtual gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element)=0;
+     REM virtual gdcmDocEntry *NewDocEntryByName  (std::string Name)=0;
+         
+       - gdcmDocument
+     ADD virtual bool WriteF(FileType type); // New stuff, with recursive exploration          
+     ADD virtual std::string GetEntryByName    (TagName tagName);
+     ADD virtual std::string GetEntryVRByName  (TagName tagName);
+     REM virtual bool Write(FILE *, FileType);
+     REM virtual void WriteEntryTagVRLength(gdcmDocEntry *tag,
+                                        FILE *_fp, FileType type);
+     REM virtual void WriteEntryValue(gdcmDocEntry *tag,FILE *_fp,FileType type);
+     REM virtual bool WriteEntry(gdcmDocEntry *tag,FILE *_fp,FileType type);
+     REM virtual bool WriteEntries(FILE *_fp,FileType type);
+     REM virtual std::string GetEntryByName    (std::string tagName);
+     REM virtual std::string GetEntryVRByName  (std::string tagName);
+     REM gdcmDictEntry *GetDictEntryByName  (std::string Name);
+     REM gdcmDictEntry *GetDictEntryByNumber(guint16, guint16);
+     REM gdcmDictEntry *NewVirtualDictEntry(guint16 group, 
+                                            guint16 element,
+                                            std::string vr     = "unkn",
+                                            std::string fourth = "unkn",
+                                            std::string name   = "unkn");
+     REM gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element);
+     REM gdcmDocEntry *NewDocEntryByName  (std::string Name);
+     REM gdcmValEntry *NewValEntryByNumber(guint16 group, guint16 element); 
+     REM gdcmBinEntry *NewBinEntryByNumber(guint16 group, guint16 element); 
+                                                                                                                
+       - gdcmElementSet
+         ADD virtual void Write(FILE *fp, FileType filetype);
+         
+   - gdcmSeqEntry
+         ADD virtual void Write(FILE *fp,FileType filetype);
+   - gdcmSQItem
+     ADD virtual void Write(FILE *fp, FileType filetype);
+     ADD virtual std::string GetEntryByNumber(guint16 group, guint16 element);       
+     REM std::string GetEntryByNumber(guint16 group, guint16 element);
+     REM std::string GetEntryByName(TagName name);
+
+   - gdcmValEntry
+        ADD virtual void gdcmValEntry::Write(FILE *fp, FileType filetype); 
+                                 
+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
      * Update Windows projects and .cvsignore files
 
 2003-11-12 Jean-Pierre Roux
-     *ENH  gdcmHeader constructor has one more parameter (default value : false)
+     * ENH gdcmHeader constructor has one more parameter (default value : false)
            that allows the user to 'go inside' the SeQuences only
-          if he wants to.
-          gdcmElValSet:Print takes it into account
+           if he wants to.
+           gdcmElValSet:Print takes it into account
 
 2003-11-12  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
-     *ENH: Update gdcmPython/CMakeLists
-     *FIX: (gdcmHeaderHelper) GetRescale and GetSlope
-     *FIX: (gdcmElValSet) char 'tag' was overiding private members (VC++)
+     * ENH: Update gdcmPython/CMakeLists
+     * FIX: (gdcmHeaderHelper) GetRescale and GetSlope
+     * FIX: (gdcmElValSet) char 'tag' was overiding private members (VC++)
 
 2003-11-10 Jean-Pierre Roux
-      *FIX : gdcmHeader::LoadElements is now based
+      * FIX : gdcmHeader::LoadElements is now based
              on the ListTag listElem member,
              not longer on the TagElValueHT tagHt member
-      *ENH : PrintPubElVal shows (temporarily) both results,
+      * ENH : PrintPubElVal shows (temporarily) both results,
              with the tagHt member and the listElem member.
             (it's easier to 'see' the problems when using Printheader)
 
-      *FIX : old private member LgrElem is now splitted into
+      * FIX : old private member LgrElem is now splitted into
              ReadLength   : Length actually found on disk (updated only
                            if bug fixing is necessary), for internal
                            use only
                (to be written)
 
 2003-11-07 Jean-Pierre Roux
-     *FIX misstyping in Transfert Syntax name table
-     *ENH gdcmHeader::FixFoundLength now allow to 'go inside' tge SeQuences
+     * FIX misstyping in Transfert Syntax name table
+     * ENH gdcmHeader::FixFoundLength now allow to 'go inside' tge SeQuences
           when they have an actual length (not 0000 nor FFFFF)
-         (Nobody should care of it, but DICOMDIR explorers)
+     (Nobody should care of it, but DICOMDIR explorers)
 
 2003-11-06  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
-     *ENH: vtkgdcmViewer now works with LUT dicom (OT-PAL-face ...)
+     * ENH: vtkgdcmViewer now works with LUT dicom (OT-PAL-face ...)
 
 2003-11-05  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
-     *ENH: vtkGdcmReader now supports LUT !
+     * ENH: vtkGdcmReader now supports LUT !
           (vtkgdcmViewer for now is not able to use them though)
 
 2003-11-05 Jean-Pierre Roux
      * in testSuite.py : new files names for checking the package
-     * Fix : Forgot to commit gdcmFile::GetImageDataSizeRaw();
+     * FIX : Forgot to commit gdcmFile::GetImageDataSizeRaw();
              that returns the pixel area size to the *aware* (vtk) user
              that DOESN'T want to turn the PALETTE COLOR image into an RGB image
 
 2003-11-03 Jean-Pierre Roux
      * add gdcmHeaderHelper::GetNumberOfScalarComponentsRaw()
            to be used by aware (vtk) users that want to manage
-          LUT (and no to turn the PALETTE image into an RGB pixels one)
+           LUT (and no to turn the PALETTE image into an RGB pixels one)
      * GetPixelType now returns 8U for 24 Bits images
-                    (vtkGdcmReader compliant)             
-          
+                    (vtkGdcmReader compliant)           
+      
 2003-10-31 Jean-Pierre Roux
      * Removal of *all* gdcmData images and add them again
        in order to loose the 'history' of un-anonymised images
        
 2003-10-31 Jean-Pierre Roux
-     *RMV : removal of useless jBitsInJsample.h 
+     * RMV : removal of useless jBitsInJsample.h 
            for both 8 and 12 Bits JPEG Lossy Libraries
-          
+
 2003-10-31 Jean-Pierre Roux
      * ENH : Add the functions gdcmFile::GetImageDataRaw 
                                gdcmFile::GetImageDataIntoVectorRaw
              that act as GetImageData and GetImageDataIntoVector
-            except the making of an RGB Plane from Gray Plane + LUT
-            Intended to aware (vtk) users who know how to manage 
-            such an image : 
-            After gdcmHeader :
-               GetLUTRGBA return a R,G,B,A LUT if any
-               lgrTotaleRaw gives the 'Raw' length
-               GetImageDataRaw returns the gray Plane    
+             except the making of an RGB Plane from Gray Plane + LUT
+             Intended to aware (vtk) users who know how to manage
+             such an image :
+             After gdcmHeader :
+              GetLUTRGBA return a R,G,B,A LUT if any
+              lgrTotaleRaw gives the 'Raw' length
+              GetImageDataRaw returns the gray Plane
      * FIX : no more dirty trick for 'Segmented xxx Palette Color Lookup' images
              (They stay Grey, just like with other Dicom viewers :-(
 
 2003-10-30 Jean-Pierre Roux
      * FIX : a VC++ intended syntax modif broke the 12/12 Bytes expanding
-            
+             
 2003-10-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
-     *ENH: Can be used like this '$vtkgdcmViewer *.dcm' with *.dcm 
+     * ENH: Can be used like this '$vtkgdcmViewer *.dcm' with *.dcm 
           being coherents dicom files.
      
 2003-10-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
-     *FIX: DOH ! Forgot about windo$e users, they couldn't read lossless jpeg,
+     * FIX: DOH ! Forgot about windo$e users, they couldn't read lossless jpeg,
            from medcon lib !
-     *ENH: Turn it into DOS file type to match libgdcmijpeg8.dsp file type 
-     *ENH: Two steps is necessary to please VC++ compiler...
-     *FIX: DOH ! libgdcmijpg8 -> libgdcmljpeg
-     *ENH: Add include dir to medcon lib
-     *FIX: only one function is being exported for now ! 
+     * ENH: Turn it into DOS file type to match libgdcmijpeg8.dsp file type 
+     * ENH: Two steps is necessary to please VC++ compiler...
+     * FIX: DOH ! libgdcmijpg8 -> libgdcmljpeg
+     * ENH: Add include dir to medcon lib
+     * FIX: only one function is being exported for now ! 
            You should use GLOBAL(return type) see ljpg/jpeg.h for more info
             
 2003-10-29 Jean-Pierre Roux
       * adding  gdcmHeader::GetLUTRGBA
-               returns a 4 * 256 Bytes Reg/Green/Blue/Alpha vtk compliant LUT
-              --> Mathieu, the modif u're waiting for is not yet committed
+        returns a 4 * 256 Bytes Reg/Green/Blue/Alpha vtk compliant LUT
+          --> Mathieu, the modif u're waiting for is not yet committed
       * removal of now useless GetLUTRed,GetLUTGreen,GetLUTBlue,GetLUTRGB
-      
+
 2003-10-27 Jean-Pierre Roux
-      * adding some xmedcon breaker files (courtesy of Loïc Boussel) 
- .              00191113.dcm DermaColorLossLess.dcm 
-               MxTwinLossLess.dcm RadBWLossLess.dcm       
-       * ENH: For version prior to vtkImageViewer2 -r 1.19
-       * FIX: avoid pb with xmedcon-breaker CT McTwin Elscint images
-           
+      * adding some xmedcon breaker files (courtesy of Loïc Boussel)
+        00191113.dcm DermaColorLossLess.dcm
+        MxTwinLossLess.dcm RadBWLossLess.dcm
+      * ENH: For version prior to vtkImageViewer2 -r 1.19
+      * FIX: avoid pb with xmedcon-breaker CT McTwin Elscint images
+
 2003-10-27  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
       * Removal of ido stuff in CMakeLists.txt
                                                
 2003-10-24  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
       * ENH: vtkGdcmReader.cxx can now read multiframe dicom
       * FIX: remove a call to ->Modified ... see comments
-      * FIX: vtkgdcmViewer.cxx was writting ASCII file...this is so slooooooow !
+      * FIX: vtkgdcmViewer.cxx was writting ASCII file...this is so slooooow !
       
 2003-10-23  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
       * FIX: Problem with path for libvtkgdcmPython
       * ENH: Try adding a search script for python site-package
       * RMV: Remove some file from medcon lib that are not necessary
       * FIX: gdcm/Makefile.am fix for generating ljpg medcon
-      * ENH: CMakeLists.txt now generate 'pygdcm.so' instead of 'libpygdcm.so' 
+      * ENH: CMakeLists.txt now generate 'pygdcm.so' instead of 'libpygdcm.so'
       * FIX: More pragma disable fro VC++, 
-             I don't think I break something as it is also disable in VTK/ITK. 
-            But it fasten debug compilation time.
+             I don't think I break something as it is also disable in VTK/ITK.
+        But it fasten debug compilation time.
             
 2003-10-23 Jean-Pierre Roux
       * gdcm now deals with 16 Bits Run Length Encoded images
          one for the high Bytes, the other for low Bytes)
 
 2003-10-22 Jean-Pierre Roux
-     * Now CheckRead takes into account :
-            the bugged 'Leonardo' Siemens images
-            the XA images, sent thru the burning VPRO station
-     * add I9000001.dcm, a GE dlx XA image, thru the VEPRO burning station
-     (breaks DicomWorks)
+      * Now CheckRead takes into account :
+         - the bugged 'Leonardo' Siemens images
+         - the XA images, sent thru the burning VPRO station
+      * add I9000001.dcm, a GE dlx XA image, thru the VEPRO burning station
+       (breaks DicomWorks)
 
 2003-10-22  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
       * FIX: When copying a Makefile.am to CMakeLists.txt 
              one should remove the '\'
-            
+        
 2003-10-22 Jean-Pierre Roux
       * in gdcmData adding a bugged 'Leonardo' Siemens image 
         (wrong lengths in header)
 2003-10-20  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
       * ENH: vtkgdcmViewer now autoscale color/window level on start-up, 
         no need to press 'r' now.
-       
+   
 2003-10-20  Jean-Pierre Roux
-      * upgrade of checkRead.sh checkWrite.sh according 
+      * upgrade of checkRead.sh checkWrite.sh according
         to new Jpeg Lossless decompressor
-       * add US.3405.1.dcm, a genuine RGB medical file ...
-       * add gdcm-ACR-LibIDO.acr, unnormalized Rectangular LibIDO format image
-       * add CLIP0001-Sequoia-U11.dcm, US 'Clip', from SEQUOIA machine, 
+      * add US.3405.1.dcm, a genuine RGB medical file ...
+      * add gdcm-ACR-LibIDO.acr, unnormalized Rectangular LibIDO format image
+      * add CLIP0001-Sequoia-U11.dcm, US 'Clip', from SEQUOIA machine,
                                                   UNIT 11, Hop Cardio              
 2003-10-15  Jean-Pierre Roux
       * general anonymisation in gdcmData
       * adding the 'color files' from
-         http://www.leadtools.com/SDK/Medical/DICOM/ltdc19.htm
+        http://www.leadtools.com/SDK/Medical/DICOM/ltdc19.htm
       * adding some well knowed bugged-header images
       * adding checkRead.sk, checkReadColor.sh, checkWrite.sh,
-         waiting for their inclusion in Python testsuite
+        waiting for their inclusion in Python testsuite
 
 2003-10-15  Jean-Pierre Roux
     * gdcmHeader::gdcmHeader(const char *InFilename, bool exception_on_error)
       no longer seg faults when file is not found
 
 2003-10-14  Jean-Pierre Roux
-     * Emprovement of reading for Dicom encapsulated Jpeg LossLess MultiFrame images
+     * Emprovement of reading for Dicom encapsulated Jpeg LossLess 
+       MultiFrame images
 
 2003-10-14  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
      * TODO: *.in file to genereate a UseGDCM later
              is not gdcm Readable
      * ENH : One more JPEG LossLess type "JPEG Baseline (Process 14)" 
              is now decoded.
-            
+        
 2003-10-10  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
      * FIX: CMake generate now documentation
      * ENH: out of source doc build !
      * FIX: make install should be ok now on ùnix plateform
      * FIX: PATH to dictionary was wrong (missing /)
      * ENH: OpenFile, return true if the file looks like an ACR or DICOM file 
-                    
+                     
 2003-10-09  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
      * vtkGdcmReader is now able to read rgb dicom file.
      * src/gdcmHeaderHelper : GetNumberOfScalarComponents()
 2003-10-06  Emanuel Ollart
      * FIX : compilation process wad broken.
              Changed gdcmViewer_sources to vtkgdcmViewer_sources
-            
+        
 2003-10-06  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
      * change gdcmViewer -> vtkgdcmViewer
      * change GetXSpacing and GetYSpacing "%f\\%" is parsed backward
 2003-10-03 Jean-Pierre Roux
       * ENH :gdcmHeaderHelper::GetNumberOfScalarComponents() added, 
              to allow displaying RGB images (not only by affim ;-)
-            
+        
 2003-10-03  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
       * vtkGdcmReader is now able to read rgb dicom file.
       * src/gdcmHeaderHelper : GetNumberOfScalarComponents()
          - deals with MultiFrames MultiFragments Run Length Encoded files
          - deals with YcBcR (YBR_FULL) files
          - deals with YBR_YBR_FULL_422 files (they work as RBG files ?!?)
-          WARNING : nothing was checked for YBR_PARTIAL_422, YBR_ICT, YBR_RCT files.
+          WARNING : nothing was checked for YBR_PARTIAL_422, YBR_ICT, 
+                                           YBR_RCT files.
           (no sample found :-(
 
 2003-10-02  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
       * src/*.cxx removed pragma thingies to src/gdcmCommon.h
         Two reasons: - clear things
                      - third parties acces gdcm through header files, so won't
-                     suffer anymore VC++ complains
+                       suffer anymore VC++ complains
+
 2003-09-30  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
       * add argv[1] in testvtkGdcmReader.cxx
       * removed leaks
-                    
+
 2003-09-24 Jean-Pierre Roux
       * The lines are now eigthy characters long.for 
         gdcmHeader.cxx gdcmHeaderHelper.cxx gdcmParse.cxx 
 
 2003-09-08  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
       * src/gdcmHeaderHelper.[h cxx]: added new class that provide an
-      interpretation to data given by gdcmHeader. For instance there are
-      heuristics to get informations (look at different places).
+        interpretation to data given by gdcmHeader. For instance there are
+        heuristics to get informations (look at different places).
       * it also include a specific class: gdcmSerieHeaderHelper devoted to
-      sorting DICOM images based on different strategies.
+        sorting DICOM images based on different strategies.
       * modified Makefiles accordingly.
 
 2003-09-05  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
       * vtk/win32/vtkgdcm.dsp : added /nodefaultlib "mscvrt" for debug mode
 
 2003-08-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
-      * Corrected a leak in vtkGdcmREader.cxx, the pSource was find thanks to valgrind.
+      * Corrected a leak in vtkGdcmREader.cxx, the pSource was find thanks
+            to valgrind.
 
 2003-07-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
       * src/win32/libgdcmjpeg12.dsp was not dos format
-      * src/win32/libgdcmjpeg12.dsp : libgdcmijpeg12_EXPORTS -> LIBGDCMIJPEG12_EXPORTS
+      * src/win32/libgdcmjpeg12.dsp : 
+                  libgdcmijpeg12_EXPORTS -> LIBGDCMIJPEG12_EXPORTS
       * src/win32/gdcmdll.dsp: + /I "..\jpeg\libijg12"
 
 2003-07-29 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
         Notes on valgrind:
           - maximum info is obtained with a command of the form:
             valgrind --leak-check=yes --leak-resolution=high --num-callers=40
-                   --show-reachable=yes PrintHeader
+                     --show-reachable=yes PrintHeader
           - the remaining reachable blocks seem to come from the STL
             allocation scheme through the usage of map and list. It looks
             like this memory cannot be freed but it is not a memory leak