]> Creatis software - gdcm.git/blobdiff - ChangeLog
ENH: Some cosmetic cleanup of gdcmFile, main changes are: lgrTotal -> ImageDataSize...
[gdcm.git] / ChangeLog
index 8846cb4687adc28d0c5c95c277c0261302b02d9b..eb732c6c24418c923226f41d25093475735ccb63 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+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
+           SeQuence indented printing of Dicom Header.
      * ENH merge methods gdcmParser::Parse and gdcmParser::LoadHeaderEntries
-           into the single gdcmParser::LoadHeaderEntries for efficiency purpose
+           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 
+           tree-like structure of a Dicom Header.
      * FIX Test code cleaning     
            
 2004-04-25  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
        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 intersting when we add more and more tests, thus dsw don't have to load too many projects
+       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
+     * ENH Minor changes to the Print() methods.
      * ADD gdcmParser::PrintEntryNiceSQ() to allow SQ-indented
            Header printing. Example given with :
-          PrintHeader fileName  2 new
+          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>
      * 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
 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. 
+             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
       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
          - 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>
       * 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>