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