1 -----------------------------------------------------------------------------
2 Proposed Template of an entry in this TODO:
3 (Note: Date is the date of registering of first demand.)
14 -----------------------------------------------------------------------------
15 -----------------------------------------------------------------------------
16 Description: Fix the Python wrappers
21 -----------------------------------------------------------------------------
22 Description: clean up gdcmFile/gdcmHeader relationship
26 * simplify the API for the user (no need to call GetImageData() before
28 * avoid memory leaks with with Pixel_Data.
30 -----------------------------------------------------------------------------
31 Description: remove all autotools references
36 -----------------------------------------------------------------------------
37 Description: introduce namespace "gdcm"
42 1/ Problem: using enum with name like 'Unknow' on .Net, or LP on cygwin
44 2/ Question: when introducing the namespace, should we remove the gdcm
45 prefix from classes or keep it ?
46 -----------------------------------------------------------------------------
47 Description: complete the doxygen Documentation
52 -----------------------------------------------------------------------------
53 Description: test the private dictionary part.
58 * Frog: where can we obtain such a private/dictionary and the corresponding
59 Dicom file ? Any examples on-line ?
60 -----------------------------------------------------------------------------
61 Description: fix definitively the memory leaks problems.
66 -----------------------------------------------------------------------------
67 Description: test gdcm on a big endian OS.
72 -----------------------------------------------------------------------------
73 Description: More tests !
77 * an example of new test could be to clone a Dicom image by
78 copying gdcmDocEntry one after the other
80 * look at traversal used in Example/FlatHashTablePrint.cxx
81 -----------------------------------------------------------------------------
82 Description: revoir la gestion des resources, win32 permet d'inclure des
83 fichiers texte (=dicomV3.dic) dans une dll ou quelquechose du genre.
88 * Frog: no comprendo !? De plus est-ce portable ?
89 -----------------------------------------------------------------------------
90 Description: Convert the C-like IO to C++ IO:
94 remove all the C-oriented IO references like FILE*, fread...
95 and replace them with the C++ fstream notation.
96 Provide overload of operators << and >> for any gdcm class using file IO.
98 * Question: the underlying jpeg libraries (written in C) use the FILE*
99 notation. Is there a way to still use fstream in gdcm, and
100 build or pass the proper FILE* to jpeg libs ?
101 * Binary IO references are available at
102 http://www.angelfire.com/country/aldev0/cpphowto/cpp_BinaryFileIO.html
103 -----------------------------------------------------------------------------
104 Description: generate methods based on VM.
108 * cmake should parse le DICOM dictionary to generate methods like
109 gdcm???::SetImagePosition(int, int)
111 //generated content do not edit
114 gdcm???::SetImageNumber(int)
116 //generated content do not edit
120 * Regrain: a dicom dictionary entry name is NOT UNIQUE [this means
121 two tags=(group, element) can share the same name].
122 What should the wrapper do in such a case !?
123 * Frog: what does VM stand for ?
124 -----------------------------------------------------------------------------
125 * vtk/vtkGdcmHeader.cxx: if speed becomes a concern some changes can
126 be made at the cost of memory consumption (refer to header of
127 vtk/vtkGdcmHeader.cxx)
128 -----------------------------------------------------------------------------
129 * Add a GetVersion() global function.
130 -----------------------------------------------------------------------------
131 * gdcmElValSet::SetElValueLengthByNumber IMNSHO should be trashed.
132 It's only purpose is a onliner substitute to calling GetElValueByNumber
133 and then SetLength. This only obfuscates the caller code more than
135 Besides the definition of gdcmElValSet::SetElValueLengthByNumber itself
136 it quite poor since it is a almost exact copy of
137 gdcmElValSet::GetElValueByNumber except for the returned code.
138 gdcmHeader::SetPubElValLengthByNumber (which is based on
139 gdcmElValSet::SetElValueLengthByNumber) is used nowhere...
140 -----------------------------------------------------------------------------
141 * Fix the bug in Test/bug1.cxx (see first comment line): Win32 only.
142 -----------------------------------------------------------------------------
143 * All (or at least many of) the methods of gdcmHeader whose only arguments
144 are an ElValue* (e.g. FindLength, FindVR, LoadElementValue...) can
145 be moved away to ElValue class on condition of transmitting the
146 gdcmHeader.fp attribute. This change should be considered since it
147 would allow those method to avoid artificial calls to ElValue::GetElement(),
149 -----------------------------------------------------------------------------
150 * Eat leanding_trailing_whitespace (found in python/gdcmPython/gdcmi) should
151 be used when parsing the dictionary in C++ !
152 -----------------------------------------------------------------------------
153 * Group length is not a unique tag in a file. Hence avoid putting it
154 in the element values dictionary without doing something smarter
155 (say, instead of storing the length store the group and the length
156 so we can related a length to a group).
157 -----------------------------------------------------------------------------
158 * GetPubElValByNumber doit faire la difference entre chaine vide
159 et chaine pas touve''. Eventuellement raiser une exception ?
160 -----------------------------------------------------------------------------
161 * gdcmHeader::LoadElements only loads the element whose length is
162 below the specified size. When accessing the value of such an element
163 the content is unfound ! Find a decent way of loading the value on
165 -----------------------------------------------------------------------------
166 * JPR: fournir une method qui ne fait que lire les elements passes en arguments
167 sous forme d'une liste.
168 -----------------------------------------------------------------------------
169 * JPR: gdcmHeader::CheckSwap() dans le cas ACR pas propre, degager tout de
170 suite si on a deduit que c'en est pas...
171 -----------------------------------------------------------------------------
172 * python /usr/lib/python2.2/site-packages/DaVaW/demo/dvwDcmReader.py
173 and load image /home/frog/cvs/DCMlib/Data/CT-MONO2-16-ankle.dcm
174 will yield wrong coloring scheme as opposed to
175 affim filein=/home/frog/cvs/DCMlib/Data/CT-MONO2-16-ankle.dcm
176 -----------------------------------------------------------------------------
177 * gdcmFile should implement the following API:
179 WriteDicom.SetFileName("MyDicomFile.dcm");
180 string * AllTags = gdcmHeader.GetDcmTagNames();
181 WriteDicom.SetDcmTag(AllTags[5], "253");
182 WriteDicom.SetDcmTag("Patient Name", "bozo");
183 WriteDicom.SetDcmTag("Patient Name", "bozo");
184 WriteDicom.SetImageData(Image);
187 Anonymize(ostream& output) {
188 a = gdcmFile("toto1");
189 a.SetPubValueByName("Patient Name", "");
190 a.SetPubValueByName("Date", "");
191 a.SetPubValueByName("Study Date", "");
194 -----------------------------------------------------------------------------