]> Creatis software - gdcm.git/blob - TODO
* TODO updated with Mathieu suggestions. I proposed a template for
[gdcm.git] / TODO
1 -----------------------------------------------------------------------------
2 Proposed Template of an entry in this TODO:
3 (Note: Date is the date of registering of first demand.)
4
5 -------------
6 Description:
7 Date:
8 Attributed:
9 Details:
10 Comments:
11 -------------
12
13
14 -----------------------------------------------------------------------------
15 -----------------------------------------------------------------------------
16 Description: Fix the Python wrappers
17 Date: 2004 Sep 24
18 Attributed: no
19 Details:
20 Comments:
21 -----------------------------------------------------------------------------
22 Description: clean up gdcmFile/gdcmHeader relationship
23 Date: 2004 Sep 24
24 Attributed:
25 Details:
26  * simplify the API for the user (no need to call GetImageData() before
27    calling Write().
28  * avoid memory leaks with with Pixel_Data.
29 Comments:
30 -----------------------------------------------------------------------------
31 Description: remove all autotools references
32 Date: 2004 Sep 24
33 Attributed: no
34 Details:
35 Comments:
36 -----------------------------------------------------------------------------
37 Description: introduce namespace "gdcm"
38 Date: 2004 Jul 30
39 Attributed:
40 Details:
41 Comments:
42   1/ Problem: using enum with name like 'Unknow' on .Net, or LP on cygwin 
43               causes problems.
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
48 Date: 2004 Sep 24
49 Attributed:
50 Details:
51 Comments:
52 -----------------------------------------------------------------------------
53 Description: test the private dictionary part.
54 Date: 2004 Sep 24
55 Attributed:
56 Details:
57 Comments:
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.
62 Date: 2004 Sep 24
63 Attributed:
64 Details:
65 Comments:
66 -----------------------------------------------------------------------------
67 Description: test gdcm on a big endian OS.
68 Date: 2004 Sep 24
69 Attributed:
70 Details:
71 Comments:
72 -----------------------------------------------------------------------------
73 Description: More tests !
74 Date: 2004 Sep 24
75 Attributed:
76 Details:
77  * an example of new test could be to clone a Dicom image by 
78    copying gdcmDocEntry one after the other
79 Comments:
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.
84 Date: 2004 Sep 24
85 Attributed:
86 Details:
87 Comments:
88  * Frog: no comprendo !? De plus est-ce portable ?
89 -----------------------------------------------------------------------------
90 Description: Convert the C-like IO to C++ IO:
91 Date: 2004 Jul 30
92 Attributed:
93 Details:
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.
97 Comments:
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.
105 Date: 2004 Jul 30
106 Attributed:
107 Details:
108  * cmake should parse le DICOM dictionary to generate methods like
109    gdcm???::SetImagePosition(int, int)
110    {
111      //generated content do not edit
112      ...
113    }
114    gdcm???::SetImageNumber(int)
115    {
116      //generated content do not edit
117      ...
118    }
119 Comments:
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
134   clarifying it.
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(),
148   ElValue::GetVR()...
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
164   explicit demand.
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:
178    gdcmFile WriteDicom;
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);
185    WriteDicom.Write();
186
187    Anonymize(ostream& output) {
188       a = gdcmFile("toto1");
189       a.SetPubValueByName("Patient Name", "");
190       a.SetPubValueByName("Date", "");
191       a.SetPubValueByName("Study Date", "");
192       a.write(output);
193    }
194 -----------------------------------------------------------------------------