]> Creatis software - gdcm.git/blobdiff - ChangeLog
* src/gdcmDocument.cxx ftell() return properly stored in a long (i.e.
[gdcm.git] / ChangeLog
index 2253ee223b895e4cce5b73003f5fc15e749ba422..a27a533dce5e0b11e517cf5b70b02f4c6d4c4c8c 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,629 @@
+2004-10-20 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * src/gdcmDocument.cxx ftell() return properly stored in a long (i.e.
+    no longer depends on's programmers PMS = Preposterous Mood Swings ;).
+  * CLEANUP_ROUND (13) for gdcmPixelConvert
+    Substituted File::ParsePixelData() with PixelConvert::Print() new
+    method:
+    - src/gdcmParsePixels.cxx removed (only contained File::ParsePixelData())
+    - src/gdcmRLEFrame.cxx, gdcmJPEGFragment.cxx added. Added a ::Print()
+      method to those classes.
+    - src/gdcmFile.[cxx|h]:
+      -- Added a ::Print() method.
+      -- PixelConverter is now a reference instead of a member.
+      -- gdcmPython/gdcm.i: added "using namespace gdcm" in order for
+         gdcm_wrap.cxx to "understand" File::GetPixelConverter()
+
+2004-10-18 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * Doc/CMakeLists.txt, doxygen.config.in: when dot is present the
+    collaboration diagram and inheritance diagram should be generated with
+    doxygen.
+  * Doc/Website/Sidebar.html: Dashboard is now also in the sidebar.
+  * gdcmPython/gdcm.i: gdcmRLEFramesInfo.h gdcmJPEGFragmentsInfo.h are
+    pointlessly wrapped (see
+    http://www.creatis.insa-lyon.fr/pipermail/dcmlib/2004-October/000692.html )
+  * CLEANUP_ROUND (12) for gdcmPixelConvert (sugar is my friend stage)
+    - Header::GetLUTRGBA() moved to PixelConvert::GetLutRGBA()
+    - vtk/vtkGdcmReader.cxx: adapted to displacment of Header::GetLUTRGBA()
+    - Document::RLEInfo and JPEGInfo are now pointer members (Swig thing)
+    - src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]:
+      -- File::Initialise: PixelConverter setup moved away to
+           PixelConverter::GrabInformationsFromHeader()
+      -- File::GetImageDataIntoVector(): Lut R + Lut G + Lut B color table
+         interpretation moved away to PixelConverter::BuildRGBImage()
+
+2004-10-16 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
+  * Remove GDCM_EXPORT keyword from gdcm::DirList due to :
+    http://support.microsoft.com/support/kb/articles/Q168/9/58.ASP
+
+2004-10-15 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * src/gdcmDebug.cxx last ditch attempt to get warning/error messages
+    displayed on Win32 when a brutal abort() occurs (because of uncatched
+    exception). See TODO new entry of this commit for more on this.
+  * TODO added new entry.
+  * CLEANUP_ROUND (12) for gdcmPixelConvert (nicotine is my friend stage)
+    src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]:
+    - HandleColor is no longer called from gdcmFile.cxx
+    - gdcmPixelConvert.cxx clean up on method arguments and internal
+      variable names for semantical coherence.
+
+2004-10-14 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
+  * Finished lossless transition, not only do we now read all lossless jpeg
+  images, without the need of the Cornwell lib, but we do read them properly now
+  * To reduce code (well to avoid code duplication), I defined a common place
+  for jpeg read/write: gdcmJpeg.cxx. Now gdcmJpeg[8,12 16] include this file and
+  redefine symbols. This is not prefect but this the best solution I found for a
+  compilation time jpeg option.
+
+2004-10-13 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
+  * Update jpeg ijg lib to support lossless jpeg implementation
+    For more info look in jpeg/libijg/README.GDCM.txt for necessary steps to
+    reproduce at home.
+  * Also added a special copyright for dcmtk since we use their bugfixes.
+  Thanks dcmtk crew !
+
+2004-10-13 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * Doc/Website/MailingList.html added (Sidebar.html changed accordingly).
+  * gdcmPython/gdcm.i: fix for compilation of wrappers (Note: %include order
+    matters, as stated in warning note at begining of %include section).
+  * src/gdcmDicomDir*.[cxx|h]: coding style
+  * src/gdcmDocument.h: doxygen \ref seems uncompatible with \todo.
+  * src/gdcmJpeg8.cxx: doxygen fix.
+  * CLEANUP_ROUND (12) for gdcmPixelConvert (seing the ligth stage)
+    src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]: color handling moved
+    from File:: to PixelConvert::.
+
+2004-10-12 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * CLEANUP_ROUND (11) for gdcmPixelConvert (cafeine is my friend stage)
+    src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]:
+     - more code moved away from File:: to PixelConvert::
+     - fat setup of PixelConverter set in place in File::Initialise.
+
+2004-10-12 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
+  * Apply patch for namespace in gdcm. Didn't rename files for keeping a sort of
+  namespace at the file system level. So now you should convert your examples
+  like this:
+    gdcmHeader  ->   gdcm::Header
+  It would be nice if people keep in mind to no open the namespace, since it
+  allows compilation on broken plateform which were defining common symbol in
+  the standart namespace (like LP, Unknown ...)
+
+2004-10-10 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * CLEANUP_ROUND (10) for gdcmPixelConvert (Xanax is my friend stage)
+    The JPEG fragments are now parsed at the same stage than the RLE
+    information. All code related to JPEG is now in gdcmPixelConvert:
+    - src/gdcmJPEGFragment.h and gdcmJPEGFragmentsInfo.[h|cxx] added 
+    - src/gdcmJpeg12.cxx, gdcmJpeg2000.cxx and gdcmJpeg8.cxx no longer
+      export a gdcmFile:: method. Those are simply global functions
+      (for the time being this is better than having them attach to
+       either gdcmFile:: or gdcmPixelConvert::).
+    - src/gdcmDocument.[cxx|h], gdcmDocument:: now parser the JPEG fragments
+      and stores the result in a gdcmJPEGFragmentsInfo.
+    - src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]: all JPEG related
+      code (among other stuff) moved away from gdcmFile:; to 
+      gdcmPixelConvert::
+
+2004-10-08 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * src/gdcmCommon.h now declares int8_t for non stdint.h plateforms.
+  * CLEANUP_ROUND (7) for gdcmPixelConvert (lost at sea)
+    - src/gdcmFile.h gdcmPixelConvert.cxx gdcmPixelConvert.h gdcmRLE.cxx:
+      clean up of RLE related code. 
+  * CLEANUP_ROUND (8) for gdcmPixelConvert (end of RLE nigthmare)
+    - src/gdcmRLE.cxx removed
+    - src/gdcmPixelConvert.cxx all RLE code is now in PixelConvert::
+    - src/CMakeLists.txt gdcmFile.[cxx|h] changed accordingly
+    - src/gdcmRLEFrame*.h gdcmPixelConvert is now a friend class.
+  * CLEANUP_ROUND (9) for gdcmPixelConvert
+    - src/gdcmFile.[cxx|h} gdcmPixelConvert.[cxx|h], SwapZone(),
+      ConvertReorderEndianity(), ConvertDecmpres12BitsTo16Bits() moved
+      away from gdcmFile:: to gdcmPixelConvert::.
+
+2004-10-07 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * CLEANUP_ROUND (5) for gdcmPixelConvert (Upshit creek without a paddle)
+    - src/gdcmDocument.[cxx|h] Parse7Fe0 renamed to ComputeRLEInfo.
+      This is because Parse7Fe0 used to parse the pixels to compute the
+      length. This task was passed over to FindDocEntryLengthOB() a long
+      time ago, EXCEPT I had forgotten the OW case...
+      Hence Parse7Fe0 was no longer necessary. When renaming to ComputeRLEInfo
+      we just recylce the code for parsing RLE fragments and computing
+      offsets.
+  * CLEANUP_ROUND (6) for gdcmPixelConvert (man, I need a paddle bad)
+    - src/gdcmRLE.cxx: is now much simpler and avoids code replication
+        with the retired Parse7Fe0().
+    - src/gdcmRLEFrame.h: type fix for properly computing OffSet[]
+    - src/gdcmDocument.cxx: segments offset are now correct + clean up.
+
+2004-10-06 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * CLEANUP_ROUND (3) for gdcmPixelConvert (nightmare stage)
+    - src/gdcmRLEFramesInfo.[cxx|h], gdcmRLEFrame.h added
+    - src/gdcmDocument.[cxx|h] ::Parse7FE0 now sets up the RLEInfo.
+    - src/CMakeLists.txt: alphabetic order reodering + new entries.
+  * CLEANUP_ROUND (4) for gdcmPixelConvert
+    - src/gdcmDocument.[cxx|h] ::ParseDES and ::ParseSQ no longer bother
+      to return an unused length.
+
+2004-10-09 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
+  * Remove all sprintf from the code to centralize in one spot in gdcmUtil
+    this should be cleanner from the plane view. The iostream are erally a pain
+    to use to do simple stuff.
+
+2004-10-04 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
+  * Redo the compilation of the ijg jpeg library. Now only one source is
+    necesseray. No need to rename file by hand what so ever. CMake handle the
+    copying of the file within different directory, configure header file to
+    modify some symbol. The only addition made to ijg wasd a mangle table so
+    that symbol are different wether we are within 8bits or 12bits.
+
+2004-10-01 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * Added documentation of vtkgdcmReader on Website:
+     - testvtkGdcmReader.cxx renamed to vtkGdcmDemo.cxx (to be compatible
+       with it's binary name).
+     - vtk/vtkGdcmDemo.cxx and vtkgdcmViewer.cxx: added comments for
+       the Website to be more complete.
+     - Doc/doxygen.config.in: vtk/vtkGdcmReader.cxx now appears on 
+       doxygenated documentation.
+     - Doc/DoxyVtkGdcmReaderExamples.txt added
+       (see http://www.creatis.insa-lyon.fr/Public/Gdcm/html.developper/
+                  DoxyVtkGdmReaderExamples.html )
+  * src/win32, vtk/win32 manually maintained .dsp and .dsw removed.
+  * CLEANUP_ROUND (3) for gdcmPixelConvert
+   - src/gdcmFile.cxx, gdcmFile.h splitting GetImageDataIntoVectorRaw
+
+2004-09-29 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * CLEANUP_ROUND (2) for gdcmPixelConvert
+   - src/gdcmFile.cxx, gdcmFile.h splitting GetImageDataIntoVectorRaw
+
+2004-09-29 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * CLEANUP_ROUND for gdcmPixelConvert:
+    - src/gdcmFile.cxx, gdcmFile.h, gdcmHeader.cxx, gdcmHeader.h clean up
+    - src/gdcmPixelStuff[h|cxx] removed
+    - src/gdcmPixelConvert[h|cxx] added. Preparatory work included.
+    - src/CMakeLists.txt changed accordingly
+  * GDCMHOME clean up:
+    - MANIFEST.in, WrapSwig.py, WrapVTK.py, distutilsWrapping.py and
+      gdcmVersion.py moved to newly created ATTIC related
+      gdcmPython/SetupOldies/ directory.
+  * Autotools clean up:
+    - */*/Makefile.am removed AT EXCEPTION of gdcmPython/Makefile.am
+    - autogen.sh configure.in acinclude.m4 python.m4 removed 
+
+2004-09-27 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * src/*.cxx *.h Reference to License.htm fixed to License.html.
+  * Doc/CMakeLists.txt, doxygen.config.in: fix.
+  * Doc/Website/ConformanceSummary.html, minimal conformance statement added.
+
+2004-09-24 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * TODO updated with Mathieu suggestions. I proposed a template for
+    describing TODO entries and used it for new entries.
+  * Added Doc/Website/CodingStyle.html, Developpers.html,
+    DeveloppersPython.html, GdcmDataCvs.html and
+    DownloadVersion0_1.html, DownloadVersion0_3.html.
+  * Some Doc/*.txt Doxygen files (which do not really concern the
+    documentation itself, but the website) moved to html and
+    placed in directory Doc/Website:
+    - Doc/DoxyDevelInstal.txt moved to Doc/Website/Developpers.html
+    - Doc/DoxyInstallation.txt moved to Doc/Website/Installation.html
+    - Doc/DoxyIntroduction.txt included in Doc/Website/Main.html
+  * Doc/DoxyfileDeveloppers, DoxyfileUsers, Makefile.am oldies removed.
+  * CMakeLists.txt changed accordingly.
+  * DEVELOPPER spread out in Doc/Website/Developpers.html, CodingStyle.html,
+    DeveloppersPython.html
+  * INSTALL nows refers to Doc/Website/Installation.html
+
+2004-09-23 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * Added Doc/Website directory, that contains a first raw version
+    of gdcm Web site.
+
+2004-09-23 Jean-Pierre Roux
+  * FIX In order not to be poluted any longer by casting problems,
+    the member VoidArea of gdcmBinEntry is now uint8_t* (instead of void *)
+        we can now delete[] it safely  
+  * VoidArea is now called BinArea (less confusing name),
+    and all the methods called ...VoidArea... are now ... BinArea...
+  * class gdcmObject is now called gdcmDicomDirObject (less confusing name)
+
+2004-09-22 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * src/gdcmDocument.cxx: gdcmDocument::~gdcmDocument() doesn't clear (nor
+    clear) TagHT, which is an inherited member of gdcmElementSet. It is
+    up to the destructor of gdcmElementSet to clean up TagHt and it's
+    pointed content.
+
+2004-09-21 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * Test/CMakeLists.txt: update to follow gdcmData renamings.
+  * src/gdcmCommon.h, gdcmDocument.cxx: doxygen typos
+
+2004-09-17 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * ENH: added some utility method that builds a flat dictionnary
+    holding all the Dicom entries contained in the recursive structure
+    of a gdcmElementSet. Refer to add FlatHashTablePrint.cxx for 
+    an example of usage.
+    - src/gdcmDocument.[h|cxx] added BuildFlatHashTableRecurse() and
+      BuildFlatHashTable() that build a flat dictionary.
+    - src/gdcmElementSet.h: added a new private GetTag() accessor.
+      gdcmDocument is now a friend of gdcmElementSet.
+    - src/gdcmElementSet.cxx: clean up.
+    - Example/FlatHashTablePrint.cxx added.
+    - Example/CmakeLists.txt changed accordingly
+
+2004-09-16 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * gdcmDocEntrySet::SQDepthLevel and gdcmDocEntrySet::BaseTagKey attributes
+    moved away from gdcmDocEntrySet (since this class is an abstract class
+    acting like an interface). SQDepthLevel and BaseTagKey are now
+    in class 
+    - src/gdcmDocEntrySet.[h|cxx] removal of SQDepthLevel and BaseTagKey
+      and associated accessors. Doxygenation of the class.
+    - src/gdcmSQItem.[h|cxx] SQDepthLevel and BaseTagKey and associated
+      accessors added.
+    - src/gdcmSeqEntry.[h|cxx]: constructor doesn't handle depth anymore.
+      Use SQDepthLevel accessor instead. ::Print() adapted.
+    - src/gdcmElementSet.cxx changed according to changes in gdcmSeqEntry.
+    - src/gdcmDocument.cxx changed accordingly.
+
+2004-09-13 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * Preparation of writing a gdcmHeader iterator: generalisation of gdcmTagKey
+    - The following is the doxygen comment of the typedef declaration
+      of gdcmagKey in src/gdcmCommon.h:
+           gdcmTagKey is made to old an "universal" (as in URL, Universal
+           Ressource Locator)  key to a gdcmDocEntry i.e. a dicom tag.
+           A dicom tag allways has a group and an element, but a set of tags
+           embeded in various (optionally nested) sequences and sharing
+           the same group and element all share the same (group, element)
+           "identifier". Hence the (group, element) cannot be used as an
+           identifier (in gdcm we shall refer to a "TagKey") of a tag.
+           In order to construct a proper tag identifier (i.e. a key) we
+           consider the following definition of a TagKey:
+           - let Group, Element be the string representation of the
+             group and element dicom tag members,
+           - let ItemNumber be the string representation of the integer
+             index of the considered item number of a sequence,
+           Let the key of a tag embeded in a sequence, noted SeqTag, be
+           the form:
+              /ItemNumber#Group|Element
+           where "/", "#" and "|" are characters acting as separators.
+           Then the general form of a gdcmTagKey is given by:
+              Group|Element<SeqTag>
+           where <SeqTag> means NO or many instances of SeqTag.
+           Hence the gdcmTagKey of a tag not "leaving" in a sequence is the
+           string e.g.
+               0028|1201
+           but the gdcmTagKey of a tag "embeded" is the first item of
+           a sequence, itself nested in the third item of a sequence is the
+           string e.g.
+               0004|1220/2#0008|0082/0#0008|0090
+    - src/gdcmDocEntry.h: added a new Key (of type gdcmTagKey) member, in
+      order to hold the new sequence compatible key. Previously, the 
+      GetKey() method would look in the underlying gdcmDictEntry.
+    - src/gdcmDocEntry.cxx:
+      -- constructor now copies the underlying DictEntry key, in the local
+         Key member.
+      -- ::Print: displays the member Key, instead of the (group, element).
+    - src/gdcmCommon.h: added some comments on typedef gdcmTagKey.
+    - src/gdcmDocEntrySet.h:xi
+      -- ::ParseDES() now setups the gdcmTagKey of the sequence it is parsing.
+      -- now has a new BaseTagKey member.
+      -- STYLE.
+  * src/gdcmValEntry.[h|cxx], src/gdcmBinEntry.[h|cxx]: the member VoidArea,
+    previously a member of gdcmValEntry, moved to gdcmBinEntry were is
+    truly belongs.
+    This poses the problem with the semantics of the following lines
+       LoadEntryVoidArea(0x0028,0x1201);  // R    LUT
+       LoadEntryVoidArea(0x0028,0x1202);  // G    LUT
+       LoadEntryVoidArea(0x0028,0x1203);  // B    LUT
+    in gdcmDocument::gdcmDocument(std::string const & ). Please refer
+    to the long FIXME note for what the problem is. Nevertheless in
+    order to get things working the dicom dictionary was altered !
+    Please fix things urgently...
+  * Dicts/dicomV3.dic WRONGLY altered (this means we introduced a uncorrect
+    information), see above note on moving the member VoidArea. Nevertheless
+    the following entries previously correctly set as US are now inproperly
+    set to OW:
+      0028 1201 OW IMG Red Palette Color Lookup Table Data
+      0028 1202 OW IMG Green Palette Color Lookup Table Data
+      0028 1203 OW IMG Blue Palette Color Lookup Table Data
+  * src/gdcmDocEntry.[h|cxx], src/gdcmSeqEntry.h: SQDepthLevel member
+    of gdcmDocEntry moved to gdcmSeqEntry.
+  * src/gdcmSeqEntry.cxx: STYLE.
+
+2004-08-04 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * Test/TestAllEntryVerify.cxx minor fix and added comments.
+
+2004-08-03 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * gdcmPython/testSuite.py: all the test suite in python is now moved
+    to it's C++ version (see gdcmData/TestAllEntryVerifyReference.txt)
+  * Test/CMakeLists.txt adapted to renaming of files in gdcmData
+  * gdcm/TODO and src/gdcmDictSet.h cleaned up frow the "TODO Swig" oldies
+
+2004-08-02 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * gdcmPython/CMakeLists.txt: SWIG_FLAGS doesn't declare includeall
+    to avoid inclusion recursion until STL is reached.
+  * src/gdcmDocument.[h|cxx]: exceptions substituted to errno C-style
+    mecanism. errno.h is not included in gdcm anymore.
+  * src/gdcmException.h: introduced new gdcmFormatUnexpected class
+    (gdcmFormatError now inherits from gdcmFormatUnexpected).
+  * TODO updated
+  * gdcmPython/testSuite.py checks on CR-MONO1-10-chest.dcm moved to
+    gdcmData/TestAllEntryVerifyReference.txt
+  * Test/TestAllEntryVerify.cxx is now effective (used allways return true)
+  * src/gdcmDocument.[cxx|h]: constructors no longer use the bool
+    exception_on_error parameter.
+    - src/gdcmFile.[cxx|h], src/gdcmHeader.[cxx|h] changed accordingly,
+    - vtk/vtkGdcmReader.cxx changed accordingly,
+    - Example/*.cxx and Test/*.cxx changed accordingly.
+
+2004-07-06 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * src/gdcmDicomDir.cxx, gdcmDocEntrySet.cxx: removed inclusion of errno.h
+  * src/gdcmDocument.[h|cxx], gdcmFile.[h|cxx], gdcmHeader.[h|cxx]:
+    enable_sequences removed from gdcmHeader constructor and dependencies.
+  * Example/PrintHeader.cxx: fixed accordingly (enable_sequences removal).
+  * gdcmPython/demo/PrintHeader.py: dummy fix.
+  * src/gdcmDocument.[h|cxx], gdcmFile.[h|cxx], gdcmHeader.[h|cxx]:
+    skip_shadow removed from gdcmHeader constructor and dependencies.
+  * Example/*.cxx and Test/*.cxx changed accordingly.
+
+2004-07-27 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+  * Test/CMakeLists.txt: newly re-introduced SIEMENS_Sonata-12-MONO2-SQ.dcm
+    in gdcmData (previously known as E00001S03I0015.dcm) is blacklisted.
+
+2004-07-21 Jean-Pierre Roux
+  * FIX Now, Parsing and Printing a DICOMDIR do work!
+       ( troubles remain in makeDicomDir and BuildUpDicomDir :-(
+                
+2004-07-20 Jean-Pierre Roux
+  * FIX Some brain damaged headers have Zero-Lenght fields 
+        for 'Transfert Syntax UID', or 'Media Stored SOP Class UID'.
+
+2004-07-19 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
+   * src/gdcmCommon.h, gdcmDict.cxx, gdcmTS.cxx : bug fix for msvc6 compilation
+   * src/gdcmDebug.[h|cxx] : bug fix for msvc6 compilation. Replace the dbg
+     variable (instance of gdcmDebug) by a definition macro, and the instance
+     is now in static in the gdcmDebug class
+   * src/gdcmSQItem.h : (FIXME) remove an undefined method
+   * Test/PrintAllDocument.cxx : bug fix in the result of the test
+
+2004-07-06 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+   * WARNING: ctest now depends more tightly on gdcmData. You should
+     check out gdcmData properly for things to run smoothly...
+   * src/gdcmDocument.cxx MAX_SIZE_LOAD_ELEMENT_VALUE is set back to 0xfff
+     (4096) for "ctest -R TestAllEntryVerify" to be able to run (i.e.
+     we need the pixels not be loaded in order to use the ValEntry
+     that displays position and size).
+   * Test/TestAllEntryVerify.cxx a new low level test now seems fair.
+     This is a C++ based equivalent of gdcmPython/testSuite.py that should
+     be deprecated. If you have any doubts about the advantages of a
+     modern scripting language (read Python) versus grass root C++ (i.e.
+     without lex + yacc, because of gdcm commitement to MS-VC++, sighhh),
+     I suggest you compare TestAllEntryVerify.cxx (639 lines, without the
+     reference file gdcmData/TestAllEntryVerifyReference.txt) and testSuite.py.
+        Anyhow, consider documenting the gdcmData images in 
+     gdcmData/TestAllEntryVerifyReference.txt (and please run ctest before
+     commiting changes).
+   * Test/CMakeLists.txt:
+      - now uses TestAllEntryVerify.cxx
+      - specific comments on oldACR00001.ima (now renamed in gdcmData
+        to SIEMENS_GBS_III-16-ACR_NEMA_1.acr) moved away to
+        gdcmData/TestAllEntryVerifyReference.txt
+   * TODO updated.
+
+2004-07-02 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+   * src/*.[h|cxx] : typedef clean up
+     - guint16 and guint32 removed. Use ISO C uint16_t, uint32_t instead.
+     - TagKey renamed to gdcmTagKey (for external usage)
+     - VRKey renamed to gdcmVRKey (for external usage)
+     - removal of typedef duplication.
+     - Removed all unecessary inline keyword from class inline definitions.
+     - Some method|function(void) declarations replaced with method|function().
+   * src/jpeg/libijg12/jdhuff12.c:
+      - printf polluting ctest removed.
+      - TAB removal for comminting
+   * Test:
+     - TestAllReadCompareDicom.cxx: added a test that compares all the
+       images in gdcmDataImages.h with corresponding images in 
+       gdcmData/BaselineDicom/. When baseline images are not present
+       this test creates them.
+       Note: we need to validate each reference image, but before that
+             I'd like to rename them with a more explicit name...
+     - CMakeLists.txt: changed accordingly.
+   * Example/*.cxx: examples now only include gdcm.h (as opposed to 
+     including each header needed).
+
+2004-07-01 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+   * Test/*.cxx and Example/*.cxx: moved some examples away from the
+     test suite to the Example directory. Are concerned:
+     - PrintHeader.cxx
+     - TestDcm2Acr.cxx
+     - TestFindTags.cxx
+     - TestWrite.cxx was
+     - TestWriteSimple.cxx
+   * Test/CMakeLists.txt: added some comments on reasons for black listing
+     image gdcmData/oldACR00001.ima
+
+2004-06-30 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+   * Test/CmakeList.txt: removed the following from black list (to be coherent
+     with removal from gdcmData):
+      - gdcm-MR-PHILIPS-16-Multi-Seq.fixed.dcm
+      - gdcm-MR-PHILIPS-16.dcm
+      - US.3405.1.dcm
+     Added the following because after last cvs update, they cause
+       ctest -R TestReadWriteReadCompare 
+     to segfault:
+      - gdcm-MR-SIEMENS-16-1.acr
+      - oldACR00001.ima
+   * Test/TestReadWriteReadCompare.cxx was properly written (with a call
+     to gdcmFile::SetImageData()) BUT since gdcmFile is brain damaged (see
+     new comments in this file) we temporarily (sigh) move to a weaker
+     form of test...
+   * Test/CmakeList.txt: with the change to Test/TestReadWriteReadCompare.cxx
+     we don't need to black list the following images anymore:
+      - 8BitsUncompressedColor.dcm
+      - OT-PAL-8-face.dcm
+      - US-PAL-8-10x-echo.dcm
+   * src/gdcmDocument.[h|cxx]: RE-Reverting to version 1.42 with the proper
+     fixes and the beautified code ;-)
+     This fixes the bug introduced in version 1.42 (when beautifying)
+     that made the parsing of 8BitsRunLengthColor.dcm unproper.
+     Note: ctest was blind to this bug (this means we need to still
+           improve the test suite). The bug could be detected by using
+           gdcmbin/bin/PrintDocument $GDCM_DATA/8BitsRunLengthColor.dcm
+           or by using
+           gdcmbin/bin/ReadWrite $GDCM_DATA/8BitsRunLengthColor.dcm
+           and by displaying the (garbage) produced file temp.XDCM...
+
+2004-06-29 Jean-Pierre Roux
+   FIX : - remove Frog's beautified, but never checked 'Parse7FE0' code,
+         - replace by uggly but working old code :-(
+               A lot of things should be OK again.
+       It's really urgent to have a test suite that *tests*, 
+       to prevent Frog's beautifying sessions to break all the stuff
+       (twice, withing a fortnigh ...)         
+
+2004-06-28 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+   * Test/TestWriteRead.cxx and TestReadWrite.cxx merged (because of
+     redundancy) to added Test/TestReadWriteReadCompare.cxx
+   * Test/CmakeList.txt: because the compare test of
+     Test/TestReadWriteReadCompare.cxx fails, the following images are
+     black listed: - 8BitsUncompressedColor.dcm
+                   - OT-PAL-8-face.dcm
+                   - US-PAL-8-10x-echo.dcm
+   * src/gdcmDocument.cxx: for broken (non DICOM V3 conformal) images
+     (e.g. gdcm-JPEG-LossLess3a.dcm see comments in
+     gdcm/gdcmPython/testSuite.py for details) ::FindDocLengthOB() had
+     and ad-hoc kludge. This kludge is now removed, and on encountering
+     such an image (OB field brain damaged) we set errno. Then in 
+     ::FindDocLength() we "fix" the length as being ALL what remains
+     in the file (until EOF). We then proceed, hoping for the best...
+     This fixes a SegFault in ShowDicom when trying to write such an
+     image.
+   * Test/CmakeList.txt: 8BitsRunLengthColor.dcm is now blacklisted
+     (because TestWriteRead breaks on it, after a non conformal commit?).
+     ctest now runs properly, except for MakeDicomDir (which was allways
+     broken) and the Python related stuff (still not fixed).
+   
+2004-06-24 Jean-Pierre Roux
+  ADD : Examples/WriteRead, that acts like the former Test/TestWriteRead
+  FIX : Test/TestReadWrite now iterates on all the file names 
+                          (instead of infinite loop)
+  ENH : Test/TestWriteRead now iterates on all the file names 
+
+2004-06-28 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
+   * Test/TestReadWrite.cxx: now uses all the images of gdcmData.
+
+2004-06-24 Jean-Pierre Roux
+   FIX : - now Write drops LUT Descriptors and LUTs (if any)
+                   when SamplesPerPixel =3
+         - now Write is no longer confused by 
+                             'BitsAllocated = 12" and 'BitsStored=12"
+         - "UN" value representation Elements are now written correctly 
+               (their legth is stored on 4 bytes -just like OB, OW, and SQ-)                                                                   
+   ENH : - now gdcmHeader has its own Write methods 
+                   (in order to split the job that has not to be done 
+                                       for gdcmDicomDir)
+
+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
@@ -8,6 +634,9 @@
     * 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:
     * 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.
     * .... 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 
+    * 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