]> Creatis software - gdcm.git/blob - TODO
* Preparation of writing a gdcmHeader iterator: generalisation of gdcmTagKey
[gdcm.git] / TODO
1 -----------------------------------------------------------------------------
2 Use namespace gdcm:
3   Problem: using enum with name like 'Unknow' on .Net, or LP on cygwin 
4            causes problems.
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 ?
15   References:
16         binary IO are available at
17         http://www.angelfire.com/country/aldev0/cpphowto/cpp_BinaryFileIO.html
18 -----------------------------------------------------------------------------
19 * Clean up src/gdcmValEntry.[h|cxx] from VoidArea
20 * vtk/vtkGdcmHeader.cxx: if speed becomes a concern some changes can
21   be made at the cost of memory consumption (refer to header of 
22   vtk/vtkGdcmHeader.cxx)
23 * Add a GetVersion() global function.
24 * gdcmElValSet::SetElValueLengthByNumber IMNSHO should be trashed.
25   It's only purpose is a onliner substitute to calling GetElValueByNumber
26   and then SetLength. This only obfuscates the caller code more than
27   clarifying it.
28   Besides the definition of gdcmElValSet::SetElValueLengthByNumber itself
29   it quite poor since it is a almost exact copy of
30   gdcmElValSet::GetElValueByNumber except for the returned code.
31   gdcmHeader::SetPubElValLengthByNumber (which is based on 
32   gdcmElValSet::SetElValueLengthByNumber) is used nowhere...
33 * Fix the bug in Test/bug1.cxx (see first comment line): Win32 only.
34 * All (or at least many of) the methods of gdcmHeader whose only arguments
35   are an ElValue* (e.g.  FindLength, FindVR, LoadElementValue...) can
36   be moved away to ElValue class on condition of transmitting the
37   gdcmHeader.fp attribute. This change should be considered since it
38   would allow those method to avoid artificial calls to ElValue::GetElement(),
39   ElValue::GetVR()...
40 * Eat leanding_trailing_whitespace (found in python/gdcmPython/gdcmi) should
41   be used when parsing the dictionary in C++ !
42 * Group length is not a unique tag in a file. Hence avoid putting it
43   in the element values dictionary without doing something smarter
44   (say, instead of storing the length store the group and the length
45    so we can related a length to a group).
46 * GetPubElValByNumber doit faire la difference entre chaine vide 
47   et chaine pas touve''. Eventuellement raiser une exception ?
48 * gdcmHeader::LoadElements only loads the element whose length is
49   below the specified size. When accessing the value of such an element
50   the content is unfound ! Find a decent way of loading the value on
51   explicit demand.
52 * JPR: fournir une method qui ne fait que lire les elements passes en arguments
53   sous forme d'une liste.
54 * JPR: gdcmHeader::CheckSwap() dans le cas ACR pas propre, degager tout de
55   suite si on a deduit que c'en est pas...
56 * python /usr/lib/python2.2/site-packages/DaVaW/demo/dvwDcmReader.py
57   and load image /home/frog/cvs/DCMlib/Data/CT-MONO2-16-ankle.dcm
58   will yield wrong coloring scheme as opposed to 
59   affim filein=/home/frog/cvs/DCMlib/Data/CT-MONO2-16-ankle.dcm
60 * gdcmFile should implement the following:
61    gdcmFile WriteDicom;
62    WriteDicom.SetFileName("MyDicomFile.dcm");
63    string * AllTags = gdcmHeader.GetDcmTagNames();
64    WriteDicom.SetDcmTag(AllTags[5], "253");
65    WriteDicom.SetDcmTag("Patient Name", "bozo");
66    WriteDicom.SetDcmTag("Patient Name", "bozo");
67    WriteDicom.SetImageData(Image);
68    WriteDicom.Write();
69
70    Anonymize(ostream& output) {
71       a = gdcmFile("toto1");
72       a.SetPubValueByName("Patient Name", "");
73       a.SetPubValueByName("Date", "");
74       a.SetPubValueByName("Study Date", "");
75       a.write(output);
76    }
77