FIX: valgrind reported this one:
UMR ==23598== Use of uninitialised value of size 4
==23598== at 0x77C5B7: isalpha (in /lib/tls/libc-2.3.2.so)
==23598== by 0x3C2CAB2E: gdcmDocument::FindDocEntryVR(gdcmDocEntry*) (gdcmDocument.cxx:1783)
==23598== by 0x3C2CCE83: gdcmDocument::ReadNextDocEntry() (gdcmDocument.cxx:2556)
==23598== by 0x3C2C985C: gdcmDocument::ParseSQ(gdcmSeqEntry*, long, long, bool) (gdcmDocument.cxx:1422)
==23598== by 0x3C2C9792: gdcmDocument::ParseDES(gdcmDocEntrySet*, long, long, bool) (gdcmDocument.cxx:1391)
==23598== by 0x3C2C5858: gdcmDocument::gdcmDocument(std::string const&, bool, bool, bool) (gdcmDocument.cxx:130)
==23598== by 0x3C2B19FA: gdcmHeader::gdcmHeader(std::string const&, bool, bool, bool) (gdcmHeader.cxx:47)
==23598== by 0x8053824: PrintAllDocument(int, char**) (PrintAllDocument.cxx:34)
==23598== by 0x8050D3E: main (gdcmTests.cxx:173)
==23598==
BUG: On recent debian system, the dirent structure is not fed properly. Furthermore the scandir is only a BSD extension and not POSIX. So rewrote Explore function to be POSIX and works on recent debian system. The Explore function will also now return the number of files read
* src/gdcmCommon.h, gdcmDict.cxx, gdcmTS.cxx : bug fix for msvc6 compilation
* src/gdcmDebug.[h|cxx] : bug fix for msvc6 compilation. Replace the dbg
variable (instance of gdcmDebug) by a definition macro, and the instance
is now in static in the gdcmDebug class
* src/gdcmSQItem.h : (FIXME) remove an undefined method
* Test/PrintAllDocument.cxx : bug fix in the result of the test
-- BeNours
* WARNING: ctest now depends more tightly on gdcmData. You should
check out gdcmData properly for things to run smoothly...
* src/gdcmDocument.cxx MAX_SIZE_LOAD_ELEMENT_VALUE is set back to 0xfff
(4096) for "ctest -R TestAllEntryVerify" to be able to run (i.e.
we need the pixels not be loaded in order to use the ValEntry
that displays position and size).
* Test/TestAllEntryVerify.cxx a new low level test now seems fair.
This is a C++ based equivalent of gdcmPython/testSuite.py that should
be deprecated. If you have any doubts about the advantages of a
modern scripting language (read Python) versus grass root C++ (i.e.
without lex + yacc, because of gdcm commitement to MS-VC++, sighhh),
I suggest you compare TestAllEntryVerify.cxx (639 lines, without the
reference file gdcmData/TestAllEntryVerifyReference.txt) and testSuite.py.
Anyhow, consider documenting the gdcmData images in
gdcmData/TestAllEntryVerifyReference.txt (and please run ctest before
commiting changes).
* Test/CMakeLists.txt:
- now uses TestAllEntryVerify.cxx
- specific comments on oldACR00001.ima (now renamed in gdcmData
to SIEMENS_GBS_III-16-ACR_NEMA_1.acr) moved away to
gdcmData/TestAllEntryVerifyReference.txt
* TODO updated.
- guint16 and guint32 removed. Use ISO C uint16_t, uint32_t instead.
- TagKey renamed to gdcmTagKey (for external usage)
- VRKey renamed to gdcmVRKey (for external usage)
- removal of typedef duplication.
- Removed all unecessary inline keyword from class inline definitions.
- Some method|function(void) declarations replaced with method|function().
* src/jpeg/libijg12/jdhuff12.c:
- printf polluting ctest removed.
- TAB removal for comminting
* Test:
- TestAllReadCompareDicom.cxx: added a test that compares all the
images in gdcmDataImages.h with corresponding images in
gdcmData/BaselineDicom/. When baseline images are not present
this test creates them.
Note: we need to validate each reference image, but before that
I'd like to rename them with a more explicit name...
- CMakeLists.txt: changed accordingly.
* Example/*.cxx: examples now only include gdcm.h (as opposed to
including each header needed).
* Test/*.cxx and Example/*.cxx: moved some examples away from the
test suite to the Example directory. Are concerned:
- PrintHeader.cxx
- TestDcm2Acr.cxx
- TestFindTags.cxx
- TestWrite.cxx was
- TestWriteSimple.cxx
* Test/CMakeLists.txt: added some comments on reasons for black listing
image gdcmData/oldACR00001.ima
frog [Wed, 30 Jun 2004 00:10:58 +0000 (00:10 +0000)]
* Test/CmakeList.txt: removed the following from black list (to be coherent
with removal from gdcmData):
- gdcm-MR-PHILIPS-16-Multi-Seq.fixed.dcm
- gdcm-MR-PHILIPS-16.dcm
- US.3405.1.dcm
Added the following because after last cvs update, they cause
ctest -R TestReadWriteReadCompare
to segfault:
- gdcm-MR-SIEMENS-16-1.acr
- oldACR00001.ima
frog [Tue, 29 Jun 2004 23:43:19 +0000 (23:43 +0000)]
* Test/TestReadWriteReadCompare.cxx was properly written (with a call
to gdcmFile::SetImageData()) BUT since gdcmFile is brain damaged (see
new comments in this file) we temporarily (sigh) move to a weaker
form of test...
* Test/CmakeList.txt: with the change to Test/TestReadWriteReadCompare.cxx
we don't need to black list the following images anymore:
- 8BitsUncompressedColor.dcm
- OT-PAL-8-face.dcm
- US-PAL-8-10x-echo.dcm
* src/gdcmDocument.[h|cxx]: RE-Reverting to version 1.42 with the proper
fixes and the beautified code ;-)
This fixes the bug introduced in version 1.42 (when beautifying)
that made the parsing of 8BitsRunLengthColor.dcm unproper.
Note: ctest was blind to this bug (this means we need to still
improve the test suite). The bug could be detected by using
gdcmbin/bin/PrintDocument $GDCM_DATA/8BitsRunLengthColor.dcm
or by using
gdcmbin/bin/ReadWrite $GDCM_DATA/8BitsRunLengthColor.dcm
and by displaying the (garbage) produced file temp.XDCM...
frog [Tue, 29 Jun 2004 14:00:37 +0000 (14:00 +0000)]
* Test/TestWriteRead.cxx and TestReadWrite.cxx merged (because of
redundancy) to added Test/TestReadWriteReadCompare.cxx
* Test/CmakeList.txt: because the compare test of
Test/TestReadWriteReadCompare.cxx fails, the following images are
black listed: - 8BitsUncompressedColor.dcm
- OT-PAL-8-face.dcm
- US-PAL-8-10x-echo.dcm
frog [Tue, 29 Jun 2004 11:27:13 +0000 (11:27 +0000)]
* src/gdcmDocument.cxx: for broken (non DICOM V3 conformal) images
(e.g. gdcm-JPEG-LossLess3a.dcm see comments in
gdcm/gdcmPython/testSuite.py for details) ::FindDocLengthOB() had
and ad-hoc kludge. This kludge is now removed, and on encountering
such an image (OB field brain damaged) we set errno. Then in
::FindDocLength() we "fix" the length as being ALL what remains
in the file (until EOF). We then proceed, hoping for the best...
This fixes a SegFault in ShowDicom when trying to write such an
image.
* Test/CmakeList.txt: 8BitsRunLengthColor.dcm is now blacklisted
(because TestWriteRead breaks on it, after a non conformal commit?).
ctest now runs properly, except for MakeDicomDir (which was allways
broken) and the Python related stuff (still not fixed).
jpr [Mon, 28 Jun 2004 09:30:58 +0000 (09:30 +0000)]
- now Write drops LUT Descriptors and LUTs (if any) when SamplesPerPixel =3
- now Write is no longer confused by 'BitsAllocated = 12" and 'BitsStored=12"
malaterre [Sat, 26 Jun 2004 04:09:32 +0000 (04:09 +0000)]
ENH: Some cosmetic cleanup of gdcmFile, main changes are: lgrTotal -> ImageDataSize / lgrTotaleRaw -> ImageDataSizeRaw, it matches then there accessors (simple et de bon gout in french).
* I also marked some lines as dangerous (mem leaks), and a comment for 12 bits images
* Added conversion table in DEVELOPPERS
* Also untabify, checkTabs is working :P
malaterre [Fri, 25 Jun 2004 20:48:25 +0000 (20:48 +0000)]
ENH: * 3'tabify
* Fix bug where gdcmHeader was passed a const char*
* use const_iterator where possible
* made some method const correct
* moved a method in class (inline)
...hopefully should be more readable
jpr [Fri, 25 Jun 2004 15:42:17 +0000 (15:42 +0000)]
Add a 'test' - reads an image
- writes it as an uncompressed, (RGB if necessary), Explicit VR
- reads it
- compares the PixelData Length and the Pixels.
- The, *we* cry :
frog [Fri, 25 Jun 2004 12:56:38 +0000 (12:56 +0000)]
* Test/PrintAllDocument.cxx: looping on files is now effective. It used to
loop on the same image until memory went out.
Note: this means we still have gobs of memory loss in PrintDocument
* src/gdcmDocument.cxx: fixes problem on parsing on file
gdcmData/16BitsJpegLosslessGrayScale.dcm.
malaterre [Fri, 25 Jun 2004 03:06:37 +0000 (03:06 +0000)]
EMH: *Add PrintAllDocument, dog slow right now
*Moved PrintDocument as example instead
* vtkGdcmReader was free'ing instead of delete[]'ing
* 3'tabulify ShowDicom / PrintAllDocument
* Minor comments for -W -Wall compilation
jpr [Thu, 24 Jun 2004 18:03:14 +0000 (18:03 +0000)]
Jean-Pierre Roux
FIX : Write - All the Sequences and Sequence Item are now written
as 'no length' stuff, and a Sequence Delimitor aor an Item Delimitor
is added a the end, when necessary.
- A lot of brain-damaged images, that were read correctly are
now written correctly
- length compatible BinEntry are now loaded correctly
(even for odd groups)
- Note : only Explicit Value Representation was checked.
(question : is implicit VR really necessary for gdcm ?)
jpr [Wed, 23 Jun 2004 09:30:22 +0000 (09:30 +0000)]
gdcmDocument.cxx
- Now we do recognize the JpegLossLess format (there was a misstyping in
code 'beautyfication' :-(
- Now we automaticaticaly load the Luts, if any
jpr [Tue, 22 Jun 2004 13:47:33 +0000 (13:47 +0000)]
2004-06-22 Jean-Pierre Roux
In order : to write Sequences, whatever their imbrication level,
: to allow user to create his own Sequences
a lot of modif where necessary (adding, moving, or virtualising methods)
frog [Mon, 21 Jun 2004 12:38:28 +0000 (12:38 +0000)]
* src/gdcmBinEntry.cxx, gdcmValEntry.cxx: gdcmBinEntry::Print() now
properly calls gdcmValEntry::Print() (that was weed out from
code related to gdcmBinEntry).
frog [Mon, 21 Jun 2004 08:47:13 +0000 (08:47 +0000)]
* Test/TestWriteSimple.cxx: fix to gdcmHeader-gdcmHeaderHelper revamping.
The default constructor invoked by the line
gdcmHeader *f1 = new gdcmHeader( header );
was gdcmHeader::gdcmHeader(bool) instead of the expected
gdcmHeader::gdcmHeader(std::string const &, bool = false, bool, bool).
Hence the parsing wasn't executed... See also below.
* src/gdcmHeader.h: the declaration of gdcmHeader::gdcmHeader(bool)
as explicit constructor didn't do the trick to fix the above problem.
Could anyone explain why ? --- Frog