]> Creatis software - gdcm.git/blob - ChangeLog
* Preparation of writing a gdcmHeader iterator: generalisation of gdcmTagKey
[gdcm.git] / ChangeLog
1 2004-09-13 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2   * Preparation of writing a gdcmHeader iterator: generalisation of gdcmTagKey
3     - The following is the doxygen comment of the typedef declaration
4       of gdcmagKey in src/gdcmCommon.h:
5            gdcmTagKey is made to old an "universal" (as in URL, Universal
6            Ressource Locator)  key to a gdcmDocEntry i.e. a dicom tag.
7            A dicom tag allways has a group and an element, but a set of tags
8            embeded in various (optionally nested) sequences and sharing
9            the same group and element all share the same (group, element)
10            "identifier". Hence the (group, element) cannot be used as an
11            identifier (in gdcm we shall refer to a "TagKey") of a tag.
12            In order to construct a proper tag identifier (i.e. a key) we
13            consider the following definition of a TagKey:
14            - let Group, Element be the string representation of the
15              group and element dicom tag members,
16            - let ItemNumber be the string representation of the integer
17              index of the considered item number of a sequence,
18            Let the key of a tag embeded in a sequence, noted SeqTag, be
19            the form:
20               /ItemNumber#Group|Element
21            where "/", "#" and "|" are characters acting as separators.
22            Then the general form of a gdcmTagKey is given by:
23               Group|Element<SeqTag>
24            where <SeqTag> means NO or many instances of SeqTag.
25            Hence the gdcmTagKey of a tag not "leaving" in a sequence is the
26            string e.g.
27                0028|1201
28            but the gdcmTagKey of a tag "embeded" is the first item of
29            a sequence, itself nested in the third item of a sequence is the
30            string e.g.
31                0004|1220/2#0008|0082/0#0008|0090
32     - src/gdcmDocEntry.h: added a new Key (of type gdcmTagKey) member, in
33       order to hold the new sequence compatible key. Previously, the 
34       GetKey() method would look in the underlying gdcmDictEntry.
35     - src/gdcmDocEntry.cxx:
36       -- constructor now copies the underlying DictEntry key, in the local
37          Key member.
38       -- ::Print: displays the member Key, instead of the (group, element).
39     - src/gdcmCommon.h: added some comments on typedef gdcmTagKey.
40     - src/gdcmDocEntrySet.h:xi
41       -- ::ParseDES() now setups the gdcmTagKey of the sequence it is parsing.
42       -- now has a new BaseTagKey member.
43       -- STYLE.
44   * src/gdcmValEntry.[h|cxx], src/gdcmBinEntry.[h|cxx]: the member VoidArea,
45     previously a member of gdcmValEntry, moved to gdcmBinEntry were is
46     truly belongs.
47     This poses the problem with the semantics of the following lines
48        LoadEntryVoidArea(0x0028,0x1201);  // R    LUT
49        LoadEntryVoidArea(0x0028,0x1202);  // G    LUT
50        LoadEntryVoidArea(0x0028,0x1203);  // B    LUT
51     in gdcmDocument::gdcmDocument(std::string const & ). Please refer
52     to the long FIXME note for what the problem is. Nevertheless in
53     order to get things working the dicom dictionary was altered !
54     Please fix things urgently...
55   * Dicts/dicomV3.dic WRONGLY altered (this means we introduced a uncorrect
56     information), see above note on moving the member VoidArea. Nevertheless
57     the following entries previously correctly set as US are now inproperly
58     set to OW:
59       0028 1201 OW IMG Red Palette Color Lookup Table Data
60       0028 1202 OW IMG Green Palette Color Lookup Table Data
61       0028 1203 OW IMG Blue Palette Color Lookup Table Data
62   * src/gdcmDocEntry.[h|cxx], src/gdcmSeqEntry.h: SQDepthLevel member
63     of gdcmDocEntry moved to gdcmSeqEntry.
64   * src/gdcmSeqEntry.cxx: STYLE.
65
66 2004-08-04 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
67   * Test/TestAllEntryVerify.cxx minor fix and added comments.
68
69 2004-08-03 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
70   * gdcmPython/testSuite.py: all the test suite in python is now moved
71     to it's C++ version (see gdcmData/TestAllEntryVerifyReference.txt)
72   * Test/CMakeLists.txt adapted to renaming of files in gdcmData
73   * gdcm/TODO and src/gdcmDictSet.h cleaned up frow the "TODO Swig" oldies
74
75 2004-08-02 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
76   * gdcmPython/CMakeLists.txt: SWIG_FLAGS doesn't declare includeall
77     to avoid inclusion recursion until STL is reached.
78   * src/gdcmDocument.[h|cxx]: exceptions substituted to errno C-style
79     mecanism. errno.h is not included in gdcm anymore.
80   * src/gdcmException.h: introduced new gdcmFormatUnexpected class
81     (gdcmFormatError now inherits from gdcmFormatUnexpected).
82   * TODO updated
83   * gdcmPython/testSuite.py checks on CR-MONO1-10-chest.dcm moved to
84     gdcmData/TestAllEntryVerifyReference.txt
85   * Test/TestAllEntryVerify.cxx is now effective (used allways return true)
86   * src/gdcmDocument.[cxx|h]: constructors no longer use the bool
87     exception_on_error parameter.
88     - src/gdcmFile.[cxx|h], src/gdcmHeader.[cxx|h] changed accordingly,
89     - vtk/vtkGdcmReader.cxx changed accordingly,
90     - Example/*.cxx and Test/*.cxx changed accordingly.
91
92 2004-07-06 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
93   * src/gdcmDicomDir.cxx, gdcmDocEntrySet.cxx: removed inclusion of errno.h
94   * src/gdcmDocument.[h|cxx], gdcmFile.[h|cxx], gdcmHeader.[h|cxx]:
95     enable_sequences removed from gdcmHeader constructor and dependencies.
96   * Example/PrintHeader.cxx: fixed accordingly (enable_sequences removal).
97   * gdcmPython/demo/PrintHeader.py: dummy fix.
98   * src/gdcmDocument.[h|cxx], gdcmFile.[h|cxx], gdcmHeader.[h|cxx]:
99     skip_shadow removed from gdcmHeader constructor and dependencies.
100   * Example/*.cxx and Test/*.cxx changed accordingly.
101
102 2004-07-27 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
103   * Test/CMakeLists.txt: newly re-introduced SIEMENS_Sonata-12-MONO2-SQ.dcm
104     in gdcmData (previously known as E00001S03I0015.dcm) is blacklisted.
105
106 2004-07-21 Jean-Pierre Roux
107   * FIX Now, Parsing and Printing a DICOMDIR do work!
108        ( troubles remain in makeDicomDir and BuildUpDicomDir :-(
109                  
110 2004-07-20 Jean-Pierre Roux
111   * FIX Some brain damaged headers have Zero-Lenght fields 
112         for 'Transfert Syntax UID', or 'Media Stored SOP Class UID'.
113
114 2004-07-19 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
115    * src/gdcmCommon.h, gdcmDict.cxx, gdcmTS.cxx : bug fix for msvc6 compilation
116    * src/gdcmDebug.[h|cxx] : bug fix for msvc6 compilation. Replace the dbg
117      variable (instance of gdcmDebug) by a definition macro, and the instance
118      is now in static in the gdcmDebug class
119    * src/gdcmSQItem.h : (FIXME) remove an undefined method
120    * Test/PrintAllDocument.cxx : bug fix in the result of the test
121
122 2004-07-06 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
123    * WARNING: ctest now depends more tightly on gdcmData. You should
124      check out gdcmData properly for things to run smoothly...
125    * src/gdcmDocument.cxx MAX_SIZE_LOAD_ELEMENT_VALUE is set back to 0xfff
126      (4096) for "ctest -R TestAllEntryVerify" to be able to run (i.e.
127      we need the pixels not be loaded in order to use the ValEntry
128      that displays position and size).
129    * Test/TestAllEntryVerify.cxx a new low level test now seems fair.
130      This is a C++ based equivalent of gdcmPython/testSuite.py that should
131      be deprecated. If you have any doubts about the advantages of a
132      modern scripting language (read Python) versus grass root C++ (i.e.
133      without lex + yacc, because of gdcm commitement to MS-VC++, sighhh),
134      I suggest you compare TestAllEntryVerify.cxx (639 lines, without the
135      reference file gdcmData/TestAllEntryVerifyReference.txt) and testSuite.py.
136         Anyhow, consider documenting the gdcmData images in 
137      gdcmData/TestAllEntryVerifyReference.txt (and please run ctest before
138      commiting changes).
139    * Test/CMakeLists.txt:
140       - now uses TestAllEntryVerify.cxx
141       - specific comments on oldACR00001.ima (now renamed in gdcmData
142         to SIEMENS_GBS_III-16-ACR_NEMA_1.acr) moved away to
143         gdcmData/TestAllEntryVerifyReference.txt
144    * TODO updated.
145
146 2004-07-02 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
147    * src/*.[h|cxx] : typedef clean up
148      - guint16 and guint32 removed. Use ISO C uint16_t, uint32_t instead.
149      - TagKey renamed to gdcmTagKey (for external usage)
150      - VRKey renamed to gdcmVRKey (for external usage)
151      - removal of typedef duplication.
152      - Removed all unecessary inline keyword from class inline definitions.
153      - Some method|function(void) declarations replaced with method|function().
154    * src/jpeg/libijg12/jdhuff12.c:
155       - printf polluting ctest removed.
156       - TAB removal for comminting
157    * Test:
158      - TestAllReadCompareDicom.cxx: added a test that compares all the
159        images in gdcmDataImages.h with corresponding images in 
160        gdcmData/BaselineDicom/. When baseline images are not present
161        this test creates them.
162        Note: we need to validate each reference image, but before that
163              I'd like to rename them with a more explicit name...
164      - CMakeLists.txt: changed accordingly.
165    * Example/*.cxx: examples now only include gdcm.h (as opposed to 
166      including each header needed).
167
168 2004-07-01 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
169    * Test/*.cxx and Example/*.cxx: moved some examples away from the
170      test suite to the Example directory. Are concerned:
171      - PrintHeader.cxx
172      - TestDcm2Acr.cxx
173      - TestFindTags.cxx
174      - TestWrite.cxx was
175      - TestWriteSimple.cxx
176    * Test/CMakeLists.txt: added some comments on reasons for black listing
177      image gdcmData/oldACR00001.ima
178
179 2004-06-30 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
180    * Test/CmakeList.txt: removed the following from black list (to be coherent
181      with removal from gdcmData):
182       - gdcm-MR-PHILIPS-16-Multi-Seq.fixed.dcm
183       - gdcm-MR-PHILIPS-16.dcm
184       - US.3405.1.dcm
185      Added the following because after last cvs update, they cause
186        ctest -R TestReadWriteReadCompare 
187      to segfault:
188       - gdcm-MR-SIEMENS-16-1.acr
189       - oldACR00001.ima
190    * Test/TestReadWriteReadCompare.cxx was properly written (with a call
191      to gdcmFile::SetImageData()) BUT since gdcmFile is brain damaged (see
192      new comments in this file) we temporarily (sigh) move to a weaker
193      form of test...
194    * Test/CmakeList.txt: with the change to Test/TestReadWriteReadCompare.cxx
195      we don't need to black list the following images anymore:
196       - 8BitsUncompressedColor.dcm
197       - OT-PAL-8-face.dcm
198       - US-PAL-8-10x-echo.dcm
199    * src/gdcmDocument.[h|cxx]: RE-Reverting to version 1.42 with the proper
200      fixes and the beautified code ;-)
201      This fixes the bug introduced in version 1.42 (when beautifying)
202      that made the parsing of 8BitsRunLengthColor.dcm unproper.
203      Note: ctest was blind to this bug (this means we need to still
204            improve the test suite). The bug could be detected by using
205            gdcmbin/bin/PrintDocument $GDCM_DATA/8BitsRunLengthColor.dcm
206            or by using
207            gdcmbin/bin/ReadWrite $GDCM_DATA/8BitsRunLengthColor.dcm
208            and by displaying the (garbage) produced file temp.XDCM...
209
210 2004-06-29 Jean-Pierre Roux
211    FIX : - remove Frog's beautified, but never checked 'Parse7FE0' code,
212          - replace by uggly but working old code :-(
213                 A lot of things should be OK again.
214         It's really urgent to have a test suite that *tests*, 
215         to prevent Frog's beautifying sessions to break all the stuff
216         (twice, withing a fortnigh ...)         
217
218 2004-06-28 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
219    * Test/TestWriteRead.cxx and TestReadWrite.cxx merged (because of
220      redundancy) to added Test/TestReadWriteReadCompare.cxx
221    * Test/CmakeList.txt: because the compare test of
222      Test/TestReadWriteReadCompare.cxx fails, the following images are
223      black listed: - 8BitsUncompressedColor.dcm
224                    - OT-PAL-8-face.dcm
225                    - US-PAL-8-10x-echo.dcm
226    * src/gdcmDocument.cxx: for broken (non DICOM V3 conformal) images
227      (e.g. gdcm-JPEG-LossLess3a.dcm see comments in
228      gdcm/gdcmPython/testSuite.py for details) ::FindDocLengthOB() had
229      and ad-hoc kludge. This kludge is now removed, and on encountering
230      such an image (OB field brain damaged) we set errno. Then in 
231      ::FindDocLength() we "fix" the length as being ALL what remains
232      in the file (until EOF). We then proceed, hoping for the best...
233      This fixes a SegFault in ShowDicom when trying to write such an
234      image.
235    * Test/CmakeList.txt: 8BitsRunLengthColor.dcm is now blacklisted
236      (because TestWriteRead breaks on it, after a non conformal commit?).
237      ctest now runs properly, except for MakeDicomDir (which was allways
238      broken) and the Python related stuff (still not fixed).
239    
240 2004-06-24 Jean-Pierre Roux
241   ADD : Examples/WriteRead, that acts like the former Test/TestWriteRead
242   FIX : Test/TestReadWrite now iterates on all the file names 
243                           (instead of infinite loop)
244   ENH : Test/TestWriteRead now iterates on all the file names 
245
246 2004-06-28 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
247    * Test/TestReadWrite.cxx: now uses all the images of gdcmData.
248
249 2004-06-24 Jean-Pierre Roux
250    FIX : - now Write drops LUT Descriptors and LUTs (if any)
251                     when SamplesPerPixel =3
252          - now Write is no longer confused by 
253                               'BitsAllocated = 12" and 'BitsStored=12"
254          - "UN" value representation Elements are now written correctly 
255                (their legth is stored on 4 bytes -just like OB, OW, and SQ-)                                                                    
256    ENH : - now gdcmHeader has its own Write methods 
257                     (in order to split the job that has not to be done 
258                                         for gdcmDicomDir)
259
260 2004-06-23 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
261    * Test/PrintAllDocument.cxx: looping on files is now effective. It used to
262      loop on the same image until memory went out. 
263      Note: this means we still have gobs of memory loss in PrintDocument
264    * src/gdcmDocument.cxx: fixes problem on parsing on file
265      gdcmData/16BitsJpegLosslessGrayScale.dcm.
266
267 2004-06-24 Jean-Pierre Roux
268    FIX : Write - All the Sequences and Sequence Item are now written 
269             as 'no length' stuff, and a Sequence Delimitor aor an Item Delimitor
270                                 is added a the end, when necessary.
271             - A lot of brain-damaged images, that were read correctly are 
272                       now written correctly
273                                 - length compatible BinEntry are now loaded correctly 
274                                 (even for odd groups) 
275         Note : only Explicit Value Representation was checked.
276                                 (question : is implicit VR really necessary for gdcm ?)
277
278 2004-06-23 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
279    * DEVELOPPER: added a proposition of coding style.
280    * src/gdcmDocEntry.h: removed every inline declaration (for test of 
281      coding style).
282
283 2004-06-23 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
284    * gdcmDocEntry::PrintCommonPart() and ::WriteCommonPart() removed.
285      Use the gdcmDocEntry::Print() and Write() instead.
286    * src/gdcmDocument.cxx: bug fix.
287
288 2004-06-22 Jean-Pierre Roux
289    FIX : gdcmDocument.cxx
290       - Now we do recognize the JpegLossLess format (there was a misstyping in
291         code 'beautyfication' :-(
292       - Now we automaticaticaly load the Luts, if any
293
294 2004-06-22 Jean-Pierre Roux
295    In order : to write Sequences, whatever their imbrication level, 
296                  : to allow user to create his own Sequences
297         a lot of modif where necessary (adding, moving, or virtualising methods)
298
299 WARNING : save your own sources *before* cvs up !
300         
301         - gdcmBinEntry
302           ADD virtual void Write(FILE *fp, FileType filetype);
303           
304    - gdcmDocEntry
305           ADD virtual void Write(FILE *fp, FileType filetype);
306           ADD void gdcmDocEntry::WriteCommonPart(FILE *fp, FileType filetype);
307           
308         - gdcmDocEntrySet
309           ADD virtual void Write (FILE *fp, FileType filetype)=0;
310           ADD   virtual gdcmDocEntry *GetDocEntryByNumber(guint16 group,guint16 element) = 0;
311      ADD gdcmDocEntry *GetDocEntryByName(std::string name);
312      ADD virtual std::string GetEntryByNumber(guint16 group,guint16 element) = 0;
313      ADD std::string GetEntryByName(TagName name);                       
314      ADD gdcmDictEntry *NewVirtualDictEntry(guint16 group, 
315                                             guint16 element,
316                                             std::string vr     = "unkn",
317                                             std::string fourth = "unkn",
318                                             std::string name   = "unkn"); 
319           ADD gdcmValEntry *NewValEntryByNumber(guint16 group, guint16 element);                                                                                                 
320      ADD gdcmBinEntry *NewBinEntryByNumber(guint16 group, guint16 element);     
321      ADD gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element); 
322      ADD gdcmDocEntry *NewDocEntryByName  (std::string Name);   
323      ADD gdcmDictEntry *GetDictEntryByName   (std::string Name);
324      ADD gdcmDictEntry *GetDictEntryByNumber(guint16, guint16);
325           REM virtual gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element)=0;
326      REM virtual gdcmDocEntry *NewDocEntryByName  (std::string Name)=0;
327           
328         - gdcmDocument
329      ADD virtual bool WriteF(FileType type); // New stuff, with recursive exploration           
330      ADD virtual std::string GetEntryByName    (TagName tagName);
331      ADD virtual std::string GetEntryVRByName  (TagName tagName);
332      REM virtual bool Write(FILE *, FileType);
333      REM virtual void WriteEntryTagVRLength(gdcmDocEntry *tag,
334                                         FILE *_fp, FileType type);
335      REM virtual void WriteEntryValue(gdcmDocEntry *tag,FILE *_fp,FileType type);
336      REM virtual bool WriteEntry(gdcmDocEntry *tag,FILE *_fp,FileType type);
337      REM virtual bool WriteEntries(FILE *_fp,FileType type);
338      REM virtual std::string GetEntryByName    (std::string tagName);
339      REM virtual std::string GetEntryVRByName  (std::string tagName);
340      REM gdcmDictEntry *GetDictEntryByName  (std::string Name);
341      REM gdcmDictEntry *GetDictEntryByNumber(guint16, guint16);
342      REM gdcmDictEntry *NewVirtualDictEntry(guint16 group, 
343                                             guint16 element,
344                                             std::string vr     = "unkn",
345                                             std::string fourth = "unkn",
346                                             std::string name   = "unkn");
347      REM gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element);
348      REM gdcmDocEntry *NewDocEntryByName  (std::string Name);
349      REM gdcmValEntry *NewValEntryByNumber(guint16 group, guint16 element); 
350      REM gdcmBinEntry *NewBinEntryByNumber(guint16 group, guint16 element); 
351                                                                                                                  
352         - gdcmElementSet
353           ADD virtual void Write(FILE *fp, FileType filetype);
354           
355    - gdcmSeqEntry
356           ADD virtual void Write(FILE *fp,FileType filetype);
357  
358    - gdcmSQItem
359      ADD virtual void Write(FILE *fp, FileType filetype);
360      ADD virtual std::string GetEntryByNumber(guint16 group, guint16 element);        
361      REM std::string GetEntryByNumber(guint16 group, guint16 element);
362      REM std::string GetEntryByName(TagName name);
363
364    - gdcmValEntry
365          ADD virtual void gdcmValEntry::Write(FILE *fp, FileType filetype); 
366                                   
367 2004-06-21 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
368     * Test/TestWriteSimple.cxx: fix to gdcmHeader-gdcmHeaderHelper revamping.
369       The default constructor invoked by the line
370          gdcmHeader *f1 = new gdcmHeader( header );
371       was gdcmHeader::gdcmHeader(bool) instead of the expected
372       gdcmHeader::gdcmHeader(std::string const &, bool = false, bool, bool).
373       Hence the parsing wasn't executed... See also below.
374     * src/gdcmHeader.h: the declaration of gdcmHeader::gdcmHeader(bool)
375       as explicit constructor didn't do the trick to fix the above problem.
376       Could anyone explain why ?
377     * src/gdcmBinEntry.cxx, gdcmValEntry.cxx: gdcmBinEntry::Print() now
378       properly calls gdcmValEntry::Print() (that was weed out from 
379       code related to gdcmBinEntry).
380
381 2004-06-20 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
382     * In order to fix memory leaks:
383      - Test/TestWriteSimple.cxx: added cleaning of free store through
384        some delete calls.
385      - src/gdcmBinEntry.cxx: fix to avoid SegFault.
386      - src/gdcmDicomDir.[cxx|h]: fixed initialisation in constructor
387        gdcmDicomDir::gdcmDicomDir(bool) [either the constructor itself
388        (through the call to ::AddDicomDirMeta()) or the destructor
389        would crash when deleting uninitialized ::metaElems].
390      - src/gdcmDictEntry.cxx: annotation of ununderstood memory leak.
391      - src/gdcmDocument.cxx:
392        -- ::~gdcmDocument() destructor now cleans up all dictionary entries
393           from dynamic stores.
394        -- ::ParseDES() misplaced deletion of temporary NewDocEntry
395           was causing memory leaks.
396      - src/gdcmSQItem.cxx:
397        -- ::~gdcmSQItem() dummy code cleaned (learned that deletion is
398           cleanly handled with polymophism: sorry but my milage is low).
399        -- ::SetEntryByNumber(string, guint16, guint16) now cleanly allocates
400           a gdcmValENtry, and makes no assumption on type (gdcmDocEntry,
401           gdcmSeqEntry vs gdcmValEntry) of existing entry (when present).
402           This avoids SegFaulting.
403      - src/gdcmSQItem.h: coding style.
404     * Conclusion:
405      - Test/TestWriteSimple still severely sucks. The output image content
406        (when $(GDCMDATA_HOME)/012345.002.050.dcm in input) is brain
407        damaged when displayed with vtkgdcmViewer.
408      - on memory leaks: TestWriteSimple leaks really less (see entry
409        of 2004-06-18 in Changelog file for the call to valgrind).
410      - on segfaults: ctest now passes all the tests but one (no more
411        segfaults).
412     * Erroneous leading white fix:
413      - src/gdcmDict.cxx: getline(from,xxx) doesn't remove the leading
414        white[s] (as opposed to from >> xxx, that removes it [them].
415      - src/gdcmTS.cxx: ditto.
416      - gdcmPython/testSuite.py: dirty related kludge removed.
417     * src/*: remaining references to gdcmParser removed.
418     * src/*[cxx|h]: added copy[way]left header.
419
420
421 2004-06-18 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
422     * In order to fix writing of dicom files:
423      - Test/TestWriteSimple.cxx: a simpler example of writing.
424      - Test/CMakeLists.txt changed accordingly.
425      - src/gdcmDocument.cxx:
426        -- The destructor now recursilvely removes potential sequences.
427        -- Bug fix in ::IsJPEG2000()
428        -- ::ReplaceOrCreateByNumber(std::string, guint16, guint16)
429           now handles promotion of gdcmDocEntry to gdcmValEntry in a cleaner
430           manner.
431        -- ::GetValEntryByNumber(guint16, guint16) now defined (as opposed
432           to only declared) and build on top of
433           ::GetDocEntryByNumber(guint16, guint16).
434        -- ::SetEntryByNumber() now uses GetValEntryByNumber(group, element)
435      - src/gdcmElementSet.[h|cxx]: added ::RemoveEntry(gdcmDocEntry *)
436        for usage in destructor and treatement of promotion in
437        ::ReplaceOrCreateByNumber().
438      - src/gdcmSQItem.cxx: destructor should better handle his job.
439       Test/TestWriteSimple now runs (or at least it DOES something).
440     * We can now start hutting memory links. A good starting point is:
441       valgrind -q --skin=memcheck --leak-check=yes --leak-resolution=high
442       --num-callers=100 --show-reachable=yes gdcmTests TestWriteSimple
443       $(GDCMDATA_HOME)/012345.002.050.dcm foo.dcm
444
445 2004-06-18 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
446     * Valgrind note: after Mathieu Malaterre teached me how to read
447       the valgrind FAQ ;-] (see http://valgrind.kde.org/faq.html), I
448       learned that:
449           Using gcc, you can force the STL to use malloc and to free memory as
450           soon as possible by globally disabling memory caching.
451           With 3.2.2 and later, you should export the environment variable
452           GLIBCPP_FORCE_NEW before running your program.
453       By setting GLIBCPP_FORCE_NEW, STL related memory leak messages of gdcm
454       simply vanish (it is still not clear to me, whether this means that
455       STL std::string leaks or if valgrind believes it leaks...).
456     * Fixing of SegFault of Test/makeDicomDir (as shown by ctest or by
457       running bin/gdcmTests makeDicomDir):
458       - src/gdcmDicomDir.cxx: dynamic casting used + clean up.
459       - Test/makeDicomDir.cxx now properly traps empty lists and returns
460         with 1.
461       NOW, makeDicomDir cleanly fails (in ctest terminology) instead of
462       SegFaulting (I drowned in DicomDir related code when trying to
463       understand why the list is empty...).
464     * src/gdcmDocument.h: first BSD license header try.
465     * Doc/License.txt added.
466
467 2004-06-15 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
468     * src/gdcmDocument.[h|cxx]:
469       - Clean up of the Transfer related predicates. They are now all based
470         on new method isGivenTransferSyntax, that (should) handle properly
471         the padding problem.
472       - general clean up, simplification, and coding style.
473       - Specific clean up of Parse7FE0() (umproperly named actually).
474     * gdcmPython/testSuite.py: an odd temporary kludge introduced.
475
476 2004-06-14 Jean-Pierre Roux             
477    *  gdcmSeqEntry.cxx
478            - fix the display of Sequence Delimitor (SQDepthLevel pb)
479                 - fix the display of SQItem ordinal number
480       - add the GetSQItemByOrdinalNumber method
481                 - remove some useless never written private methods     
482                 
483 2004-06-14 Jean-Pierre Roux
484    * gdcmBinEntry.cxx 
485       - adding a constructor taking a gdcmDocEntry as an input param
486            - ReplaceOrCreateByNumber now returns :
487               a gdcmBinEntry * if a Binary (void *) value is passed as a param
488                    a gdcmValEntry * if a string value is passed as a param
489    * dcmDocument.cxx
490       - SetEntryByNumber now allows setting gdcmValEntry or gdcmBinEntry, 
491               according to the param type (no longer sets a gdcmDocEntry)
492            - GetValEntryByNumber, GetBinEntryByNumber added
493       - NewValEntryByNumber and NewBinEntryByNumber added
494    * gdcmFile.cxx
495       - Pixel Data are now linked to the (7fe0,0010) elements, after reading
496    * gdcmSQItem.h
497       - GetSQItemNumber and SetSQItemNumber added, to provide 
498             a (relative) Item identier inside a given Sequence
499             \warning : some pb remaining around this number
500                                 will be solved asap
501       - AddEntry now takes the Item Number as a param   
502    * gdcmValEntry.cxx 
503       - adding a constructor taking a gdcmDocEntry as an input param    
504
505 2004-06-14 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
506     * Memory leak hunt with the following command:
507       valgrind --leak-check=yes --leak-resolution=high --num-callers=40
508                --show-reachable=yes gdcmTests PrintDocument
509       It looks like many (all?) leaks are due to the STL (or a bad usage
510       of the STL. The lines producing the leaks now have a comment with
511       a "MEMORY LEAK" tag: you can retrieve them with 
512           grep "MEMORY LEAK" src/*
513       Here are two typical examples which I can't help fixing:
514       -----
515           #include <string>
516           int main() {
517              std::string name;
518              char * test = "babo";
519              name = test;    //// <--- valgrind detects 960 bytes lost in
520                              ////   call to std::string::operator=(char const*)
521              name.clear();   //// Doesn't help !
522              return 0;
523           }
524       -----
525           #include <string>
526           #include <iostream>
527           int main() {
528              std::string line;
529              std::cout << "Type a bunch of characters followed by RETURN: ";
530              getline(std::cin, line);   //// <--- valgrind dectects a loss
531                                         //// of 1320 bytes in call to
532                                         /// std::basic_istream<>& std::getline<>
533             return 0;
534           }
535       -----
536
537
538 2004-06-10 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
539     * src/gdcmHeader.[cxx|h]:
540       - Predicates on the Transfer syntax (of the form Is[JPEG|RLE]*)
541         and related, moved away to gdcmDocument.
542       - Accessors (on the form [Get|Set]Entry*) set up to expose publicly
543         the corresponding protected accessors of inherited class
544         gdcmDocument, removed ! As a consequence gdcmFile had to be 
545         declared friend of class gdcmDocument (see below).
546       - operator< moved to gdcmDocument (in fact it belongs to gdcmDicomDir).
547       - Clean up of undefined or unused methods.
548     * src/gdcmFile.[cxx|h]: added SetEntryByNumber (in order to take into
549       account the changes to gdcmHeader.h).
550     * src/gdcmDocument.h:
551       - gdcmFile is now a friend class (in order to take into account the
552         changes to gdcmHeader.h).
553       - Predicates on the Transfer syntax (of the form Is[JPEG|RLE]*) added
554         (see changes to gdcmHeader.h).
555       - Accessors (reading on the form GetEntry*) are now public.
556       - Clean up of undefined or unused methods.
557     * src/gdcmDocument.cxx:
558       - adaptation to changes to gdcmDocument.h
559       - ::OpenFile now writes a verbose message when file cannot be opened.
560       - some std::string properly set to VRKey
561     * src/gdcmDicomDir.h: historical references to gdcmHeader changed to
562       references to gdcmDocument. 
563     * Test/TestFindTags.cxx: changed accordingly to above changes.
564     * gdcmPython/testSuite.py: adapted to renaming of acr files in 
565       cvs repository gdcmData.
566
567 2004-06-09 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
568     * src/gdcmValEntry.h: member voidArea type changed from char* to void*.
569     * src/gdcmBinEntry.h: member voidArea commented out, since it potentially
570       conflicts with gdcmValEntry::voidArea.
571     * src/gdcmValEntry.cxx: unmatching comment wiped out.
572     * src/gdcmVR.[h|cxx]: added two predicates that partition the possible
573       Value representation between StringRepresentable and BinaryRepresentable.
574     * src/gdcmDocument.cxx: 
575       - method ParseDES: proper indentation restored and usage of
576         gdcmVR::IsVROfGdcmStringRepresentable wired in.
577       - method LoadDocEntry: the fingerprint left in the SetValue() of
578         unloaded entries (length > MaxSizeLoadEntry) had curiously been
579         removed. Reverting to previous code segment with the proper
580         dynamic_cast< gdcmValEntry* >.
581         Note: this was (partially) breaking the python test suite
582               (gdcmPython/testSuite.py) that made usage of the above
583               fingerprint to check presence of "Pixel Data".
584     * src/gdcmDocEntry.h: coding style.
585     * gdcmPython/__init__.py: environement variable GDCM_DATA_PATH is
586       now taken into account.
587     * gdcmPython/gdcm.i: adaptation to the new internal representation
588       of gdcm (exit gdcmParser, hello gdcmDocument).
589     * gdcmPython/testSuite.py: quick and dirty fix for loading vtkgdcmPython
590       on posix.
591     * gdcmPython/demo/PrintHeader.py: doesn't use the gdcmDocument::Print()
592       anymore, but instead prints the loaded Python dictionary.
593     * .... alas, the python testSuite is still broken.
594
595 2004-05-18 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
596     * gdcmPython/gdcm.i : remove useless lines concerning the gdcmGlobal
597       gdcmGlob
598     * gdcmPython/setup.py : replace the use of cvar.gdcmGlob to gdcmGlobal
599     * src/gdcmUtil.h : export methods
600
601 2004-05-16  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
602     * Some more cleanup/enhancement in gdcmPython/CMakeLists.txt getting close
603       to right behavior
604     * Initial addition of automatic python testing
605     * Initial addition of automatic image comparison
606
607 2004-05-04 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
608     * src/gdcmCommon.h, gdcmDicomDir.cxx, gdcmFile.cxx, gdcmHeaderHelper.h,
609       gdcmParser.cxx, gdcmParser.h : bug fix for the Microsoft .Net compilation
610
611 2004-05-04 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
612      * src/gdcmFile.cxx, gdcmHeader.cxx : bug fix for the msvc compilation
613      * Test/ShowDicom.cxx : bug fix for msvc compilation
614      * vtk/vtkgdcmViewer.cxx : bug fix for msvc compilation
615
616 2004-05-04 Jean-Pierre Roux
617      * ADD Taking into account the 'Dicom Sequences' leads up to introduce
618        new concepts (and new classes) :
619        a 'gdcmDocument' is composed of a set of Doc Entries, that are
620         - elementary gdcmDocEntries (former gdcmHeaderEntries)
621         - Sequence Doc Entries (gdcmSeqEntries)
622        a Sequence is composed of Items.
623        Each item is a set of Doc Entries (this is recursive)
624        The non uniqueness of the 'Dicom tag' is due to this recursivity
625        (never taken into account)
626        Our unability to add a new 'entry' in the header
627        at the proper location (neither in the H-Table (map or multimap),
628        nor in the Chained List is also due to this recursivity.
629        Don't try, right now, to use/modify/compile these new sources :
630        nothing is finished.
631        We just commit all the stuff, 'as is', in order not to loose it.
632
633 2004-05-04 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
634      * vtk/vtkGdcmReader.cxx : bug fix in the setting of file name
635      
636 2004-05-03 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
637      * vtk/vtkGdcmReader.cxx : bug fix when loading a list of files using the
638        file prefix (SetFilePrefix)
639
640 2004-05-02  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
641      * Add a new test: ShowDicom, for now this is just the c++ version of
642        checkRead.sh, later it will be able to compare the image read against a
643        baseline.
644      * Replace the DEBUG on the stack with a global entry in cmake interface:
645        GDCM_DEBUG, so you can turn verbosity ON/OFF for debug statement.
646
647 2004-04-30  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
648      * Add an example subdir, with a real example on how to read + write a 
649        dicom image
650
651 2004-04-30  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
652      * Doc/gdcmUML.xmi added raw UML class view (umbrello format)
653      * Doc/CMakeLists.txt: the main page is now properly differentiated
654        between the developper and user version.
655      * Doc/doxygen.config.in: dropped search related obsolete flags
656      * src/gdcmParser.h, gdcmHeader.h: doxygenation
657
658 2004-04-29  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
659      * DEVELOPPER: added some helpfull comments for compile/test/install
660        when using cmake.
661
662 2004-04-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
663      * ENH: 1. Remove remp solution of gdcmTests.cxx+ gdcmMain directly in 
664                src directory, now generated in the build dir.
665             2. Tests as mentionned smarter
666             3. Some clean up
667             4. Add a new method in gdcmDict that return the PubDict by name 
668           this is interesting for 3rd party lib like ITK, 
669           where we could set the institution name / patient name...
670
671        * ENH: 1. Now the test suite is working for real
672               2. All binaries are now output in the gdcm-bin directory 
673                  (this was not true before)
674
675 2004-04-28  Jean-Pierre Roux
676      * ENH add the provisional  gdcmHeader::SQDepthLevel to allow 
677            SeQuence indented printing of Dicom Header.
678      * ENH merge methods gdcmParser::Parse and gdcmParser::LoadHeaderEntries
679            into the single gdcmParser::LoadHeaderEntries for efficiency purpose.
680            Computation of SQDepthLevel is now part of gdcmHeader constructor
681      * ENH add self defined param 'new' to PrintHeader to 'show' the SeQuence
682            tree-like structure of a Dicom Header.
683      * FIX Test code cleaning     
684            
685 2004-04-25  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
686      * ENH: Adding automatic testing
687        1. Need a DartConfig.cmake to submit to public
688        2. Add a test driver gdcmTest.cxx
689        3. gdcmTestMain, an helper for the main test driver gdcmTest
690        4. Files in Test don't have a main anymore, this becomes interesting 
691           when we add more and more tests, thus dsw don't have to load 
692           too many projects
693      * ENH: Adding a GDCM_DATA_ROOT for testing
694      * ENH: Remove redundancie about GDCM_DICT stuff, now we only need to modify
695        one file instead of seven + some small cleanup
696
697 2004-04-22  Jean-Pierre Roux
698      * ENH Minor changes to the Print() methods.
699      * ADD gdcmParser::PrintEntryNiceSQ() to allow SQ-indented
700            Header printing. Example given with :
701            > PrintHeader fileName  2 new
702           (SQ based tree-like structure still to be done for the Header ...)
703            
704 2004-04-22  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
705      * ENH: Some cosmetic clean up for compilation with -W -Wall -Werror
706          1. I have added some unsigned where needed
707          2. Some function parameter not used -> (void)
708          3. In gdcmDicomDir.cxx, add GDCM_DICOMDIR_NONE case
709          4. g++ don't like character '\' in comment
710          5. #define jpeg_create_decompress  jCreaDecompress
711                     this really need to be fixed
712          6. virtualize destructor of gdcmObject ... leakage
713          7. sscanf(g->first.c_str(),"%x",&gr_bid); 
714                     this also really need to be fixed
715          8. gdcm/src/jpeg/libijg8/CMakeLists.txt, 
716                     remove compression file 
717                     (as we only do decompression, right ?)     
718      * ENH: Change malloc/calloc/free with c++ equivalent
719
720 2004-04-21  Jean-Pierre Roux
721      * FIX gdcmHeaderHelper::GetXSpacing
722            when a single value is found (bug ?), xpacing is now 
723            defaulted to yspacing
724            
725 2004-04-19  Jean-Pierre Roux
726      * ADD gdcmData/Wrist.pap (PAPYRUS 3.0 -single frame-) for checking purpose
727      * ENH add parameters :
728                bool  exception_on_error = false, 
729                bool  enable_sequences   = false,
730                bool  ignore_shadow      = false
731            to the gdcmFile constructors to be full gdcmParser compliant
732      * FIX vtk/vtkGdcmReader.cxx now uses  enable_sequences = true in gdcmFile
733            to allow reading of PAPYRUS 3.0 files 
734               
735 2004-04-06  Jean-Pierre Roux
736      * ADD gdcmData/E00001S03I0015.dcm for SQ checking purpose
737      
738 2004-04-02  Jean-Pierre Roux
739      * ADD : Test/checksequence.sh, for a general recap on SQ pb
740      * FIX : gdcmParser::WriteEntryTagVRLength emprovement of special treatement
741              for Philips spurious Tag fffe|0000 while rewritting Dicom files
742              
743 2004-03-30  Jean-Pierre Roux
744      * FIX gdcmParser::ReplaceOrCreateByNumber shouldn't seg fault any more 
745          for ACR file, written out as DICOM files (hope so...)
746
747 2004-03-30  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
748      * src/gdcmParser.[cxx|h] and gdcmHeader.[cxx.h]: gdcmHeader::Write split
749        in WriteEntryTagVRLength and WriteEntryValue. Those methods were
750        moved to base class gdcmParser and only the specialisation is kept
751        in gdcmHeader.
752      * src/gdcmParser.[cxx|h]: ReplaceOrCreateByNumber(char*, guint16, guint16)
753        trashed out (because ReplaceOrCreateByNumber(string, guint16, guint16)
754        already does the job.
755      * src/gdcmDicomDir.[cxx|h]: WriteDicomDirEntries renamed to WriteEntries
756        (to be consistent with gdcmParser::WriteEntries).
757
758 2004-03-30 Benoit Regrain
759      * vtk/vtkGdcmReader.[h|cxx] : fix the read of 3 gdcmHeader when making an
760        upate of the object's instance. It's passed to 2 in the unfavorable
761        case : one in the ExecuteInformation, one in the ExecuteData
762
763 2004-03-29  Jean-Pierre Roux
764      * ENH : Check on file type to be written moved
765              from gdcmParser::WriteEntry to gdcmParser::WriteEntries
766      * FIX : gdcmObject::ResetBoundaries now stops properly
767              when end-of-list is reached
768            : gdcmVersion modified (as Benoit Regrain asked)
769
770 2004-03-29  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
771      * src/gdcmParser.cxx: removal of all TAB character. Indentation fixed.
772      * src/gdcmUtil.cxx: added forgotten iostream include.
773      * src/gdcmCommon.h: FileType enum entry DICOMDIR removed (since
774        equivalent to ExplicitVR in existing code).
775
776 2004-03-27  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
777      * src/gdcmUtil.[cxx|h] split in two. Additional file gdcmGlobal.[cxx|h]
778        now contains all the gdcmGlobal related code.
779      * minor coding style and doxygenation changes.
780
781 2004-03-26  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
782      * src/gdcmUtil.[cxx|h] split in two. Additional file gdcmDebug.[cxx|h]
783        now contains all the Debug related code.
784      * minor clean-up of includes in src/*.cxx
785      * src/gdcmUtil.[cxx|h] _cleanString C style function (replaced with
786        CreateCleanString) removed.
787      * src/gdcmUtil.[cxx|h] _CreateCleanString renamed to CreateCleanString
788      * Doc/DoxyMainPageUser.txt added.
789      * Doc/Doc/DoxyfileUsers updated to version 1.3.4 of Doxygen.
790      * src/gdcmCommon.h now defines getcwd for Win32 (moved away from
791        src/gdcmDirList.cxx)
792
793 2004-03-24  Jean-Pierre Roux
794      * FIX a lot of little surface modifications to be doxygen 1.3.6 compliant
795
796 2004-03-23  Jean-Pierre Roux
797      * FIX Now gdcmFile::SwapZone doesn't seg faults any longer for
798            big endian made volumes
799      * ENH Now gdcmParser constructor and destructor are protected to forbid
800            end user to instanciate class gdcmParser
801           (only gdcmHeader and gdcmDicomDir are meaningfull)
802
803 2004-03-22 Benoit Regrain
804      * FIX : src/gdcmDicomDir.cxx : make windows compilable
805      * FIX : gdcmPython/gdcm.i : change gdcmStudy to gdcmDicomDirStudy and
806              gdcmSerie to gdcmDicomDirSerie
807
808 2004-03-19  Jean-Pierre Roux
809      * ENH Now the tree-like structure describing a DICOMDIR comming from
810            an already existing DICOMDIR file is consistent with
811            the home-made tree-like structure build ex-nihilo
812            or build from the files held (recursively) in a Directory
813            functions gdcmDicomDir::CheckBoundaries()
814            gdcmObject::SetBoundaries() added
815
816 2004-03-17  Jean-Pierre Roux
817      * REM (Eric Boix bug) : removal of meaningless
818                              gdcmDicomDirImage::NewImage function.
819      * FIX now file names and directory name are written properly in the
820            DICOMDIR
821      * FIX now gdcmDicomDir constructor may be call without any trick
822            about the name
823
824 2004-03-16  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
825      * FIX (JPR bug) : src/gdcmDicomDirImage.cxx added missing definition
826                        of gdcmDicomDirImage::NewImage as empty function.
827
828 2004-02-28  Jean-Pierre Roux
829      * ENH add gdcmDicomDir:NewPatient
830            add gdcmDicomDirPatient:NewStudy
831            add gdcmDicomDirStudy:NewSerie
832            add gdcmDicomDirSerie:NewImage
833            to allow making gdcDicomDir object.
834      * ADD PrintDicomDir executable that uses gdcmDicomDir tree-like structure
835           (as opposite to the gdcmHeader chained list)
836
837 2004-02-11 Benoit Regrain
838      * FIX : memory leaks and the set of ArgDelete methods in gdcmDicomDir
839              when using from python
840
841 2004-02-10 Benoit Regrain
842      * FIX : bug fix in the gdcmDirList for the recursivity in directories
843      * FIX : in gdcmDicomDir when the directory is empty
844      * ENH : add callback and methods to get the progression of dicomDir
845              directory parsing
846
847 2004-02-06 Jean-Pierre Roux
848      * ENH : - now gdcmDicomDir::CreateDicomDir() returns also the meta elements
849              - GDCM_META added to gdcmDicomDirType
850              - class gdcmMeta created
851      * ENH : - A brief summary is now displayed at the beginning of
852              'testDicomDir' to help disaster magnitude estimation
853      * REM : Now useless Test/explDICOMDIR.cxx
854
855 2004-02-05 Benoit Regrain
856      * ENH : add methods in gdcmObject to get the hash table or the list of
857              header entries
858      * FIX : wrapping python for ListPatient, ListStudy, ListSerie, ListImage
859      * FIX : wrapping python for TagHeaderEntryHT
860
861 2004-02-04 Benoit Regrain
862      * FIX : even length for some strings when writting the dicom dir
863      * FIX : sort the images in the dicom dir
864      * FIX : Bug fix for python use of dicom dir
865      * ADD : a python demo
866
867 2004-02-04 Jean-Pierre Roux
868      * FIX : Final solution (?) for icone embedded images
869      * FIX : dicomVR.dic Overlay group is not *only* 6000, but 60xxx
870              (see http://medical.nema.org/dicom/2003/03_06PU.PDF)
871              add groups 6002, 6004, 6006, to allow 'clean' parsing of
872              gdcmData/gdcm-MR-SIEMENS-16.acr1
873      * ENH add gdcmData/checkWriteExplicit.sh gdcmData/checkWriteImplicit.sh
874            to make full checking easier
875         
876 2004-02-04 Benoit Regrain
877      * FIX : WriteEntries : coding style & logic in parameters
878      * FIX : Set the elements to create the DicomDir in a dictionary file
879
880 2004-02-03 Benoit Regrain
881      * gdcmDirList : to parse a hard drive directory in recursive (or not)
882      * gdcmDicomDir : add the load of directory
883      * Bug fix and print add-on
884
885 2004-02-03 Jean-Pierre Roux
886      * ENH gdcmParser : allows "DICM" files, with NO group '0002'
887      * FIX handling 'non string elements' unsecure area (LUT, overlays, etc)
888      * FIX Dicts/dicomV3.dic : Add a few missing 'group length' Elements 
889      * FIX gdcmParser.cxx : 'group length' elements are now considered 
890            as integers, even for shadow groups, when file is Implicit VR
891         
892 2004-02-02 Jean-Pierre Roux
893      * FIX : gdcmWrite : equal_range() for multimap doesn't return a 'second' 
894              iterator on last
895              of the last synonym :-(
896      * FIX : gdcmWrite::WriteBase : method stops if Pixels not yet Read (except 
897              for DICOMDIR ;-)
898      * ENH gdcmData/checkWrite.sh :modif for full check of Explicit VR writting
899      * FIX taking into account the possible 7fe0,0010 multiplicity        
900      * FIX add GRPixel,NumPixel,countGrPixel (gdcmParser protected members)
901            to allow removal of references to 7fe0,0010, to deal with
902       ACR-NEMA images, when 0028,0200 is meaningfull
903
904 2004-01-31 Jean-Pierre Roux
905      * FIX gdcmParser::WriteEntries : when a VR is tagged as 'Unknown'
906            no longer writes 'Un' on disk
907      * FIX SQ elements with actual length are now dealt with corectly
908      * FIX gdcmFile::WriteBase make the difference, for color images, between
909            the length (for Palette expanded images)
910            and Raw Length (non expanded image + Palette)
911      * FIX Dicts/dicomV3.dic : removal of 'CTX' (context dependant) VR
912            (that broke Write). Replaced by UL.
913            Aware user will reload the field if he 
914            thinks it's necesssary
915              
916 2004-01-30 Jean-Pierre Roux
917      * gdcmParser::CheckSwap() now defaults the filetype to ACR 
918        when 'dirty Acr' is found, to be compliant with the new 
919        IsReadable() methods.
920        
921      * gdcmHeaderHelper :add Pixel Type 'FD', for dealing with 'double' images.
922       (no DOUBLE images in kosher DICOM, 
923       but so usefull for people that miss them ;-)
924       
925      * add Test/testDicomDir.cxx, Test/makeDicomDir.cxx , Test/explDICOMDIR.cxx
926        DICOMDIR related utilities (not checked as Windoze compliant)
927
928 2004-01-28 Jean-Pierre Roux
929      * upgrade GdcmHeaderEntry Print Method for DICOMDIR
930
931 2004-01-27 Jean-Pierre Roux
932      * gdcmParser constructor has a new boolean param,'ignore_shadow', 
933              to allow skipping the shadow elements, to save memory space.
934         The TRUE value for this param has to be used 
935         with a FALSE value for the 'enable_sequence' param.
936         ('public elements' may be embedded in 'shadow Sequences')
937      * gdcmHeader methods now deal with 'embedded icones images' in the header
938              (even when an 'icone image sequence' is announced by the 
939         element (0x0088,0x0200), but there is NO icone at all ...
940         
941      * gdcmHeader sometimes Image Location value doesn't follow  
942              the supposed processor endianity (see gdcmData/cr172241.dcm).
943              Fixed
944
945      * gdcmHeader add the method
946              IterHT  GetHeaderEntrySameNumber(grPixel,numPixel);
947         to get *all* the Header Entries with the same tag.
948         GetHeaderEntrySameName is probabely *useless* 
949         (no meaning : Name is *not* an identifier within the Dictionnary)
950
951 2004-01-26 Benoit Regrain
952      * Bug fix in the print of hexadecimal representations. Remove long fields 
953        in the print and add a third level of print to print them
954
955 2004-01-23 Benoit Regrain
956      * Bug fix on field having a VR = 'UI'. Assume that is a string field
957      * Bug fix on test suite after remove the strip made on not string fields
958      * Split the IsReadable method between gdcmParser which test that the file
959        is dicom and gdcmHeader which test that it's an image file
960
961 2004-01-22 Benoit Regrain
962      * DicomDir : clean code, add methods, set variables in protected or private
963      * gdcmUtil : bug fix for the clean string method
964
965 2004-01-19 Benoit Regrain
966      * Add the use of shadow dictionaries
967      * bug fix and coding style
968
969 2004-01-19 Benoit Regrain
970      * src/gdcmFile.cxx : bug fix concerning the close of file
971      * src/gdcmParser.[h|cxx] : remove obvious Pub informations
972      * Add the update of header entries using the shadow library
973
974 2004-01-19 Benoit Regrain
975      * removal of file gdcmHeader2.cxx
976      * split class gdcmHeader into gdcmParser and gdcmHeader, with gdcmHeader
977        inheriting from gdcmParser. This split is to prepare the integration
978        of dicom dir parsing
979      * bug fix under python
980
981 2004-01-16 Jean-Pierre Roux
982     * REM removal of class gdcmHeaderEntrySet
983     * REM removal of files gdcmHeaderEntrySet.cxx, gdcmHeaderEntrySet.h
984     * ADD add file gdcmHeader2.cxx 
985     * ADD add method gdcmHeader::SetPrintLevel (for PrintHeader)
986
987 2004-01-15 Benoit Regrain
988      * src/gdcmDicSet.[h|cxx] : add virtual entries to have a reference of
989        entries created while parsing the header. Thus, they will be destroyed
990        when the gdcmDictSet will be destroyed
991      * src/gdcmHeader.cxx, gdcmHeaderEntrySet.cxx : uses virtual entries of
992        gdcmDictSet
993
994 2004-01-15 Benoit Regrain
995      * vtk/vtkGdcmReader.cxx : bug fix : before, with python only, the program
996        made a fatal error because of the memory release at the end of program.
997        The problem was in vtkGdcmReader::ExecuteData where we were allocate
998        some memory and vtk seems to have some problems with that.
999      * src/gdcmHeaderEntrySet.cxx : bug fix for std lib and cout
1000
1001 2004-01-14 Benoit Regrain
1002      * src/gdcmHeaderEntry.[h|cxx] : gdcmElValue -> gdcmHeaderEntry
1003      * src/gdcmHeaderEntrySet.[h|cxx] : gdcmElValSet -> gdcmHeaderEntrySet
1004      * src/*.[h|cxx] : make changes due to class name changes
1005      * gdcmPython/demo/*.py : bug fix due to method names
1006
1007 2004-01-13 Benoit Regrain
1008      * src/*.[h|cxx] : coding style
1009      * vtk/*.[h|cxx] : coding style
1010
1011 2004-01-13 Benoit Regrain
1012      * gdcmPython/testSuite.py : test the readable flag of file for tests
1013      * src/gdcmDict.cxx, gdcmElValSet.cxx : bug fix under windows for prints.
1014        It's lied to the stl compilation by MSVC (windows, always windows...)
1015      * src/gdcmIdo.h, gdcmHeaderIdo.cxx : remove the Ido unused files
1016
1017 2004-01-12 Benoit Regrain
1018      * src/*.h : add comments
1019      * src/gdcmDictSet.h : set the method BuildDictPath in public
1020      * src/gdcmTS.cxx, gdcmVR.cxx : use now a dictionnary file other than to be
1021        directly setted in the source code
1022      * Dicts/dicomTS.dic, dicomVR.dic : 2 new dictionnary files loaded by
1023        gdcmTS and gdcmVR
1024
1025 2004-01-09 Benoit Regrain
1026      * gdcmPython/gdcmVersion.py : add a gdcmVERSION variable information
1027      * setup.py : use a reference to gdcmVERSION
1028
1029 2004-01-07 Benoit Regrain
1030      * Modification to compile with the distutils.
1031      * Bug fix in code
1032
1033 2003-12-10 Benoit Regrain
1034      * gdcmHeader is now aggregating gdcmFile, and not derived into. Thus, we
1035        can use a gdcmHeaderHelper to load datas
1036      * gdcmPython/testSuite.py : make the testSuite compliant with modifications
1037        made in the source code
1038
1039 2003-12-10 Benoit Regrain
1040      * Update Windows projects and .cvsignore files
1041
1042 2003-11-12 Jean-Pierre Roux
1043      * ENH gdcmHeader constructor has one more parameter (default value : false)
1044            that allows the user to 'go inside' the SeQuences only
1045            if he wants to.
1046            gdcmElValSet:Print takes it into account
1047
1048 2003-11-12  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1049      * ENH: Update gdcmPython/CMakeLists
1050      * FIX: (gdcmHeaderHelper) GetRescale and GetSlope
1051      * FIX: (gdcmElValSet) char 'tag' was overiding private members (VC++)
1052
1053 2003-11-10 Jean-Pierre Roux
1054       * FIX : gdcmHeader::LoadElements is now based
1055              on the ListTag listElem member,
1056              not longer on the TagElValueHT tagHt member
1057       * ENH : PrintPubElVal shows (temporarily) both results,
1058              with the tagHt member and the listElem member.
1059              (it's easier to 'see' the problems when using Printheader)
1060
1061       * FIX : old private member LgrElem is now splitted into
1062              ReadLength   : Length actually found on disk (updated only
1063                             if bug fixing is necessary), for internal
1064                             use only
1065              UsableLength : Updated by FixFoundLength, to fix a bug
1066                             or to allow Parser going on.
1067              Will allow to re-write a kosher header when a SeQuence
1068              with a length (not 0000) is found
1069       Warning : gdcmFile::Write still uses the TagHt (not ListElem)
1070                 because gdcmElValSet::Add does not update ListElem
1071                 (to be written)
1072
1073 2003-11-07 Jean-Pierre Roux
1074      * FIX misstyping in Transfert Syntax name table
1075      * ENH gdcmHeader::FixFoundLength now allow to 'go inside' tge SeQuences
1076           when they have an actual length (not 0000 nor FFFFF)
1077      (Nobody should care of it, but DICOMDIR explorers)
1078
1079 2003-11-06  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1080      * ENH: vtkgdcmViewer now works with LUT dicom (OT-PAL-face ...)
1081
1082 2003-11-05  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1083      * ENH: vtkGdcmReader now supports LUT !
1084           (vtkgdcmViewer for now is not able to use them though)
1085
1086 2003-11-05 Jean-Pierre Roux
1087      * in testSuite.py : new files names for checking the package
1088      * FIX : Forgot to commit gdcmFile::GetImageDataSizeRaw();
1089              that returns the pixel area size to the *aware* (vtk) user
1090              that DOESN'T want to turn the PALETTE COLOR image into an RGB image
1091
1092 2003-11-05 Benoit Regrain
1093      * in testSuite.py : Modify the rules for checking the paths
1094                        : Explicit error messages
1095      * in __init__.py  : Related modif
1096
1097 2003-11-03 Jean-Pierre Roux
1098      * add gdcmHeaderHelper::GetNumberOfScalarComponentsRaw()
1099            to be used by aware (vtk) users that want to manage
1100            LUT (and no to turn the PALETTE image into an RGB pixels one)
1101      * GetPixelType now returns 8U for 24 Bits images
1102                     (vtkGdcmReader compliant)           
1103       
1104 2003-10-31 Jean-Pierre Roux
1105      * Removal of *all* gdcmData images and add them again
1106        in order to loose the 'history' of un-anonymised images
1107        
1108 2003-10-31 Jean-Pierre Roux
1109      * RMV : removal of useless jBitsInJsample.h 
1110            for both 8 and 12 Bits JPEG Lossy Libraries
1111
1112 2003-10-31 Jean-Pierre Roux
1113      * ENH : Add the functions gdcmFile::GetImageDataRaw 
1114                                gdcmFile::GetImageDataIntoVectorRaw
1115              that act as GetImageData and GetImageDataIntoVector
1116              except the making of an RGB Plane from Gray Plane + LUT
1117              Intended to aware (vtk) users who know how to manage
1118              such an image :
1119              After gdcmHeader :
1120               GetLUTRGBA return a R,G,B,A LUT if any
1121               lgrTotaleRaw gives the 'Raw' length
1122               GetImageDataRaw returns the gray Plane
1123      * FIX : no more dirty trick for 'Segmented xxx Palette Color Lookup' images
1124              (They stay Grey, just like with other Dicom viewers :-(
1125
1126 2003-10-30 Jean-Pierre Roux
1127      * FIX : a VC++ intended syntax modif broke the 12/12 Bytes expanding
1128              
1129 2003-10-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1130      * ENH: Can be used like this '$vtkgdcmViewer *.dcm' with *.dcm 
1131            being coherents dicom files.
1132      
1133 2003-10-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1134      * FIX: DOH ! Forgot about windo$e users, they couldn't read lossless jpeg,
1135            from medcon lib !
1136      * ENH: Turn it into DOS file type to match libgdcmijpeg8.dsp file type 
1137      * ENH: Two steps is necessary to please VC++ compiler...
1138      * FIX: DOH ! libgdcmijpg8 -> libgdcmljpeg
1139      * ENH: Add include dir to medcon lib
1140      * FIX: only one function is being exported for now ! 
1141            You should use GLOBAL(return type) see ljpg/jpeg.h for more info
1142             
1143 2003-10-29 Jean-Pierre Roux
1144       * adding  gdcmHeader::GetLUTRGBA
1145         returns a 4 * 256 Bytes Reg/Green/Blue/Alpha vtk compliant LUT
1146           --> Mathieu, the modif u're waiting for is not yet committed
1147       * removal of now useless GetLUTRed,GetLUTGreen,GetLUTBlue,GetLUTRGB
1148
1149 2003-10-27 Jean-Pierre Roux
1150       * adding some xmedcon breaker files (courtesy of Loïc Boussel)
1151         00191113.dcm DermaColorLossLess.dcm
1152         MxTwinLossLess.dcm RadBWLossLess.dcm
1153       * ENH: For version prior to vtkImageViewer2 -r 1.19
1154       * FIX: avoid pb with xmedcon-breaker CT McTwin Elscint images
1155
1156 2003-10-27  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1157       * Removal of ido stuff in CMakeLists.txt
1158                                                
1159 2003-10-24  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1160       * ENH: vtkGdcmReader.cxx can now read multiframe dicom
1161       * FIX: remove a call to ->Modified ... see comments
1162       * FIX: vtkgdcmViewer.cxx was writting ASCII file...this is so slooooow !
1163       
1164 2003-10-23  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1165       * FIX: Problem with path for libvtkgdcmPython
1166       * ENH: Try adding a search script for python site-package
1167       * RMV: Remove some file from medcon lib that are not necessary
1168       * FIX: gdcm/Makefile.am fix for generating ljpg medcon
1169       * ENH: CMakeLists.txt now generate 'pygdcm.so' instead of 'libpygdcm.so'
1170       * FIX: More pragma disable fro VC++, 
1171              I don't think I break something as it is also disable in VTK/ITK.
1172         But it fasten debug compilation time.
1173             
1174 2003-10-23 Jean-Pierre Roux
1175       * gdcm now deals with 16 Bits Run Length Encoded images
1176         (they are compressed as 2 planes images, 
1177          one for the high Bytes, the other for low Bytes)
1178
1179 2003-10-22 Jean-Pierre Roux
1180       * Now CheckRead takes into account :
1181          - the bugged 'Leonardo' Siemens images
1182          - the XA images, sent thru the burning VPRO station
1183       * add I9000001.dcm, a GE dlx XA image, thru the VEPRO burning station
1184        (breaks DicomWorks)
1185
1186 2003-10-22  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1187       * FIX: When copying a Makefile.am to CMakeLists.txt 
1188              one should remove the '\'
1189         
1190 2003-10-22 Jean-Pierre Roux
1191       * in gdcmData adding a bugged 'Leonardo' Siemens image 
1192         (wrong lengths in header)
1193         OK with gdcm, KO with the other viewers :-)
1194       * add a GE dlx XA image, thru the VEPRO burning station
1195         (breaks DicomWorks)
1196
1197 2003-10-21 Jean-Pierre Roux
1198       * in gdcmData add the checkvtkgdcmViewer.sh shell script 
1199         for a brutal checking of vtkgdcmViewer compliance
1200
1201 2003-10-21 Jean-Pierre Roux
1202       * add the files for 'xmedcon' Jpeg Lossless library
1203       * call of 'xmedcom' Jpeg Lossles libray (instead of the old LibIDO one)
1204
1205 2003-10-21 Jean-Pierre Roux
1206       * 'Compacted Files' (12 Bits Allocate, 12 Bits Stored) are now dealt with
1207      
1208 2003-10-21 Jean-Pierre Roux
1209       * garbage Siemens 'Leonardo' images dealt with
1210         (the patch is easy to remove)
1211       * cosmetic changes to avoid warnings
1212       
1213 2003-10-20  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1214       * ENH: vtkgdcmViewer now autoscale color/window level on start-up, 
1215         no need to press 'r' now.
1216    
1217 2003-10-20  Jean-Pierre Roux
1218       * upgrade of checkRead.sh checkWrite.sh according
1219         to new Jpeg Lossless decompressor
1220       * add US.3405.1.dcm, a genuine RGB medical file ...
1221       * add gdcm-ACR-LibIDO.acr, unnormalized Rectangular LibIDO format image
1222       * add CLIP0001-Sequoia-U11.dcm, US 'Clip', from SEQUOIA machine,
1223                                                   UNIT 11, Hop Cardio              
1224 2003-10-15  Jean-Pierre Roux
1225       * general anonymisation in gdcmData
1226       * adding the 'color files' from
1227         http://www.leadtools.com/SDK/Medical/DICOM/ltdc19.htm
1228       * adding some well knowed bugged-header images
1229       * adding checkRead.sk, checkReadColor.sh, checkWrite.sh,
1230         waiting for their inclusion in Python testsuite
1231
1232 2003-10-15  Jean-Pierre Roux
1233     * gdcmHeader::gdcmHeader(const char *InFilename, bool exception_on_error)
1234       no longer seg faults when file is not found
1235
1236 2003-10-14  Jean-Pierre Roux
1237      * Emprovement of reading for Dicom encapsulated Jpeg LossLess 
1238        MultiFrame images
1239
1240 2003-10-14  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1241      * TODO: *.in file to genereate a UseGDCM later
1242
1243 2003-10-14  Jean-Pierre Roux
1244      * Some supposed-to-be Dicom Images have no preamble.
1245         OpenFile takes it into account
1246      * Jpeg LossLess 24 Bits images doesn't break any longer gdcm
1247      * Missing elements added in dicomV3.dic
1248       (just to be affraid : have a look at
1249        ftp://medical.nema.org/medical/dicom/2003/01v03dif/01v03_06.pdf
1250        and do it again next year ;->
1251
1252 2003-10-13  Jean-Pierre Roux
1253      * According to PS 3.3-2003 C.11.1.1.2 p 619, when each pixel of 
1254        a PALETTE COLOR is stored on 2 Bytes, theese 2 Bytes must be equal.
1255        But there are NOT. It's fixed !
1256        
1257 2003-10-13  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1258      * FIX: "jpeglib.h" was not found on VC++
1259      * FIX: vtkgdcm was not being installed 
1260          
1261 2003-10-10  Jean-Pierre Roux
1262      * ENH : OpenFile closes the file if it *really* doesn't look like
1263              an ACR-NEMA / DICOM one.
1264      * FIX : testWrite no longer writes an empty file if the source file     
1265              is not gdcm Readable
1266      * ENH : One more JPEG LossLess type "JPEG Baseline (Process 14)" 
1267              is now decoded.
1268         
1269 2003-10-10  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1270      * FIX: CMake generate now documentation
1271      * ENH: out of source doc build !
1272      * ENH: Generate both user and dev documentation
1273      * ENH: Should work on windows too
1274      * ENH: Only one doxygen config.in file is needed 
1275      * FIX: make install should be ok now on Ã¹nix plateform
1276      * FIX: PATH to dictionary was wrong (missing /)
1277      * ENH: OpenFile, return true if the file looks like an ACR or DICOM file 
1278                      
1279 2003-10-09  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1280      * vtkGdcmReader is now able to read rgb dicom file.
1281      * src/gdcmHeaderHelper : GetNumberOfScalarComponents()
1282      * added a gdcmViewer to vtk test, use mouse to control 
1283         window level & window width
1284
1285 2003-10-09  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1286      * CMake-ification of gdcm, we have now two build system
1287      * FIX: on cygwin Wsock32 doesn't exist
1288      * FIX: force jpeg dir to the local one (gdcm/src/jpeg)
1289      
1290 2003-10-06  Emanuel Ollart
1291      * FIX : compilation process wad broken.
1292              Changed gdcmViewer_sources to vtkgdcmViewer_sources
1293         
1294 2003-10-06  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1295      * change gdcmViewer -> vtkgdcmViewer
1296      * change GetXSpacing and GetYSpacing "%f\\%" is parsed backward
1297      
1298 2003-10-06  Jean-Pierre Roux
1299      * FIX :A few nasty patches to allow the reading of a lot of nasty images
1300            ( e.g : well known GE images with a wrong elem length,
1301                  : Philips MRI Images with a wrong Huffman table)
1302       * still to be done : allow the reading of bugged LEONARDO Siemens images
1303
1304 2003-10-03 Jean-Pierre Roux
1305       * Odd length strings are padded with '\0' (not with spaces, 
1306         to remain compliant with already defined strings, 
1307         like Transfert Syntax UID and others)
1308
1309 2003-10-03 Jean-Pierre Roux
1310       * ENH :gdcmHeaderHelper::GetNumberOfScalarComponents() added, 
1311              to allow displaying RGB images (not only by affim ;-)
1312         
1313 2003-10-03  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1314       * vtkGdcmReader is now able to read rgb dicom file.
1315       * src/gdcmHeaderHelper : GetNumberOfScalarComponents()
1316
1317 2003-10-03 Jean-Pierre Roux
1318       * A few nasty patches to allow the reading of a lot of nasty images
1319         ( e.g : well known GE images with a wrong elem length,
1320               : Philips MRI Images with a wrong Huffman table)
1321       * still to be done : allow the reading of bugged LEONARDO Siemens images
1322
1323 2003-10-03 Jean-Pierre Roux
1324       * One more JPEG LossLess type "JPEG Baseline (Process 14)" is now decoded.
1325
1326 2003-10-03 Jean-Pierre Roux
1327       * gdcmHeaderHelper::GetNumberOfScalarComponents() added, 
1328         to allow displaying RGB images (not only by affim ;-)
1329
1330 2003-10-03 Jean-Pierre Roux
1331       * gdcmFile::GetImageDataIntoVector now
1332          - deals with MultiFrames MultiFragments Run Length Encoded files
1333          - deals with YcBcR (YBR_FULL) files
1334          - deals with YBR_YBR_FULL_422 files (they work as RBG files ?!?)
1335           WARNING : nothing was checked for YBR_PARTIAL_422, YBR_ICT, 
1336                                             YBR_RCT files.
1337           (no sample found :-(
1338
1339 2003-10-02  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1340       * src/*.cxx removed pragma thingies to src/gdcmCommon.h
1341         Two reasons: - clear things
1342                      - third parties acces gdcm through header files, so won't
1343                        suffer anymore VC++ complains
1344
1345 2003-09-30  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1346       * add argv[1] in testvtkGdcmReader.cxx
1347       * removed leaks
1348
1349 2003-09-24 Jean-Pierre Roux
1350       * The lines are now eigthy characters long.for 
1351         gdcmHeader.cxx gdcmHeaderHelper.cxx gdcmParse.cxx 
1352
1353 2003-09-22  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1354       * src/gdcmUtil.[cxx|h] : change the _CreateCleanString return value from
1355         char* to std::string. Thus, the use of strdup becomes useless. (see
1356         previous commis of Malaterre)
1357       * src/gdcmElValSet.cxx : reuse commented call to _CreateCleanString like
1358         before the last Malaterre's commit.
1359
1360 2003-09-19  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1361       * This commit should fix the Debug building under VC++, the problem
1362         was mainly a mixture of debug and release lib being loaded at startup.
1363       * I also remove a depency to a specific C function: strdup. Because I had
1364         to force the link to msvcrtd (whereas strdup is in libc).
1365
1366 2003-09-16  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1367       * "gdcm::Unfound" string changed to a constant variable (GDCM_UNFOUND)
1368         located in the gdcmCommon.h file. All use of reference of tha has been
1369         changed to now use the variable GDCM_UNFOUND.
1370
1371 2003-09-16  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
1372       * Cosmetic changes:
1373         - gdcmPython/testSuite.py adapted to the JPR updated Dicts/dicomV3.dic
1374           Dicom dictionary. The test suite can now be run again. Note:
1375           I'm note very happy with the " (RET)" changes. I believe this
1376           RETAINED comment should be dropped when parsing the dictionary.
1377         - PACKAGER corrected
1378         - DEVELOPPER added.
1379         - AUTHORS updated and now in alphabetical order
1380       * Makefile.am now exports gdcm.dsw for Windoze users.
1381
1382 2003-09-11  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1383       * cygwin complains about missing std:: in subdir Test/
1384
1385 2003-09-10  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1386       * remove some methods that are now in gdcmHeaderHelper
1387
1388 2003-09-10  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1389       * vtkGdcmReader set spacing and origin correctly
1390
1391 2003-09-09  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1392       * Fix a few delete/delete[] mismatch
1393
1394 2003-09-08  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1395       * src/gdcmHeaderHelper.[h cxx]: added new class that provide an
1396         interpretation to data given by gdcmHeader. For instance there are
1397         heuristics to get informations (look at different places).
1398       * it also include a specific class: gdcmSerieHeaderHelper devoted to
1399         sorting DICOM images based on different strategies.
1400       * modified Makefiles accordingly.
1401
1402 2003-09-05  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1403       * src/*.cxx : added pragma disable 4786/4251 to get rid of ~4300 warning
1404         when building in debug mode
1405       * vtk/win32/vtkgdcm.dsp : change /MT -> /MD and /MTd -> /MDd to match
1406         src/win32/gdcmdll.dsp
1407       * vtk/win32/vtkgdcm.dsp : added /nodefaultlib "mscvrt" for debug mode
1408
1409 2003-08-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1410       * Corrected a leak in vtkGdcmREader.cxx, the pSource was find thanks
1411             to valgrind.
1412
1413 2003-07-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1414       * src/win32/libgdcmjpeg12.dsp was not dos format
1415       * src/win32/libgdcmjpeg12.dsp : 
1416                   libgdcmijpeg12_EXPORTS -> LIBGDCMIJPEG12_EXPORTS
1417       * src/win32/gdcmdll.dsp: + /I "..\jpeg\libijg12"
1418
1419 2003-07-29 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1420       * src/gdcmHeader.h : add std:: prefix for stl elements... like others in
1421         the file
1422       * src/gdcmFile.cxx : bug fix in affectation type
1423       * src/jpeg/libijpeg12/jmorecfg12.h : export for windows modified... like
1424         in src/jpeg/libijpeg8/jmorecfg8.h (JPR : copy/paste exists !!!)
1425       * Modifs of MVSC projects to compile them. Not concerning 2 identic
1426         symbols... future problem ?
1427
1428 2003-07-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1429       * src/win32/libgdcmijpeg12.dsp was missing
1430       * modified gdcm.dsw accordingly
1431
1432 2003-07-28  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1433       * src/gdcmHeader.cxx : misplaced return 0.; for ACR/NEMA
1434
1435 2003-07-24 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1436       * src/jpeg/libijg12/.cvsignore, jconfig.* : ommited files while last
1437         commit of JPR (before his hollidays to facilitate our work).
1438       * setup.py : bug fix in code. Modifications made while the last commit
1439         of JPR. The code hasn't been tested before the commit... it's so
1440         useless to make that (for best programmer that is JPR) !!!
1441
1442 2003-07-08  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1443       * tagged the current version as Version0_3 (i.e. version 0.3)
1444
1445 2003-07-08  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1446       * vtk/testvtkGdcmReader.cxx : remove a symbol that is unused
1447       * src/jpeg/libijg8/jmorecfg.h : adding export symbol for windows
1448       * *.dsp : modifications to use new libgdcmijpeg8 library
1449       * setup.py : bug fix on VTKPATH variable
1450       * PACKAGER : adding all concerning windows
1451
1452 2003-07-07  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1453       * src/gdcmElValSet.cxx, gdcmFile.cxx: JPR bug fix, removal of
1454         garbage debug code.
1455       * TODO, vtk/vtkGdcmReader.cxx: upcoming fixes comments.
1456       * gdcmPython/testSuite.py: JPR bug fix, brutal erasement of
1457         test suite reported error.
1458       * PACKAGER file added (describes what a packager must do when
1459         packaging a new release).
1460       * MANIFEST.in, now declares jconfig.linux and jconfig.vc
1461       * configure.in: upgraded version number to 0.3.0
1462       * fixing build of rpm (through rpm -ta):
1463         - Doc/Makefile.am exports proper doxygen files
1464         - src/jpeg/libijg8/Makefile.am exports the include files.
1465
1466 2003-07-07  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1467       * vtk/vtkGdcmReader.cxx : bug fix when loading only 1 file.
1468       * src/gdcmHeader.h : formatting code
1469
1470 2003-07-07  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1471       * vtk/vtkGdcmReader.[cxx|h] : bug fix when loading only one file.
1472         We were obtaining error message from vtk. Now, creation of file list
1473         is made in an internal list to prevent this problem.
1474         Bug fix when output is empty.
1475         Bug fix in update of progress value. Previous commit for this was a bad
1476         correction.
1477       * vtk/vtkGdcmReader.h : adding comments for InternalFileNaleList variable
1478
1479 2003-07-04  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1480       * src/gdcmHeader.h : added method to get the file name
1481       * vtk/vtkGdcmReader.[cxx|h] : bug fix concerning loading of bad dicom
1482         files. Added method to remove all files on the input
1483         Added FIXME comment concerning the bad parsing of header made by
1484         ExecuteInformation method (in ExecuteData method)
1485
1486 2003-07-03  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1487       * vtk/Makefile.am: vtkGdcmReader.h should now be cleany installed
1488         when using make instal.
1489       * src/gdcmFile.cxx : bug fix under Window after JPR commit
1490         RQ : the JPR doesn't appear in the ChangeLog... normal for him
1491
1492 2003-07-03  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1493       * setup.py : adding include dir of jpeg lib to compile all sources
1494       * */Win32/*.dsp : JPR fix for windows compilation
1495
1496 2003-07-02  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1497       * src/jpeg/libijg8/jconfig.* : JPR bug fix : now compile on both
1498         linux and WINDOWS !
1499       * src/gdcmJpeg.cxx : JPR bug fix : erroneous include
1500       * src/win32/gdcmdll.dsp : JPR fix for windows compilation
1501
1502 2003-07-02  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1503       * setup.py is again effective on un*x (takes into account the
1504         addon of the jpeg library)
1505       * Doc/DoxyDevelInstal.txt added (developper's raw documentation)
1506       * Doc/Doxy* updated (includes above enhancements)
1507       * INSTALL now points to web documentation
1508
1509 2003-07-01  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1510       * src/gdcmHeader.h doesn't make unnecessary reference to
1511         gdcmUtil.h anymore.
1512       * gdcmPython/Makefile.am now avoids calling the wrappers for the
1513         clean target.
1514       * src/gdcm*.[cxx|h] :
1515         - to allow compilation with gcc 3.x
1516           -- clean up of STL usage (added explicit usage of std::)
1517           -- small fixes on exceptions.
1518           Note: linking not tested !
1519         - clean of doxygen comments to avoid warnings at documentation
1520           building stage.
1521       * vtk/vtkGdcmReader.cxx: g++ warning message clean up (platform
1522         dependent convertion).
1523
1524 2003-06-20  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1525       * Clean up of previous JPR garbage commit (not even commented in the
1526         Changelog):
1527         - Test/Makefile.am removed the reference to unexisting testTS.cxx
1528         - moved all jpeg related files from src to src/jpeg/libijg8, with
1529           addition/modification of Makefile.am and configure.in.
1530         - the testSuite is still brain damage (not guilty).
1531
1532 2003-06-02  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1533       * WrapVTK.py : modifications to get correctly vtk source files to
1534         compile
1535       * vtk/vtkGdcmReader.cxx : modification for an already existing name
1536         (FileName -> Filename)
1537
1538 2003-06-11  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1539       * vtk/vtkGdcmReader.[cxx/h]:
1540         - UpdateProgress method should now be effective
1541         - removed the limitation on having only images loaded (as opposed
1542           to volumes),
1543         - when building a stack of images/volume, a lesser number of
1544           gdcmHeader and gdcmFile instances should be used (hopefully
1545           accelerating things).
1546         - when building a stack of images/volumes, files which are not
1547           loadable (wrong path-filename, wrong permissions on existing file,
1548           or file not parsable by gdcm) are replaced with a black image
1549           in the stack (for the caller to notice the problem).
1550
1551 2003-06-03  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1552       * vtk/vtkGdcmReader.cxx: hopefully corrected Z extent.
1553
1554 2003-06-02  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1555       * vtk/vtkGdcmReader[cxx|h] : makes correct code to remove conflicts
1556         between standard library (std) and vtk library (problems are found
1557         under Windows... thanks Windows !)
1558
1559 2003-05-30  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1560       * vtk/vtkGdcmReader[cxx|h] should now be volume aware (read ready for
1561         debug stage).
1562       * gdcmPython/demo/vtkGdcmReader.py: commented lines for volume test
1563
1564 2003-05-29  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1565       * vtk/vtkGdcmReader[cxx|h] preparation addons for loading volumes.
1566
1567 2003-05-28  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1568       * When compiling with distutils (see setup.py) the C++ compiler is
1569         called with different flags than the default ones (with automake).
1570         In order to fix all those warning, I compiled gdcm with the command
1571            make 'CXXFLAGS=-Wall -Wstrict-prototypes -D__STDC_LIMIT_MACROS'
1572         and went for warning fixes:
1573         - src/gdcmHeader.cxx, Test/dcm2acr.cxx, pourFindTaggs.cxx cleaned
1574           up from unused variables.
1575         - vtk/vtkGdcmReader.cxx: potential bug fix.
1576       * src/gdcmHeader.h: Doxygen warning cleanup
1577
1578 2003-05-27  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1579       * gdcmPython/gdcm.i:
1580         - typemaps correction to take into account the systematic replacement
1581           of "using namespace std" with std:: prefix e.g. std::list,
1582           std::string... (cf changes of 2003-05-21).
1583         - gdcmGlob global variable of type gdcmGlobal (defined in
1584           src/gdcmUtil.cxx and declared in gdcmPython/gdcm.i) is now
1585           exported to Python a as cvar.
1586       * gdcmPython/__init__.py now defines two functions GetPubDictTagNames()
1587         and GetPubDictTagNamesByCategory() as a replacement for deprecated
1588         gdcmDictSet.GetPubDictTagNames() and
1589         gdcmDictSet.GetPubDictTagNamesByCategory() class functions (i.e.
1590         C++ static methods).
1591       * gdcmPython/demo/printGroupedPublicDict.py is operational again,
1592         with the above changes.
1593
1594 2003-05-22  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1595       * setup.py, manifest.in : bug fix under linux
1596
1597 2003-05-22  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1598       * Modification of setup.py to compile vtk part too. Then, we have 2
1599         wrappers which must work with same distutils. For that, we have a
1600         generic distutils in distusiltsWrapping.py ; with :
1601          - build_extWrap class to wrap generically all extensions,
1602          - ExtensionWrap base class for all wrapping extension that contains
1603            a wrapper
1604          - Wrapper interface which wrap sources
1605         + In WrapSwig.py  we have extension and wrapper for Swig
1606         + In WrapVTK.py  we have extension and wrapper for VTK
1607       * MANIFEST.in : modifications to consider vtk directory and new python
1608         files for compilation
1609
1610 2003-05-21  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with Benoit Regrain
1611       * Added python wrappers of vtkGdcmReader vtk class (see the
1612         source in vtk/vtkGdcmReader.cxx) :
1613         - vtk/Makefile.am now builds a library
1614         - gdcmPython/Makefile.am now builds vtkgdcmPython a second import
1615           python library (as opposed to _gdcm.so wich are the python
1616           wrappers of gdcm). vtkgdcmPython.so uses the vtk python wrappers
1617           (vtkWrapPython and vtkWrapPythonInit utility) to build vtkgdcmPython
1618           import library.
1619         - configure.in has an additional flag --enable-vtk that needs
1620           to be set to enable compilation of vtk related code, that is:
1621           + vtk/vtkGdcmReader.so and
1622           + vtk/testvtkGdcmReader C++ demo of vtk wrappers of gdcm)
1623           + gdcmPython/vtkgdcmPython.so (see above)
1624         - gdcmPython/demo/vtkGdcmDemo.py corrected (some images cannot
1625           be read when compressed or when HighBit + 1 != BitsStored),
1626         - gdcmPython/demo/vtkGdcmReader.py added. This demo illustrates
1627           the usage of the python wrapper of vtkGdcmReader vtk class.
1628       * vtk/vtkGdcmReader.cxx: bug fixed (thanks to Benoit Regrain).
1629       * src/*.[h] all occurences of stl classes are now prefixed with
1630         std::, and all occurences of "using namespace std;" where removed.
1631         This is to avoid pollution of global namespace in included files.
1632         Apparently vtk does not avoid this pitfall: when using both
1633         gdcm and vtk (as in vtk/vtkGdcmReader.cxx) this ended up in a
1634         collision of various stl members (principally cout...).
1635       * gdcmPython/testSuite.py now cleanly removes temprory generated
1636         file.
1637       * gdcmPython/gdcm.i now declares a typemap for std::string (to
1638         comply with above changes)
1639
1640 2003-05-12  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
1641       * src/gdcmHeader>[h/cxx] added gdcmHeader::GetPixelSize()
1642       * vtk/vtkGdcmReader.cxx now properly inports the image in the
1643         vtk data structure (an image Flip was required).
1644       * vtk/testvtkGdcmReader.cxx refers to gdcmData subdir instead of Data.
1645       * cosmetic changes in documentation.
1646
1647 2003-05-7  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
1648       * src/gdcmHeader.cxx: the constructor no longer exits when an
1649         unexisting file is given as argument.
1650       * The subdirectory Data (containing all the images used for the
1651         test suite) is not part of this repository anymore. A new module
1652         containing those images is now available at
1653           :pserver:xxx@cvs.creatis.insa-lyon.fr:2402/cvs/public
1654         with the name gdcmData.
1655         All the python scripts (including the package initialisation file
1656         gdcmPython/__init__.py) were adapated to take this change into
1657         account (basically GDCM_DATA_PATH is now GDCM_TEST_DATA_PATH).
1658
1659 2003-05-5  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
1660       * vtk subdir added. Contains vtkGdcmReader.[cxx|h] a vtk class
1661         inherinting from vtkImageReader and testvtkGdcmReader.cxx a small
1662         demo of the usage of this class.
1663         Compilation of this vtk part is only done when using the --enable-vtk
1664         at configure (or autogen.sh) stage.
1665
1666 2003-04-16  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
1667       * More memory link related corrections and documentation fixes.
1668         Notes on valgrind:
1669           - maximum info is obtained with a command of the form:
1670             valgrind --leak-check=yes --leak-resolution=high --num-callers=40
1671                      --show-reachable=yes PrintHeader
1672           - the remaining reachable blocks seem to come from the STL
1673             allocation scheme through the usage of map and list. It looks
1674             like this memory cannot be freed but it is not a memory leak
1675             (in fact further invocation to the STL would recollect the
1676              unused memory allthough it cannot explicitely be freed).
1677       * gdcmPython/demo/vtkGdcmDemo.py added: this is a small demo
1678         of displaying an image parsed with gdcm and displayed with VTK.
1679         Note: some images don't seem to work e.g.
1680             python vtkGdcmDemo.py  ../../Data/US-RGB-8-esopecho.dcm
1681       * src/gdcmHeader.x: dicom_vr and Dicts are not class members anymore.
1682         Allthough this weakens the semantics, it is a ditch attempt to
1683         make gdcm more thread friendly.
1684
1685 2003-04-15  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
1686       * Memory link hunt (by using valgrind through the command
1687           valgrind --show-reachable=yes --leak-check=yes PrintHeader).
1688         - added src/gdcmVR.cxx gdcmVR.h that objectify the previous
1689           gdcmHeader::_dicom_vr.
1690         - gdcmHeader::InitVRDict transfered as gdcmVR::gdcmVR().
1691         - gdcmHeader::dicom_vr is now of type gdcmVR* as opposed to
1692           VRHT*.
1693         - gdcmGlobal global object contained class added (see src/gdcmUtil.x)
1694
1695 2003-04-9  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
1696       * src/Makefile.am now exports all the necessary include files at
1697         make install stage.
1698
1699 2003-04-9 JPR
1700       * UpdateGroupLength replaced by new one
1701
1702 2003-04-7 JPR
1703       * UpdateGroupLength re-written using H-Table
1704         (named UpdateGroupLengthNew untill checks are over)
1705
1706 2003-04-7 Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
1707       * Data/im_00001 renamed to gdcm-MR-PHILIPS-16-Multi-Seq.dcm
1708       * gdcmPython/testSuite.py now include a test of gdcmFile::Write.
1709       * src:
1710         - gdcmHeader::GetPubElValSet removed.
1711         - gdcmElValSet::WriteDcm, WriteAcr, WriteExplVR, revamped to
1712           UpdateGroupLength, WriteElements, Write.
1713         - gdcmHeader::FileType moved to gdcmCommon.h. The enum FileType
1714           doesn't contain TrueDicom anymore since ExplicitVR and ImplicitVR
1715           carried the same semantics.
1716           - src/gdcmHeaderIdo.cxx changed accordingly.
1717         - gdcmFile::WriteBase now regroups all the codes from previous
1718           versions of WriteDcm, WriteDcmImplVR, and WriteACR.
1719         - enum FileType moved to gdcmCommon.h
1720       * src/gdcmHeader.cxx AddDefault trashed
1721       * gdcmGetXSize added
1722       * getimageDataSize now calls gdcmGetXSize
1723       * Test/*.cxx changed to agree with above changes
1724
1725 2003-03-31 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1726       * src/gdcmHeader.h: LoadElements() is not a public method anymore
1727         (to avoid double call by end user).
1728       * Test/*.cxx LoadElements() doesn't need to be called explicitely
1729         by end user, since gdcmHeader::gdcmHeader now handles it.
1730
1731 2003-03-29 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1732       * gdcm/Doc many doxygen changes:
1733         - Doxyfile now has two different versions, DoxyfileUsers that generates
1734           the html.users end users oriented documentation and
1735           DoxyfileDeveloppers that generates the html.developper developper
1736           oriented documentation.
1737         - README changed accordingly
1738         - requirement.txt removed (old design info moved to TODO).
1739         - Additional files DoxyInstallation.txt, DoxyIntroduction.txt,
1740           DoxyMainPage.txt, DoxyPython.txt provide more information.
1741         - Note: the website http://www.creatis.insa-lyon.fr/Public/Gdcm/ can now
1742           be updated by simply regenerating the docs with doxygen and copying
1743           html.developper and html.users to tux:/home/httpd/html/Public/Gdcm
1744       * src/gdcmElValSet.cxx: stl <map>.count() can only return 0 or 1. Hence
1745         all the tests in the form "if (<map>.count() >1)" were removed.
1746       * src/gdcmFile.cxx: cosmetic changes to avoid messages of doxygen about
1747         ill-formed documentation sections.
1748       * src/gdcmHeader.cxx: ditto
1749
1750 2003-03-27 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1751       * setup.py fixed for un*x (needed macro for stdint.h)
1752       * Test/test.cxx renamed to PrintHeader.cxx to avoid collision on
1753         un*ces with sh-utils test utility.
1754       * gdcmPython/demo/test.py renamed to PrintHeader.py
1755       * gdcmPython/demo/ReorganiseFiles.py new demo script added.
1756       * gdcmPython/win32/gdcmpycomplet.dsp renamed to gdcmpyembedded.dsp.
1757       * gdcmPython/win32/gdcmpy.dsp trashed away (brain damaged).
1758       * src/gdcm*.cxx JPR's bad inclusion fixed.
1759
1760 2003-03-26 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1761       * src/gdcmHeader[h, cxx] gdcmHeader now has an IsReadable predicate.
1762       * gdcmPython/demo/test.py changed accordingly.
1763
1764 2003-03-25 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1765       * gdcmPython/Makefile.am fixed linking against libstdc++
1766       * gdcmPython/_gdcm.so symbolic link to gdcmPython/.libs/pygdcm.so added.
1767       * Swig subdir (historical tests of swig version 1.3.17++) removed
1768       * Test/testChangeEntete.cxx some lines commented out in order to make
1769         compilation work.
1770       * src/gdcmHeader.cxx cleaned up wild JPR's dirty kludge.
1771       * src/gdcmElValSet.cxx cleaned up frog's forgotten debug message
1772
1773 2003-03-24 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1774       * src/gdcmHeader.cxx gdcmHeader::gdcmHeader now calls LoadElements(),
1775         hence the user doesn't need this explicit call.
1776         - gdcmPython/testSuite.py, gdcmPython/demo/*.py changed accordingly
1777           i.e. LoadElements() call removed.
1778       * src/gdcmCommon.h now defines UINT32_MAX (see stdint.h).
1779         - src/Makefile.am declares the proper flag for g++.
1780       * src/gdcmElValSet.h added gdcmElValSet::GenerateFreeTagKeyInGroup
1781         for adding user defined new tags.
1782         - src/gdcmHeader.cxx gdcmHeader::NewManualElValToPubDict added.
1783         - src/gdcmHeader.cxx gdcmHeader::AddAndDefaultElements now
1784           cleanly adds some gdcm added tags (like gdcmXSize, gdcmYSize...)
1785
1786 2003-03-17 Fabrice Bellet <Fabrice.Bellet@creatis.insa-lyon.fr>
1787       * Makefile.am, acinclude.m4, configure.in, python.m4, Dicts/Makefile.am,
1788         Doc/Makefile.am, Test/Makefile.am, gdcmPython/Makefile.am,
1789         src/Makefile.am : the project should properly compile and install
1790         with the autotools, included the python wrappers part.
1791       * gdcm.spec.in : added a spec file for RPM packaging.
1792
1793 2003-03-14 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1794       * src/gdcmUtils.cxx : redifinition of defaults parameters in code
1795
1796 2003-03-12 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1797       * gdcmPython/__init__.py fix of GDCM_DICT_PATH which was not
1798         to exported to the environement (see gdcmPython/testSuite.py
1799         for usage).
1800       * src/gdcmElValSet.[cxx/h], gdcmElValue.[cxx/h], gdcmFile.[cxx/h],
1801         gdcmHeader.[cxx/h]: ElValSet class renamed to gdcmElValSet, and
1802         ElValue class renamed to gdcmElValue for obvious consistency reasons.
1803       * src/gdcmElValSet.cxx, src/gdcmUtil.[cxx-h] Tokenize utility function
1804         moved away from gdcmElValSet.cxx to gdcmUtil.cxx.
1805
1806 2003-03-10 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1807       * gdcmPython/__init__.py doesn't crash anymore when running in
1808         in InstallMode or PreInstallMode but with an environement given
1809         value of GDCM_DICT_PATH.
1810       * src/gdcmDictSet.[cxx/h] coding style.
1811
1812 2003-03-06 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1813       * src/gdcmHeader.h and gdcmHeader.cxx Coding style + doxigenation.
1814       * src/gdcm.h general comments moved to TODO, and README
1815       * src/gdcm.h should now be seen as a user commodity (including it
1816         should suffice to fully use gdcm). It is nowhere including within
1817         any of the kernel files src/*.cxx and src/*.h.
1818
1819 2003-03-05 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1820       * src/gdcm.h splitted in gdcmCommon.h, gdcmDict.h, gdcmDictEntry.h,
1821         gdcmDictSet.h, gdcmElValSet.h, gdcmElValue.h, gdcmFile.h,
1822         gdcmHeader.h
1823       * src/gdcm*.cxx only include their corresponding include file
1824         (as opposed to gdcm.h)
1825       * gdcmPython/gdcm.i changed accordingly
1826       * Test/Makefile.am corrected and added NEWS, AUTHORS in order for
1827         the autogen.sh generated "make snapshot" command to work.
1828       * autogen.sh removed history related references to crea package.
1829
1830 2003-03-04 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1831       * distutilsSwigCPlusPlus.py work around some swig portability
1832         bug.
1833
1834 2003-03-03 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1835       * Eventually, python/gdcmPython was renamed to gdcmPython. This
1836         was done in a last ditch attempt to get setup.py _really_
1837         operationnal. The python/gdcmPython layaout add the advantage
1838         of hidding away the python related distutils specific files
1839         (MANIFEST.in, setup.py, distutils*.py...) from the main directory.
1840         Alas, the src directory was out of scope (i.e. it's relative
1841         position to setup.py was ../src) which made things impossible to
1842         handle (see previous version of python/setup.py). Crossing fingers...
1843
1844 2003-02-20 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1845       * python/setup.py now works on Un*x. (harder than I thougth)
1846       * python/distutilsSwigCPlusPlus.py can now have include files
1847         among the list of sources.
1848
1849 2003-02-20 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1850       * src/gdcmHeader.cxx : bug fix - opening dicom file in binary !!!
1851       * modifications in MSVC projects
1852
1853 2003-02-19 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1854       * As stated by the first lines of Test/ExceptionAndPython/README, it
1855         looks like we can move back to original usage of exception within
1856         src/gdcm* and hence remove the errno stuff that was introduced
1857         as a quick and dirty fixture of this problem (added to the TODO).
1858       * Doc/Doxyfile configuration file for Doxygen and corresponding
1859         README file for usage added.
1860       * Test/testWrite.cxx added. This new test comes from a split of
1861         test.cxx that is now reverted to its original purpous i.e.
1862         testing the proper parsing of a Dicom related file.
1863         testWrite.cxx concentrates on testing the IO part of gdcm.
1864       * Test/bug1.cxx (containing a bug on WIn32) added.
1865       * src/gdcm.h, gdcmHeader.cxx, gdcmDictSet.cxx:
1866         - gdcmHeader::GetPubTagNames and  gdcmHeader::GetPubTagNamesByCategory
1867           whose purpose is to publish the content of the TagNames of the
1868           Dicom public dictionnary were not accessible without an
1869           instance of class gdcmHeader.
1870         - those methods are now static methods of gdcmDictSet and hence
1871           require no instances at all to be invocated.
1872         - within gdcmDictSet this change required to change some method
1873           to class methods (i.e. are now static) among which SetDictPath
1874           (renamed to BuildDictPath) and LoadDefaultPubDict.
1875       * python/gdcmPython/demo/printGroupedPublicDict.py changed to illustrate
1876         the above changes by calling the new method classes of gdcmDictSet.
1877       * python/gdcmPython/__init__.py now exposes gdcm.gdcmDictSet for
1878         the above to be effective.
1879       * python/gdcmPython: in order to wrap properly the above changes
1880         for Python, swig version now needs to be > 1.3.17.
1881       * python/gdcmPython/Makefile fixed to adapt itself to new
1882         configure/make shema introduced by Johan Montagnat (thanks for the
1883         contribution). Alas this Makefile cannot be turned into a proper
1884         Makefile.am without some heavy changes in the configure.in
1885         (for python dectection).
1886       * python/gdcmPython/gdcm.i: the out typemap map<string, list<string>>*
1887         now avoids publishing the empty entries.
1888
1889 2003-02-13 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1890       * python/setup.py : bug fix concerning install under windows
1891         ExtraPath reused :-P
1892       * gdcm.dsw : bug fix concerning path for libraries for python !!!
1893
1894 2003-02-13 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1895       * Dicts/dicomV3.dic : remove double spaces !!!
1896       * src/gdcmElValSet.cxx : bug fix concerning windows compiler
1897       * python/gdcmPython/win32/gdcmpycomplet.dsp : bug fix concerning paths
1898         and links
1899
1900 2003-01-28 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1901       * src/gdcmHeader.cxx added a post header parsing AddAndDefaultElements
1902         method. Doxygenation.
1903       * src/gdcm.h clean up of JPR spurious comments.
1904
1905 2003-01-17 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1906       * python/distutilsSwigCPlusPlus.py now properly collects the
1907         shadow classes generated by "swig -c++" (gdcm.py in our case)
1908         when using "python setup.py install".
1909       * python/gdcmPython/__init__.py imports gdcm.py and only manually
1910         reexports the working classes.
1911       * src/gdcmHeader.cxx all the try/catch/throw calls were replaced
1912         by the classical C errno scheme. This is to prevent an obscure
1913         behavior of the python wrappers when importing wxPython.wx prior
1914         to gdcmPython (which ended up in an abort call). An illustration
1915         of this oddity can be found in the Test/ExceptionAndPython
1916         subdir (see the README file). This problem probably due to
1917         an combination of g++ and dynamic loading.
1918       * added Test/ExceptionAndPython (see above)
1919
1920 2003-01-17 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1921       * Changed the layout of the python part to avoid bloating main
1922         directory with setup.py, distutilsSwigCPlusPlus.py, MANIFEST.in
1923         i.e. the distutils arsenal. All the python related stuff is
1924         again in a python subdir, but the package itself is now in
1925         python/gdcmPython.
1926       * setup.py was cleaned up:
1927         - pythonIncludePath removed
1928         - python setup.py bdist target is now functional.
1929       * gdcmPython/__init__.py doesn't export FileName any more (to avoid
1930         collision with other packages). gdcmPython/demo/*.py changed
1931         accordingly.
1932
1933 2003-01-15 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1934       * python subdir moved to gdcmPython (preparation of distutils packaging).
1935       * gdcmPython/setup.py and distutilsSwigCPlusPlus.py added. The
1936         distutils installer is operational.
1937       * - gdcmPython/__init__.py now properly loads the swig generated
1938           shadow classes (from gdcm.py).
1939         - gdcmPython/demo/*.py changed to import the package gdcmPython
1940           instead of gdcmPython/demo/load.py.
1941         - gdcmPython/testSuite.py changed to import the package gdcmPython.
1942
1943 2002-12-16 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1944       * src/gdcm.h, src/gdcmHeader.cxx: added GetPubTagNames() resp.
1945         GetPubTagNamesByCategory() to gdcmHeader that return a list of the
1946         entries within the associated public Dicom dictionary resp. the same
1947         information but sorted by the fourth field (PAT, IMG, DIR) of the
1948         dictionary.
1949         - Dicts/dicomV3.dic Entries which had and unspecified fourth field
1950           are now in the "???" group.
1951         - python/gdcm.i changed accordingly,
1952         - python/demo/printGroupedPublicDict.py added, that gives an example
1953           of the above new functionalities in Python.
1954
1955 2002-12-11 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1956       * src/gdcm.h, gdcmHeader.cxx:
1957         - historic references to glib's g_malloc and g_free (#defined)
1958           were definitively removed.
1959         - gdcm.h: cosmetic changes (part of comments moved to Doc/requirements)
1960       * src/gdcmElValSet.cxx:
1961         - GetElement(guint32, guint32) renamed to GetElementByNumber.
1962         - GetElValue(guint32, guint32) renamed to GetElValueByNumber.
1963         - GetElValue(string) renamed to GetElValueByName.
1964         - Added GetElementByName(string).
1965       * src/gdcmHeader.cxx: added
1966         - GetPubElValRepByNumber(guint16, guint16)
1967         - GetPubElValRepByName(string)
1968         - GetShaElValRepByNumber(guint16, guint16)
1969         - GetShaElValRepByName(string)
1970         - GetShaElValByNumber(guint16, guint16)
1971         - GetShaElValRepByName(string)
1972         - GetElValRepByNumber(guint16, guint16)
1973         - GetElValRepByName(string)
1974         - GetElValByNumber(guint16, guint16)
1975         - GetElValRepByName(string)
1976       * Doc/requirements.txt added.
1977
1978 2002-12-9 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1979       * Test/Makefile building now depends on the one of libgdcm.so
1980       * src/gdcmHeader.cxx and gdcm.h are now OB (undefined length encoded
1981         pixel data) aware which enables finding the address (offset) of
1982         the pixel data of JPEG encoded DICOM files. This leaves only a single
1983         file in the testSuite whose pixel data address (offset) is unknown.
1984       * python/testSuite.py changed accordingly.
1985
1986 2002-12-6 Christophe Odet + Hugues Benoit-Cattin + Eric.Boix
1987       * VC++ has some strong limitations when working with the STL, as stated
1988         in http://support.microsoft.com/support/kb/articles/Q168/9/58.ASP :
1989              "Also note that some STL containers (map, set, queue, list, deque)
1990               cannot be exported. [...]
1991               Some STL classes contain nested classes. These classes can not
1992               be exported. [...]
1993               This is caused by a designed limitation that once a template
1994               class is instantiated, it can not be re-instantiated and
1995               exported."
1996         Since our usage of map<> is ubiquitous in gdcm, this "designed
1997         limitation" of VC++ is a pitfall.
1998         Hence the Python wrappers of gdcm cannot be incrementally linked
1999         against the c++ dynamic library. The dirty but only workaround is
2000         to forget about incremental link of dynamic libraries and to generate
2001         the Python wrappers library with the inclusions of the underlying C++
2002         library.
2003         The following modifications concern this matter on Win32/VC++:
2004       - wrapping python correct with standalone wrapped dll (don't use separate
2005          dll under windows !!!!)
2006       - python21_d debug mode enabled (ask Frog how to use it :-)
2007       - NO problem with having an STL member of class for example string in C++
2008         WITH THE RESTRICTION OF FORGETING ABOUT INCREMENTAL LINK.
2009       - Python test of dcmlib in Python is ok under windows on a large set
2010         (one) of image(s).
2011       * removed glib references
2012       * typedef's inserted in gdcm.i for correct swig type management
2013
2014 2002-11-27 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2015       * python/demo/*.py load.py extracted from test.py. Added explore.py
2016         that only displays required tags and testAll.py that parses all
2017         the files of the testsuite without using unittest.
2018       * python/testSuite.py other additional test on new files added.
2019       * Data/* new test files added accordingly to the testSuite.
2020       * src/gdcmHeader.cxx avoid overwriting of the dictionary when
2021         the vr in the file differs from the one of the dictionary.
2022
2023 2002-11-20 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2024       * src/gdcm.h and gdcmHeader.cxx gdcm no longer loads all the elements
2025         values, but limits itself to values which are below a user specified
2026         size (by default 1024 bytes).
2027       * python/gdcm.i : elements not loaded (because their size is above the
2028         user specified treshold) are exported with their TagKey as key of the
2029         python dictionary. This enables the testsuite to make some checks
2030         on the unloaded elements (since we have their offset and size).
2031       * python/testSuite.py
2032         - now tests for the existence and proper value of the pixel data
2033         - two new examples added.
2034       * Data/gdcm-MR-SIEMENS-16.acr[12] added.
2035
2036 2002-11-18 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2037       * src/gdcm.h and gdcmHeader.cxx are now "Big Endian transfer syntax"
2038         aware. See the strategy comments in gdcmHeader::FindeLength().
2039       * Test/test.cxx now accepts a filename as first argument.
2040       * Data/US-PAL-8-10x-echo.dcm and US-RGB-8-epicard.dcm added.
2041       * python/testSuite.py changed to integrate test on above files.
2042
2043 2002-11-15 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2044       * Dicts/dicomV3.dic removed all the trailing (RET) when the
2045         the vr was also RET.
2046       * python/testSuite.py more tests added.
2047
2048 2002-11-14 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2049       * python/testSuite.py unittest test suite added (uses Data)
2050       * Data/* dcm and acr files for the test suite.
2051       * glib dependance removed from un*x version. We now use ISO C99
2052         7.18 Integer types (see stdint.h)
2053         - python/Makefile, src/Makefile src/gdcm.h
2054       * src/ when an explicit vr (like dicom files) suddenly poped an
2055         implicit element we use to mark the underlying DictEntry of the
2056         concerned ElValue with "Implicit". This strategy was damageable
2057         too the public or provite dictionaries, since some of their vr
2058         would be changed. Since Header::FindLength heavily relies on the
2059         detection by Header::FindVR of falsely explicit elements, I
2060         added an extra ImplicitVr member to ElValue (boolean).
2061         The rest of the changes we the necessary adaptations.
2062
2063 2002-11-12 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2064       * src/gdcmHeader::FindLength bug fix when trapping falsely explicit
2065         VR files.
2066       * src/gdcmHeader::FindVR: hard way fix of falsely explicit vr files.
2067
2068 2002-11-8 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2069       * Adaptation for porting to VC++:
2070         - src/gdcm.h
2071           o forced to use std namespace (for string to be known)
2072           o all class use __declspec export style on WIN32
2073         - src/gdcmUtil.cxx new Exit method that wraps the exit call
2074           (in stdlib.h on Win32 but in std:: for gcc)
2075       * src/gdcmDictSet::SetDictPath adds a trailing / to environement
2076         variable GDCM_DICT_PATH.
2077       * src/gdcmHeader.cxx verbose comments made discrete.
2078
2079 2002-11-7 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2080       * python/gdcm.i: added a typemap that converts a C++ hashing table
2081         to native Python dictionary.
2082       * python/demo/test.py:
2083         - now uses the native dictionary for exploration of gdcmHeader.
2084         - takes an optional filename argument (the file to parse).
2085       * src/gdcm.h and gdcmHeader.cxx: gdcmHeader now has an accessor on
2086         PubElVals hashing table.
2087       * Dicts/dicomV3.dic removed error prone trailing spaces.
2088
2089 2002-11-6 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2090       * Python wrapping process moved away from src/Makefile to
2091         newly created python/Makefile (as well as gdcm.i)
2092       * python/demo/test.py (that mirrors Test/test.cxx) is effective.
2093       * src/gdcmHeader::FindLength only looks for current vr when necessary.
2094       * src/gdcmDictSet.cxx: the dictionnaries directory path is now imported
2095         from the environement variable GDCM_DICT_PATH (when existing).
2096       * src/gdcmDict::GetTag bug fix.
2097
2098 2002-10-31 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2099       * Straightforward temporary fixes for swig to build the python wrappers.
2100         src/Makefile now has a python working entry [by working we mean
2101         that we can import de shadow classes without errors].
2102
2103 2002-10-29 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2104       * hashtest.cxx removed (since allready in Test)
2105       * src/gdcmlib.h renamed to src/gdcm.h
2106       * src/dcm.i renamed to src/gdcm.i
2107       * src/Makefile prepared for python wrapping
2108
2109 2002-10-29 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2110       * src/gdcmHeader.cxx :
2111         - Parsing of header is now separated from loading of element values
2112           (see gdcmHeader::LoadElements).
2113         - general clean up of hopefully all file access (creation of
2114           ReadInt16 and ReadInt32)
2115
2116 2002-10-22 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2117       * src/gdcmHeader.cxx :
2118         - RecupLgr renamed to FindLength and cut off with new IsAnInteger
2119           method.
2120         - SetLgrElem renamed to SetLength
2121         - GetLgrElem renamed to GetLength
2122         - ~gdcmHeader() made virtual to pesky warning messages at compile.
2123       * src/gdcmElValSet.cxx fixed both GetElValue methods
2124       * Dicts/dicomV3.dic falacious entry [7fe0 0010 OT PXL Pixel Data]
2125         due to IdoDude was cleaned out.
2126
2127 2002-10-21 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2128       * src/gdcmHeader.cxx RecupLgr split in FindVR and RecupLgr. FindVR
2129         concentrates on finding the value representation (when it exists).
2130         RecupLgr now only finds the element value length, and it avoids
2131         returning the unecessary skL (skipped length).
2132         Also, offsetCourant was simply removed (with taille_fich) since
2133         it was redundant with the File position internals (by using
2134         ftell and fseek). This also made skL (see above in RecupLgr) usage
2135         jajun.
2136       * src/gdcmHeaderIdo.cxx src/gdcmIdo.h added. Those files concentrate
2137         on the libido specificities which are handled through class
2138         inheritance.
2139       * Test/implicit_vr.dcm dicom v3 in implicit value representation
2140         added.
2141
2142 2002-10-17 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2143       * Truckload of changes. Parsing of header is barely functional
2144         (see Test/test) with the standard dictionary (see Dicts/dicomV3.dic).
2145
2146 2002-10-10 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2147       * src/gdcmHeader.cxx many addons of low level methods
2148
2149 2002-10-07 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2150       * src/gdcmHeader now contains_IdDcmCheckSwap, _IdDcmRecupLgr,
2151         and _IdDcmSWAP_LONG.
2152
2153 2002-09-12 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2154       * This corresponds to all the changes decided at the meeting of
2155         May 23 2002. Needless to say we are running late...
2156