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 Description: Add information on supported imagers (constructor/model)
128 Details: in order to promote gdcm make a list (on the web pages)
129 of images successfully parsed based on a constructor/model ordering
130 Comments: * frog: gdcmData only lists pathological images. How to collect
131 the ones gdcm works smoothly with (hopefully gdcmData is a small
132 subset of what we would like).
133 -----------------------------------------------------------------------------
134 Description: Add a GetVersion() global function.
137 Details: This is to be used for version assertion with gdcmPython
139 -----------------------------------------------------------------------------
140 -----------------------------------------------------------------------------
141 * vtk/vtkGdcmHeader.cxx: if speed becomes a concern some changes can
142 be made at the cost of memory consumption (refer to header of
143 vtk/vtkGdcmHeader.cxx)
144 -----------------------------------------------------------------------------
145 * gdcmElValSet::SetElValueLengthByNumber IMNSHO should be trashed.
146 It's only purpose is a onliner substitute to calling GetElValueByNumber
147 and then SetLength. This only obfuscates the caller code more than
149 Besides the definition of gdcmElValSet::SetElValueLengthByNumber itself
150 it quite poor since it is a almost exact copy of
151 gdcmElValSet::GetElValueByNumber except for the returned code.
152 gdcmHeader::SetPubElValLengthByNumber (which is based on
153 gdcmElValSet::SetElValueLengthByNumber) is used nowhere...
154 -----------------------------------------------------------------------------
155 * Fix the bug in Test/bug1.cxx (see first comment line): Win32 only.
156 -----------------------------------------------------------------------------
157 * All (or at least many of) the methods of gdcmHeader whose only arguments
158 are an ElValue* (e.g. FindLength, FindVR, LoadElementValue...) can
159 be moved away to ElValue class on condition of transmitting the
160 gdcmHeader.fp attribute. This change should be considered since it
161 would allow those method to avoid artificial calls to ElValue::GetElement(),
163 -----------------------------------------------------------------------------
164 * Eat leading_trailing_whitespace (found in python/gdcmPython/gdcmi) should
165 be used when parsing the dictionary in C++ !
166 -----------------------------------------------------------------------------
167 * Group length is not a unique tag in a file. Hence avoid putting it
168 in the element values dictionary without doing something smarter
169 (say, instead of storing the length store the group and the length
170 so we can related a length to a group).
171 -----------------------------------------------------------------------------
172 * GetPubElValByNumber doit faire la difference entre chaine vide
173 et chaine pas touve''. Eventuellement raiser une exception ?
174 -----------------------------------------------------------------------------
175 * gdcmHeader::LoadElements only loads the element whose length is
176 below the specified size. When accessing the value of such an element
177 the content is unfound ! Find a decent way of loading the value on
179 -----------------------------------------------------------------------------
180 * JPR: fournir une method qui ne fait que lire les elements passes en arguments
181 sous forme d'une liste.
182 -----------------------------------------------------------------------------
183 * JPR: gdcmHeader::CheckSwap() dans le cas ACR pas propre, degager tout de
184 suite si on a deduit que c'en est pas...
185 -----------------------------------------------------------------------------
186 * python /usr/lib/python2.2/site-packages/DaVaW/demo/dvwDcmReader.py
187 and load image /home/frog/cvs/DCMlib/Data/CT-MONO2-16-ankle.dcm
188 will yield wrong coloring scheme as opposed to
189 affim filein=/home/frog/cvs/DCMlib/Data/CT-MONO2-16-ankle.dcm
190 -----------------------------------------------------------------------------
191 * gdcmFile should implement the following API:
193 WriteDicom.SetFileName("MyDicomFile.dcm");
194 string * AllTags = gdcmHeader.GetDcmTagNames();
195 WriteDicom.SetDcmTag(AllTags[5], "253");
196 WriteDicom.SetDcmTag("Patient Name", "bozo");
197 WriteDicom.SetDcmTag("Patient Name", "bozo");
198 WriteDicom.SetImageData(Image);
201 Anonymize(ostream& output) {
202 a = gdcmFile("toto1");
203 a.SetPubValueByName("Patient Name", "");
204 a.SetPubValueByName("Date", "");
205 a.SetPubValueByName("Study Date", "");
208 -----------------------------------------------------------------------------