1 -----------------------------------------------------------------------------
3 Problem: using enum with name like 'Unknow' on .Net, or LP on cygwin
5 Question: when introducing the namespace, should we remove the gdcm
6 prefix from classes or keep it ?
7 -----------------------------------------------------------------------------
8 Convert the C-like IO to C++ IO:
9 Goal: remove all the C-oriented IO references like FILE*, fread...
10 with the C++ fstream notation. Provide overload of operators
11 << and >> for any gdcm class using file IO.
12 Question: the underlying jpeg libraries (written in C) use the FILE*
13 notation. Is there a way to still use fstream in gdcm, and
14 build or pass the proper FILE* to jpeg libs ?
16 binary IO are available at
17 http://www.angelfire.com/country/aldev0/cpphowto/cpp_BinaryFileIO.html
18 -----------------------------------------------------------------------------
19 Switch from errno C-style to exceptions:
20 Goal: remove all the C-oriented errno (#include <errno.h>) and switch
22 Note: - only src/gdcmDocument.cxx includes errno.h
23 - when exceptions were first introduced within gdcm, it caused
24 gdcmPython to be uncompatible within the corresponding version
25 of wxPython (refer to the first lines of
26 Test/ExceptionAndPython/README). Hence we reverted to the old
27 errno mecanisme. Since wxPython seems not to be problem anymore
28 (check it with Test/ExceptionAndPython) we can now move back to C++
30 -----------------------------------------------------------------------------
32 - Remove ignore_shadow from gdcmDocument().
33 -----------------------------------------------------------------------------
34 * vtk/vtkGdcmHeader.cxx: if speed becomes a concern some changes can
35 be made at the cost of memory consumption (refer to header of
36 vtk/vtkGdcmHeader.cxx)
37 * Add a GetVersion() global function.
38 * gdcmElValSet::SetElValueLengthByNumber IMNSHO should be trashed.
39 It's only purpose is a onliner substitute to calling GetElValueByNumber
40 and then SetLength. This only obfuscates the caller code more than
42 Besides the definition of gdcmElValSet::SetElValueLengthByNumber itself
43 it quite poor since it is a almost exact copy of
44 gdcmElValSet::GetElValueByNumber except for the returned code.
45 gdcmHeader::SetPubElValLengthByNumber (which is based on
46 gdcmElValSet::SetElValueLengthByNumber) is used nowhere...
47 * The declarations commented out and starting with "TODO Swig" (try
48 grep "TODO Swig" *.h) needed to be temporarily removed for swig to
49 proceed correctly (in fact problems appears at loading of _gdcm.[so/dll]).
50 So, simply uncomment the declaration once you provided the definition of
52 * Fix the bug in Test/bug1.cxx (see first comment line): Win32 only.
53 * All (or at least many of) the methods of gdcmHeader whose only arguments
54 are an ElValue* (e.g. FindLength, FindVR, LoadElementValue...) can
55 be moved away to ElValue class on condition of transmitting the
56 gdcmHeader.fp attribute. This change should be considered since it
57 would allow those method to avoid artificial calls to ElValue::GetElement(),
59 * Eat leanding_trailing_whitespace (found in python/gdcmPython/gdcmi) should
60 be used when parsing the dictionary in C++ !
61 * Group length is not a unique tag in a file. Hence avoid putting it
62 in the element values dictionary without doing something smarter
63 (say, instead of storing the length store the group and the length
64 so we can related a length to a group).
65 * GetPubElValByNumber doit faire la difference entre chaine vide
66 et chaine pas touve''. Eventuellement raiser une exception ?
67 * gdcmHeader::LoadElements only loads the element whose length is
68 below the specified size. When accessing the value of such an element
69 the content is unfound ! Find a decent way of loading the value on
71 * JPR: fournir une method qui ne fait que lire les elements passes en arguments
72 sous forme d'une liste.
73 * JPR: gdcmHeader::CheckSwap() dans le cas ACR pas propre, degager tout de
74 suite si on a deduit que c'en est pas...
75 * python /usr/lib/python2.2/site-packages/DaVaW/demo/dvwDcmReader.py
76 and load image /home/frog/cvs/DCMlib/Data/CT-MONO2-16-ankle.dcm
77 will yield wrong coloring scheme as opposed to
78 affim filein=/home/frog/cvs/DCMlib/Data/CT-MONO2-16-ankle.dcm
79 * gdcmFile should implement the following:
81 WriteDicom.SetFileName("MyDicomFile.dcm");
82 string * AllTags = gdcmHeader.GetDcmTagNames();
83 WriteDicom.SetDcmTag(AllTags[5], "253");
84 WriteDicom.SetDcmTag("Patient Name", "bozo");
85 WriteDicom.SetDcmTag("Patient Name", "bozo");
86 WriteDicom.SetImageData(Image);
89 Anonymize(ostream& output) {
90 a = gdcmFile("toto1");
91 a.SetPubValueByName("Patient Name", "");
92 a.SetPubValueByName("Date", "");
93 a.SetPubValueByName("Study Date", "");