jpr [Tue, 15 Jun 2004 08:41:09 +0000 (08:41 +0000)]
Jean-Pierre Roux
gdcmBinEntry.cxx
- adding a constructor taking a gdcmDocEntry as an input param
- ReplaceOrCreateByNumber now returns :
a gdcmBinEntry * if a Binary (void *) value is passed as a param
a gdcmValEntry * if a string value is passed as a param
gdcmDocument.cxx
- SetEntryByNumber now allows setting gdcmValEntry or gdcmBinEntry,
according to the param type (no longer sets a gdcmDocEntry)
- GetValEntryByNumber, GetBinEntryByNumber added
- NewValEntryByNumber and NewBinEntryByNumber added
gdcmFile.cxx
- Pixel Data are now linked to the (7fe0,0010) elements, after reading
gdcmSQItem.h
- GetSQItemNumber and SetSQItemNumber added, to provide
a (relative) Item identier inside a given Sequence
\warning : some pb remaining around this number
will be solved asap
- AddEntry now takes the Item Number as a param
gdcmValEntry.cxx
- adding a constructor taking a gdcmDocEntry as an input param
frog [Mon, 14 Jun 2004 08:35:35 +0000 (08:35 +0000)]
* Memory leak hunt with the following command:
valgrind --leak-check=yes --leak-resolution=high --num-callers=40
--show-reachable=yes gdcmTests PrintDocument
It looks like many (all?) leaks are due to the STL (or a bad usage
of the STL. The lines producing the leaks now have a comment with
a "MEMORY LEAK" tag: you can retrieve them with
grep "MEMORY LEAK" src/*
Here are two typical examples which I can't help fixing:
-----
#include <string>
int main() {
std::string name;
char * test = "babo";
name = test; //// <--- valgrind detects 960 bytes lost in
//// call to std::string::operator=(char const*)
name.clear(); //// Doesn't help !
return 0;
}
-----
#include <string>
#include <iostream>
int main() {
std::string line;
std::cout << "Type a bunch of characters followed by RETURN: ";
getline(std::cin, line); //// <--- valgrind dectects a loss
//// of 1320 bytes in call to
/// std::basic_istream<>& std::getline<>
return 0;
}
-----
frog [Thu, 10 Jun 2004 13:28:53 +0000 (13:28 +0000)]
* src/gdcmHeader.[cxx|h]:
- Predicates on the Transfer syntax (of the form Is[JPEF|RLE]*)
and related, moved away to gdcmDocument.
- Accessors (on the form [Get|Set]Entry*) set up to expose publicly
the corresponding protected accessors of inherited class
gdcmDocument, removed ! As a consequence gdcmFile had to be
declared friend of class gdcmDocument (see below).
- operator< moved to gdcmDocument (in fact it belongs to gdcmDicomDir).
- Clean up of undefined or unused methods.
* src/gdcmFile.[cxx|h]: added SetEntryByNumber (in order to take into
account the changes to gdcmHeader.h).
* src/gdcmDocument.h:
- gdcmFile is now a friend class (in order to take into account the
changes to gdcmHeader.h).
- Predicates on the Transfer syntax (of the form Is[JPEF|RLE]*) added
(see changes to gdcmHeader.h).
- Accessors (reading on the form GetEntry*) are now public.
- Clean up of undefined or unused methods.
* src/gdcmDocument.cxx:
- adaptation to changes to gdcmDocument.h
- ::OpenFile now writes a verbose message when file cannot be opened.
- some std::string properly set to VRKey
* src/gdcmDicomDir.h: historical references to gdcmHeader changed to
references to gdcmDocument.
* Test/TestFindTags.cxx: changed accordingly to above changes.
* gdcmPython/testSuite.py: adapted to renaming of acr files in
cvs repository gdcmData.
frog [Wed, 9 Jun 2004 15:00:42 +0000 (15:00 +0000)]
* src/gdcmValEntry.h: member voidArea type changed from char* to void*.
* src/gdcmBinEntry.h: member voidArea commented out, since it potentially
conflicts with gdcmValEntry::voidArea.
* src/gdcmValEntry.cxx: unmatching comment wiped out.
* src/gdcmVR.[h|cxx]: added two predicates that partition the possible
Value representation between StringRepresentable and BinaryRepresentable.
* src/gdcmDocument.cxx:
- method ParseDES: proper indentation restored and usage of
gdcmVR::IsVROfGdcmStringRepresentable wired in.
- method LoadDocEntry: the fingerprint left in the SetValue() of
unloaded entries (length > MaxSizeLoadEntry) had curiously been
removed. Reverting to previous code segment with the proper
dynamic_cast< gdcmValEntry* >.
Note: this was (partially) breaking the python test suite
(gdcmPython/testSuite.py) that made usage of the above
fingerprint to check presence of "Pixel Data".
* src/gdcmDocEntry.h: coding style.
* gdcmPython/__init__.py: environement variable GDCM_DATA_PATH is
now taken into account.
* gdcmPython/gdcm.i: adaptation to the new internal representation
of gdcm (exit gdcmParser, hello gdcmDocument).
* gdcmPython/testSuite.py: quick and dirty fix for loading vtkgdcmPython
on posix.
* gdcmPython/demo/PrintHeader.py: doesn't use the gdcmDocument::Print()
anymore, but instead prints the loaded Python dictionary.
* .... alas, the python testSuite is still broken.
frog [Tue, 8 Jun 2004 10:51:34 +0000 (10:51 +0000)]
src/CMakeLists.txt :
* kernel (i.e. src/gdcm*) doesn't compile gdcmParser.cxx nor
gdcmHeaderEntry.cxx anymore.
* converted the file format from DOS return to un*x ones (it caused
my lincvs graphical diff mode to display kinky results). --- Frog
malaterre [Mon, 17 May 2004 04:26:23 +0000 (04:26 +0000)]
* Some more cleanup/enhancement in gdcmPython/CMakeLists.txt getting close
to right behavior
* Initial addition of automatic python testing
* Initial addition of automatic image comparison
jpr [Tue, 4 May 2004 15:03:01 +0000 (15:03 +0000)]
Taking into account the 'Dicom Sequences' leads up to introduce new concepts
(and new classes) :
a 'gdcmDocument' is composed of a set of Doc Entries, that are
- elementary gdcmDocEntries (former gdcmHeaderEntries)
- Sequence Doc Entries (gdcmSeqEntries)
a Sequence is composed of Items.
Each item is a set of Doc Entries (this is recursive)
The non uniqueness of the 'Dicom tag' is due to this recursivity
(never taken into account)
Our unability to add a new 'entry' in the header
at the proper location (neither in the H-Table (map or multimap), nor in
the Chained List is also due to this recursivity.
Don't try, right now, to use/modify/compile these new sources : nothing is
finished.
We just commit all the stuff, 'as is', in order not to loose it.
ENH: Add Example stuff with real main:
1. Should be easier to use
2. This is a real example on how to read + write a dicom image, thus make sense to have it
* Doc/CMakeLists.txt: the main page is now properly differentiated
between the developper and user version.
* Doc/doxygen.config.in: dropped search related obsolete flags
* src/gdcmParser.h: doxygenation
ENH: 1. Remove remp solution of gdcmTests.cxx+ gdcmMain directly in src director, now generated in the build dir.
2. Tests as mentionned smarter
3. Some clean up
4. Add a new method in gdcmDict that return the PubDict by name this is intersting for 3rd party lib like ITK, where we could set the institution anme / patient name...
2004-04-28 Jean-Pierre Roux
* ENH add the provisional gdcmHeader::SQDepthLevel to allow
SeQuence indented printing of Dicom Header
* ENH merge methods gdcmParser::Parse and gdcmParser::LoadHeaderEntries
into the single gdcmParser::LoadHeaderEntries for efficiency purpose
Computation of SQDepthLevel is now part of gdcmHeader constructor