]> Creatis software - gdcm.git/blob - ChangeLog
* Test/ : rename VTK tests to have a best name for the tests
[gdcm.git] / ChangeLog
1 2005-01-19 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2    * Test/ : rename VTK tests to have a best name for the tests
3    * gdcmPython/demo/*.py.in : Change the InitTraversal/GetNextEntry use to
4      GetFirstEntry/GetNextEntry use
5
6 2005-01-18 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
7    * Test/ShowDicom.cxx, ShowDicomSeq.cxx, TestWriteWithVTK.cxx : change the
8      test. Now it's on image content and not on the resulting visualisation...
9      might solve the problem on linux when using the OpenGL drivers
10
11 2005-01-18 Jean-Pierre Roux <jpr@creatis.univ-lyon1.fr>
12    * ENH for DicomDir, DicomDirPatient, DicomDirStudy, 
13                   DicomDirSerie, DicomDirImage
14                   Dict, DictSet classes :
15          -add method GetFirstEntry to replace call to InitTraversal+GetNextEntry
16          -remove InitTraversal method.
17         * UPD Test programs + Example programs
18
19 2005-01-18 Jean-Pierre Roux <jpr@creatis.univ-lyon1.fr>
20    remove useless and never updated keyword \ingroup          
21
22 2005-01-17 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
23    * src/gdcmUtil.cxx : bug fix to find the Windows MAC address. Now, there
24      is no memory access violation
25    * gdcmPython/demo : add python demos using VTK
26
27 2005-01-16 Jean-Pierre Roux <jpr@creatis.univ-lyon1.fr>
28          * FIX 'Dictionnary' is now spelt 'Dictionary'
29                'wether' is now spelt 'whether'
30                          'archieve' is now spelt 'archive'   ;-)
31
32 2005-01-15 Jean-Pierre Roux <jpr@creatis.univ-lyon1.fr>
33     * ADD DicomDir, DicomDirPatient, DicomDirStudy, DicomDirSerie, DicomDirImage
34                related methods, in order not to expose internal mechanisms
35         InitTraversal();
36         GetNextEntry();
37          * REM methods that exposed internal mechanisms :
38         DicomDir::GetDicomDirPatients()
39         DicomDirPatient::GetDicomDirStudies()
40         DicomDirStudy::GetDicomDirSeries()
41         DicomDirSerie::GetDicomDirImages()
42          * UPD Test programs :
43              makeDicomDir.cxx
44              BuildUpDicomDir.cxx
45              TestDicomDir.cxx
46           * UPD Example program
47              PrintDicomDir.cxx
48     * ADD DictSet methods
49         InitTraversal()
50         GetNextEntry()
51
52 2005-01-15 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
53    * Removed the Print/indent/default parameter mess. There is absolutely no
54          reason to have to methods, moreover with the second taking the ostream as
55          *SECOND* parameter. This was clearly a bad hack to get things compile.
56
57 2005-01-15 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
58    * Complete rewrite of the GetMacAddress code. Now the code is *much*
59          smaller (no more MacOSX specific crap). A lot more POSIX oriented.
60          Unfortunately the main code does not work on SunOS, thus provide a specific
61          code for this platform only (and Win32 of course). Since this seems to be
62          working, change CreateUniqueUID to use GetMACAddress instead of the
63          problematic GctestetIPAddress
64
65 2005-01-14 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
66    * Unfortunately to be able to test gdcmDirList I had to break the API
67      a little. Now the class is not a std::list anymore but has a member
68      std::vector (more ITK compatible). Allow unit testing on Win32 and
69      shared libs.
70
71 2005-01-14 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
72    * Update SerieHeader to take into account a Serie Instance UID to properly
73      sort DICOM files
74
75 2005-01-13 Jean-Pierre Roux <jpr@creatis.univ-lyon1.fr>
76    * ENH - Comment out Mathieu's (dangerous) Super Hack
77               for dealing with BIGENDIAN processors
78                         - Move equivalent stuff to BinEntry::WriteContent
79                         When necessary, 16 Bits Pixels are swapped in a small buffer
80                         and then written. This avoid allocating a huge buffer, in
81                         PixelWriteConvertor, and avoid modifying the Pixel Area.
82                         Note :
83               Probabely, the same operation will have to be done when we want 
84               to write image with Big Endian Transfert Syntax, 
85               and we are working on Little Endian Processor
86                                                 
87 2005-01-14 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
88    * src/gdcmDocument.[h|cxx] : comment all methods concerning a flat hash
89      table.
90    * src/gdcmElementSet.[h|cxx] : rename Initialize into InitTraversal
91    * src/gdcmDict.[h|cxx] : add InitTraversal/getNextEntry methods to parse
92      all the dict content.
93    * src/gdcmDictEntry.cxx : add a carriage return at the end of the DictEntry
94      print
95    * Test/TestDict.cxx : add a new test for the dict classes
96
97 2005-01-13 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
98    * src/gdcmDebug.h : Adding an option to redirect debug stream to a 
99                        file. Debug is yanked if compiled with NDEBUG
100
101 2005-01-13 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
102    * src/gdcmDictSet.h : set the default output to the os variable
103    * src/gdcmDictEntry.[h|cxx] : add the Print method
104    * gdcmPython/demo/ : add a new test
105
106 2005-01-13 Jean-Pierre Roux <jpr@creatis.univ-lyon1.fr>
107    * merging of Test/PrintDicomDir and Test/TestDicomDir
108         * removal of now redundant Test/PrintDicomDir
109         * enhancement of Example/PrintDicomDir
110
111 2005-01-13 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
112    * Now, python test might work on systems
113    * Add the PrintDicomDir test
114
115 2005-01-13 Jean-Pierre Roux <jpr@creatis.univ-lyon1.fr>
116    * FIX : First entry following group 0002 was lost for
117                 Explicit Big Endian Transfer Syntax files
118           (group and elem not swaped)
119         
120 2005-01-12 Jean-Pierre Roux <jpr@creatis.univ-lyon1.fr>
121    * FIX : Old quick and dirty 'optimistic' heuristic to deal with
122                 Big Endian Transfer Syntax supposed the group following 0002
123                           begins always by element 0000 (element 0000 is *optional*)
124                           To avoid further troubles, let's be pessimistic, and use
125                           Document::HandleOutOfGroup0002() method 
126          * FIX : comparison between GDCM_NOTLOADED and Transfer Syntax
127               (related pb not yet solved)
128
129 2005-01-12 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
130    * Bug fix for the python part use
131    * Now, PrintHeader.py pass... but outside the ctest use. shit !
132
133 2005-01-12 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
134    * gdcmPython/gdcm.i : bug fix when compiling with MSCV
135
136 2005-01-11 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
137    * Untangle TransferSynatx from gdcm::Document. Now Document only manipulate
138      a string and should ask the global TS dict what are the propreties of 
139      the transfer syntax
140
141 2005-01-11 Jean-Pierre Roux <jpr@creatis.univ-lyon1.fr>
142    * Replace confusing name SwitchSwapToBigEndian name by SwitchByteSwapCode
143    * Add the Document::HandleOutOfGroup0002(uint16_t group) method
144             to swap the Swap Code, at parsing time, when we come out of group 0002
145                  and Transfer Syntax is Big Endian
146                  We should be able to read now 'true DICOM" Big Endian coded images
147          * Add optional run time SetDebugOn (last param) for PrintHeader, PrintFile
148          * Replace the french 'Transfert Syntax' by the english 'Transfer Syntax'
149
150 2005-01-10 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
151    * Hopefully fix the bug on MacOSX and static global initialization.
152    This is the only -minor- patch I found that both please MacOSX and VS6.
153    Other patch would be to declare a const std::string & GDCM_UNFOUND() instead,
154    but this would require a lot of change. Another approach would be that Global
155    create those string and GDCM_UNFOUND becomes a pointer to a string (which
156    gdcm::Global would destroy at exit).
157
158 2005-01-08 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
159    * Fix bug on MacOSX with static initialization in a multy threaded
160          environment. static const string in a header file used to be ill
161          initialized provoquing the freeze of any tests. patch should solve this
162          issue.
163
164 2005-01-08 Jean-Pierre Roux <jpr@creatis.univ-lyon1.fr>
165    * According to Benoit's suggestion, and without any objection from anybody
166       - methods SetxxxByNumber and GetxxxByNumber renamed as Setxxx and Getxxx
167       - methods Dict::Print() and Dict::PrintByKey() merged into Dict::Print()
168       - method gdcmDicomDirObject::GetEntry() renamed as 
169          gdcmDicomDirObject::GetEntryHT() to avoid confusion (and compile error)
170
171 2005-01-07 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
172    * Now gdcm::Debug is clearly a copy/paste of VTK approach. You can manipulate
173      you debug/warning message just as c++ streams which make them very convinient
174      to use. Once this is stabilize I will change the ostringstrem to be
175      redirected to a file (ofstream).
176    * Properly support C99 extension: __FUNCTION__ which allow us to display
177      the name of the function call (GNUC also allow __PRETTY_FUNCTION__ for c++)
178
179 2005-01-07 Jean-Pierre Roux <jpr@creatis.univ-lyon1.fr>
180    * Removal of useless and dangerous methods :
181          GetEntryByName, GetEntryVRByName, GetDocEntryByName, SetEntryByName
182          GetDocEntryByName, GetEntryByName, GetDictEntryByName
183         * Removal of usless methods :
184          Dict::PrintByName, Dict::GetDictEntryByName
185    * Commenting out of probabely useless methods :
186          Dict::GetDictEntryNames()
187          Dict::GetDictEntryNamesByCategory()
188          DictSet::GetPubDictEntryNames()
189          DictSet::GetPubDictEntryNamesByCategory()                      
190         * ENH : New Dicom Dictionary (with Value Multiplicity) is now used      
191         * ENH : Use dicomTS.dic as described in 2004 version    
192         * ENH : Removal out of the Dicom Dictionary of non dicom 'fourth' field
193            Add         to the Dicom Dictionary of Dicom 'Value Multiplicity' field
194                           Add Accessors on VM (Value Multiplicity), and VM related methods                        
195    * ADD : Add a list of 'Dicom Attribute types', as found in
196            http://medical.nema.org/dicom/2004/04_15PU.PDF
197                                      Unused till now...                   
198         * ADD : Add dicomGroupNameAbbreviations.dic
199            should be used to write a method to replace the former
200            Dict::GetDictEntryNamesByCategory()
201
202 2005-01-07 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
203    * src/gdcmDocEntry.[h|cxx] : now the ReadLength is the length of the data
204      to read in the file... and only it ! Length is the efective length of the
205      data in the DocEntry structure
206
207 2005-01-07 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
208    * Change the gdcmDebug approach. Remov the global static debug 'dbg'.
209      And now use a static function call instead, with a global variable. i
210      This is much closer to the VTK approach. Hopefully should be bulletproof
211      and easier to use...hopefully
212
213 2005-01-06 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
214    * Adding GetMACAddres very alpha for now. This is tricky to be cross plateform.
215
216 2005-01-06 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
217    * src/gdcmDocument.[h|cxx] : remove all copy of DocEntry when parsing a file
218
219 2005-01-06 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
220    * src/gdcmDocEntrySet.[h|cxx], gdcmDocument.[h|cxx] : amelioration of
221      ValEntry, BinEntry, SeqEntry creation or replace
222
223 2005-01-06 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
224    * src/gdcmDictEntry.h : now, the IsVRUnknown is correct
225    * src/gdcmDocument.[h|cxx] : simplify the search of VR value when parsing
226      a file
227    * src/gdcmDocEntrySet.cxx : now the created DocEntry without values is good
228      when specifying the VR
229    * src/gdcmVR.[h|cxx] : add usefull method to test the validity of a VR
230    * src/gdcmDocEntry.cxx : amelioration of print
231
232 2005-01-05 Jean-Pierre Roux <jpr@creatis.univ-lyon1.fr>
233    * ADD : Add the method Util::IsCurrentProcessorBigEndian
234           (we'll need it for 'Explicit VR Big Endian' Transfert Syntax)
235         * ADD  Method Document::ComputeGroupLength
236         * ENH : now  parsing creates a Vitual DictEntry for Pixels Element,
237            in order to allow further VR modification by user
238    * REM : removal of once-called method File::WriteBase        
239                 integration of its code in formerly one-line method File::Write
240
241 2005-01-05 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
242    * src/gdcmCommon.h : add the GDCM_UNKNOWN constant. This constant is to
243      replace the different values "??", "Unkn", "Unknown".
244    * src/gdcmDicomDirElement.h, gdcmDictEntry.h, gdcmDictSet.h,
245      gdcmDocEntry.cxx, gdcmDocEntrySet.[h|cxx], gdcmDocument.h, gdcmSQItem.cxx,
246      gdcmVR.cxx : use the GDCM_UNKNOWN constant.
247    * Appears a bug in gdcmDictEntry : IsVRUnknown always returns false... bad
248
249 2004-12-16 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
250    * src/gdcmBase.[h|cxx] : new base class. Contains the PrintLevel and an
251      empty Print Method
252    * Set the gdcm::Base class to some Printable classes
253
254 2004-12-16 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
255    * src/gdcmFile.[h|cxx] : add the Print method
256    * src/gdcmPixelReadConvert.[h|cxx] : add the generalized Print method
257    * src/gdcmDocEntrySet.h : generalize the Print with the PrintLevel
258    * src/gdcmDocument.h : remove the PrintLevel informations
259    * Example/PrintFile.cxx : use the new gdcm::File::Print
260
261 2004-12-16 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
262    * src/gdcmFile.cxx : Add the code of ReplaceOrCreateByNumber to not have
263      problems when compiling with the python wrapping
264
265 2004-12-16 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
266    * src/gdcmFile.cxx : bug fix. Omitted a Push in the DocEntryArchive when
267      writting in ImplicitVR
268
269 2004-12-12 Jean-Michel Rouet <jm.rouet@noos.fr>
270    * src/gdcmPixelReadConvert.[h|cxx], src/gdcmJpeg*.cxx : new handling of
271      JPEG decompression, especially when dicom frames are split into several
272      JPEG Fragments. This makes use of jpeg decompression from memory buffer.
273      This solves reading for example gdcm-JPEG-Lossless_Thoravision.dcm.
274
275 2004-12-10 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
276    * src/gdcmHeader.cxx : change the initialisation of default header.
277      Now, this header is readable by gdm, e-film, DicomWorks
278
279 2004-12-10 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
280    * src/gdcmFile.[h|cxx], gdcmPixelReadConvert.[h|cxx] : change the API.
281      Rename Decompressed to Raw
282    * Use the API changes in gdcm::File.
283    * vtk/vtkGdcmWriter.[h|cxx] : add the possibility to write in other modes
284      Memory leaks fixed
285
286 2004-12-10 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
287    * vtk/vtkGdcmWriter.cxx, Example/WriteDicomSimple.cxx : add comments for
288      each added entry in the header. Replace the 'Planes' field by the 'Number
289      of Frames' field
290
291 2004-12-09 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
292    * vtk/vtkGdcmWriter.[h|cxx] : now can write stack of images.
293    * vtk/vtkWriteDicom.cxx : can write 2D stack or 3D image
294
295 2004-12-09 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
296    * Example/WriteDicomSimple.cxx : example to write a dicom file from nothing.
297      At this time, this image isn't readable by e-film... waiting JPR help to
298      solve it.
299
300 2004-12-09 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
301    * src/gdcmPixelReadConvert.cxx : bug fix when would forcing load of a
302      DocEntry. Now use methods of the Document !
303
304 2004-12-09 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
305    * Test/ShowDicomSeq.cxx : bug fix
306  
307 2004-12-08 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
308    * vtk/vtkGdcmReader.[h|cxx] : bug fix. Plane order isn't inverted
309    * vtk/vtkGdcmWriter.[h|cxx] : correctly write images (the Y axis is inverted)
310    * Test/ShowDicomSeq.cxx : new test to verify the use of AddFileName method
311    * Test/ShowDicom.cxx, TestWriteWithVTK.cxx : set the threshold of regression
312      test to 0.0
313    * Test/TestCopyRescaleDicom.cxx : remove unused variable
314    * Test/CMakeLists.txt : add the creation of the gdcmDataSeqImages.h file
315      containing found sequences
316
317 2004-12-07 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
318    * Test/ShowDicom.cxx, TestWriteWithVTK.cxx : bug fix, now this test pass
319      not at all time
320    * Test/TestCopyRescaleDicom.cxx : rearrange the test to correctly pass...
321      Some fields in BinEntry must be copied to not seg fault when making the :
322               gdcm::File *copy     = new gdcm::File( copyH );
323      and tests are now made on good variables
324
325 2004-12-07 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
326    * vtk/vtkGdcmWriter.[h|cxx] : add a first version of vtkGdcmWriter
327    * src/gdcmValEntry.cxx : bug fix when setting the value. Problems of odd
328      length
329    * src/gdcmHeader.cxx : Remove a useless call to Util::DicomString
330    * Add vtkGdcmWriter example and test
331
332 2004-12-07 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
333    * Test/TestUtil.cxx : reformat the source code
334    * vtk/vtkGdcmReader.cxx : remove and change prints
335    * src/gdcmValEntry.[cxx|h] : now set the length of the value when calling
336      SetValue
337    * src/gdcmBinEntry.[cxx|h] : SetValue method don't set the length
338    * src/*.cxx : remove all useless call to SetLength of a ValEntry object
339
340 2004-12-07 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
341    * src/gdcmPixelWriteConvert.[h|cxx] : ficnished this class
342    * src/gdcmFile.cxx : finished the correctly use of PixelWriteConvert
343
344 2004-12-06 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
345    * src/gdcmDocument.cxx : bug fix when opening the file. All read is followed
346      by an eof to prevent all bad read of the file... and in this case, the
347      file isn't readable. 
348
349 2004-12-06 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
350    * Example/Volume2Dicom.cxx : comment unused variables
351    * Test/PrintDicomDir.cxx : comment unused variables
352    * Test/BuildUpDicomDir.cxx : remove dbg.Verbose. Remove the FIXME.
353    * src/SQItem.[h|cxx] : remove the PtagHT variable. Remove the AddDocEntry
354      method that is redondant with AddEntry.
355    * src/gdcmDocEntrySet.h : add pure virtual methods common to ElementSet and
356      SQItem
357
358 2004-12-04 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
359    * Bug fix due my last commit (compilation under Windows).
360    * Example/Volume2Dicom : bug fix in the file and reformatting source code
361    * src/gdcmFile.h : bug fix. Variable type and variable name had same name
362
363 2004-12-03 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
364    * Huge cleanup:
365      - Remove printf / sprintf
366      - include iostream AFTER gdcm so we don't get warnings
367      - GDCM_NO_ANSI_STRING_STREAM shouldn't be used explitely ouside of gdcm 
368        source
369      - Also remove tons of include from header files, hopefully this should 
370        speeup the compilation time, since it was becoming a dog slow.
371      - Remove gdcm.h as it include way too many files and slow down compilation 
372        (plus it is not up to date)
373      - remove 'using namespace std' this is BAD !
374
375 2004-12-03 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
376    * Remove memory leaks on the DicomDir
377    * Remove some useless data in DicomDirObject
378    * Add usefull methods in SQItem, to be complient withe the ElementSet
379
380 2004-12-03 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
381    * src/gdcmFile.[h|cxx] : now use FileType instead of TWriteType.
382
383 2004-12-03 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
384    * src/gdcmPixelWriteConvert.[h|cxx] : new class to write data (and in the
385      future, with convertion)
386    * src/gdcmFile.[h|cxx] : the PixelWriteConverter instance replace Pixel_Data
387      and ImageDataSize values. Remove the method to get the PixelReadConverter
388      from the output of the class
389
390 2004-12-03 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
391    * Rename src/gdcmPixelConvert.[h|cxx] to src/gdcmPixelReadConvert.[h|cxx]
392
393 2004-12-02 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
394    * vtk/vtkGdcmReader.cxx : correct error in vtkDebugMacro, vtkWarningMacro
395      and vtkErrorMacro use.
396    * gdcmPython/gdcm.i : corrections to avoid warnings at compilation
397
398 2004-12-02 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
399    * Test/TestCopyDicom.cxx : the new dicom created is created empty, without
400      file name in input
401    * src/gdcmSeqEntry.cxx : bug fix in destruction of an element
402    * src/gdcmHeader.cxx : bug fix. Keep the string, otherwise it is destroyed.
403      The string leaves only in the fonction. So when we make a .c_str(), we
404      get the pointeur on the first element, element that will be destroyed 
405      immediately after thee instruction.
406    * src/gdcmDocument.cxx : remove memory leaks. Bug fix when testing if the
407      file has been opened : the test must be made on the content of the 
408      pointer and not directly on the pointer !
409      Code formatting
410
411 2004-12-02 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
412    * gdcmPython/gdcm.i : change gdcmHeaderHelper to gdcmSerieHeader. Now,
413      the python part recompiles
414
415 2004-11-30 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
416    * Test/ShowDicom.cxx : Change the test to only open one vtkImageViewer.
417      Otherwise, under linux (Graphic card : NVidia / SE : FedoraCore 1) the
418      X session is killed (for my computer... it seems to not be identic on
419      all linux)
420
421 2004-11-30 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
422    * Test/ShowDicom.cxx : now can be used with an off-screen rendering to
423      avoid problems (otherwise, the difference test between the visible image
424      and the reference is incorrect. If the reference is greater than the
425      screen resolution, it's produce errors).
426      Can be used for only one image. Can be used with a visible flag.
427    * vtk/vtkGdcmReader.cxx : remove commented codes.
428    * vtk/vtkGdcmReader.h : add the gdcmCommon.h include file to avoid warnings
429      under windows at compilation
430    * vtk/vtkgdcmViewer.cxx : reformat the file. Apply a default window/level
431      for grayscale images
432    * vtk/GdcmToBaseline.cxx : new program to easy create the reference image
433
434 2004-11-30 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
435    * src/gdcmFile.[h|cxx] : bug fix for ACR-LIBIDO files when writting the file
436    * Test/TestAllReadCompareDicom.cxx, TestReadWriteReadCompare.cxx : add
437      tests on the image size X, Y, Z
438
439 2004-11-26 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
440    * Remove some useless methods in gdcm::Document, gdcm::Header and gdcm::File
441    * Rename gdcmHeaderHelper.[h|cxx] to gdcmSerieHeader.[h|cxx] to be coherent
442      between the class name and the file name
443
444 2004-11-25 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
445    * src/ : fix compilation warnings for the Write method (2 different
446      proto). So Rename 'Write(ifstream* fp' into 'WriteContent(ifstream* fp'
447      fix compilation warnings for the gdcm::Document::TransferSyntaxStrings
448      variable... create a static method in gdcm::Document to access to
449      this variable content.
450
451 2004-11-25 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
452    * src/gdcmDocument.[h|cxx] : set the Transfert Syntax values to the header
453      file, to be accessed by other files (like gdcmFile). Remove commented
454      code. Move the change of the header to the gdcmFile, using the
455      DocEntryArchive
456    * src/gdcmHeader.[h|cxx] : the write is completely made in the Header.
457      To be sure of that (and simplify calls), the Write of the header now
458      gets a file name and not a file pointer (std::ifstream).
459    * src/gdcmFile.[h|cxx] : apply the write file type to the header, using the
460      DocEntryArchive. Remove all open of the written file
461
462 2004-11-25 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
463    * vtk/vtkGdcmReader.cxx : compilation bug fix for the vtk part
464
465 2004-11-25 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
466    * src/gdcmDocument.cxx : fix bug... test if the fp is opened to use it
467    * src/gdcmPixelConvert.cxx : calculate the image size when while the grab of
468      the header.
469    * src/gdcmFile.[h|cxx] : remove PixelRead and ImageDataSizeRaw variables and
470      some corresponding methods. Write correctly the file and check before
471      write
472    * Test/TestCopyDicom.cxx, TestReadWriteReadCompare.cxx,
473      TestAllReadCompareDicom.cxx : pass the write of images to RGB and test
474      is now on RGB data (as before my last commit
475    * Example/PrintHeader.cxx, PrintFile.cxx : repad files.
476
477 2004-11-24 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
478    * src/gdcmBinEntry.cxx, gdcmSeqEntry.cxx, gdcmSQItem.cxx, gdcmValEntry.cxx :
479      Add a print information of the type of the entry
480    * src/gdcmDocument.cxx : add the write of the preambule of a Dicom file.
481      It was in the gdcmFile, and all write have been regrouped
482    * src/gdcmFile.[h|cxx] : add methods to get the Raw data elements and size.
483      Write correctly all dicom files (in decompressed mode only at this time)
484    * Test/ : test on files are now made using Raw data and not color data if
485      any.
486    * Example/PrintFile.cxx : add more printings
487
488 2004-11-24 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
489    * Amelioration of code, remove some code copy. For the loading of
490      BinEntry (in gdcmDocument), add the test to verify if the file is already
491      opened or not.
492
493 2004-11-24 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
494    * src/gdcmDocEntryArchive.[h|cxx] : bug fix and add a method to temporary
495      remove a DocEntry in the header (push an empty DocEntry)
496    * src/gdcmFile.[h|cxx] : remove some useless variables, methods and code
497      lines. Bug fix in the initialization of the PixelConvert and the 
498      DocEntryArchive
499    * src/gdcmElementSet.[h|cxx] : add methods Initialize and GetNext to
500      use in TestCopyDicom (now this test can run under windows... but fails)
501    * Test/TestCopyDicom.cxx : amelioration of the test :
502      - test the pixels written
503      - add test points to quickly find where is the error
504      - can set a file name input and output in arguments
505    * Test/TestAllReadCompareDicom.cxx, TestReadWriteReadCompare.cxx : 
506      amelioration of the test output
507
508 2004-11-23 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
509    * src/gdcmDocEntryArchive.cxx : complete the print function, that prints
510      all replaced DocEntry's
511    * src/gdcmFile.[h|cxx] : remove all changes of the header when getting data.
512      Now, each needed DocEntry to modify is duplicated, modified and inserted
513      to the header using DocEntryArchive. Thus, after save, we can restore the
514      header initial state.
515
516 2004-11-22 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
517    * src/gdcmFile.h : fix compilation errors on zorglub linuc computer
518
519 2004-11-19 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
520    * src/gdcmDocEntry.cxx : remove the copy of the DictEntry... there isn't
521      correct to copy it. The DictEntry is specified at the DocEntry creation,
522      then, it musn't change in the time.
523    * src/gdcmDocEntryArchive.[h|cxx] : new class. It's goal is to change the
524      header correctly. At this time, the change is only made for the first
525      level of the Document. In the future, it might consider sequences.
526      The change is made by replacing a DocEntry by an other that is created
527      outside the class. The old value is kept. When we restore the header
528      status, the added DocEntry is deleted and replaced by the old value.
529    * src/gdcmElementSet.h : Set the DocEntryArchive like friend.
530    * src/gdcmFile.[h|cxx] : Use the gdcmDocEntryArchive. Add methods to
531      set the write type to explicit VR, implicit VR or ACR. Add methods to set
532      the write mode to native, decompressed or RGB (but not used at this time)
533
534 2004-11-15 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
535    * src/gdcmSeqEntry.cxx : add initialisation of variable SeqTerm
536    * src/gdcmDocument.cxx : add delete of DocEntry's to remove some memory leaks
537
538 2004-11-15 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
539    * src/gdcmDocument.cxx : now, when using the ReplaceOrCreateByNumber to
540      set a BinEntry, the binArea is copied (like to set a ValEntry, the string
541      is copied).
542    * Test/TestCopyDicom.cxx, Example/TestCopyDicom.cxx : the image data isn't 
543      set because already copied when copying the BinEntry's of the header
544    * Test/TestAllReadCompareDicom.cxx : remove warnings
545
546 2004-11-15 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
547    * FIX : now, the DocEntries are all deleted in the gdcmElementSet.
548      Two problems appear when doing it :
549       - with the gdcmFile : when the GetImageData method is called, the pixels
550         are stored in the gdcmPixelConvert, but a gdcmBinEntry link to these
551         data (pixels). And each structure destruct the data when it's
552         destructed. So we have two destructions for the same data. To solve it,
553         a flag is added in the gdcmBinEntry to indicate if the BinEntry owns the
554         data or not. If it doesn't own data, then they will not destroyed by
555         the gdcmBinEntry.
556       - with the gdcmDicomDir : the sequences (gdcmSQItem) contain DocEntry
557         elements. The DicomDir* (DicomDirPatient, etc.) inherit from SQItem.
558         Thus destruct the DicomDir* elements and the TagHT of the ElementSet 
559         create a double destruction of the same DocEntry's. So, to solve it, 
560         the TagHT is simply cleared and the DicomDir* elements are destroyed.
561    * TODO : add an entry concerning memory leaks in the DicomDir
562
563 2004-11-15 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
564    * FIX : src/gdcmDocument.cxx Remove obvious code in the destructor
565    * FIX : src/gdcmPixelConvert : Set to NULL the deleted structures in the
566      squeeze method
567
568 2004-11-15 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
569    * FIX: src/gdcmUtil.cxx : to compile with MSVC6
570    * src/gdcmDocument.cxx : fix memory leaks. Fix possible bugs : use an object
571      after it have been deleted
572
573 2004-11-16 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
574    * FIX: src/* fix the doxygen warnings.
575    * src/gdcmVR.cxx: removed some redundant tests (e.g. LO)
576    * src/gdcmDocument.cxx: FIX ::ComputeRLEInfo() rleSegmentOffsetTable[]
577      was erroneously defined with a size of 15 instead of 16. [many thanks
578      to Jean Michel Rouet for pointing out this bug].
579
580 2004-11-15 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
581     1. Finish merging JMR patch for writting DICOM from scratch
582     2. Fix -hopefully- bug with MONOCHROME and space vs null character
583     3. Use const ref when possible
584     4. Add a new function InitializeDefaultHeader, which create a template DICOM header (CT image for now)
585     5. A few more comments
586     6. CreateUniqueUID can now be called without parameter"
587
588 2004-11-15 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
589   * ENH: Slightly bigger patch:
590     1. Getting toward full integration of JMR patch for writting dicom from scratch
591     2. Update Test to test part of this patch: CreateUniqueUID
592     3. File was not close properly in gdcmDict
593     4. Use of typedef is to be prefered when possible (gdcmDict.cxx)
594     5. Use of const ref instead of copy (speed issue)
595     6. Remove temporary (duplicate) string in TranslateToKey
596     7. Mark extremely dangerous code as such (gdcmDocument.cxx and AddEntry fallback case)
597     8. Do not repeat virtual in subclasses
598     9. Implemented in gdcm::Util two new function: GetIPAddress, and CreateUniqueUID
599
600 2004-11-15 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
601   * Apply first patch toward better string comparison when dealing with broken 
602     DICOM files. Essentially the string could be padded with a space instead 
603     of a null character as defined by standard
604   
605 2004-11-15 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
606   * src/gdcmDocument.[cxx|h] : fix memory leaks. The return is suppressed
607     because never used... and in the same time, that's remove some memory leaks
608
609 2004-11-15 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
610   * src/gdcmFile.cxx : now delete the PixelConvert instance.
611   * In examples and tests : change the type of image data variables from void*
612     to uint8_t*. Remmove all delete on image data variables
613
614 2004-11-10 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
615   * src/gdcmDocument.cxx : Set the file pointer TP to 0 in the constructors.
616     Verify the file pointer value before open the file, and if it's not null,
617     a verbose message is generated.
618     Close correctly the file when the file isn't considered dicom-like. The
619     correctly close is a call to CloseFile.
620     When closing the file pointer, test if its not null to close the file.
621   * src/gdcmPixelConvert.cxx : bug fix for the SIEMENS_GBS_III-16-ACR_NEMA_1.acr
622     file. For an uncompressed image, the copied data correspond in the least 
623     case to the image size (calculated) or the image size specified in the 
624     header. A verbose is generated if these two size mismatch
625
626 2004-11-09 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
627   * Test/TestAllReadCompareDicom.cxx : test the existence of the directory
628     using an 'ifstream' other than a 'FILE *'. The previous solution ('FILE *')
629     break under windows (with msvc6 compilation).
630
631 2004-11-09 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
632   * src/gdcmDicomDir.h : bug fix for the last Boix's commit (problem when
633     compiling with MSVC6)
634
635 2004-11-09 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
636   * Bugs fix for the Windows build with VC6
637   * CMakeLists.txt : bug fix - The include of the VTK lib is made only when it's
638     needed (only for projects required VTK). If the VTK is included in all
639     projects, there is conflicts with the jpeg lib of vtk when compiling the
640     gdcmjpeg[8,12,16] projects. The first conflict is on the jmorecfg.h file.
641   * src/gdcmUtil.h : export binary_write methods. Otherwise, there's problems
642     when compiling the gdcm_wrap.cxx file (created by the compilation of the
643     gdcm.i file)
644   * vtk/vtkGdcmDemo.cxx : remove the use of std namespace for the cerr use
645     (like it's already made for the cout use). Otherwise, conflict with the
646     std::cerr of vtk.
647
648 2004-11-09 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
649   * src/gdcmDicomDit.h the Method typedef is now local to DicomDir class.
650   * gdcmPython/gdcm.i:
651     - comments on the DicomDir::Method related usage added.
652     - now that we use the namespace gdcm, a lot of internal classes do
653       NOT need to be wrapped anymore.
654   * gdcmPython/demo/DicomDirProgressMethod.py (that uses the above
655     DicomDir::Method) new example added.
656
657 2004-11-05 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
658   * Improve string manipulation. I now inforce the notion of 'DicomString'
659     A DicomString can contain as many \0 as they want
660     and it is *always* of even length.
661     We only support odd length for very rare case. 
662     And in the near future this should be removed.
663
664 2004-11-03 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
665   * /binary_write/ gdcm source. Now even on big endian we are writting
666     little endian. This should -heopfully- fix some tests
667
668 2004-11-03 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
669   * Now the dictionary is compiled into gdcm lib. This is a default
670     behavior, thus any dic file specified is picked before failback to 
671     the one comiled into lib
672
673 2004-10-27 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
674   * Change internals for gdcmDict. Don't use any 'new' any more.
675     This should definitely solve any leak problem, and we should be
676     as fast as before, as long as don't modify too much the dictionary.
677
678 2004-10-25 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
679   * STYLE: ivars should start with a capital letter. 
680   * Accessors should be const to avoid people starting modifying stuff (since this is a ref). 
681   * remove 'virtual' as Style specify subclasses shouldn't reuse the keyword
682   
683 2004-10-22 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
684   * Doc/Dicom2004_Part5.pdf added (thanks to JPR).
685   * Dicts/dicomTS2004.dic, dicomV3VM2004.dic, groupNameAbbreviations2004.dic
686     new 2004 dictionaries added (thanks to JPR).
687   * FIX dashboard warning RLEFrame::NumberFragments is now of type unsigned int
688   * CLEANUP_ROUND (15) for gdcmPixelConvert
689     - RLEFrame::NumberFragments is now of type unsigned int
690     - gdcmFile::GetImageData(), GetImageDataIntoVector(), GetImageDataRaw()
691       are now all based on PixelConverter. ::GetImageDataIntoVectorRaw()
692       no longer exists.
693
694 2004-10-21 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
695   * Initial work in gathering all transfer syntax accessors. clearly 
696    IsDecompressed/IsJPEG2000/IsJPEGLossless/IsRLELossless shouldn't be all 
697    ivars, but only one transfersyntax (class) ivar with equivalent method on 
698    the class.
699   
700 2004-10-21 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
701   * Removed all FILE* ref and replace by ifstream/ofstream. For now I use a temp 
702     solution with the two files jdatadst.cxx and jdatasrc.cxx, this need to be 
703     discussed (plus I didn't like having a 2000 lines patch not commited)
704
705 2004-10-21 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
706   * src/gdcmDocument.cxx: wrong type on return fixed (thanks dashboard)
707   * CLEANUP_ROUND (14) for gdcmPixelConvert
708     - PixelConvert::GetLutRGBA(FILE*) is now GetLutRGBA() (no fp needed)
709     - PixelConvert::BuildRGBImage()(FILE*) is now BuildRGBImage() (no fp needed)
710     - File::GetImageDataIntoVector() doesn't need unnecessary OpenFile() and
711       CloseFile() anymore.
712     - File::GetImageDataRaw() doesn't call GetImageDataIntoVectorRaw()
713       anymore and hence avoids storing a copy of PixelConvert::Decompressed
714       into File::Pixel_Data.
715
716 2004-10-20 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
717   * src/gdcmDocument.cxx ftell() return properly stored in a long (i.e.
718     no longer depends on's programmers PMS = Preposterous Mood Swings ;).
719   * CLEANUP_ROUND (13) for gdcmPixelConvert
720     Substituted File::ParsePixelData() with PixelConvert::Print() new
721     method:
722     - src/gdcmParsePixels.cxx removed (only contained File::ParsePixelData())
723     - src/gdcmRLEFrame.cxx, gdcmJPEGFragment.cxx added. Added a ::Print()
724       method to those classes.
725     - src/gdcmFile.[cxx|h]:
726       -- Added a ::Print() method.
727       -- PixelConverter is now a reference instead of a member.
728       -- gdcmPython/gdcm.i: added "using namespace gdcm" in order for
729          gdcm_wrap.cxx to "understand" File::GetPixelConverter()
730
731 2004-10-18 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
732   * Doc/CMakeLists.txt, doxygen.config.in: when dot is present the
733     collaboration diagram and inheritance diagram should be generated with
734     doxygen.
735   * Doc/Website/Sidebar.html: Dashboard is now also in the sidebar.
736   * gdcmPython/gdcm.i: gdcmRLEFramesInfo.h gdcmJPEGFragmentsInfo.h are
737     pointlessly wrapped (see
738     http://www.creatis.insa-lyon.fr/pipermail/dcmlib/2004-October/000692.html )
739   * CLEANUP_ROUND (12) for gdcmPixelConvert (sugar is my friend stage)
740     - Header::GetLUTRGBA() moved to PixelConvert::GetLutRGBA()
741     - vtk/vtkGdcmReader.cxx: adapted to displacment of Header::GetLUTRGBA()
742     - Document::RLEInfo and JPEGInfo are now pointer members (Swig thing)
743     - src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]:
744       -- File::Initialise: PixelConverter setup moved away to
745            PixelConverter::GrabInformationsFromHeader()
746       -- File::GetImageDataIntoVector(): Lut R + Lut G + Lut B color table
747          interpretation moved away to PixelConverter::BuildRGBImage()
748
749 2004-10-16 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
750   * Remove GDCM_EXPORT keyword from gdcm::DirList due to :
751     http://support.microsoft.com/support/kb/articles/Q168/9/58.ASP
752
753 2004-10-15 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
754   * src/gdcmDebug.cxx last ditch attempt to get warning/error messages
755     displayed on Win32 when a brutal abort() occurs (because of uncatched
756     exception). See TODO new entry of this commit for more on this.
757   * TODO added new entry.
758   * CLEANUP_ROUND (12) for gdcmPixelConvert (nicotine is my friend stage)
759     src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]:
760     - HandleColor is no longer called from gdcmFile.cxx
761     - gdcmPixelConvert.cxx clean up on method arguments and internal
762       variable names for semantical coherence.
763
764 2004-10-14 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
765   * Finished lossless transition, not only do we now read all lossless jpeg
766   images, without the need of the Cornwell lib, but we do read them properly now
767   * To reduce code (well to avoid code duplication), I defined a common place
768   for jpeg read/write: gdcmJpeg.cxx. Now gdcmJpeg[8,12 16] include this file and
769   redefine symbols. This is not perfect but this the best solution I found for a
770   compilation time jpeg option.
771
772 2004-10-13 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
773   * Update jpeg ijg lib to support lossless jpeg implementation
774     For more info look in jpeg/libijg/README.GDCM.txt for necessary steps to
775     reproduce at home.
776   * Also added a special copyright for dcmtk since we use their bugfixes.
777   Thanks dcmtk crew !
778
779 2004-10-13 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
780   * Doc/Website/MailingList.html added (Sidebar.html changed accordingly).
781   * gdcmPython/gdcm.i: fix for compilation of wrappers (Note: %include order
782     matters, as stated in warning note at begining of %include section).
783   * src/gdcmDicomDir*.[cxx|h]: coding style
784   * src/gdcmDocument.h: doxygen \ref seems uncompatible with \todo.
785   * src/gdcmJpeg8.cxx: doxygen fix.
786   * CLEANUP_ROUND (12) for gdcmPixelConvert (seing the ligth stage)
787     src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]: color handling moved
788     from File:: to PixelConvert::.
789
790 2004-10-12 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
791   * CLEANUP_ROUND (11) for gdcmPixelConvert (cafeine is my friend stage)
792     src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]:
793      - more code moved away from File:: to PixelConvert::
794      - fat setup of PixelConverter set in place in File::Initialise.
795
796 2004-10-12 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
797   * Apply patch for namespace in gdcm. Didn't rename files for keeping a sort of
798   namespace at the file system level. So now you should convert your examples
799   like this:
800     gdcmHeader  ->   gdcm::Header
801   It would be nice if people keep in mind to no open the namespace, since it
802   allows compilation on broken plateform which were defining common symbol in
803   the standart namespace (like LP, Unknown ...)
804
805 2004-10-10 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
806   * CLEANUP_ROUND (10) for gdcmPixelConvert (Xanax is my friend stage)
807     The JPEG fragments are now parsed at the same stage than the RLE
808     information. All code related to JPEG is now in gdcmPixelConvert:
809     - src/gdcmJPEGFragment.h and gdcmJPEGFragmentsInfo.[h|cxx] added 
810     - src/gdcmJpeg12.cxx, gdcmJpeg2000.cxx and gdcmJpeg8.cxx no longer
811       export a gdcmFile:: method. Those are simply global functions
812       (for the time being this is better than having them attach to
813        either gdcmFile:: or gdcmPixelConvert::).
814     - src/gdcmDocument.[cxx|h], gdcmDocument:: now parser the JPEG fragments
815       and stores the result in a gdcmJPEGFragmentsInfo.
816     - src/gdcmFile.[cxx|h] and gdcmPixelConvert.[cxx|h]: all JPEG related
817       code (among other stuff) moved away from gdcmFile:; to 
818       gdcmPixelConvert::
819
820 2004-10-08 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
821   * src/gdcmCommon.h now declares int8_t for non stdint.h plateforms.
822   * CLEANUP_ROUND (7) for gdcmPixelConvert (lost at sea)
823     - src/gdcmFile.h gdcmPixelConvert.cxx gdcmPixelConvert.h gdcmRLE.cxx:
824       clean up of RLE related code. 
825   * CLEANUP_ROUND (8) for gdcmPixelConvert (end of RLE nigthmare)
826     - src/gdcmRLE.cxx removed
827     - src/gdcmPixelConvert.cxx all RLE code is now in PixelConvert::
828     - src/CMakeLists.txt gdcmFile.[cxx|h] changed accordingly
829     - src/gdcmRLEFrame*.h gdcmPixelConvert is now a friend class.
830   * CLEANUP_ROUND (9) for gdcmPixelConvert
831     - src/gdcmFile.[cxx|h} gdcmPixelConvert.[cxx|h], SwapZone(),
832       ConvertReorderEndianity(), ConvertDecmpres12BitsTo16Bits() moved
833       away from gdcmFile:: to gdcmPixelConvert::.
834
835 2004-10-07 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
836   * CLEANUP_ROUND (5) for gdcmPixelConvert (Upshit creek without a paddle)
837     - src/gdcmDocument.[cxx|h] Parse7Fe0 renamed to ComputeRLEInfo.
838       This is because Parse7Fe0 used to parse the pixels to compute the
839       length. This task was passed over to FindDocEntryLengthOB() a long
840       time ago, EXCEPT I had forgotten the OW case...
841       Hence Parse7Fe0 was no longer necessary. When renaming to ComputeRLEInfo
842       we just recylce the code for parsing RLE fragments and computing
843       offsets.
844   * CLEANUP_ROUND (6) for gdcmPixelConvert (man, I need a paddle bad)
845     - src/gdcmRLE.cxx: is now much simpler and avoids code replication
846         with the retired Parse7Fe0().
847     - src/gdcmRLEFrame.h: type fix for properly computing OffSet[]
848     - src/gdcmDocument.cxx: segments offset are now correct + clean up.
849
850 2004-10-06 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
851   * CLEANUP_ROUND (3) for gdcmPixelConvert (nightmare stage)
852     - src/gdcmRLEFramesInfo.[cxx|h], gdcmRLEFrame.h added
853     - src/gdcmDocument.[cxx|h] ::Parse7FE0 now sets up the RLEInfo.
854     - src/CMakeLists.txt: alphabetic order reodering + new entries.
855   * CLEANUP_ROUND (4) for gdcmPixelConvert
856     - src/gdcmDocument.[cxx|h] ::ParseDES and ::ParseSQ no longer bother
857       to return an unused length.
858
859 2004-10-09 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
860   * Remove all sprintf from the code to centralize in one spot in gdcmUtil
861     this should be cleanner from the plane view. The iostream are erally a pain
862     to use to do simple stuff.
863
864 2004-10-04 Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
865   * Redo the compilation of the ijg jpeg library. Now only one source is
866     necesseray. No need to rename file by hand what so ever. CMake handle the
867     copying of the file within different directory, configure header file to
868     modify some symbol. The only addition made to ijg wasd a mangle table so
869     that symbol are different whether we are within 8bits or 12bits.
870
871 2004-10-01 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
872   * Added documentation of vtkgdcmReader on Website:
873      - testvtkGdcmReader.cxx renamed to vtkGdcmDemo.cxx (to be compatible
874        with it's binary name).
875      - vtk/vtkGdcmDemo.cxx and vtkgdcmViewer.cxx: added comments for
876        the Website to be more complete.
877      - Doc/doxygen.config.in: vtk/vtkGdcmReader.cxx now appears on 
878        doxygenated documentation.
879      - Doc/DoxyVtkGdcmReaderExamples.txt added
880        (see http://www.creatis.insa-lyon.fr/Public/Gdcm/html.developper/
881                   DoxyVtkGdmReaderExamples.html )
882   * src/win32, vtk/win32 manually maintained .dsp and .dsw removed.
883   * CLEANUP_ROUND (3) for gdcmPixelConvert
884    - src/gdcmFile.cxx, gdcmFile.h splitting GetImageDataIntoVectorRaw
885
886 2004-09-29 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
887   * CLEANUP_ROUND (2) for gdcmPixelConvert
888    - src/gdcmFile.cxx, gdcmFile.h splitting GetImageDataIntoVectorRaw
889
890 2004-09-29 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
891   * CLEANUP_ROUND for gdcmPixelConvert:
892     - src/gdcmFile.cxx, gdcmFile.h, gdcmHeader.cxx, gdcmHeader.h clean up
893     - src/gdcmPixelStuff[h|cxx] removed
894     - src/gdcmPixelConvert[h|cxx] added. Preparatory work included.
895     - src/CMakeLists.txt changed accordingly
896   * GDCMHOME clean up:
897     - MANIFEST.in, WrapSwig.py, WrapVTK.py, distutilsWrapping.py and
898       gdcmVersion.py moved to newly created ATTIC related
899       gdcmPython/SetupOldies/ directory.
900   * Autotools clean up:
901     - */*/Makefile.am removed AT EXCEPTION of gdcmPython/Makefile.am
902     - autogen.sh configure.in acinclude.m4 python.m4 removed 
903
904 2004-09-27 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
905   * src/*.cxx *.h Reference to License.htm fixed to License.html.
906   * Doc/CMakeLists.txt, doxygen.config.in: fix.
907   * Doc/Website/ConformanceSummary.html, minimal conformance statement added.
908
909 2004-09-24 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
910   * TODO updated with Mathieu suggestions. I proposed a template for
911     describing TODO entries and used it for new entries.
912   * Added Doc/Website/CodingStyle.html, Developpers.html,
913     DeveloppersPython.html, GdcmDataCvs.html and
914     DownloadVersion0_1.html, DownloadVersion0_3.html.
915   * Some Doc/*.txt Doxygen files (which do not really concern the
916     documentation itself, but the website) moved to html and
917     placed in directory Doc/Website:
918     - Doc/DoxyDevelInstal.txt moved to Doc/Website/Developpers.html
919     - Doc/DoxyInstallation.txt moved to Doc/Website/Installation.html
920     - Doc/DoxyIntroduction.txt included in Doc/Website/Main.html
921   * Doc/DoxyfileDeveloppers, DoxyfileUsers, Makefile.am oldies removed.
922   * CMakeLists.txt changed accordingly.
923   * DEVELOPPER spread out in Doc/Website/Developpers.html, CodingStyle.html,
924     DeveloppersPython.html
925   * INSTALL nows refers to Doc/Website/Installation.html
926
927 2004-09-23 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
928   * Added Doc/Website directory, that contains a first raw version
929     of gdcm Web site.
930
931 2004-09-23 Jean-Pierre Roux
932   * FIX In order not to be poluted any longer by casting problems,
933     the member VoidArea of gdcmBinEntry is now uint8_t* (instead of void *)
934     we can now delete[] it safely 
935   * VoidArea is now called BinArea (less confusing name),
936     and all the methods called ...VoidArea... are now ... BinArea...
937   * class gdcmObject is now called gdcmDicomDirObject (less confusing name)
938
939 2004-09-22 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
940   * src/gdcmDocument.cxx: gdcmDocument::~gdcmDocument() doesn't clear (nor
941     clear) TagHT, which is an inherited member of gdcmElementSet. It is
942     up to the destructor of gdcmElementSet to clean up TagHt and it's
943     pointed content.
944
945 2004-09-21 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
946   * Test/CMakeLists.txt: update to follow gdcmData renamings.
947   * src/gdcmCommon.h, gdcmDocument.cxx: doxygen typos
948
949 2004-09-17 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
950   * ENH: added some utility method that builds a flat dictionary
951     holding all the Dicom entries contained in the recursive structure
952     of a gdcmElementSet. Refer to add FlatHashTablePrint.cxx for 
953     an example of usage.
954     - src/gdcmDocument.[h|cxx] added BuildFlatHashTableRecurse() and
955       BuildFlatHashTable() that build a flat dictionary.
956     - src/gdcmElementSet.h: added a new private GetTag() accessor.
957       gdcmDocument is now a friend of gdcmElementSet.
958     - src/gdcmElementSet.cxx: clean up.
959     - Example/FlatHashTablePrint.cxx added.
960     - Example/CmakeLists.txt changed accordingly
961
962 2004-09-16 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
963   * gdcmDocEntrySet::SQDepthLevel and gdcmDocEntrySet::BaseTagKey attributes
964     moved away from gdcmDocEntrySet (since this class is an abstract class
965     acting like an interface). SQDepthLevel and BaseTagKey are now
966     in class 
967     - src/gdcmDocEntrySet.[h|cxx] removal of SQDepthLevel and BaseTagKey
968       and associated accessors. Doxygenation of the class.
969     - src/gdcmSQItem.[h|cxx] SQDepthLevel and BaseTagKey and associated
970       accessors added.
971     - src/gdcmSeqEntry.[h|cxx]: constructor doesn't handle depth anymore.
972       Use SQDepthLevel accessor instead. ::Print() adapted.
973     - src/gdcmElementSet.cxx changed according to changes in gdcmSeqEntry.
974     - src/gdcmDocument.cxx changed accordingly.
975
976 2004-09-13 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
977   * Preparation of writing a gdcmHeader iterator: generalisation of gdcmTagKey
978     - The following is the doxygen comment of the typedef declaration
979       of gdcmTagKey in src/gdcmCommon.h:
980            gdcmTagKey is made to old an "universal" (as in URL, Universal
981            Ressource Locator)  key to a gdcmDocEntry i.e. a dicom tag.
982            A dicom tag always has a group and an element, but a set of tags
983            embeded in various (optionally nested) sequences and sharing
984            the same group and element all share the same (group, element)
985            "identifier". Hence the (group, element) cannot be used as an
986            identifier (in gdcm we shall refer to a "TagKey") of a tag.
987            In order to construct a proper tag identifier (i.e. a key) we
988            consider the following definition of a TagKey:
989            - let Group, Element be the string representation of the
990              group and element dicom tag members,
991            - let ItemNumber be the string representation of the integer
992              index of the considered item number of a sequence,
993            Let the key of a tag embeded in a sequence, noted SeqTag, be
994            the form:
995               /ItemNumber#Group|Element
996            where "/", "#" and "|" are characters acting as separators.
997            Then the general form of a gdcmTagKey is given by:
998               Group|Element<SeqTag>
999            where <SeqTag> means NO or many instances of SeqTag.
1000            Hence the gdcmTagKey of a tag not "leaving" in a sequence is the
1001            string e.g.
1002                0028|1201
1003            but the gdcmTagKey of a tag "embeded" is the first item of
1004            a sequence, itself nested in the third item of a sequence is the
1005            string e.g.
1006                0004|1220/2#0008|0082/0#0008|0090
1007     - src/gdcmDocEntry.h: added a new Key (of type gdcmTagKey) member, in
1008       order to hold the new sequence compatible key. Previously, the 
1009       GetKey() method would look in the underlying gdcmDictEntry.
1010     - src/gdcmDocEntry.cxx:
1011       -- constructor now copies the underlying DictEntry key, in the local
1012          Key member.
1013       -- ::Print: displays the member Key, instead of the (group, element).
1014     - src/gdcmCommon.h: added some comments on typedef gdcmTagKey.
1015     - src/gdcmDocEntrySet.h:xi
1016       -- ::ParseDES() now setups the gdcmTagKey of the sequence it is parsing.
1017       -- now has a new BaseTagKey member.
1018       -- STYLE.
1019   * src/gdcmValEntry.[h|cxx], src/gdcmBinEntry.[h|cxx]: the member VoidArea,
1020     previously a member of gdcmValEntry, moved to gdcmBinEntry were is
1021     truly belongs.
1022     This poses the problem with the semantics of the following lines
1023        LoadEntryVoidArea(0x0028,0x1201);  // R    LUT
1024        LoadEntryVoidArea(0x0028,0x1202);  // G    LUT
1025        LoadEntryVoidArea(0x0028,0x1203);  // B    LUT
1026     in gdcmDocument::gdcmDocument(std::string const & ). Please refer
1027     to the long FIXME note for what the problem is. Nevertheless in
1028     order to get things working the dicom dictionary was altered !
1029     Please fix things urgently...
1030   * Dicts/dicomV3.dic WRONGLY altered (this means we introduced a uncorrect
1031     information), see above note on moving the member VoidArea. Nevertheless
1032     the following entries previously correctly set as US are now inproperly
1033     set to OW:
1034       0028 1201 OW IMG Red Palette Color Lookup Table Data
1035       0028 1202 OW IMG Green Palette Color Lookup Table Data
1036       0028 1203 OW IMG Blue Palette Color Lookup Table Data
1037   * src/gdcmDocEntry.[h|cxx], src/gdcmSeqEntry.h: SQDepthLevel member
1038     of gdcmDocEntry moved to gdcmSeqEntry.
1039   * src/gdcmSeqEntry.cxx: STYLE.
1040
1041 2004-08-04 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1042   * Test/TestAllEntryVerify.cxx minor fix and added comments.
1043
1044 2004-08-03 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1045   * gdcmPython/testSuite.py: all the test suite in python is now moved
1046     to it's C++ version (see gdcmData/TestAllEntryVerifyReference.txt)
1047   * Test/CMakeLists.txt adapted to renaming of files in gdcmData
1048   * gdcm/TODO and src/gdcmDictSet.h cleaned up frow the "TODO Swig" oldies
1049
1050 2004-08-02 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1051   * gdcmPython/CMakeLists.txt: SWIG_FLAGS doesn't declare includeall
1052     to avoid inclusion recursion until STL is reached.
1053   * src/gdcmDocument.[h|cxx]: exceptions substituted to errno C-style
1054     mecanism. errno.h is not included in gdcm anymore.
1055   * src/gdcmException.h: introduced new gdcmFormatUnexpected class
1056     (gdcmFormatError now inherits from gdcmFormatUnexpected).
1057   * TODO updated
1058   * gdcmPython/testSuite.py checks on CR-MONO1-10-chest.dcm moved to
1059     gdcmData/TestAllEntryVerifyReference.txt
1060   * Test/TestAllEntryVerify.cxx is now effective (used always return true)
1061   * src/gdcmDocument.[cxx|h]: constructors no longer use the bool
1062     exception_on_error parameter.
1063     - src/gdcmFile.[cxx|h], src/gdcmHeader.[cxx|h] changed accordingly,
1064     - vtk/vtkGdcmReader.cxx changed accordingly,
1065     - Example/*.cxx and Test/*.cxx changed accordingly.
1066
1067 2004-07-06 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1068   * src/gdcmDicomDir.cxx, gdcmDocEntrySet.cxx: removed inclusion of errno.h
1069   * src/gdcmDocument.[h|cxx], gdcmFile.[h|cxx], gdcmHeader.[h|cxx]:
1070     enable_sequences removed from gdcmHeader constructor and dependencies.
1071   * Example/PrintHeader.cxx: fixed accordingly (enable_sequences removal).
1072   * gdcmPython/demo/PrintHeader.py: dummy fix.
1073   * src/gdcmDocument.[h|cxx], gdcmFile.[h|cxx], gdcmHeader.[h|cxx]:
1074     skip_shadow removed from gdcmHeader constructor and dependencies.
1075   * Example/*.cxx and Test/*.cxx changed accordingly.
1076
1077 2004-07-27 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1078   * Test/CMakeLists.txt: newly re-introduced SIEMENS_Sonata-12-MONO2-SQ.dcm
1079     in gdcmData (previously known as E00001S03I0015.dcm) is blacklisted.
1080
1081 2004-07-21 Jean-Pierre Roux
1082   * FIX Now, Parsing and Printing a DICOMDIR do work!
1083        ( troubles remain in makeDicomDir and BuildUpDicomDir :-(
1084  
1085 2004-07-20 Jean-Pierre Roux
1086   * FIX Some brain damaged headers have Zero-Lenght fields 
1087         for 'Transfert Syntax UID', or 'Media Stored SOP Class UID'.
1088
1089 2004-07-19 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1090    * src/gdcmCommon.h, gdcmDict.cxx, gdcmTS.cxx : bug fix for msvc6 compilation
1091    * src/gdcmDebug.[h|cxx] : bug fix for msvc6 compilation. Replace the dbg
1092      variable (instance of gdcmDebug) by a definition macro, and the instance
1093      is now in static in the gdcmDebug class
1094    * src/gdcmSQItem.h : (FIXME) remove an undefined method
1095    * Test/PrintAllDocument.cxx : bug fix in the result of the test
1096
1097 2004-07-06 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1098    * WARNING: ctest now depends more tightly on gdcmData. You should
1099      check out gdcmData properly for things to run smoothly...
1100    * src/gdcmDocument.cxx MAX_SIZE_LOAD_ELEMENT_VALUE is set back to 0xfff
1101      (4096) for "ctest -R TestAllEntryVerify" to be able to run (i.e.
1102      we need the pixels not be loaded in order to use the ValEntry
1103      that displays position and size).
1104    * Test/TestAllEntryVerify.cxx a new low level test now seems fair.
1105      This is a C++ based equivalent of gdcmPython/testSuite.py that should
1106      be deprecated. If you have any doubts about the advantages of a
1107      modern scripting language (read Python) versus grass root C++ (i.e.
1108      without lex + yacc, because of gdcm commitement to MS-VC++, sighhh),
1109      I suggest you compare TestAllEntryVerify.cxx (639 lines, without the
1110      reference file gdcmData/TestAllEntryVerifyReference.txt) and testSuite.py.
1111         Anyhow, consider documenting the gdcmData images in 
1112      gdcmData/TestAllEntryVerifyReference.txt (and please run ctest before
1113      commiting changes).
1114    * Test/CMakeLists.txt:
1115       - now uses TestAllEntryVerify.cxx
1116       - specific comments on oldACR00001.ima (now renamed in gdcmData
1117         to SIEMENS_GBS_III-16-ACR_NEMA_1.acr) moved away to
1118         gdcmData/TestAllEntryVerifyReference.txt
1119    * TODO updated.
1120
1121 2004-07-02 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1122    * src/*.[h|cxx] : typedef clean up
1123      - guint16 and guint32 removed. Use ISO C uint16_t, uint32_t instead.
1124      - TagKey renamed to gdcmTagKey (for external usage)
1125      - VRKey renamed to gdcmVRKey (for external usage)
1126      - removal of typedef duplication.
1127      - Removed all unecessary inline keyword from class inline definitions.
1128      - Some method|function(void) declarations replaced with method|function().
1129    * src/jpeg/libijg12/jdhuff12.c:
1130       - printf polluting ctest removed.
1131       - TAB removal for comminting
1132    * Test:
1133      - TestAllReadCompareDicom.cxx: added a test that compares all the
1134        images in gdcmDataImages.h with corresponding images in 
1135        gdcmData/BaselineDicom/. When baseline images are not present
1136        this test creates them.
1137        Note: we need to validate each reference image, but before that
1138              I'd like to rename them with a more explicit name...
1139      - CMakeLists.txt: changed accordingly.
1140    * Example/*.cxx: examples now only include gdcm.h (as opposed to 
1141      including each header needed).
1142
1143 2004-07-01 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1144    * Test/*.cxx and Example/*.cxx: moved some examples away from the
1145      test suite to the Example directory. Are concerned:
1146      - PrintHeader.cxx
1147      - TestDcm2Acr.cxx
1148      - TestFindTags.cxx
1149      - TestWrite.cxx was
1150      - TestWriteSimple.cxx
1151    * Test/CMakeLists.txt: added some comments on reasons for black listing
1152      image gdcmData/oldACR00001.ima
1153
1154 2004-06-30 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1155    * Test/CmakeList.txt: removed the following from black list (to be coherent
1156      with removal from gdcmData):
1157       - gdcm-MR-PHILIPS-16-Multi-Seq.fixed.dcm
1158       - gdcm-MR-PHILIPS-16.dcm
1159       - US.3405.1.dcm
1160      Added the following because after last cvs update, they cause
1161        ctest -R TestReadWriteReadCompare 
1162      to segfault:
1163       - gdcm-MR-SIEMENS-16-1.acr
1164       - oldACR00001.ima
1165    * Test/TestReadWriteReadCompare.cxx was properly written (with a call
1166      to gdcmFile::SetImageData()) BUT since gdcmFile is brain damaged (see
1167      new comments in this file) we temporarily (sigh) move to a weaker
1168      form of test...
1169    * Test/CmakeList.txt: with the change to Test/TestReadWriteReadCompare.cxx
1170      we don't need to black list the following images anymore:
1171       - 8BitsUncompressedColor.dcm
1172       - OT-PAL-8-face.dcm
1173       - US-PAL-8-10x-echo.dcm
1174    * src/gdcmDocument.[h|cxx]: RE-Reverting to version 1.42 with the proper
1175      fixes and the beautified code ;-)
1176      This fixes the bug introduced in version 1.42 (when beautifying)
1177      that made the parsing of 8BitsRunLengthColor.dcm unproper.
1178      Note: ctest was blind to this bug (this means we need to still
1179            improve the test suite). The bug could be detected by using
1180            gdcmbin/bin/PrintDocument $GDCM_DATA/8BitsRunLengthColor.dcm
1181            or by using
1182            gdcmbin/bin/ReadWrite $GDCM_DATA/8BitsRunLengthColor.dcm
1183            and by displaying the (garbage) produced file temp.XDCM...
1184
1185 2004-06-29 Jean-Pierre Roux
1186    FIX : - remove Frog's beautified, but never checked 'Parse7FE0' code,
1187          - replace by uggly but working old code :-(
1188    A lot of things should be OK again.
1189    It's really urgent to have a test suite that *tests*, 
1190    to prevent Frog's beautifying sessions to break all the stuff
1191    (twice, withing a fortnigh ...)      
1192
1193 2004-06-28 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1194    * Test/TestWriteRead.cxx and TestReadWrite.cxx merged (because of
1195      redundancy) to added Test/TestReadWriteReadCompare.cxx
1196    * Test/CmakeList.txt: because the compare test of
1197      Test/TestReadWriteReadCompare.cxx fails, the following images are
1198      black listed: - 8BitsUncompressedColor.dcm
1199                    - OT-PAL-8-face.dcm
1200                    - US-PAL-8-10x-echo.dcm
1201    * src/gdcmDocument.cxx: for broken (non DICOM V3 conformal) images
1202      (e.g. gdcm-JPEG-LossLess3a.dcm see comments in
1203      gdcm/gdcmPython/testSuite.py for details) ::FindDocLengthOB() had
1204      and ad-hoc kludge. This kludge is now removed, and on encountering
1205      such an image (OB field brain damaged) we set errno. Then in 
1206      ::FindDocLength() we "fix" the length as being ALL what remains
1207      in the file (until EOF). We then proceed, hoping for the best...
1208      This fixes a SegFault in ShowDicom when trying to write such an
1209      image.
1210    * Test/CmakeList.txt: 8BitsRunLengthColor.dcm is now blacklisted
1211      (because TestWriteRead breaks on it, after a non conformal commit?).
1212      ctest now runs properly, except for MakeDicomDir (which was always
1213      broken) and the Python related stuff (still not fixed).
1214    
1215 2004-06-24 Jean-Pierre Roux
1216   ADD : Examples/WriteRead, that acts like the former Test/TestWriteRead
1217   FIX : Test/TestReadWrite now iterates on all the file names 
1218                           (instead of infinite loop)
1219   ENH : Test/TestWriteRead now iterates on all the file names 
1220
1221 2004-06-28 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1222    * Test/TestReadWrite.cxx: now uses all the images of gdcmData.
1223
1224 2004-06-24 Jean-Pierre Roux
1225    FIX : - now Write drops LUT Descriptors and LUTs (if any)
1226            when SamplesPerPixel =3
1227          - now Write is no longer confused by 
1228           'BitsAllocated = 12" and 'BitsStored=12"
1229          - "UN" value representation Elements are now written correctly 
1230                (their legth is stored on 4 bytes -just like OB, OW, and SQ-)
1231    ENH : - now gdcmHeader has its own Write methods 
1232            (in order to split the job that has not to be done 
1233            for gdcmDicomDir)
1234
1235 2004-06-23 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1236    * Test/PrintAllDocument.cxx: looping on files is now effective. It used to
1237      loop on the same image until memory went out. 
1238      Note: this means we still have gobs of memory loss in PrintDocument
1239    * src/gdcmDocument.cxx: fixes problem on parsing on file
1240      gdcmData/16BitsJpegLosslessGrayScale.dcm.
1241
1242 2004-06-24 Jean-Pierre Roux
1243    FIX : Write - All the Sequences and Sequence Item are now written 
1244             as 'no length' stuff, and a Sequence Delimitor aor an Item Delimitor
1245             is added a the end, when necessary.
1246             - A lot of brain-damaged images, that were read correctly are 
1247               now written correctly
1248             - length compatible BinEntry are now loaded correctly 
1249               (even for odd groups) 
1250         Note : only Explicit Value Representation was checked.
1251                (question : is implicit VR really necessary for gdcm ?)
1252
1253 2004-06-23 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1254    * DEVELOPPER: added a proposition of coding style.
1255    * src/gdcmDocEntry.h: removed every inline declaration (for test of 
1256      coding style).
1257
1258 2004-06-23 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1259    * gdcmDocEntry::PrintCommonPart() and ::WriteCommonPart() removed.
1260      Use the gdcmDocEntry::Print() and Write() instead.
1261    * src/gdcmDocument.cxx: bug fix.
1262
1263 2004-06-22 Jean-Pierre Roux
1264    FIX : gdcmDocument.cxx
1265       - Now we do recognize the JpegLossLess format (there was a misstyping in
1266         code 'beautyfication' :-(
1267       - Now we automaticaticaly load the Luts, if any
1268
1269 2004-06-22 Jean-Pierre Roux
1270    In order : to write Sequences, whatever their imbrication level, 
1271             : to allow user to create his own Sequences
1272    a lot of modif where necessary (adding, moving, or virtualising methods)
1273
1274    WARNING : save your own sources *before* cvs up !
1275
1276    - gdcmBinEntry
1277      ADD virtual void Write(FILE *fp, FileType filetype);
1278   
1279    - gdcmDocEntry
1280      ADD virtual void Write(FILE *fp, FileType filetype);
1281      ADD void gdcmDocEntry::WriteCommonPart(FILE *fp, FileType filetype);
1282   
1283    - gdcmDocEntrySet
1284      ADD virtual void Write (FILE *fp, FileType filetype)=0;
1285      ADD virtual gdcmDocEntry *GetDocEntryByNumber(guint16 group,guint16 element) = 0;
1286      ADD gdcmDocEntry *GetDocEntryByName(std::string name);
1287      ADD virtual std::string GetEntryByNumber(guint16 group,guint16 element) = 0;
1288      ADD std::string GetEntryByName(TagName name);               
1289      ADD gdcmDictEntry *NewVirtualDictEntry(guint16 group, 
1290                                             guint16 element,
1291                                             std::string vr     = "unkn",
1292                                             std::string fourth = "unkn",
1293                                             std::string name   = "unkn"); 
1294      ADD gdcmValEntry *NewValEntryByNumber(guint16 group, guint16 element);  
1295      ADD gdcmBinEntry *NewBinEntryByNumber(guint16 group, guint16 element); 
1296      ADD gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element); 
1297      ADD gdcmDocEntry *NewDocEntryByName  (std::string Name);   
1298      ADD gdcmDictEntry *GetDictEntryByName   (std::string Name);
1299      ADD gdcmDictEntry *GetDictEntryByNumber(guint16, guint16);
1300      REM virtual gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element)=0;
1301      REM virtual gdcmDocEntry *NewDocEntryByName  (std::string Name)=0;
1302   
1303    - gdcmDocument
1304      ADD virtual bool WriteF(FileType type); // New stuff, with recursive exploration
1305      ADD virtual std::string GetEntryByName    (TagName tagName);
1306      ADD virtual std::string GetEntryVRByName  (TagName tagName);
1307      REM virtual bool Write(FILE *, FileType);
1308      REM virtual void WriteEntryTagVRLength(gdcmDocEntry *tag,
1309                                         FILE *_fp, FileType type);
1310      REM virtual void WriteEntryValue(gdcmDocEntry *tag,FILE *_fp,FileType type);
1311      REM virtual bool WriteEntry(gdcmDocEntry *tag,FILE *_fp,FileType type);
1312      REM virtual bool WriteEntries(FILE *_fp,FileType type);
1313      REM virtual std::string GetEntryByName    (std::string tagName);
1314      REM virtual std::string GetEntryVRByName  (std::string tagName);
1315      REM gdcmDictEntry *GetDictEntryByName  (std::string Name);
1316      REM gdcmDictEntry *GetDictEntryByNumber(guint16, guint16);
1317      REM gdcmDictEntry *NewVirtualDictEntry(guint16 group, 
1318                                             guint16 element,
1319                                             std::string vr     = "unkn",
1320                                             std::string fourth = "unkn",
1321                                             std::string name   = "unkn");
1322      REM gdcmDocEntry *NewDocEntryByNumber(guint16 group, guint16 element);
1323      REM gdcmDocEntry *NewDocEntryByName  (std::string Name);
1324      REM gdcmValEntry *NewValEntryByNumber(guint16 group, guint16 element); 
1325      REM gdcmBinEntry *NewBinEntryByNumber(guint16 group, guint16 element); 
1326                                                                                                                  
1327         - gdcmElementSet
1328           ADD virtual void Write(FILE *fp, FileType filetype);
1329           
1330    - gdcmSeqEntry
1331           ADD virtual void Write(FILE *fp,FileType filetype);
1332  
1333    - gdcmSQItem
1334      ADD virtual void Write(FILE *fp, FileType filetype);
1335      ADD virtual std::string GetEntryByNumber(guint16 group, guint16 element);        
1336      REM std::string GetEntryByNumber(guint16 group, guint16 element);
1337      REM std::string GetEntryByName(TagName name);
1338
1339    - gdcmValEntry
1340          ADD virtual void gdcmValEntry::Write(FILE *fp, FileType filetype); 
1341                                   
1342 2004-06-21 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1343     * Test/TestWriteSimple.cxx: fix to gdcmHeader-gdcmHeaderHelper revamping.
1344       The default constructor invoked by the line
1345          gdcmHeader *f1 = new gdcmHeader( header );
1346       was gdcmHeader::gdcmHeader(bool) instead of the expected
1347       gdcmHeader::gdcmHeader(std::string const &, bool = false, bool, bool).
1348       Hence the parsing wasn't executed... See also below.
1349     * src/gdcmHeader.h: the declaration of gdcmHeader::gdcmHeader(bool)
1350       as explicit constructor didn't do the trick to fix the above problem.
1351       Could anyone explain why ?
1352     * src/gdcmBinEntry.cxx, gdcmValEntry.cxx: gdcmBinEntry::Print() now
1353       properly calls gdcmValEntry::Print() (that was weed out from 
1354       code related to gdcmBinEntry).
1355
1356 2004-06-20 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1357     * In order to fix memory leaks:
1358      - Test/TestWriteSimple.cxx: added cleaning of free store through
1359        some delete calls.
1360      - src/gdcmBinEntry.cxx: fix to avoid SegFault.
1361      - src/gdcmDicomDir.[cxx|h]: fixed initialisation in constructor
1362        gdcmDicomDir::gdcmDicomDir(bool) [either the constructor itself
1363        (through the call to ::AddDicomDirMeta()) or the destructor
1364        would crash when deleting uninitialized ::metaElems].
1365      - src/gdcmDictEntry.cxx: annotation of ununderstood memory leak.
1366      - src/gdcmDocument.cxx:
1367        -- ::~gdcmDocument() destructor now cleans up all dictionary entries
1368           from dynamic stores.
1369        -- ::ParseDES() misplaced deletion of temporary NewDocEntry
1370           was causing memory leaks.
1371      - src/gdcmSQItem.cxx:
1372        -- ::~gdcmSQItem() dummy code cleaned (learned that deletion is
1373           cleanly handled with polymophism: sorry but my milage is low).
1374        -- ::SetEntryByNumber(string, guint16, guint16) now cleanly allocates
1375           a gdcmValENtry, and makes no assumption on type (gdcmDocEntry,
1376           gdcmSeqEntry vs gdcmValEntry) of existing entry (when present).
1377           This avoids SegFaulting.
1378      - src/gdcmSQItem.h: coding style.
1379     * Conclusion:
1380      - Test/TestWriteSimple still severely sucks. The output image content
1381        (when $(GDCMDATA_HOME)/012345.002.050.dcm in input) is brain
1382        damaged when displayed with vtkgdcmViewer.
1383      - on memory leaks: TestWriteSimple leaks really less (see entry
1384        of 2004-06-18 in Changelog file for the call to valgrind).
1385      - on segfaults: ctest now passes all the tests but one (no more
1386        segfaults).
1387     * Erroneous leading white fix:
1388      - src/gdcmDict.cxx: getline(from,xxx) doesn't remove the leading
1389        white[s] (as opposed to from >> xxx, that removes it [them].
1390      - src/gdcmTS.cxx: ditto.
1391      - gdcmPython/testSuite.py: dirty related kludge removed.
1392     * src/*: remaining references to gdcmParser removed.
1393     * src/*[cxx|h]: added copy[way]left header.
1394
1395
1396 2004-06-18 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1397     * In order to fix writing of dicom files:
1398      - Test/TestWriteSimple.cxx: a simpler example of writing.
1399      - Test/CMakeLists.txt changed accordingly.
1400      - src/gdcmDocument.cxx:
1401        -- The destructor now recursilvely removes potential sequences.
1402        -- Bug fix in ::IsJPEG2000()
1403        -- ::ReplaceOrCreateByNumber(std::string, guint16, guint16)
1404           now handles promotion of gdcmDocEntry to gdcmValEntry in a cleaner
1405           manner.
1406        -- ::GetValEntryByNumber(guint16, guint16) now defined (as opposed
1407           to only declared) and build on top of
1408           ::GetDocEntryByNumber(guint16, guint16).
1409        -- ::SetEntryByNumber() now uses GetValEntryByNumber(group, element)
1410      - src/gdcmElementSet.[h|cxx]: added ::RemoveEntry(gdcmDocEntry *)
1411        for usage in destructor and treatement of promotion in
1412        ::ReplaceOrCreateByNumber().
1413      - src/gdcmSQItem.cxx: destructor should better handle his job.
1414       Test/TestWriteSimple now runs (or at least it DOES something).
1415     * We can now start hutting memory links. A good starting point is:
1416       valgrind -q --skin=memcheck --leak-check=yes --leak-resolution=high
1417       --num-callers=100 --show-reachable=yes gdcmTests TestWriteSimple
1418       $(GDCMDATA_HOME)/012345.002.050.dcm foo.dcm
1419
1420 2004-06-18 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1421     * Valgrind note: after Mathieu Malaterre teached me how to read
1422       the valgrind FAQ ;-] (see http://valgrind.kde.org/faq.html), I
1423       learned that:
1424           Using gcc, you can force the STL to use malloc and to free memory as
1425           soon as possible by globally disabling memory caching.
1426           With 3.2.2 and later, you should export the environment variable
1427           GLIBCPP_FORCE_NEW before running your program.
1428       By setting GLIBCPP_FORCE_NEW, STL related memory leak messages of gdcm
1429       simply vanish (it is still not clear to me, whether this means that
1430       STL std::string leaks or if valgrind believes it leaks...).
1431     * Fixing of SegFault of Test/makeDicomDir (as shown by ctest or by
1432       running bin/gdcmTests makeDicomDir):
1433       - src/gdcmDicomDir.cxx: dynamic casting used + clean up.
1434       - Test/makeDicomDir.cxx now properly traps empty lists and returns
1435         with 1.
1436       NOW, makeDicomDir cleanly fails (in ctest terminology) instead of
1437       SegFaulting (I drowned in DicomDir related code when trying to
1438       understand why the list is empty...).
1439     * src/gdcmDocument.h: first BSD license header try.
1440     * Doc/License.txt added.
1441
1442 2004-06-15 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1443     * src/gdcmDocument.[h|cxx]:
1444       - Clean up of the Transfer related predicates. They are now all based
1445         on new method isGivenTransferSyntax, that (should) handle properly
1446         the padding problem.
1447       - general clean up, simplification, and coding style.
1448       - Specific clean up of Parse7FE0() (umproperly named actually).
1449     * gdcmPython/testSuite.py: an odd temporary kludge introduced.
1450
1451 2004-06-14 Jean-Pierre Roux             
1452    *  gdcmSeqEntry.cxx
1453            - fix the display of Sequence Delimitor (SQDepthLevel pb)
1454                 - fix the display of SQItem ordinal number
1455       - add the GetSQItemByOrdinalNumber method
1456                 - remove some useless never written private methods     
1457                 
1458 2004-06-14 Jean-Pierre Roux
1459    * gdcmBinEntry.cxx 
1460       - adding a constructor taking a gdcmDocEntry as an input param
1461            - ReplaceOrCreateByNumber now returns :
1462               a gdcmBinEntry * if a Binary (void *) value is passed as a param
1463                    a gdcmValEntry * if a string value is passed as a param
1464    * dcmDocument.cxx
1465       - SetEntryByNumber now allows setting gdcmValEntry or gdcmBinEntry, 
1466               according to the param type (no longer sets a gdcmDocEntry)
1467            - GetValEntryByNumber, GetBinEntryByNumber added
1468       - NewValEntryByNumber and NewBinEntryByNumber added
1469    * gdcmFile.cxx
1470       - Pixel Data are now linked to the (7fe0,0010) elements, after reading
1471    * gdcmSQItem.h
1472       - GetSQItemNumber and SetSQItemNumber added, to provide 
1473             a (relative) Item identier inside a given Sequence
1474             \warning : some pb remaining around this number
1475                                 will be solved asap
1476       - AddEntry now takes the Item Number as a param   
1477    * gdcmValEntry.cxx 
1478       - adding a constructor taking a gdcmDocEntry as an input param    
1479
1480 2004-06-14 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1481     * Memory leak hunt with the following command:
1482       valgrind --leak-check=yes --leak-resolution=high --num-callers=40
1483                --show-reachable=yes gdcmTests PrintDocument
1484       It looks like many (all?) leaks are due to the STL (or a bad usage
1485       of the STL. The lines producing the leaks now have a comment with
1486       a "MEMORY LEAK" tag: you can retrieve them with 
1487           grep "MEMORY LEAK" src/*
1488       Here are two typical examples which I can't help fixing:
1489       -----
1490           #include <string>
1491           int main() {
1492              std::string name;
1493              char * test = "babo";
1494              name = test;    //// <--- valgrind detects 960 bytes lost in
1495                              ////   call to std::string::operator=(char const*)
1496              name.clear();   //// Doesn't help !
1497              return 0;
1498           }
1499       -----
1500           #include <string>
1501           #include <iostream>
1502           int main() {
1503              std::string line;
1504              std::cout << "Type a bunch of characters followed by RETURN: ";
1505              getline(std::cin, line);   //// <--- valgrind dectects a loss
1506                                         //// of 1320 bytes in call to
1507                                         /// std::basic_istream<>& std::getline<>
1508             return 0;
1509           }
1510       -----
1511
1512
1513 2004-06-10 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1514     * src/gdcmHeader.[cxx|h]:
1515       - Predicates on the Transfer syntax (of the form Is[JPEG|RLE]*)
1516         and related, moved away to gdcmDocument.
1517       - Accessors (on the form [Get|Set]Entry*) set up to expose publicly
1518         the corresponding protected accessors of inherited class
1519         gdcmDocument, removed ! As a consequence gdcmFile had to be 
1520         declared friend of class gdcmDocument (see below).
1521       - operator< moved to gdcmDocument (in fact it belongs to gdcmDicomDir).
1522       - Clean up of undefined or unused methods.
1523     * src/gdcmFile.[cxx|h]: added SetEntryByNumber (in order to take into
1524       account the changes to gdcmHeader.h).
1525     * src/gdcmDocument.h:
1526       - gdcmFile is now a friend class (in order to take into account the
1527         changes to gdcmHeader.h).
1528       - Predicates on the Transfer syntax (of the form Is[JPEG|RLE]*) added
1529         (see changes to gdcmHeader.h).
1530       - Accessors (reading on the form GetEntry*) are now public.
1531       - Clean up of undefined or unused methods.
1532     * src/gdcmDocument.cxx:
1533       - adaptation to changes to gdcmDocument.h
1534       - ::OpenFile now writes a verbose message when file cannot be opened.
1535       - some std::string properly set to VRKey
1536     * src/gdcmDicomDir.h: historical references to gdcmHeader changed to
1537       references to gdcmDocument. 
1538     * Test/TestFindTags.cxx: changed accordingly to above changes.
1539     * gdcmPython/testSuite.py: adapted to renaming of acr files in 
1540       cvs repository gdcmData.
1541
1542 2004-06-09 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1543     * src/gdcmValEntry.h: member voidArea type changed from char* to void*.
1544     * src/gdcmBinEntry.h: member voidArea commented out, since it potentially
1545       conflicts with gdcmValEntry::voidArea.
1546     * src/gdcmValEntry.cxx: unmatching comment wiped out.
1547     * src/gdcmVR.[h|cxx]: added two predicates that partition the possible
1548       Value representation between StringRepresentable and BinaryRepresentable.
1549     * src/gdcmDocument.cxx: 
1550       - method ParseDES: proper indentation restored and usage of
1551         gdcmVR::IsVROfGdcmStringRepresentable wired in.
1552       - method LoadDocEntry: the fingerprint left in the SetValue() of
1553         unloaded entries (length > MaxSizeLoadEntry) had curiously been
1554         removed. Reverting to previous code segment with the proper
1555         dynamic_cast< gdcmValEntry* >.
1556         Note: this was (partially) breaking the python test suite
1557               (gdcmPython/testSuite.py) that made usage of the above
1558               fingerprint to check presence of "Pixel Data".
1559     * src/gdcmDocEntry.h: coding style.
1560     * gdcmPython/__init__.py: environement variable GDCM_DATA_PATH is
1561       now taken into account.
1562     * gdcmPython/gdcm.i: adaptation to the new internal representation
1563       of gdcm (exit gdcmParser, hello gdcmDocument).
1564     * gdcmPython/testSuite.py: quick and dirty fix for loading vtkgdcmPython
1565       on posix.
1566     * gdcmPython/demo/PrintHeader.py: doesn't use the gdcmDocument::Print()
1567       anymore, but instead prints the loaded Python dictionary.
1568     * .... alas, the python testSuite is still broken.
1569
1570 2004-05-18 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1571     * gdcmPython/gdcm.i : remove useless lines concerning the gdcmGlobal
1572       gdcmGlob
1573     * gdcmPython/setup.py : replace the use of cvar.gdcmGlob to gdcmGlobal
1574     * src/gdcmUtil.h : export methods
1575
1576 2004-05-16  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1577     * Some more cleanup/enhancement in gdcmPython/CMakeLists.txt getting close
1578       to right behavior
1579     * Initial addition of automatic python testing
1580     * Initial addition of automatic image comparison
1581
1582 2004-05-04 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1583     * src/gdcmCommon.h, gdcmDicomDir.cxx, gdcmFile.cxx, gdcmHeaderHelper.h,
1584       gdcmParser.cxx, gdcmParser.h : bug fix for the Microsoft .Net compilation
1585
1586 2004-05-04 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1587      * src/gdcmFile.cxx, gdcmHeader.cxx : bug fix for the msvc compilation
1588      * Test/ShowDicom.cxx : bug fix for msvc compilation
1589      * vtk/vtkgdcmViewer.cxx : bug fix for msvc compilation
1590
1591 2004-05-04 Jean-Pierre Roux
1592      * ADD Taking into account the 'Dicom Sequences' leads up to introduce
1593        new concepts (and new classes) :
1594        a 'gdcmDocument' is composed of a set of Doc Entries, that are
1595         - elementary gdcmDocEntries (former gdcmHeaderEntries)
1596         - Sequence Doc Entries (gdcmSeqEntries)
1597        a Sequence is composed of Items.
1598        Each item is a set of Doc Entries (this is recursive)
1599        The non uniqueness of the 'Dicom tag' is due to this recursivity
1600        (never taken into account)
1601        Our unability to add a new 'entry' in the header
1602        at the proper location (neither in the H-Table (map or multimap),
1603        nor in the Chained List is also due to this recursivity.
1604        Don't try, right now, to use/modify/compile these new sources :
1605        nothing is finished.
1606        We just commit all the stuff, 'as is', in order not to loose it.
1607
1608 2004-05-04 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1609      * vtk/vtkGdcmReader.cxx : bug fix in the setting of file name
1610      
1611 2004-05-03 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
1612      * vtk/vtkGdcmReader.cxx : bug fix when loading a list of files using the
1613        file prefix (SetFilePrefix)
1614
1615 2004-05-02  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1616      * Add a new test: ShowDicom, for now this is just the c++ version of
1617        checkRead.sh, later it will be able to compare the image read against a
1618        baseline.
1619      * Replace the DEBUG on the stack with a global entry in cmake interface:
1620        GDCM_DEBUG, so you can turn verbosity ON/OFF for debug statement.
1621
1622 2004-04-30  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1623      * Add an example subdir, with a real example on how to read + write a 
1624        dicom image
1625
1626 2004-04-30  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1627      * Doc/gdcmUML.xmi added raw UML class view (umbrello format)
1628      * Doc/CMakeLists.txt: the main page is now properly differentiated
1629        between the developper and user version.
1630      * Doc/doxygen.config.in: dropped search related obsolete flags
1631      * src/gdcmParser.h, gdcmHeader.h: doxygenation
1632
1633 2004-04-29  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1634      * DEVELOPPER: added some helpfull comments for compile/test/install
1635        when using cmake.
1636
1637 2004-04-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1638      * ENH: 1. Remove remp solution of gdcmTests.cxx+ gdcmMain directly in 
1639                src directory, now generated in the build dir.
1640             2. Tests as mentionned smarter
1641             3. Some clean up
1642             4. Add a new method in gdcmDict that return the PubDict by name 
1643           this is interesting for 3rd party lib like ITK, 
1644           where we could set the institution name / patient name...
1645
1646        * ENH: 1. Now the test suite is working for real
1647               2. All binaries are now output in the gdcm-bin directory 
1648                  (this was not true before)
1649
1650 2004-04-28  Jean-Pierre Roux
1651      * ENH add the provisional  gdcmHeader::SQDepthLevel to allow 
1652            SeQuence indented printing of Dicom Header.
1653      * ENH merge methods gdcmParser::Parse and gdcmParser::LoadHeaderEntries
1654            into the single gdcmParser::LoadHeaderEntries for efficiency purpose.
1655            Computation of SQDepthLevel is now part of gdcmHeader constructor
1656      * ENH add self defined param 'new' to PrintHeader to 'show' the SeQuence
1657            tree-like structure of a Dicom Header.
1658      * FIX Test code cleaning     
1659            
1660 2004-04-25  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1661      * ENH: Adding automatic testing
1662        1. Need a DartConfig.cmake to submit to public
1663        2. Add a test driver gdcmTest.cxx
1664        3. gdcmTestMain, an helper for the main test driver gdcmTest
1665        4. Files in Test don't have a main anymore, this becomes interesting 
1666           when we add more and more tests, thus dsw don't have to load 
1667           too many projects
1668      * ENH: Adding a GDCM_DATA_ROOT for testing
1669      * ENH: Remove redundancie about GDCM_DICT stuff, now we only need to modify
1670        one file instead of seven + some small cleanup
1671
1672 2004-04-22  Jean-Pierre Roux
1673      * ENH Minor changes to the Print() methods.
1674      * ADD gdcmParser::PrintEntryNiceSQ() to allow SQ-indented
1675            Header printing. Example given with :
1676            > PrintHeader fileName  2 new
1677           (SQ based tree-like structure still to be done for the Header ...)
1678            
1679 2004-04-22  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
1680      * ENH: Some cosmetic clean up for compilation with -W -Wall -Werror
1681          1. I have added some unsigned where needed
1682          2. Some function parameter not used -> (void)
1683          3. In gdcmDicomDir.cxx, add GDCM_DICOMDIR_NONE case
1684          4. g++ don't like character '\' in comment
1685          5. #define jpeg_create_decompress  jCreaDecompress
1686                     this really need to be fixed
1687          6. virtualize destructor of gdcmObject ... leakage
1688          7. sscanf(g->first.c_str(),"%x",&gr_bid); 
1689                     this also really need to be fixed
1690          8. gdcm/src/jpeg/libijg8/CMakeLists.txt, 
1691                     remove compression file 
1692                     (as we only do decompression, right ?)     
1693      * ENH: Change malloc/calloc/free with c++ equivalent
1694
1695 2004-04-21  Jean-Pierre Roux
1696      * FIX gdcmHeaderHelper::GetXSpacing
1697            when a single value is found (bug ?), xpacing is now 
1698            defaulted to yspacing
1699            
1700 2004-04-19  Jean-Pierre Roux
1701      * ADD gdcmData/Wrist.pap (PAPYRUS 3.0 -single frame-) for checking purpose
1702      * ENH add parameters :
1703                bool  exception_on_error = false, 
1704                bool  enable_sequences   = false,
1705                bool  ignore_shadow      = false
1706            to the gdcmFile constructors to be full gdcmParser compliant
1707      * FIX vtk/vtkGdcmReader.cxx now uses  enable_sequences = true in gdcmFile
1708            to allow reading of PAPYRUS 3.0 files 
1709               
1710 2004-04-06  Jean-Pierre Roux
1711      * ADD gdcmData/E00001S03I0015.dcm for SQ checking purpose
1712      
1713 2004-04-02  Jean-Pierre Roux
1714      * ADD : Test/checksequence.sh, for a general recap on SQ pb
1715      * FIX : gdcmParser::WriteEntryTagVRLength emprovement of special treatement
1716              for Philips spurious Tag fffe|0000 while rewritting Dicom files
1717              
1718 2004-03-30  Jean-Pierre Roux
1719      * FIX gdcmParser::ReplaceOrCreateByNumber shouldn't seg fault any more 
1720          for ACR file, written out as DICOM files (hope so...)
1721
1722 2004-03-30  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1723      * src/gdcmParser.[cxx|h] and gdcmHeader.[cxx.h]: gdcmHeader::Write split
1724        in WriteEntryTagVRLength and WriteEntryValue. Those methods were
1725        moved to base class gdcmParser and only the specialisation is kept
1726        in gdcmHeader.
1727      * src/gdcmParser.[cxx|h]: ReplaceOrCreateByNumber(char*, guint16, guint16)
1728        trashed out (because ReplaceOrCreateByNumber(string, guint16, guint16)
1729        already does the job.
1730      * src/gdcmDicomDir.[cxx|h]: WriteDicomDirEntries renamed to WriteEntries
1731        (to be consistent with gdcmParser::WriteEntries).
1732
1733 2004-03-30 Benoit Regrain
1734      * vtk/vtkGdcmReader.[h|cxx] : fix the read of 3 gdcmHeader when making an
1735        upate of the object's instance. It's passed to 2 in the unfavorable
1736        case : one in the ExecuteInformation, one in the ExecuteData
1737
1738 2004-03-29  Jean-Pierre Roux
1739      * ENH : Check on file type to be written moved
1740              from gdcmParser::WriteEntry to gdcmParser::WriteEntries
1741      * FIX : gdcmObject::ResetBoundaries now stops properly
1742              when end-of-list is reached
1743            : gdcmVersion modified (as Benoit Regrain asked)
1744
1745 2004-03-29  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1746      * src/gdcmParser.cxx: removal of all TAB character. Indentation fixed.
1747      * src/gdcmUtil.cxx: added forgotten iostream include.
1748      * src/gdcmCommon.h: FileType enum entry DICOMDIR removed (since
1749        equivalent to ExplicitVR in existing code).
1750
1751 2004-03-27  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1752      * src/gdcmUtil.[cxx|h] split in two. Additional file gdcmGlobal.[cxx|h]
1753        now contains all the gdcmGlobal related code.
1754      * minor coding style and doxygenation changes.
1755
1756 2004-03-26  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1757      * src/gdcmUtil.[cxx|h] split in two. Additional file gdcmDebug.[cxx|h]
1758        now contains all the Debug related code.
1759      * minor clean-up of includes in src/*.cxx
1760      * src/gdcmUtil.[cxx|h] _cleanString C style function (replaced with
1761        CreateCleanString) removed.
1762      * src/gdcmUtil.[cxx|h] _CreateCleanString renamed to CreateCleanString
1763      * Doc/DoxyMainPageUser.txt added.
1764      * Doc/Doc/DoxyfileUsers updated to version 1.3.4 of Doxygen.
1765      * src/gdcmCommon.h now defines getcwd for Win32 (moved away from
1766        src/gdcmDirList.cxx)
1767
1768 2004-03-24  Jean-Pierre Roux
1769      * FIX a lot of little surface modifications to be doxygen 1.3.6 compliant
1770
1771 2004-03-23  Jean-Pierre Roux
1772      * FIX Now gdcmFile::SwapZone doesn't seg faults any longer for
1773            big endian made volumes
1774      * ENH Now gdcmParser constructor and destructor are protected to forbid
1775            end user to instanciate class gdcmParser
1776           (only gdcmHeader and gdcmDicomDir are meaningfull)
1777
1778 2004-03-22 Benoit Regrain
1779      * FIX : src/gdcmDicomDir.cxx : make windows compilable
1780      * FIX : gdcmPython/gdcm.i : change gdcmStudy to gdcmDicomDirStudy and
1781              gdcmSerie to gdcmDicomDirSerie
1782
1783 2004-03-19  Jean-Pierre Roux
1784      * ENH Now the tree-like structure describing a DICOMDIR comming from
1785            an already existing DICOMDIR file is consistent with
1786            the home-made tree-like structure build ex-nihilo
1787            or build from the files held (recursively) in a Directory
1788            functions gdcmDicomDir::CheckBoundaries()
1789            gdcmObject::SetBoundaries() added
1790
1791 2004-03-17  Jean-Pierre Roux
1792      * REM (Eric Boix bug) : removal of meaningless
1793                              gdcmDicomDirImage::NewImage function.
1794      * FIX now file names and directory name are written properly in the
1795            DICOMDIR
1796      * FIX now gdcmDicomDir constructor may be call without any trick
1797            about the name
1798
1799 2004-03-16  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
1800      * FIX (JPR bug) : src/gdcmDicomDirImage.cxx added missing definition
1801                        of gdcmDicomDirImage::NewImage as empty function.
1802
1803 2004-02-28  Jean-Pierre Roux
1804      * ENH add gdcmDicomDir:NewPatient
1805            add gdcmDicomDirPatient:NewStudy
1806            add gdcmDicomDirStudy:NewSerie
1807            add gdcmDicomDirSerie:NewImage
1808            to allow making gdcDicomDir object.
1809      * ADD PrintDicomDir executable that uses gdcmDicomDir tree-like structure
1810           (as opposite to the gdcmHeader chained list)
1811
1812 2004-02-11 Benoit Regrain
1813      * FIX : memory leaks and the set of ArgDelete methods in gdcmDicomDir
1814              when using from python
1815                                  
1816 2004-02-10 Benoit Regrain
1817      * FIX : bug fix in the gdcmDirList for the recursivity in directories
1818      * FIX : in gdcmDicomDir when the directory is empty
1819      * ENH : add callback and methods to get the progression of dicomDir
1820              directory parsing
1821
1822 2004-02-06 Jean-Pierre Roux
1823      * ENH : - now gdcmDicomDir::CreateDicomDir() returns also the meta elements
1824              - GDCM_META added to gdcmDicomDirType
1825              - class gdcmMeta created
1826      * ENH : - A brief summary is now displayed at the beginning of
1827              'testDicomDir' to help disaster magnitude estimation
1828      * REM : Now useless Test/explDICOMDIR.cxx
1829
1830 2004-02-05 Benoit Regrain
1831      * ENH : add methods in gdcmObject to get the hash table or the list of
1832              header entries
1833      * FIX : wrapping python for ListPatient, ListStudy, ListSerie, ListImage
1834      * FIX : wrapping python for TagHeaderEntryHT
1835
1836 2004-02-04 Benoit Regrain
1837      * FIX : even length for some strings when writting the dicom dir
1838      * FIX : sort the images in the dicom dir
1839      * FIX : Bug fix for python use of dicom dir
1840      * ADD : a python demo
1841
1842 2004-02-04 Jean-Pierre Roux
1843      * FIX : Final solution (?) for icone embedded images
1844      * FIX : dicomVR.dic Overlay group is not *only* 6000, but 60xxx
1845              (see http://medical.nema.org/dicom/2003/03_06PU.PDF)
1846              add groups 6002, 6004, 6006, to allow 'clean' parsing of
1847              gdcmData/gdcm-MR-SIEMENS-16.acr1
1848      * ENH add gdcmData/checkWriteExplicit.sh gdcmData/checkWriteImplicit.sh
1849            to make full checking easier
1850         
1851 2004-02-04 Benoit Regrain
1852      * FIX : WriteEntries : coding style & logic in parameters
1853      * FIX : Set the elements to create the DicomDir in a dictionary file
1854
1855 2004-02-03 Benoit Regrain
1856      * gdcmDirList : to parse a hard drive directory in recursive (or not)
1857      * gdcmDicomDir : add the load of directory
1858      * Bug fix and print add-on
1859
1860 2004-02-03 Jean-Pierre Roux
1861      * ENH gdcmParser : allows "DICM" files, with NO group '0002'
1862      * FIX handling 'non string elements' unsecure area (LUT, overlays, etc)
1863      * FIX Dicts/dicomV3.dic : Add a few missing 'group length' Elements 
1864      * FIX gdcmParser.cxx : 'group length' elements are now considered 
1865            as integers, even for shadow groups, when file is Implicit VR
1866         
1867 2004-02-02 Jean-Pierre Roux
1868      * FIX : gdcmWrite : equal_range() for multimap doesn't return a 'second' 
1869              iterator on last
1870              of the last synonym :-(
1871      * FIX : gdcmWrite::WriteBase : method stops if Pixels not yet Read (except 
1872              for DICOMDIR ;-)
1873      * ENH gdcmData/checkWrite.sh :modif for full check of Explicit VR writting
1874      * FIX taking into account the possible 7fe0,0010 multiplicity        
1875      * FIX add GRPixel,NumPixel,countGrPixel (gdcmParser protected members)
1876            to allow removal of references to 7fe0,0010, to deal with
1877       ACR-NEMA images, when 0028,0200 is meaningfull
1878
1879 2004-01-31 Jean-Pierre Roux
1880      * FIX gdcmParser::WriteEntries : when a VR is tagged as 'Unknown'
1881            no longer writes 'Un' on disk
1882      * FIX SQ elements with actual length are now dealt with corectly
1883      * FIX gdcmFile::WriteBase make the difference, for color images, between
1884            the length (for Palette expanded images)
1885            and Raw Length (non expanded image + Palette)
1886      * FIX Dicts/dicomV3.dic : removal of 'CTX' (context dependant) VR
1887            (that broke Write). Replaced by UL.
1888            Aware user will reload the field if he 
1889            thinks it's necesssary
1890              
1891 2004-01-30 Jean-Pierre Roux
1892      * gdcmParser::CheckSwap() now defaults the filetype to ACR 
1893        when 'dirty Acr' is found, to be compliant with the new 
1894        IsReadable() methods.
1895        
1896      * gdcmHeaderHelper :add Pixel Type 'FD', for dealing with 'double' images.
1897       (no DOUBLE images in kosher DICOM, 
1898       but so usefull for people that miss them ;-)
1899       
1900      * add Test/testDicomDir.cxx, Test/makeDicomDir.cxx , Test/explDICOMDIR.cxx
1901        DICOMDIR related utilities (not checked as Windoze compliant)
1902
1903 2004-01-28 Jean-Pierre Roux
1904      * upgrade GdcmHeaderEntry Print Method for DICOMDIR
1905
1906 2004-01-27 Jean-Pierre Roux
1907      * gdcmParser constructor has a new boolean param,'ignore_shadow', 
1908              to allow skipping the shadow elements, to save memory space.
1909         The TRUE value for this param has to be used 
1910         with a FALSE value for the 'enable_sequence' param.
1911         ('public elements' may be embedded in 'shadow Sequences')
1912      * gdcmHeader methods now deal with 'embedded icones images' in the header
1913              (even when an 'icone image sequence' is announced by the 
1914         element (0x0088,0x0200), but there is NO icone at all ...
1915         
1916      * gdcmHeader sometimes Image Location value doesn't follow  
1917              the supposed processor endianity (see gdcmData/cr172241.dcm).
1918              Fixed
1919
1920      * gdcmHeader add the method
1921              IterHT  GetHeaderEntrySameNumber(grPixel,numPixel);
1922         to get *all* the Header Entries with the same tag.
1923         GetHeaderEntrySameName is probabely *useless* 
1924         (no meaning : Name is *not* an identifier within the Dictionary)
1925
1926 2004-01-26 Benoit Regrain
1927      * Bug fix in the print of hexadecimal representations. Remove long fields 
1928        in the print and add a third level of print to print them
1929
1930 2004-01-23 Benoit Regrain
1931      * Bug fix on field having a VR = 'UI'. Assume that is a string field
1932      * Bug fix on test suite after remove the strip made on not string fields
1933      * Split the IsReadable method between gdcmParser which test that the file
1934        is dicom and gdcmHeader which test that it's an image file
1935
1936 2004-01-22 Benoit Regrain
1937      * DicomDir : clean code, add methods, set variables in protected or private
1938      * gdcmUtil : bug fix for the clean string method
1939
1940 2004-01-19 Benoit Regrain
1941      * Add the use of shadow dictionaries
1942      * bug fix and coding style
1943
1944 2004-01-19 Benoit Regrain
1945      * src/gdcmFile.cxx : bug fix concerning the close of file
1946      * src/gdcmParser.[h|cxx] : remove obvious Pub informations
1947      * Add the update of header entries using the shadow library
1948
1949 2004-01-19 Benoit Regrain
1950      * removal of file gdcmHeader2.cxx
1951      * split class gdcmHeader into gdcmParser and gdcmHeader, with gdcmHeader
1952        inheriting from gdcmParser. This split is to prepare the integration
1953        of dicom dir parsing
1954      * bug fix under python
1955
1956 2004-01-16 Jean-Pierre Roux
1957     * REM removal of class gdcmHeaderEntrySet
1958     * REM removal of files gdcmHeaderEntrySet.cxx, gdcmHeaderEntrySet.h
1959     * ADD add file gdcmHeader2.cxx 
1960     * ADD add method gdcmHeader::SetPrintLevel (for PrintHeader)
1961
1962 2004-01-15 Benoit Regrain
1963      * src/gdcmDicSet.[h|cxx] : add virtual entries to have a reference of
1964        entries created while parsing the header. Thus, they will be destroyed
1965        when the gdcmDictSet will be destroyed
1966      * src/gdcmHeader.cxx, gdcmHeaderEntrySet.cxx : uses virtual entries of
1967        gdcmDictSet
1968
1969 2004-01-15 Benoit Regrain
1970      * vtk/vtkGdcmReader.cxx : bug fix : before, with python only, the program
1971        made a fatal error because of the memory release at the end of program.
1972        The problem was in vtkGdcmReader::ExecuteData where we were allocate
1973        some memory and vtk seems to have some problems with that.
1974      * src/gdcmHeaderEntrySet.cxx : bug fix for std lib and cout
1975
1976 2004-01-14 Benoit Regrain
1977      * src/gdcmHeaderEntry.[h|cxx] : gdcmElValue -> gdcmHeaderEntry
1978      * src/gdcmHeaderEntrySet.[h|cxx] : gdcmElValSet -> gdcmHeaderEntrySet
1979      * src/*.[h|cxx] : make changes due to class name changes
1980      * gdcmPython/demo/*.py : bug fix due to method names
1981
1982 2004-01-13 Benoit Regrain
1983      * src/*.[h|cxx] : coding style
1984      * vtk/*.[h|cxx] : coding style
1985
1986 2004-01-13 Benoit Regrain
1987      * gdcmPython/testSuite.py : test the readable flag of file for tests
1988      * src/gdcmDict.cxx, gdcmElValSet.cxx : bug fix under windows for prints.
1989        It's lied to the stl compilation by MSVC (windows, always windows...)
1990      * src/gdcmIdo.h, gdcmHeaderIdo.cxx : remove the Ido unused files
1991
1992 2004-01-12 Benoit Regrain
1993      * src/*.h : add comments
1994      * src/gdcmDictSet.h : set the method BuildDictPath in public
1995      * src/gdcmTS.cxx, gdcmVR.cxx : use now a dictionary file other than to be
1996        directly setted in the source code
1997      * Dicts/dicomTS.dic, dicomVR.dic : 2 new dictionary files loaded by
1998        gdcmTS and gdcmVR
1999
2000 2004-01-09 Benoit Regrain
2001      * gdcmPython/gdcmVersion.py : add a gdcmVERSION variable information
2002      * setup.py : use a reference to gdcmVERSION
2003
2004 2004-01-07 Benoit Regrain
2005      * Modification to compile with the distutils.
2006      * Bug fix in code
2007
2008 2003-12-10 Benoit Regrain
2009      * gdcmHeader is now aggregating gdcmFile, and not derived into. Thus, we
2010        can use a gdcmHeaderHelper to load data
2011      * gdcmPython/testSuite.py : make the testSuite compliant with modifications
2012        made in the source code
2013
2014 2003-12-10 Benoit Regrain
2015      * Update Windows projects and .cvsignore files
2016
2017 2003-11-12 Jean-Pierre Roux
2018      * ENH gdcmHeader constructor has one more parameter (default value : false)
2019            that allows the user to 'go inside' the SeQuences only
2020            if he wants to.
2021            gdcmElValSet:Print takes it into account
2022
2023 2003-11-12  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2024      * ENH: Update gdcmPython/CMakeLists
2025      * FIX: (gdcmHeaderHelper) GetRescale and GetSlope
2026      * FIX: (gdcmElValSet) char 'tag' was overiding private members (VC++)
2027
2028 2003-11-10 Jean-Pierre Roux
2029       * FIX : gdcmHeader::LoadElements is now based
2030              on the ListTag listElem member,
2031              not longer on the TagElValueHT tagHt member
2032       * ENH : PrintPubElVal shows (temporarily) both results,
2033              with the tagHt member and the listElem member.
2034              (it's easier to 'see' the problems when using Printheader)
2035
2036       * FIX : old private member LgrElem is now splitted into
2037              ReadLength   : Length actually found on disk (updated only
2038                             if bug fixing is necessary), for internal
2039                             use only
2040              UsableLength : Updated by FixFoundLength, to fix a bug
2041                             or to allow Parser going on.
2042              Will allow to re-write a kosher header when a SeQuence
2043              with a length (not 0000) is found
2044       Warning : gdcmFile::Write still uses the TagHt (not ListElem)
2045                 because gdcmElValSet::Add does not update ListElem
2046                 (to be written)
2047
2048 2003-11-07 Jean-Pierre Roux
2049      * FIX misstyping in Transfert Syntax name table
2050      * ENH gdcmHeader::FixFoundLength now allow to 'go inside' tge SeQuences
2051           when they have an actual length (not 0000 nor FFFFF)
2052      (Nobody should care of it, but DICOMDIR explorers)
2053
2054 2003-11-06  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2055      * ENH: vtkgdcmViewer now works with LUT dicom (OT-PAL-face ...)
2056
2057 2003-11-05  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2058      * ENH: vtkGdcmReader now supports LUT !
2059           (vtkgdcmViewer for now is not able to use them though)
2060
2061 2003-11-05 Jean-Pierre Roux
2062      * in testSuite.py : new files names for checking the package
2063      * FIX : Forgot to commit gdcmFile::GetImageDataSizeRaw();
2064              that returns the pixel area size to the *aware* (vtk) user
2065              that DOESN'T want to turn the PALETTE COLOR image into an RGB image
2066
2067 2003-11-05 Benoit Regrain
2068      * in testSuite.py : Modify the rules for checking the paths
2069                        : Explicit error messages
2070      * in __init__.py  : Related modif
2071
2072 2003-11-03 Jean-Pierre Roux
2073      * add gdcmHeaderHelper::GetNumberOfScalarComponentsRaw()
2074            to be used by aware (vtk) users that want to manage
2075            LUT (and no to turn the PALETTE image into an RGB pixels one)
2076      * GetPixelType now returns 8U for 24 Bits images
2077                     (vtkGdcmReader compliant)           
2078       
2079 2003-10-31 Jean-Pierre Roux
2080      * Removal of *all* gdcmData images and add them again
2081        in order to loose the 'history' of un-anonymised images
2082        
2083 2003-10-31 Jean-Pierre Roux
2084      * RMV : removal of useless jBitsInJsample.h 
2085            for both 8 and 12 Bits JPEG Lossy Libraries
2086
2087 2003-10-31 Jean-Pierre Roux
2088      * ENH : Add the functions gdcmFile::GetImageDataRaw 
2089                                gdcmFile::GetImageDataIntoVectorRaw
2090              that act as GetImageData and GetImageDataIntoVector
2091              except the making of an RGB Plane from Gray Plane + LUT
2092              Intended to aware (vtk) users who know how to manage
2093              such an image :
2094              After gdcmHeader :
2095               GetLUTRGBA return a R,G,B,A LUT if any
2096               lgrTotaleRaw gives the 'Raw' length
2097               GetImageDataRaw returns the gray Plane
2098      * FIX : no more dirty trick for 'Segmented xxx Palette Color Lookup' images
2099              (They stay Grey, just like with other Dicom viewers :-(
2100
2101 2003-10-30 Jean-Pierre Roux
2102      * FIX : a VC++ intended syntax modif broke the 12/12 Bytes expanding
2103              
2104 2003-10-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2105      * ENH: Can be used like this '$vtkgdcmViewer *.dcm' with *.dcm 
2106            being coherents dicom files.
2107      
2108 2003-10-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2109      * FIX: DOH ! Forgot about windo$e users, they couldn't read lossless jpeg,
2110            from medcon lib !
2111      * ENH: Turn it into DOS file type to match libgdcmijpeg8.dsp file type 
2112      * ENH: Two steps is necessary to please VC++ compiler...
2113      * FIX: DOH ! libgdcmijpg8 -> libgdcmljpeg
2114      * ENH: Add include dir to medcon lib
2115      * FIX: only one function is being exported for now ! 
2116            You should use GLOBAL(return type) see ljpg/jpeg.h for more info
2117             
2118 2003-10-29 Jean-Pierre Roux
2119       * adding  gdcmHeader::GetLUTRGBA
2120         returns a 4 * 256 Bytes Reg/Green/Blue/Alpha vtk compliant LUT
2121           --> Mathieu, the modif u're waiting for is not yet committed
2122       * removal of now useless GetLUTRed,GetLUTGreen,GetLUTBlue,GetLUTRGB
2123
2124 2003-10-27 Jean-Pierre Roux
2125       * adding some xmedcon breaker files (courtesy of Loïc Boussel)
2126         00191113.dcm DermaColorLossLess.dcm
2127         MxTwinLossLess.dcm RadBWLossLess.dcm
2128       * ENH: For version prior to vtkImageViewer2 -r 1.19
2129       * FIX: avoid pb with xmedcon-breaker CT McTwin Elscint images
2130
2131 2003-10-27  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2132       * Removal of ido stuff in CMakeLists.txt
2133                                                
2134 2003-10-24  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2135       * ENH: vtkGdcmReader.cxx can now read multiframe dicom
2136       * FIX: remove a call to ->Modified ... see comments
2137       * FIX: vtkgdcmViewer.cxx was writting ASCII file...this is so slooooow !
2138       
2139 2003-10-23  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2140       * FIX: Problem with path for libvtkgdcmPython
2141       * ENH: Try adding a search script for python site-package
2142       * RMV: Remove some file from medcon lib that are not necessary
2143       * FIX: gdcm/Makefile.am fix for generating ljpg medcon
2144       * ENH: CMakeLists.txt now generate 'pygdcm.so' instead of 'libpygdcm.so'
2145       * FIX: More pragma disable fro VC++, 
2146              I don't think I break something as it is also disable in VTK/ITK.
2147         But it fasten debug compilation time.
2148             
2149 2003-10-23 Jean-Pierre Roux
2150       * gdcm now deals with 16 Bits Run Length Encoded images
2151         (they are compressed as 2 planes images, 
2152          one for the high Bytes, the other for low Bytes)
2153
2154 2003-10-22 Jean-Pierre Roux
2155       * Now CheckRead takes into account :
2156          - the bugged 'Leonardo' Siemens images
2157          - the XA images, sent thru the burning VPRO station
2158       * add I9000001.dcm, a GE dlx XA image, thru the VEPRO burning station
2159        (breaks DicomWorks)
2160
2161 2003-10-22  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2162       * FIX: When copying a Makefile.am to CMakeLists.txt 
2163              one should remove the '\'
2164         
2165 2003-10-22 Jean-Pierre Roux
2166       * in gdcmData adding a bugged 'Leonardo' Siemens image 
2167         (wrong lengths in header)
2168         OK with gdcm, KO with the other viewers :-)
2169       * add a GE dlx XA image, thru the VEPRO burning station
2170         (breaks DicomWorks)
2171
2172 2003-10-21 Jean-Pierre Roux
2173       * in gdcmData add the checkvtkgdcmViewer.sh shell script 
2174         for a brutal checking of vtkgdcmViewer compliance
2175
2176 2003-10-21 Jean-Pierre Roux
2177       * add the files for 'xmedcon' Jpeg Lossless library
2178       * call of 'xmedcom' Jpeg Lossles libray (instead of the old LibIDO one)
2179
2180 2003-10-21 Jean-Pierre Roux
2181       * 'Compacted Files' (12 Bits Allocate, 12 Bits Stored) are now dealt with
2182      
2183 2003-10-21 Jean-Pierre Roux
2184       * garbage Siemens 'Leonardo' images dealt with
2185         (the patch is easy to remove)
2186       * cosmetic changes to avoid warnings
2187       
2188 2003-10-20  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2189       * ENH: vtkgdcmViewer now autoscale color/window level on start-up, 
2190         no need to press 'r' now.
2191    
2192 2003-10-20  Jean-Pierre Roux
2193       * upgrade of checkRead.sh checkWrite.sh according
2194         to new Jpeg Lossless decompressor
2195       * add US.3405.1.dcm, a genuine RGB medical file ...
2196       * add gdcm-ACR-LibIDO.acr, unnormalized Rectangular LibIDO format image
2197       * add CLIP0001-Sequoia-U11.dcm, US 'Clip', from SEQUOIA machine,
2198                                                   UNIT 11, Hop Cardio              
2199 2003-10-15  Jean-Pierre Roux
2200       * general anonymisation in gdcmData
2201       * adding the 'color files' from
2202         http://www.leadtools.com/SDK/Medical/DICOM/ltdc19.htm
2203       * adding some well knowed bugged-header images
2204       * adding checkRead.sk, checkReadColor.sh, checkWrite.sh,
2205         waiting for their inclusion in Python testsuite
2206
2207 2003-10-15  Jean-Pierre Roux
2208     * gdcmHeader::gdcmHeader(const char *InFilename, bool exception_on_error)
2209       no longer seg faults when file is not found
2210
2211 2003-10-14  Jean-Pierre Roux
2212      * Emprovement of reading for Dicom encapsulated Jpeg LossLess 
2213        MultiFrame images
2214
2215 2003-10-14  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2216      * TODO: *.in file to genereate a UseGDCM later
2217
2218 2003-10-14  Jean-Pierre Roux
2219      * Some supposed-to-be Dicom Images have no preamble.
2220         OpenFile takes it into account
2221      * Jpeg LossLess 24 Bits images doesn't break any longer gdcm
2222      * Missing elements added in dicomV3.dic
2223       (just to be affraid : have a look at
2224        ftp://medical.nema.org/medical/dicom/2003/01v03dif/01v03_06.pdf
2225        and do it again next year ;->
2226
2227 2003-10-13  Jean-Pierre Roux
2228      * According to PS 3.3-2003 C.11.1.1.2 p 619, when each pixel of 
2229        a PALETTE COLOR is stored on 2 Bytes, theese 2 Bytes must be equal.
2230        But there are NOT. It's fixed !
2231        
2232 2003-10-13  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2233      * FIX: "jpeglib.h" was not found on VC++
2234      * FIX: vtkgdcm was not being installed 
2235          
2236 2003-10-10  Jean-Pierre Roux
2237      * ENH : OpenFile closes the file if it *really* doesn't look like
2238              an ACR-NEMA / DICOM one.
2239      * FIX : testWrite no longer writes an empty file if the source file     
2240              is not gdcm Readable
2241      * ENH : One more JPEG LossLess type "JPEG Baseline (Process 14)" 
2242              is now decoded.
2243         
2244 2003-10-10  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2245      * FIX: CMake generate now documentation
2246      * ENH: out of source doc build !
2247      * ENH: Generate both user and dev documentation
2248      * ENH: Should work on windows too
2249      * ENH: Only one doxygen config.in file is needed 
2250      * FIX: make install should be ok now on Ã¹nix plateform
2251      * FIX: PATH to dictionary was wrong (missing /)
2252      * ENH: OpenFile, return true if the file looks like an ACR or DICOM file 
2253                      
2254 2003-10-09  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2255      * vtkGdcmReader is now able to read rgb dicom file.
2256      * src/gdcmHeaderHelper : GetNumberOfScalarComponents()
2257      * added a gdcmViewer to vtk test, use mouse to control 
2258         window level & window width
2259
2260 2003-10-09  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2261      * CMake-ification of gdcm, we have now two build system
2262      * FIX: on cygwin Wsock32 doesn't exist
2263      * FIX: force jpeg dir to the local one (gdcm/src/jpeg)
2264      
2265 2003-10-06  Emanuel Ollart
2266      * FIX : compilation process wad broken.
2267              Changed gdcmViewer_sources to vtkgdcmViewer_sources
2268         
2269 2003-10-06  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2270      * change gdcmViewer -> vtkgdcmViewer
2271      * change GetXSpacing and GetYSpacing "%f\\%" is parsed backward
2272      
2273 2003-10-06  Jean-Pierre Roux
2274      * FIX :A few nasty patches to allow the reading of a lot of nasty images
2275            ( e.g : well known GE images with a wrong elem length,
2276                  : Philips MRI Images with a wrong Huffman table)
2277       * still to be done : allow the reading of bugged LEONARDO Siemens images
2278
2279 2003-10-03 Jean-Pierre Roux
2280       * Odd length strings are padded with '\0' (not with spaces, 
2281         to remain compliant with already defined strings, 
2282         like Transfert Syntax UID and others)
2283
2284 2003-10-03 Jean-Pierre Roux
2285       * ENH :gdcmHeaderHelper::GetNumberOfScalarComponents() added, 
2286              to allow displaying RGB images (not only by affim ;-)
2287         
2288 2003-10-03  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2289       * vtkGdcmReader is now able to read rgb dicom file.
2290       * src/gdcmHeaderHelper : GetNumberOfScalarComponents()
2291
2292 2003-10-03 Jean-Pierre Roux
2293       * A few nasty patches to allow the reading of a lot of nasty images
2294         ( e.g : well known GE images with a wrong elem length,
2295               : Philips MRI Images with a wrong Huffman table)
2296       * still to be done : allow the reading of bugged LEONARDO Siemens images
2297
2298 2003-10-03 Jean-Pierre Roux
2299       * One more JPEG LossLess type "JPEG Baseline (Process 14)" is now decoded.
2300
2301 2003-10-03 Jean-Pierre Roux
2302       * gdcmHeaderHelper::GetNumberOfScalarComponents() added, 
2303         to allow displaying RGB images (not only by affim ;-)
2304
2305 2003-10-03 Jean-Pierre Roux
2306       * gdcmFile::GetImageDataIntoVector now
2307          - deals with MultiFrames MultiFragments Run Length Encoded files
2308          - deals with YcBcR (YBR_FULL) files
2309          - deals with YBR_YBR_FULL_422 files (they work as RBG files ?!?)
2310           WARNING : nothing was checked for YBR_PARTIAL_422, YBR_ICT, 
2311                                             YBR_RCT files.
2312           (no sample found :-(
2313
2314 2003-10-02  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2315       * src/*.cxx removed pragma thingies to src/gdcmCommon.h
2316         Two reasons: - clear things
2317                      - third parties acces gdcm through header files, so won't
2318                        suffer anymore VC++ complains
2319
2320 2003-09-30  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2321       * add argv[1] in testvtkGdcmReader.cxx
2322       * removed leaks
2323
2324 2003-09-24 Jean-Pierre Roux
2325       * The lines are now eigthy characters long.for 
2326         gdcmHeader.cxx gdcmHeaderHelper.cxx gdcmParse.cxx 
2327
2328 2003-09-22  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2329       * src/gdcmUtil.[cxx|h] : change the _CreateCleanString return value from
2330         char* to std::string. Thus, the use of strdup becomes useless. (see
2331         previous commis of Malaterre)
2332       * src/gdcmElValSet.cxx : reuse commented call to _CreateCleanString like
2333         before the last Malaterre's commit.
2334
2335 2003-09-19  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2336       * This commit should fix the Debug building under VC++, the problem
2337         was mainly a mixture of debug and release lib being loaded at startup.
2338       * I also remove a depency to a specific C function: strdup. Because I had
2339         to force the link to msvcrtd (whereas strdup is in libc).
2340
2341 2003-09-16  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2342       * "gdcm::Unfound" string changed to a constant variable (GDCM_UNFOUND)
2343         located in the gdcmCommon.h file. All use of reference of tha has been
2344         changed to now use the variable GDCM_UNFOUND.
2345
2346 2003-09-16  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
2347       * Cosmetic changes:
2348         - gdcmPython/testSuite.py adapted to the JPR updated Dicts/dicomV3.dic
2349           Dicom dictionary. The test suite can now be run again. Note:
2350           I'm note very happy with the " (RET)" changes. I believe this
2351           RETAINED comment should be dropped when parsing the dictionary.
2352         - PACKAGER corrected
2353         - DEVELOPPER added.
2354         - AUTHORS updated and now in alphabetical order
2355       * Makefile.am now exports gdcm.dsw for Windoze users.
2356
2357 2003-09-11  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2358       * cygwin complains about missing std:: in subdir Test/
2359
2360 2003-09-10  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2361       * remove some methods that are now in gdcmHeaderHelper
2362
2363 2003-09-10  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2364       * vtkGdcmReader set spacing and origin correctly
2365
2366 2003-09-09  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2367       * Fix a few delete/delete[] mismatch
2368
2369 2003-09-08  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2370       * src/gdcmHeaderHelper.[h cxx]: added new class that provide an
2371         interpretation to data given by gdcmHeader. For instance there are
2372         heuristics to get informations (look at different places).
2373       * it also include a specific class: gdcmSerieHeaderHelper devoted to
2374         sorting DICOM images based on different strategies.
2375       * modified Makefiles accordingly.
2376
2377 2003-09-05  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2378       * src/*.cxx : added pragma disable 4786/4251 to get rid of ~4300 warning
2379         when building in debug mode
2380       * vtk/win32/vtkgdcm.dsp : change /MT -> /MD and /MTd -> /MDd to match
2381         src/win32/gdcmdll.dsp
2382       * vtk/win32/vtkgdcm.dsp : added /nodefaultlib "mscvrt" for debug mode
2383
2384 2003-08-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2385       * Corrected a leak in vtkGdcmREader.cxx, the pSource was find thanks
2386             to valgrind.
2387
2388 2003-07-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2389       * src/win32/libgdcmjpeg12.dsp was not dos format
2390       * src/win32/libgdcmjpeg12.dsp : 
2391                   libgdcmijpeg12_EXPORTS -> LIBGDCMIJPEG12_EXPORTS
2392       * src/win32/gdcmdll.dsp: + /I "..\jpeg\libijg12"
2393
2394 2003-07-29 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2395       * src/gdcmHeader.h : add std:: prefix for stl elements... like others in
2396         the file
2397       * src/gdcmFile.cxx : bug fix in affectation type
2398       * src/jpeg/libijpeg12/jmorecfg12.h : export for windows modified... like
2399         in src/jpeg/libijpeg8/jmorecfg8.h (JPR : copy/paste exists !!!)
2400       * Modifs of MVSC projects to compile them. Not concerning 2 identic
2401         symbols... future problem ?
2402
2403 2003-07-29  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2404       * src/win32/libgdcmijpeg12.dsp was missing
2405       * modified gdcm.dsw accordingly
2406
2407 2003-07-28  Mathieu Malaterre  <Mathieu.Malaterre@creatis.insa-lyon.fr>
2408       * src/gdcmHeader.cxx : misplaced return 0.; for ACR/NEMA
2409
2410 2003-07-24 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2411       * src/jpeg/libijg12/.cvsignore, jconfig.* : ommited files while last
2412         commit of JPR (before his hollidays to facilitate our work).
2413       * setup.py : bug fix in code. Modifications made while the last commit
2414         of JPR. The code hasn't been tested before the commit... it's so
2415         useless to make that (for best programmer that is JPR) !!!
2416
2417 2003-07-08  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2418       * tagged the current version as Version0_3 (i.e. version 0.3)
2419
2420 2003-07-08  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2421       * vtk/testvtkGdcmReader.cxx : remove a symbol that is unused
2422       * src/jpeg/libijg8/jmorecfg.h : adding export symbol for windows
2423       * *.dsp : modifications to use new libgdcmijpeg8 library
2424       * setup.py : bug fix on VTKPATH variable
2425       * PACKAGER : adding all concerning windows
2426
2427 2003-07-07  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2428       * src/gdcmElValSet.cxx, gdcmFile.cxx: JPR bug fix, removal of
2429         garbage debug code.
2430       * TODO, vtk/vtkGdcmReader.cxx: upcoming fixes comments.
2431       * gdcmPython/testSuite.py: JPR bug fix, brutal erasement of
2432         test suite reported error.
2433       * PACKAGER file added (describes what a packager must do when
2434         packaging a new release).
2435       * MANIFEST.in, now declares jconfig.linux and jconfig.vc
2436       * configure.in: upgraded version number to 0.3.0
2437       * fixing build of rpm (through rpm -ta):
2438         - Doc/Makefile.am exports proper doxygen files
2439         - src/jpeg/libijg8/Makefile.am exports the include files.
2440
2441 2003-07-07  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2442       * vtk/vtkGdcmReader.cxx : bug fix when loading only 1 file.
2443       * src/gdcmHeader.h : formatting code
2444
2445 2003-07-07  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2446       * vtk/vtkGdcmReader.[cxx|h] : bug fix when loading only one file.
2447         We were obtaining error message from vtk. Now, creation of file list
2448         is made in an internal list to prevent this problem.
2449         Bug fix when output is empty.
2450         Bug fix in update of progress value. Previous commit for this was a bad
2451         correction.
2452       * vtk/vtkGdcmReader.h : adding comments for InternalFileNaleList variable
2453
2454 2003-07-04  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2455       * src/gdcmHeader.h : added method to get the file name
2456       * vtk/vtkGdcmReader.[cxx|h] : bug fix concerning loading of bad dicom
2457         files. Added method to remove all files on the input
2458         Added FIXME comment concerning the bad parsing of header made by
2459         ExecuteInformation method (in ExecuteData method)
2460
2461 2003-07-03  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2462       * vtk/Makefile.am: vtkGdcmReader.h should now be cleany installed
2463         when using make instal.
2464       * src/gdcmFile.cxx : bug fix under Window after JPR commit
2465         RQ : the JPR doesn't appear in the ChangeLog... normal for him
2466
2467 2003-07-03  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2468       * setup.py : adding include dir of jpeg lib to compile all sources
2469       * */Win32/*.dsp : JPR fix for windows compilation
2470
2471 2003-07-02  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2472       * src/jpeg/libijg8/jconfig.* : JPR bug fix : now compile on both
2473         linux and WINDOWS !
2474       * src/gdcmJpeg.cxx : JPR bug fix : erroneous include
2475       * src/win32/gdcmdll.dsp : JPR fix for windows compilation
2476
2477 2003-07-02  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2478       * setup.py is again effective on un*x (takes into account the
2479         addon of the jpeg library)
2480       * Doc/DoxyDevelInstal.txt added (developper's raw documentation)
2481       * Doc/Doxy* updated (includes above enhancements)
2482       * INSTALL now points to web documentation
2483
2484 2003-07-01  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2485       * src/gdcmHeader.h doesn't make unnecessary reference to
2486         gdcmUtil.h anymore.
2487       * gdcmPython/Makefile.am now avoids calling the wrappers for the
2488         clean target.
2489       * src/gdcm*.[cxx|h] :
2490         - to allow compilation with gcc 3.x
2491           -- clean up of STL usage (added explicit usage of std::)
2492           -- small fixes on exceptions.
2493           Note: linking not tested !
2494         - clean of doxygen comments to avoid warnings at documentation
2495           building stage.
2496       * vtk/vtkGdcmReader.cxx: g++ warning message clean up (platform
2497         dependent convertion).
2498
2499 2003-06-20  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2500       * Clean up of previous JPR garbage commit (not even commented in the
2501         Changelog):
2502         - Test/Makefile.am removed the reference to unexisting testTS.cxx
2503         - moved all jpeg related files from src to src/jpeg/libijg8, with
2504           addition/modification of Makefile.am and configure.in.
2505         - the testSuite is still brain damage (not guilty).
2506
2507 2003-06-02  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2508       * WrapVTK.py : modifications to get correctly vtk source files to
2509         compile
2510       * vtk/vtkGdcmReader.cxx : modification for an already existing name
2511         (FileName -> Filename)
2512
2513 2003-06-11  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2514       * vtk/vtkGdcmReader.[cxx/h]:
2515         - UpdateProgress method should now be effective
2516         - removed the limitation on having only images loaded (as opposed
2517           to volumes),
2518         - when building a stack of images/volume, a lesser number of
2519           gdcmHeader and gdcmFile instances should be used (hopefully
2520           accelerating things).
2521         - when building a stack of images/volumes, files which are not
2522           loadable (wrong path-filename, wrong permissions on existing file,
2523           or file not parsable by gdcm) are replaced with a black image
2524           in the stack (for the caller to notice the problem).
2525
2526 2003-06-03  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2527       * vtk/vtkGdcmReader.cxx: hopefully corrected Z extent.
2528
2529 2003-06-02  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2530       * vtk/vtkGdcmReader[cxx|h] : makes correct code to remove conflicts
2531         between standard library (std) and vtk library (problems are found
2532         under Windows... thanks Windows !)
2533
2534 2003-05-30  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2535       * vtk/vtkGdcmReader[cxx|h] should now be volume aware (read ready for
2536         debug stage).
2537       * gdcmPython/demo/vtkGdcmReader.py: commented lines for volume test
2538
2539 2003-05-29  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2540       * vtk/vtkGdcmReader[cxx|h] preparation addons for loading volumes.
2541
2542 2003-05-28  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2543       * When compiling with distutils (see setup.py) the C++ compiler is
2544         called with different flags than the default ones (with automake).
2545         In order to fix all those warning, I compiled gdcm with the command
2546            make 'CXXFLAGS=-Wall -Wstrict-prototypes -D__STDC_LIMIT_MACROS'
2547         and went for warning fixes:
2548         - src/gdcmHeader.cxx, Test/dcm2acr.cxx, pourFindTaggs.cxx cleaned
2549           up from unused variables.
2550         - vtk/vtkGdcmReader.cxx: potential bug fix.
2551       * src/gdcmHeader.h: Doxygen warning cleanup
2552
2553 2003-05-27  Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2554       * gdcmPython/gdcm.i:
2555         - typemaps correction to take into account the systematic replacement
2556           of "using namespace std" with std:: prefix e.g. std::list,
2557           std::string... (cf changes of 2003-05-21).
2558         - gdcmGlob global variable of type gdcmGlobal (defined in
2559           src/gdcmUtil.cxx and declared in gdcmPython/gdcm.i) is now
2560           exported to Python a as cvar.
2561       * gdcmPython/__init__.py now defines two functions GetPubDictTagNames()
2562         and GetPubDictTagNamesByCategory() as a replacement for deprecated
2563         gdcmDictSet.GetPubDictTagNames() and
2564         gdcmDictSet.GetPubDictTagNamesByCategory() class functions (i.e.
2565         C++ static methods).
2566       * gdcmPython/demo/printGroupedPublicDict.py is operational again,
2567         with the above changes.
2568
2569 2003-05-22  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2570       * setup.py, manifest.in : bug fix under linux
2571
2572 2003-05-22  Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2573       * Modification of setup.py to compile vtk part too. Then, we have 2
2574         wrappers which must work with same distutils. For that, we have a
2575         generic distutils in distusiltsWrapping.py ; with :
2576          - build_extWrap class to wrap generically all extensions,
2577          - ExtensionWrap base class for all wrapping extension that contains
2578            a wrapper
2579          - Wrapper interface which wrap sources
2580         + In WrapSwig.py  we have extension and wrapper for Swig
2581         + In WrapVTK.py  we have extension and wrapper for VTK
2582       * MANIFEST.in : modifications to consider vtk directory and new python
2583         files for compilation
2584
2585 2003-05-21  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with Benoit Regrain
2586       * Added python wrappers of vtkGdcmReader vtk class (see the
2587         source in vtk/vtkGdcmReader.cxx) :
2588         - vtk/Makefile.am now builds a library
2589         - gdcmPython/Makefile.am now builds vtkgdcmPython a second import
2590           python library (as opposed to _gdcm.so wich are the python
2591           wrappers of gdcm). vtkgdcmPython.so uses the vtk python wrappers
2592           (vtkWrapPython and vtkWrapPythonInit utility) to build vtkgdcmPython
2593           import library.
2594         - configure.in has an additional flag --enable-vtk that needs
2595           to be set to enable compilation of vtk related code, that is:
2596           + vtk/vtkGdcmReader.so and
2597           + vtk/testvtkGdcmReader C++ demo of vtk wrappers of gdcm)
2598           + gdcmPython/vtkgdcmPython.so (see above)
2599         - gdcmPython/demo/vtkGdcmDemo.py corrected (some images cannot
2600           be read when compressed or when HighBit + 1 != BitsStored),
2601         - gdcmPython/demo/vtkGdcmReader.py added. This demo illustrates
2602           the usage of the python wrapper of vtkGdcmReader vtk class.
2603       * vtk/vtkGdcmReader.cxx: bug fixed (thanks to Benoit Regrain).
2604       * src/*.[h] all occurences of stl classes are now prefixed with
2605         std::, and all occurences of "using namespace std;" where removed.
2606         This is to avoid pollution of global namespace in included files.
2607         Apparently vtk does not avoid this pitfall: when using both
2608         gdcm and vtk (as in vtk/vtkGdcmReader.cxx) this ended up in a
2609         collision of various stl members (principally cout...).
2610       * gdcmPython/testSuite.py now cleanly removes temprory generated
2611         file.
2612       * gdcmPython/gdcm.i now declares a typemap for std::string (to
2613         comply with above changes)
2614
2615 2003-05-12  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
2616       * src/gdcmHeader>[h/cxx] added gdcmHeader::GetPixelSize()
2617       * vtk/vtkGdcmReader.cxx now properly inports the image in the
2618         vtk data structure (an image Flip was required).
2619       * vtk/testvtkGdcmReader.cxx refers to gdcmData subdir instead of Data.
2620       * cosmetic changes in documentation.
2621
2622 2003-05-7  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
2623       * src/gdcmHeader.cxx: the constructor no longer exits when an
2624         unexisting file is given as argument.
2625       * The subdirectory Data (containing all the images used for the
2626         test suite) is not part of this repository anymore. A new module
2627         containing those images is now available at
2628           :pserver:xxx@cvs.creatis.insa-lyon.fr:2402/cvs/public
2629         with the name gdcmData.
2630         All the python scripts (including the package initialisation file
2631         gdcmPython/__init__.py) were adapated to take this change into
2632         account (basically GDCM_DATA_PATH is now GDCM_TEST_DATA_PATH).
2633
2634 2003-05-5  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
2635       * vtk subdir added. Contains vtkGdcmReader.[cxx|h] a vtk class
2636         inherinting from vtkImageReader and testvtkGdcmReader.cxx a small
2637         demo of the usage of this class.
2638         Compilation of this vtk part is only done when using the --enable-vtk
2639         at configure (or autogen.sh) stage.
2640
2641 2003-04-16  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
2642       * More memory link related corrections and documentation fixes.
2643         Notes on valgrind:
2644           - maximum info is obtained with a command of the form:
2645             valgrind --leak-check=yes --leak-resolution=high --num-callers=40
2646                      --show-reachable=yes PrintHeader
2647           - the remaining reachable blocks seem to come from the STL
2648             allocation scheme through the usage of map and list. It looks
2649             like this memory cannot be freed but it is not a memory leak
2650             (in fact further invocation to the STL would recollect the
2651              unused memory allthough it cannot explicitely be freed).
2652       * gdcmPython/demo/vtkGdcmDemo.py added: this is a small demo
2653         of displaying an image parsed with gdcm and displayed with VTK.
2654         Note: some images don't seem to work e.g.
2655             python vtkGdcmDemo.py  ../../Data/US-RGB-8-esopecho.dcm
2656       * src/gdcmHeader.x: dicom_vr and Dicts are not class members anymore.
2657         Allthough this weakens the semantics, it is a ditch attempt to
2658         make gdcm more thread friendly.
2659
2660 2003-04-15  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
2661       * Memory link hunt (by using valgrind through the command
2662           valgrind --show-reachable=yes --leak-check=yes PrintHeader).
2663         - added src/gdcmVR.cxx gdcmVR.h that objectify the previous
2664           gdcmHeader::_dicom_vr.
2665         - gdcmHeader::InitVRDict transfered as gdcmVR::gdcmVR().
2666         - gdcmHeader::dicom_vr is now of type gdcmVR* as opposed to
2667           VRHT*.
2668         - gdcmGlobal global object contained class added (see src/gdcmUtil.x)
2669
2670 2003-04-9  Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
2671       * src/Makefile.am now exports all the necessary include files at
2672         make install stage.
2673
2674 2003-04-9 JPR
2675       * UpdateGroupLength replaced by new one
2676
2677 2003-04-7 JPR
2678       * UpdateGroupLength re-written using H-Table
2679         (named UpdateGroupLengthNew untill checks are over)
2680
2681 2003-04-7 Eric Boix <Eric.Boix@creatis.insa-lyon.fr> with JPR
2682       * Data/im_00001 renamed to gdcm-MR-PHILIPS-16-Multi-Seq.dcm
2683       * gdcmPython/testSuite.py now include a test of gdcmFile::Write.
2684       * src:
2685         - gdcmHeader::GetPubElValSet removed.
2686         - gdcmElValSet::WriteDcm, WriteAcr, WriteExplVR, revamped to
2687           UpdateGroupLength, WriteElements, Write.
2688         - gdcmHeader::FileType moved to gdcmCommon.h. The enum FileType
2689           doesn't contain TrueDicom anymore since ExplicitVR and ImplicitVR
2690           carried the same semantics.
2691           - src/gdcmHeaderIdo.cxx changed accordingly.
2692         - gdcmFile::WriteBase now regroups all the codes from previous
2693           versions of WriteDcm, WriteDcmImplVR, and WriteACR.
2694         - enum FileType moved to gdcmCommon.h
2695       * src/gdcmHeader.cxx AddDefault trashed
2696       * gdcmGetXSize added
2697       * getimageDataSize now calls gdcmGetXSize
2698       * Test/*.cxx changed to agree with above changes
2699
2700 2003-03-31 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2701       * src/gdcmHeader.h: LoadElements() is not a public method anymore
2702         (to avoid double call by end user).
2703       * Test/*.cxx LoadElements() doesn't need to be called explicitely
2704         by end user, since gdcmHeader::gdcmHeader now handles it.
2705
2706 2003-03-29 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2707       * gdcm/Doc many doxygen changes:
2708         - Doxyfile now has two different versions, DoxyfileUsers that generates
2709           the html.users end users oriented documentation and
2710           DoxyfileDeveloppers that generates the html.developper developper
2711           oriented documentation.
2712         - README changed accordingly
2713         - requirement.txt removed (old design info moved to TODO).
2714         - Additional files DoxyInstallation.txt, DoxyIntroduction.txt,
2715           DoxyMainPage.txt, DoxyPython.txt provide more information.
2716         - Note: the website http://www.creatis.insa-lyon.fr/Public/Gdcm/ can now
2717           be updated by simply regenerating the docs with doxygen and copying
2718           html.developper and html.users to tux:/home/httpd/html/Public/Gdcm
2719       * src/gdcmElValSet.cxx: stl <map>.count() can only return 0 or 1. Hence
2720         all the tests in the form "if (<map>.count() >1)" were removed.
2721       * src/gdcmFile.cxx: cosmetic changes to avoid messages of doxygen about
2722         ill-formed documentation sections.
2723       * src/gdcmHeader.cxx: ditto
2724
2725 2003-03-27 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2726       * setup.py fixed for un*x (needed macro for stdint.h)
2727       * Test/test.cxx renamed to PrintHeader.cxx to avoid collision on
2728         un*ces with sh-utils test utility.
2729       * gdcmPython/demo/test.py renamed to PrintHeader.py
2730       * gdcmPython/demo/ReorganiseFiles.py new demo script added.
2731       * gdcmPython/win32/gdcmpycomplet.dsp renamed to gdcmpyembedded.dsp.
2732       * gdcmPython/win32/gdcmpy.dsp trashed away (brain damaged).
2733       * src/gdcm*.cxx JPR's bad inclusion fixed.
2734
2735 2003-03-26 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2736       * src/gdcmHeader[h, cxx] gdcmHeader now has an IsReadable predicate.
2737       * gdcmPython/demo/test.py changed accordingly.
2738
2739 2003-03-25 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2740       * gdcmPython/Makefile.am fixed linking against libstdc++
2741       * gdcmPython/_gdcm.so symbolic link to gdcmPython/.libs/pygdcm.so added.
2742       * Swig subdir (historical tests of swig version 1.3.17++) removed
2743       * Test/testChangeEntete.cxx some lines commented out in order to make
2744         compilation work.
2745       * src/gdcmHeader.cxx cleaned up wild JPR's dirty kludge.
2746       * src/gdcmElValSet.cxx cleaned up frog's forgotten debug message
2747
2748 2003-03-24 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2749       * src/gdcmHeader.cxx gdcmHeader::gdcmHeader now calls LoadElements(),
2750         hence the user doesn't need this explicit call.
2751         - gdcmPython/testSuite.py, gdcmPython/demo/*.py changed accordingly
2752           i.e. LoadElements() call removed.
2753       * src/gdcmCommon.h now defines UINT32_MAX (see stdint.h).
2754         - src/Makefile.am declares the proper flag for g++.
2755       * src/gdcmElValSet.h added gdcmElValSet::GenerateFreeTagKeyInGroup
2756         for adding user defined new tags.
2757         - src/gdcmHeader.cxx gdcmHeader::NewManualElValToPubDict added.
2758         - src/gdcmHeader.cxx gdcmHeader::AddAndDefaultElements now
2759           cleanly adds some gdcm added tags (like gdcmXSize, gdcmYSize...)
2760
2761 2003-03-17 Fabrice Bellet <Fabrice.Bellet@creatis.insa-lyon.fr>
2762       * Makefile.am, acinclude.m4, configure.in, python.m4, Dicts/Makefile.am,
2763         Doc/Makefile.am, Test/Makefile.am, gdcmPython/Makefile.am,
2764         src/Makefile.am : the project should properly compile and install
2765         with the autotools, included the python wrappers part.
2766       * gdcm.spec.in : added a spec file for RPM packaging.
2767
2768 2003-03-14 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2769       * src/gdcmUtils.cxx : redifinition of defaults parameters in code
2770
2771 2003-03-12 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2772       * gdcmPython/__init__.py fix of GDCM_DICT_PATH which was not
2773         to exported to the environement (see gdcmPython/testSuite.py
2774         for usage).
2775       * src/gdcmElValSet.[cxx/h], gdcmElValue.[cxx/h], gdcmFile.[cxx/h],
2776         gdcmHeader.[cxx/h]: ElValSet class renamed to gdcmElValSet, and
2777         ElValue class renamed to gdcmElValue for obvious consistency reasons.
2778       * src/gdcmElValSet.cxx, src/gdcmUtil.[cxx-h] Tokenize utility function
2779         moved away from gdcmElValSet.cxx to gdcmUtil.cxx.
2780
2781 2003-03-10 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2782       * gdcmPython/__init__.py doesn't crash anymore when running in
2783         in InstallMode or PreInstallMode but with an environment given
2784         value of GDCM_DICT_PATH.
2785       * src/gdcmDictSet.[cxx/h] coding style.
2786
2787 2003-03-06 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2788       * src/gdcmHeader.h and gdcmHeader.cxx Coding style + doxigenation.
2789       * src/gdcm.h general comments moved to TODO, and README
2790       * src/gdcm.h should now be seen as a user commodity (including it
2791         should suffice to fully use gdcm). It is nowhere including within
2792         any of the kernel files src/*.cxx and src/*.h.
2793
2794 2003-03-05 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2795       * src/gdcm.h splitted in gdcmCommon.h, gdcmDict.h, gdcmDictEntry.h,
2796         gdcmDictSet.h, gdcmElValSet.h, gdcmElValue.h, gdcmFile.h,
2797         gdcmHeader.h
2798       * src/gdcm*.cxx only include their corresponding include file
2799         (as opposed to gdcm.h)
2800       * gdcmPython/gdcm.i changed accordingly
2801       * Test/Makefile.am corrected and added NEWS, AUTHORS in order for
2802         the autogen.sh generated "make snapshot" command to work.
2803       * autogen.sh removed history related references to crea package.
2804
2805 2003-03-04 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2806       * distutilsSwigCPlusPlus.py work around some swig portability
2807         bug.
2808
2809 2003-03-03 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2810       * Eventually, python/gdcmPython was renamed to gdcmPython. This
2811         was done in a last ditch attempt to get setup.py _really_
2812         operationnal. The python/gdcmPython layaout add the advantage
2813         of hidding away the python related distutils specific files
2814         (MANIFEST.in, setup.py, distutils*.py...) from the main directory.
2815         Alas, the src directory was out of scope (i.e. it's relative
2816         position to setup.py was ../src) which made things impossible to
2817         handle (see previous version of python/setup.py). Crossing fingers...
2818
2819 2003-02-20 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2820       * python/setup.py now works on Un*x. (harder than I thougth)
2821       * python/distutilsSwigCPlusPlus.py can now have include files
2822         among the list of sources.
2823
2824 2003-02-20 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2825       * src/gdcmHeader.cxx : bug fix - opening dicom file in binary !!!
2826       * modifications in MSVC projects
2827
2828 2003-02-19 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2829       * As stated by the first lines of Test/ExceptionAndPython/README, it
2830         looks like we can move back to original usage of exception within
2831         src/gdcm* and hence remove the errno stuff that was introduced
2832         as a quick and dirty fixture of this problem (added to the TODO).
2833       * Doc/Doxyfile configuration file for Doxygen and corresponding
2834         README file for usage added.
2835       * Test/testWrite.cxx added. This new test comes from a split of
2836         test.cxx that is now reverted to its original purpous i.e.
2837         testing the proper parsing of a Dicom related file.
2838         testWrite.cxx concentrates on testing the IO part of gdcm.
2839       * Test/bug1.cxx (containing a bug on WIn32) added.
2840       * src/gdcm.h, gdcmHeader.cxx, gdcmDictSet.cxx:
2841         - gdcmHeader::GetPubTagNames and  gdcmHeader::GetPubTagNamesByCategory
2842           whose purpose is to publish the content of the TagNames of the
2843           Dicom public dictionary were not accessible without an
2844           instance of class gdcmHeader.
2845         - those methods are now static methods of gdcmDictSet and hence
2846           require no instances at all to be invocated.
2847         - within gdcmDictSet this change required to change some method
2848           to class methods (i.e. are now static) among which SetDictPath
2849           (renamed to BuildDictPath) and LoadDefaultPubDict.
2850       * python/gdcmPython/demo/printGroupedPublicDict.py changed to illustrate
2851         the above changes by calling the new method classes of gdcmDictSet.
2852       * python/gdcmPython/__init__.py now exposes gdcm.gdcmDictSet for
2853         the above to be effective.
2854       * python/gdcmPython: in order to wrap properly the above changes
2855         for Python, swig version now needs to be > 1.3.17.
2856       * python/gdcmPython/Makefile fixed to adapt itself to new
2857         configure/make shema introduced by Johan Montagnat (thanks for the
2858         contribution). Alas this Makefile cannot be turned into a proper
2859         Makefile.am without some heavy changes in the configure.in
2860         (for python dectection).
2861       * python/gdcmPython/gdcm.i: the out typemap map<string, list<string>>*
2862         now avoids publishing the empty entries.
2863
2864 2003-02-13 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2865       * python/setup.py : bug fix concerning install under windows
2866         ExtraPath reused :-P
2867       * gdcm.dsw : bug fix concerning path for libraries for python !!!
2868
2869 2003-02-13 Benoit Regrain <Benoit.Regrain@creatis.insa-lyon.fr>
2870       * Dicts/dicomV3.dic : remove double spaces !!!
2871       * src/gdcmElValSet.cxx : bug fix concerning windows compiler
2872       * python/gdcmPython/win32/gdcmpycomplet.dsp : bug fix concerning paths
2873         and links
2874
2875 2003-01-28 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2876       * src/gdcmHeader.cxx added a post header parsing AddAndDefaultElements
2877         method. Doxygenation.
2878       * src/gdcm.h clean up of JPR spurious comments.
2879
2880 2003-01-17 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2881       * python/distutilsSwigCPlusPlus.py now properly collects the
2882         shadow classes generated by "swig -c++" (gdcm.py in our case)
2883         when using "python setup.py install".
2884       * python/gdcmPython/__init__.py imports gdcm.py and only manually
2885         reexports the working classes.
2886       * src/gdcmHeader.cxx all the try/catch/throw calls were replaced
2887         by the classical C errno scheme. This is to prevent an obscure
2888         behavior of the python wrappers when importing wxPython.wx prior
2889         to gdcmPython (which ended up in an abort call). An illustration
2890         of this oddity can be found in the Test/ExceptionAndPython
2891         subdir (see the README file). This problem probably due to
2892         an combination of g++ and dynamic loading.
2893       * added Test/ExceptionAndPython (see above)
2894
2895 2003-01-17 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2896       * Changed the layout of the python part to avoid bloating main
2897         directory with setup.py, distutilsSwigCPlusPlus.py, MANIFEST.in
2898         i.e. the distutils arsenal. All the python related stuff is
2899         again in a python subdir, but the package itself is now in
2900         python/gdcmPython.
2901       * setup.py was cleaned up:
2902         - pythonIncludePath removed
2903         - python setup.py bdist target is now functional.
2904       * gdcmPython/__init__.py doesn't export FileName any more (to avoid
2905         collision with other packages). gdcmPython/demo/*.py changed
2906         accordingly.
2907
2908 2003-01-15 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2909       * python subdir moved to gdcmPython (preparation of distutils packaging).
2910       * gdcmPython/setup.py and distutilsSwigCPlusPlus.py added. The
2911         distutils installer is operational.
2912       * - gdcmPython/__init__.py now properly loads the swig generated
2913           shadow classes (from gdcm.py).
2914         - gdcmPython/demo/*.py changed to import the package gdcmPython
2915           instead of gdcmPython/demo/load.py.
2916         - gdcmPython/testSuite.py changed to import the package gdcmPython.
2917
2918 2002-12-16 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2919       * src/gdcm.h, src/gdcmHeader.cxx: added GetPubTagNames() resp.
2920         GetPubTagNamesByCategory() to gdcmHeader that return a list of the
2921         entries within the associated public Dicom dictionary resp. the same
2922         information but sorted by the fourth field (PAT, IMG, DIR) of the
2923         dictionary.
2924         - Dicts/dicomV3.dic Entries which had and unspecified fourth field
2925           are now in the "???" group.
2926         - python/gdcm.i changed accordingly,
2927         - python/demo/printGroupedPublicDict.py added, that gives an example
2928           of the above new functionalities in Python.
2929
2930 2002-12-11 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2931       * src/gdcm.h, gdcmHeader.cxx:
2932         - historic references to glib's g_malloc and g_free (#defined)
2933           were definitively removed.
2934         - gdcm.h: cosmetic changes (part of comments moved to Doc/requirements)
2935       * src/gdcmElValSet.cxx:
2936         - GetElement(guint32, guint32) renamed to GetElementByNumber.
2937         - GetElValue(guint32, guint32) renamed to GetElValueByNumber.
2938         - GetElValue(string) renamed to GetElValueByName.
2939         - Added GetElementByName(string).
2940       * src/gdcmHeader.cxx: added
2941         - GetPubElValRepByNumber(guint16, guint16)
2942         - GetPubElValRepByName(string)
2943         - GetShaElValRepByNumber(guint16, guint16)
2944         - GetShaElValRepByName(string)
2945         - GetShaElValByNumber(guint16, guint16)
2946         - GetShaElValRepByName(string)
2947         - GetElValRepByNumber(guint16, guint16)
2948         - GetElValRepByName(string)
2949         - GetElValByNumber(guint16, guint16)
2950         - GetElValRepByName(string)
2951       * Doc/requirements.txt added.
2952
2953 2002-12-9 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2954       * Test/Makefile building now depends on the one of libgdcm.so
2955       * src/gdcmHeader.cxx and gdcm.h are now OB (undefined length encoded
2956         pixel data) aware which enables finding the address (offset) of
2957         the pixel data of JPEG encoded DICOM files. This leaves only a single
2958         file in the testSuite whose pixel data address (offset) is unknown.
2959       * python/testSuite.py changed accordingly.
2960
2961 2002-12-6 Christophe Odet + Hugues Benoit-Cattin + Eric.Boix
2962       * VC++ has some strong limitations when working with the STL, as stated
2963         in http://support.microsoft.com/support/kb/articles/Q168/9/58.ASP :
2964              "Also note that some STL containers (map, set, queue, list, deque)
2965               cannot be exported. [...]
2966               Some STL classes contain nested classes. These classes can not
2967               be exported. [...]
2968               This is caused by a designed limitation that once a template
2969               class is instantiated, it can not be re-instantiated and
2970               exported."
2971         Since our usage of map<> is ubiquitous in gdcm, this "designed
2972         limitation" of VC++ is a pitfall.
2973         Hence the Python wrappers of gdcm cannot be incrementally linked
2974         against the c++ dynamic library. The dirty but only workaround is
2975         to forget about incremental link of dynamic libraries and to generate
2976         the Python wrappers library with the inclusions of the underlying C++
2977         library.
2978         The following modifications concern this matter on Win32/VC++:
2979       - wrapping python correct with standalone wrapped dll (don't use separate
2980          dll under windows !!!!)
2981       - python21_d debug mode enabled (ask Frog how to use it :-)
2982       - NO problem with having an STL member of class for example string in C++
2983         WITH THE RESTRICTION OF FORGETING ABOUT INCREMENTAL LINK.
2984       - Python test of dcmlib in Python is ok under windows on a large set
2985         (one) of image(s).
2986       * removed glib references
2987       * typedef's inserted in gdcm.i for correct swig type management
2988
2989 2002-11-27 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2990       * python/demo/*.py load.py extracted from test.py. Added explore.py
2991         that only displays required tags and testAll.py that parses all
2992         the files of the testsuite without using unittest.
2993       * python/testSuite.py other additional test on new files added.
2994       * Data/* new test files added accordingly to the testSuite.
2995       * src/gdcmHeader.cxx avoid overwriting of the dictionary when
2996         the vr in the file differs from the one of the dictionary.
2997
2998 2002-11-20 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
2999       * src/gdcm.h and gdcmHeader.cxx gdcm no longer loads all the elements
3000         values, but limits itself to values which are below a user specified
3001         size (by default 1024 bytes).
3002       * python/gdcm.i : elements not loaded (because their size is above the
3003         user specified treshold) are exported with their TagKey as key of the
3004         python dictionary. This enables the testsuite to make some checks
3005         on the unloaded elements (since we have their offset and size).
3006       * python/testSuite.py
3007         - now tests for the existence and proper value of the pixel data
3008         - two new examples added.
3009       * Data/gdcm-MR-SIEMENS-16.acr[12] added.
3010
3011 2002-11-18 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3012       * src/gdcm.h and gdcmHeader.cxx are now "Big Endian transfer syntax"
3013         aware. See the strategy comments in gdcmHeader::FindeLength().
3014       * Test/test.cxx now accepts a filename as first argument.
3015       * Data/US-PAL-8-10x-echo.dcm and US-RGB-8-epicard.dcm added.
3016       * python/testSuite.py changed to integrate test on above files.
3017
3018 2002-11-15 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3019       * Dicts/dicomV3.dic removed all the trailing (RET) when the
3020         the vr was also RET.
3021       * python/testSuite.py more tests added.
3022
3023 2002-11-14 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3024       * python/testSuite.py unittest test suite added (uses Data)
3025       * Data/* dcm and acr files for the test suite.
3026       * glib dependance removed from un*x version. We now use ISO C99
3027         7.18 Integer types (see stdint.h)
3028         - python/Makefile, src/Makefile src/gdcm.h
3029       * src/ when an explicit vr (like dicom files) suddenly poped an
3030         implicit element we use to mark the underlying DictEntry of the
3031         concerned ElValue with "Implicit". This strategy was damageable
3032         too the public or provite dictionaries, since some of their vr
3033         would be changed. Since Header::FindLength heavily relies on the
3034         detection by Header::FindVR of falsely explicit elements, I
3035         added an extra ImplicitVr member to ElValue (boolean).
3036         The rest of the changes we the necessary adaptations.
3037
3038 2002-11-12 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3039       * src/gdcmHeader::FindLength bug fix when trapping falsely explicit
3040         VR files.
3041       * src/gdcmHeader::FindVR: hard way fix of falsely explicit vr files.
3042
3043 2002-11-8 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3044       * Adaptation for porting to VC++:
3045         - src/gdcm.h
3046           o forced to use std namespace (for string to be known)
3047           o all class use __declspec export style on WIN32
3048         - src/gdcmUtil.cxx new Exit method that wraps the exit call
3049           (in stdlib.h on Win32 but in std:: for gcc)
3050       * src/gdcmDictSet::SetDictPath adds a trailing / to environement
3051         variable GDCM_DICT_PATH.
3052       * src/gdcmHeader.cxx verbose comments made discrete.
3053
3054 2002-11-7 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3055       * python/gdcm.i: added a typemap that converts a C++ hashing table
3056         to native Python dictionary.
3057       * python/demo/test.py:
3058         - now uses the native dictionary for exploration of gdcmHeader.
3059         - takes an optional filename argument (the file to parse).
3060       * src/gdcm.h and gdcmHeader.cxx: gdcmHeader now has an accessor on
3061         PubElVals hashing table.
3062       * Dicts/dicomV3.dic removed error prone trailing spaces.
3063
3064 2002-11-6 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3065       * Python wrapping process moved away from src/Makefile to
3066         newly created python/Makefile (as well as gdcm.i)
3067       * python/demo/test.py (that mirrors Test/test.cxx) is effective.
3068       * src/gdcmHeader::FindLength only looks for current vr when necessary.
3069       * src/gdcmDictSet.cxx: the dictionnaries directory path is now imported
3070         from the environement variable GDCM_DICT_PATH (when existing).
3071       * src/gdcmDict::GetTag bug fix.
3072
3073 2002-10-31 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3074       * Straightforward temporary fixes for swig to build the python wrappers.
3075         src/Makefile now has a python working entry [by working we mean
3076         that we can import de shadow classes without errors].
3077
3078 2002-10-29 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3079       * hashtest.cxx removed (since already in Test)
3080       * src/gdcmlib.h renamed to src/gdcm.h
3081       * src/dcm.i renamed to src/gdcm.i
3082       * src/Makefile prepared for python wrapping
3083
3084 2002-10-29 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3085       * src/gdcmHeader.cxx :
3086         - Parsing of header is now separated from loading of element values
3087           (see gdcmHeader::LoadElements).
3088         - general clean up of hopefully all file access (creation of
3089           ReadInt16 and ReadInt32)
3090
3091 2002-10-22 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3092       * src/gdcmHeader.cxx :
3093         - RecupLgr renamed to FindLength and cut off with new IsAnInteger
3094           method.
3095         - SetLgrElem renamed to SetLength
3096         - GetLgrElem renamed to GetLength
3097         - ~gdcmHeader() made virtual to pesky warning messages at compile.
3098       * src/gdcmElValSet.cxx fixed both GetElValue methods
3099       * Dicts/dicomV3.dic falacious entry [7fe0 0010 OT PXL Pixel Data]
3100         due to IdoDude was cleaned out.
3101
3102 2002-10-21 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3103       * src/gdcmHeader.cxx RecupLgr split in FindVR and RecupLgr. FindVR
3104         concentrates on finding the value representation (when it exists).
3105         RecupLgr now only finds the element value length, and it avoids
3106         returning the unecessary skL (skipped length).
3107         Also, offsetCourant was simply removed (with taille_fich) since
3108         it was redundant with the File position internals (by using
3109         ftell and fseek). This also made skL (see above in RecupLgr) usage
3110         jajun.
3111       * src/gdcmHeaderIdo.cxx src/gdcmIdo.h added. Those files concentrate
3112         on the libido specificities which are handled through class
3113         inheritance.
3114       * Test/implicit_vr.dcm dicom v3 in implicit value representation
3115         added.
3116
3117 2002-10-17 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3118       * Truckload of changes. Parsing of header is barely functional
3119         (see Test/test) with the standard dictionary (see Dicts/dicomV3.dic).
3120
3121 2002-10-10 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3122       * src/gdcmHeader.cxx many addons of low level methods
3123
3124 2002-10-07 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3125       * src/gdcmHeader now contains_IdDcmCheckSwap, _IdDcmRecupLgr,
3126         and _IdDcmSWAP_LONG.
3127
3128 2002-09-12 Eric Boix <Eric.Boix@creatis.insa-lyon.fr>
3129       * This corresponds to all the changes decided at the meeting of
3130         May 23 2002. Needless to say we are running late...
3131