]> Creatis software - gdcm.git/blobdiff - TODO
ENH: * Finished lossless transition, not only do we now read all lossless jpeg
[gdcm.git] / TODO
diff --git a/TODO b/TODO
index 82bba741364f276ee76834a7e8dcd81b96cdb0eb..51890575e48d2a14aa0a59b1765eb3623a70dd14 100644 (file)
--- a/TODO
+++ b/TODO
-* Convert the C-like IO to C++ IO (i.e. remove FILE*, fread...). Some docs
-  are available at
-    http://www.angelfire.com/country/aldev0/cpphowto/cpp_BinaryFileIO.html
-* Remove enable_sequences and ignore_shadow from gdcmDocument().
+-----------------------------------------------------------------------------
+Proposed Template of an entry in this TODO:
+(Note: Date is the date of registering of first demand.)
+
+-------------
+Description:
+Date:
+Attributed:
+Details:
+Comments:
+-------------
+
+
+-----------------------------------------------------------------------------
+Description:  gdcmJpeg8 is strictly a copy/paste of gdcmJpeg12.cxx.
+Date: 2004 Oct 13
+Attributed: 
+Details:
+We should write the code in a common place, then include this 'cxx' file so the the define from gdcm_mangle redefine to the proper one.
+Comments:
+This will be usefull since I may need in the future a 16bits version of this reading
+-----------------------------------------------------------------------------
+Description: Change jpeg 'exit' call to standard c++ exception using the jpeg error
+handler
+Date: 2004 Oct 8
+Attributed: 
+Details:
+Comments:
+-----------------------------------------------------------------------------
+Description: Add kwsys as a subdir somewhere in gdcm
+Date: 2004 Oct 8
+Attributed: Mathieu
+Details:
+Comments:
+-----------------------------------------------------------------------------
+Description: ljpeg
+Date: 2004 Oct 8
+Attributed: Mathieu
+Details:
+Comments: ljpeg was rip from medcon and not the official one. medcon tried to
+optimised function using MACRO (doh!), so it make its very unreadable and very
+hard to fix warnings. Should go back to official source, copy proper copyright
+and fix warnings on dashboard
+13/10: update apparently no dicom toolkit use this lib as it is too buggy. We should use the ls-patch for ijg instead. Thus we can safely get rid of that lib.
+14/10: PHILIPS_Gyroscan-12-MONO2-Jpeg_Lossless.dcm prove that I was right the old Cornwell lib is buggy and does not read anything.
+-----------------------------------------------------------------------------
+Description: Extent reading support
+Date: 2004 Oct 8
+Attributed: Mathieu
+Details:
+Comments: All ITK/VTK readers support selecting extent. gdcm should support selecting
+extent before being inserted into ITK
+-----------------------------------------------------------------------------
+Description: Generate new UID each time we write DICOM
+Date: 2004 Oct 8
+Attributed: Mathieu
+Details:
+Comments: According to DICOM ref a new UID should be created each we write a
+DICOM images. I guess it should be an option so that we can still use md5sum to
+check dicom file. The proposed way was:
+http://www.creatis.insa-lyon.fr/pipermail/dcmlib/2004-September/000611.html
+
+Bah, comme Win32 pose encore pb:
+  echo "gdcm" | od -b
+  0000000 147 144 143 155 012
+et si on prenait:
+ radical + 147.144.143.155 + IP + time()
+
+-----------------------------------------------------------------------------
+Description: vtk/vtkGdcmReader doesn't positionate the normal to the image
+Date: 2004 Oct 1
+Attributed:
+Details: vtkGdcmReader::CheckFileCoherence() sets the DataOrigin[i]
+         but doesn't set the plane (image seen in 3D) normal (is it
+         possible any how). This plane normal could be extracted from 
+         the "orientation" info of the gdcmHeader ( refer to
+         grep "Orientation" Dicts/dicomV3.dic).
+         Problem exhibiting this defect: cine loop on a pile of images
+               whose Origin is correct, but whose normal is not set will
+               plainly suck !
+Comments:
+        * vtkGdcmReader inherits from vtkImageReader which aggregates
+          a vtkTranform. vtkGdcmReader could store (when the user requires
+          it, see below) the origin/normal taken from the Dicom Header
+          within this vtkTransform (looks like a natural place to store
+          this spacial information).
+        * Both settings of the origin and/OR the normal of the plane (image)
+          should be an option defined with a flag (On/Off) in the
+          vtkGdcmReader...
+-----------------------------------------------------------------------------
+Description: Fix the Python wrappers
+Date: 2004 Sep 24
+Attributed: no
+Details:
+Comments:
+-----------------------------------------------------------------------------
+Description: clean up gdcmFile/gdcmHeader relationship
+Date: 2004 Sep 24
+Attributed:
+Details:
+ * simplify the API for the user (no need to call GetImageData() before
+   calling Write().
+ * avoid memory leaks with with Pixel_Data.
+Comments:
+-----------------------------------------------------------------------------
+Description: remove all autotools references
+Date: 2004 Sep 24
+Attributed: no
+Details:
+Comments:
+-----------------------------------------------------------------------------
+Description: introduce namespace "gdcm"
+Date: 2004 Jul 30
+Attributed:
+Details:
+Comments:
+  1/ Problem: using enum with name like 'Unknow' on .Net, or LP on cygwin 
+              causes problems.
+  2/ Question: when introducing the namespace, should we remove the gdcm
+              prefix from classes or keep it ?
+-----------------------------------------------------------------------------
+Description: complete the doxygen Documentation
+Date: 2004 Sep 24
+Attributed:
+Details:
+Comments:
+-----------------------------------------------------------------------------
+Description: test the private dictionary part.
+Date: 2004 Sep 24
+Attributed:
+Details:
+Comments:
+ * Frog: where can we obtain such a private/dictionary and the corresponding
+         Dicom file ? Any examples on-line ?
+-----------------------------------------------------------------------------
+Description: fix definitively the memory leaks problems.
+Date: 2004 Sep 24
+Attributed:
+Details:
+Comments: There is a nightly dashboard that run valgrind every night
+(zorglub | GDCM-Linux-g++)
+-----------------------------------------------------------------------------
+Description: test gdcm on a big endian OS.
+Date: 2004 Sep 24
+Attributed:
+Details:
+Comments: There is a nightly dashboard that run on MacOSX each nite
+(midworld.kitwarein | GDCM-DarwinG5-g++ )
+-----------------------------------------------------------------------------
+Description: More tests !
+Date: 2004 Sep 24
+Attributed:
+Details:
+ * an example of new test could be to clone a Dicom image by 
+   copying gdcmDocEntry one after the other
+Comments:
+ * look at traversal used in Example/FlatHashTablePrint.cxx
+-----------------------------------------------------------------------------
+Description: revoir la gestion des resources, win32 permet d'inclure des
+   fichiers texte (=dicomV3.dic) dans une dll ou quelquechose du genre.
+Date: 2004 Sep 24
+Attributed: Mathieu
+Details:
+Comments:
+ * Frog: no comprendo !? De plus est-ce portable ?
+ * To improve load time it could be usefull to have the dictionary directly in
+ 'c++' code or in a more binary format.
+ * This will also solve some issues where /dummy/ user did nor set
+ GDCM_DICT_PATH properly neither 'make install'
+-----------------------------------------------------------------------------
+Description: Convert the C-like IO to C++ IO:
+Date: 2004 Jul 30
+Attributed:
+Details:
+   remove all the C-oriented IO references like FILE*, fread...
+   and replace them with the C++ fstream notation.
+   Provide overload of operators << and >> for any gdcm class using file IO.
+Comments:
+ * Question: the underlying jpeg libraries (written in C) use the FILE*
+   notation. Is there a way to still use fstream in gdcm, and 
+   build or pass the proper FILE* to jpeg libs ?
+ * Binary IO references are available at
+   http://www.angelfire.com/country/aldev0/cpphowto/cpp_BinaryFileIO.html
+ * The internal API should be rewritten so that gdcm speaking to jpeg lib is
+   done with stream/string and not directly opened FILE*
+ * No stdio.h anymore anywhere tolerated !
+-----------------------------------------------------------------------------
+Description: generate methods based on VM.
+Date: 2004 Jul 30
+Attributed:
+Details:
+ * cmake should parse le DICOM dictionary to generate methods like
+   gdcm???::SetImagePosition(int, int)
+   {
+     //generated content do not edit
+     ...
+   }
+   gdcm???::SetImageNumber(int)
+   {
+     //generated content do not edit
+     ...
+   }
+Comments:
+ * Regrain: a dicom dictionary entry name is NOT UNIQUE [this means
+     two tags=(group, element) can share the same name].
+     What should the wrapper do in such a case !?
+ * Frog: what does VM stand for ?
+ * VM = Value Multiplicity
+-----------------------------------------------------------------------------
+Description: Add information on supported imagers (constructor/model)
+Date: 2004 9 7
+Attributed:
+Details: in order to promote gdcm make a list (on the web pages)
+         of images successfully parsed based on a constructor/model ordering
+Comments: * frog: gdcmData only lists pathological images. How to collect
+    the ones gdcm works smoothly with (hopefully gdcmData is a small
+    subset of what we would like).        
+-----------------------------------------------------------------------------
+Description: Add a GetVersion() global function.
+Date: 2003 july 7
+Attributed:
+Details: This is to be used for version assertion with gdcmPython
+Comments:
+-----------------------------------------------------------------------------
+-----------------------------------------------------------------------------
 * vtk/vtkGdcmHeader.cxx: if speed becomes a concern some changes can
   be made at the cost of memory consumption (refer to header of 
   vtk/vtkGdcmHeader.cxx)
-* Add a GetVersion() global function.
+-----------------------------------------------------------------------------
 * gdcmElValSet::SetElValueLengthByNumber IMNSHO should be trashed.
   It's only purpose is a onliner substitute to calling GetElValueByNumber
   and then SetLength. This only obfuscates the caller code more than
   gdcmElValSet::GetElValueByNumber except for the returned code.
   gdcmHeader::SetPubElValLengthByNumber (which is based on 
   gdcmElValSet::SetElValueLengthByNumber) is used nowhere...
-* The declarations commented out and starting with "TODO Swig" (try
-  grep "TODO Swig" *.h) needed to be temporarily removed for swig to
-  proceed correctly (in fact problems appears at loading of _gdcm.[so/dll]).
-  So, simply uncomment the declaration once you provided the definition of
-  the method...
-* As stated by the first lines of Test/ExceptionAndPython/README, it looks
-  like we can move back to the exceptions and remove the errno stuff from
-  src/gdcm* !
+-----------------------------------------------------------------------------
 * Fix the bug in Test/bug1.cxx (see first comment line): Win32 only.
+-----------------------------------------------------------------------------
 * All (or at least many of) the methods of gdcmHeader whose only arguments
   are an ElValue* (e.g.  FindLength, FindVR, LoadElementValue...) can
   be moved away to ElValue class on condition of transmitting the
   gdcmHeader.fp attribute. This change should be considered since it
   would allow those method to avoid artificial calls to ElValue::GetElement(),
   ElValue::GetVR()...
-* Eat leanding_trailing_whitespace (found in python/gdcmPython/gdcmi) should
+-----------------------------------------------------------------------------
+* Eat leading_trailing_whitespace (found in python/gdcmPython/gdcmi) should
   be used when parsing the dictionary in C++ !
+-----------------------------------------------------------------------------
 * Group length is not a unique tag in a file. Hence avoid putting it
   in the element values dictionary without doing something smarter
   (say, instead of storing the length store the group and the length
    so we can related a length to a group).
+-----------------------------------------------------------------------------
 * GetPubElValByNumber doit faire la difference entre chaine vide 
   et chaine pas touve''. Eventuellement raiser une exception ?
+-----------------------------------------------------------------------------
 * gdcmHeader::LoadElements only loads the element whose length is
   below the specified size. When accessing the value of such an element
   the content is unfound ! Find a decent way of loading the value on
   explicit demand.
+-----------------------------------------------------------------------------
 * JPR: fournir une method qui ne fait que lire les elements passes en arguments
   sous forme d'une liste.
+-----------------------------------------------------------------------------
 * JPR: gdcmHeader::CheckSwap() dans le cas ACR pas propre, degager tout de
   suite si on a deduit que c'en est pas...
+-----------------------------------------------------------------------------
 * python /usr/lib/python2.2/site-packages/DaVaW/demo/dvwDcmReader.py
   and load image /home/frog/cvs/DCMlib/Data/CT-MONO2-16-ankle.dcm
   will yield wrong coloring scheme as opposed to 
   affim filein=/home/frog/cvs/DCMlib/Data/CT-MONO2-16-ankle.dcm
-* gdcmFile should implement the following:
+-----------------------------------------------------------------------------
+* gdcmFile should implement the following API:
    gdcmFile WriteDicom;
    WriteDicom.SetFileName("MyDicomFile.dcm");
    string * AllTags = gdcmHeader.GetDcmTagNames();
       a.SetPubValueByName("Study Date", "");
       a.write(output);
    }
-
-* use namespace for gdcm, to avoid problem when using enum with name like
-  'Unknow' on .Net, and LP on cygwin that cause problems
+-----------------------------------------------------------------------------