regrain [Tue, 7 Dec 2004 17:28:49 +0000 (17:28 +0000)]
* vtk/vtkGdcmWriter.[h|cxx] : add a first version of vtkGdcmWriter
* src/gdcmValEntry.cxx : bug fix when setting the value. Problems of odd
length
* src/gdcmHeader.cxx : Remove a useless call to Util::DicomString
* Add vtkGdcmWriter example and test
-- BeNours
malaterre [Tue, 7 Dec 2004 15:41:59 +0000 (15:41 +0000)]
ENH: Temporarily add jmemsrc. Patch suggest by Jean Michel Rouet, it enhance the jpeg lib to be able to decompress jpeg stream directly from memory + remove tabs
regrain [Tue, 7 Dec 2004 13:39:31 +0000 (13:39 +0000)]
* Test/TestUtil.cxx : reformat the source code
* vtk/vtkGdcmReader.cxx : remove and change prints
* src/gdcmValEntry.[cxx|h] : now set the length of the value when calling
SetValue
* src/gdcmBinEntry.[cxx|h] : SetValue method don't set the length
* src/*.cxx : remove all useless call to SetLength of a ValEntry object
-- BeNours
regrain [Mon, 6 Dec 2004 12:54:40 +0000 (12:54 +0000)]
* src/gdcmDocument.cxx : bug fix when opening the file. All read is followed
by an eof to prevent all bad read of the file... and in this case, the
file isn't readable.
-- BeNours
regrain [Mon, 6 Dec 2004 11:37:36 +0000 (11:37 +0000)]
* Example/Volume2Dicom.cxx : comment unused variables
* Test/PrintDicomDir.cxx : comment unused variables
* Test/BuildUpDicomDir.cxx : remove dbg.Verbose. Remove the FIXME.
* src/SQItem.[h|cxx] : remove the PtagHT variable. Remove the AddDocEntry
method that is redondant with AddEntry.
* src/gdcmDocEntrySet.h : add pure virtual methods common to ElementSet and
SQItem
-- BeNours
malaterre [Fri, 3 Dec 2004 20:16:55 +0000 (20:16 +0000)]
ENH: * Huge cleanup:
- Remove printf / sprintf
- include iostream AFTER gdcm so we don't get warnings
- GDCM_NO_ANSI_STRING_STREAM shouldn't be used explitely ouside of gdcm source
- Also remove tons of include from header files, hopefully this should speeup the compilation time, since it was becoming a dog slow.
- Remove gdcm.h as it include way too many files and slow down compilation (plus it is not up to date)
- remove /using namespace std/ this is BAD
regrain [Fri, 3 Dec 2004 17:13:17 +0000 (17:13 +0000)]
* Remove memory leaks on the DicomDir
* Remove some useless datas in DicomDirObject
* Add usefull methods in SQItem, to be complient withe the ElementSet
-- BeNours
regrain [Fri, 3 Dec 2004 11:55:37 +0000 (11:55 +0000)]
* src/gdcmPixelWriteConvert.[h|cxx] : new class to write datas (and in the
future, with convertion)
* src/gdcmFile.[h|cxx] : the PixelWriteConverter instance replace Pixel_Data
and ImageDataSize values. Remove the method to get the PixelReadConverter
from the output of the class
-- BeNours
regrain [Thu, 2 Dec 2004 15:14:15 +0000 (15:14 +0000)]
* Test/TestCopyDicom.cxx : the new dicom created is created empty, without
file name in input
* src/gdcmSeqEntry.cxx : bug fix in destruction of an element
* src/gdcmHeader.cxx : bug fix. Keep the string, otherwise it is destroyed.
The string leaves only in the fonction. So when we make a .c_str(), we
get the pointeur on the first element, element that will be destroyed
immediately after thee instruction.
* src/gdcmDocument.cxx : remove memory leaks. Bug fix when testing if the
file has been opened : the test must be made on the content of the
pointer and not directly on the pointer !
Code formatting
-- BeNours
regrain [Tue, 30 Nov 2004 17:00:54 +0000 (17:00 +0000)]
* Test/ShowDicom.cxx : Change the test to only open one vtkImageViewer.
Otherwise, under linux (Graphic card : NVidia / SE : FedoraCore 1) the
X session is killed (for my computer... it seems to not be identic on
all linux)
-- BeNours
regrain [Tue, 30 Nov 2004 15:44:43 +0000 (15:44 +0000)]
* Test/ShowDicom.cxx : now can be used with an off-screen rendering to
avoid problems (otherwise, the difference test between the visible image
and the reference is incorrect. If the reference is greater than the
screen resolution, it's produce errors).
Can be used for only one image. Can be used with a visible flag.
* vtk/vtkGdcmReader.cxx : remove commented codes.
* vtk/vtkGdcmReader.h : add the gdcmCommon.h include file to avoid warnings
under windows at compilation
* vtk/vtkgdcmViewer.cxx : reformat the file. Apply a default window/level
for grayscale images
* vtk/GdcmToBaseline.cxx : new program to easy create the reference image
-- BeNours
regrain [Tue, 30 Nov 2004 14:17:51 +0000 (14:17 +0000)]
* src/gdcmFile.[h|cxx] : bug fix for ACR-LIBIDO files when writting the file
* Test/TestAllReadCompareDicom.cxx, TestReadWriteReadCompare.cxx : add
tests on the image size X, Y, Z
-- BeNours
regrain [Fri, 26 Nov 2004 10:55:02 +0000 (10:55 +0000)]
* Remove some useless methods in gdcm::Document, gdcm::Header and gdcm::File
* Rename gdcmHeaderHelper.[h|cxx] to gdcmSerieHeader.[h|cxx] to be coherent
between the class name and the file name
-- BeNours
regrain [Thu, 25 Nov 2004 16:35:16 +0000 (16:35 +0000)]
fix compilation warnings for the gdcm::Document::TransferSyntaxStrings
variable... create a static method in gdcm::Document to access to
this variable content.
-- BeNours
regrain [Thu, 25 Nov 2004 13:12:02 +0000 (13:12 +0000)]
* src/gdcmDocument.[h|cxx] : set the Transfert Syntax values to the header
file, to be accessed by other files (like gdcmFile). Remove commented
code. Move the change of the header to the gdcmFile, using the
DocEntryArchive
* src/gdcmHeader.[h|cxx] : the write is completely made in the Header.
To be sure of that (and simplify calls), the Write of the header now
gets a file name and not a file pointer (std::ifstream).
* src/gdcmFile.[h|cxx] : apply the write file type to the header, using the
DocEntryArchive. Remove all open of the written file
-- BeNours
regrain [Thu, 25 Nov 2004 10:24:32 +0000 (10:24 +0000)]
* src/gdcmDocument.cxx : fix bug... test if the fp is opened to use it
* src/gdcmPixelConvert.cxx : calculate the image size when while the grab of
the header.
* src/gdcmFile.[h|cxx] : remove PixelRead and ImageDataSizeRaw variables and
some corresponding methods. Write correctly the file and check before
write
* Test/TestCopyDicom.cxx, TestReadWriteReadCompare.cxx,
TestAllReadCompareDicom.cxx : pass the write of images to RGB and test
is now on RGB datas (as before my last commit
* Example/PrintHeader.cxx, PrintFile.cxx : repad files.
-- BeNours
regrain [Wed, 24 Nov 2004 16:39:17 +0000 (16:39 +0000)]
* src/gdcmBinEntry.cxx, gdcmSeqEntry.cxx, gdcmSQItem.cxx, gdcmValEntry.cxx :
Add a print information of the type of the entry
* src/gdcmDocument.cxx : add the write of the preambule of a Dicom file.
It was in the gdcmFile, and all write have been regrouped
* src/gdcmFile.[h|cxx] : add methods to get the Raw data elements and size.
Write correctly all dicom files (in decompressed mode only at this time)
* Test/ : test on files are now made using Raw datas and not color datas if
any.
* Example/PrintFile.cxx : add more printings
-- BeNours
regrain [Wed, 24 Nov 2004 11:17:46 +0000 (11:17 +0000)]
* Amelioration of code, remove some code copy. For the loading of
BinEntry (in gdcmDocument), add the test to verify if the file is already
opened or not.
-- BeNours
regrain [Wed, 24 Nov 2004 10:23:45 +0000 (10:23 +0000)]
* src/gdcmDocEntryArchive.[h|cxx] : bug fix and add a method to temporary
remove a DocEntry in the header (push an empty DocEntry)
* src/gdcmFile.[h|cxx] : remove some useless variables, methods and code
lines. Bug fix in the initialization of the PixelConvert and the
DocEntryArchive
* src/gdcmElementSet.[h|cxx] : add methods Initialize and GetNext to
use in TestCopyDicom (now this test can run under windows... but fails)
* Test/TestCopyDicom.cxx : amelioration of the test :
- test the pixels written
- add test points to quickly find where is the error
- can set a file name input and output in arguments
* Test/TestAllReadCompareDicom.cxx, TestReadWriteReadCompare.cxx :
amelioration of the test output
* TestCopyDicom always fails... but changes to solve it quickly
-- BeNours
regrain [Tue, 23 Nov 2004 11:14:13 +0000 (11:14 +0000)]
* src/gdcmDocEntryArchive.cxx : complete the print function, that prints
all replaced DocEntry's
* src/gdcmFile.[h|cxx] : remove all changes of the header when getting datas.
Now, each needed DocEntry to modify is duplicated, modified and inserted
to the header using DocEntryArchive. Thus, after save, we can restore the
header initial state.
-- BeNours
regrain [Fri, 19 Nov 2004 18:49:38 +0000 (18:49 +0000)]
* src/gdcmDocEntry.cxx : remove the copy of the DictEntry... there isn't
correct to copy it. The DictEntry is specified at the DocEntry creation,
then, it musn't change in the time.
* src/gdcmDocEntryArchive.[h|cxx] : new class. It's goal is to change the
header correctly. At this time, the change is only made for the first
level of the Document. In the future, it might consider sequences.
The change is made by replacing a DocEntry by an other that is created
outside the class. The old value is kept. When we restore the header
status, the added DocEntry is deleted and replaced by the old value.
* src/gdcmElementSet.h : Set the DocEntryArchive like friend.
* src/gdcmFile.[h|cxx] : Use the gdcmDocEntryArchive. Add methods to
set the write type to explicit VR, implicit VR or ACR. Add methods to set
the write mode to native, decompressed or RGB (but not used at this time)
-- BeNours
malaterre [Wed, 17 Nov 2004 19:49:13 +0000 (19:49 +0000)]
ENH: Adding support for GE Private Transfer Syntax where file is in little endian and pixel data is in Big endian. I believe this should also be propagated to gdcmTS class ...
regrain [Wed, 17 Nov 2004 10:20:05 +0000 (10:20 +0000)]
* src/gdcmDocument.cxx : now, when using the ReplaceOrCreateByNumber to
set a BinEntry, the binArea is copied (like to set a ValEntry, the string
is copied).
* Test/TestCopyDicom.cxx, Example/TestCopyDicom.cxx : the image data isn't set because already copied when copying the BinEntry's of the header
* Test/TestAllReadCompareDicom.cxx : remove warnings
-- BeNours
regrain [Tue, 16 Nov 2004 16:20:22 +0000 (16:20 +0000)]
* FIX : now, the DocEntries are all deleted in the gdcmElementSet.
Two problems appear when doing it :
- with the gdcmFile : when the GetImageData method is called, the pixels
are stored in the gdcmPixelConvert, but a gdcmBinEntry link to these
datas (pixels). And each structure destruct the datas when it's
destructed. So we have two destructions for the same datas. To solve it,
a flag is added in the gdcmBinEntry to indicate if the BinEntry owns the
datas or not. If it doesn't own datas, then they will not destroyed by
the gdcmBinEntry.
- with the gdcmDicomDir : the sequences (gdcmSQItem) contain DocEntry
elements. The DicomDir* (DicomDirPatient, etc.) inherit from SQItem.
Thus destruct the DicomDir* elements and the TagHT of the ElementSet
create a double destruction of the same DocEntry's. So, to solve it,
the TagHT is simply cleared and the DicomDir* elements are destroyed.
* TODO : add an entry concerning memory leaks in the DicomDir
-- BeNours
frog [Tue, 16 Nov 2004 14:48:18 +0000 (14:48 +0000)]
* src/gdcmDocument.cxx: FIX ::ComputeRLEInfo() rleSegmentOffsetTable[]
was erroneously defined with a size of 15 instead of 16. [many thanks
to Jean Michel Rouet for pointing out this bug].
* FIX: src/* fix the doxygen warnings.
* src/gdcmVR.cxx: removed some redundant tests (e.g. LO)
regrain [Tue, 16 Nov 2004 13:20:34 +0000 (13:20 +0000)]
* gdcmElementSet.cxx : Bad patch to pass the test suite. Patch because
the pixel datas are deleted by the gdcmPixelData and the gdcmBonEntry
(problem becomes when calling gdcmFile::GetImageData )
regrain [Tue, 16 Nov 2004 11:19:05 +0000 (11:19 +0000)]
* FIX : src/gdcmDocument.cxx Remove obvious code in the destructor
* FIX : src/gdcmPixelConvert : Set to NULL the deleted structures in the
squeeze method
-- BeNours
regrain [Tue, 16 Nov 2004 10:37:54 +0000 (10:37 +0000)]
* FIX: src/gdcmUtil.cxx : to compile with MSVC6
* src/gdcmDocument.cxx : fix memory leaks. Fix possible bugs : use an object
after it have been deleted
-- BeNours
malaterre [Tue, 16 Nov 2004 05:03:35 +0000 (05:03 +0000)]
ENH:
1. Finish merging JMR patch for writting DICOM from scratch
2. Fix -hopefully- bug with MONOCHROME and space vs null character
3. Use const ref when possible
4. Add a new function InitializeDefaultHeader, which create a template DICOM header (CT image for now)
5. A few more comments
6. CreateUniqueUID can now be called without parameter
malaterre [Tue, 16 Nov 2004 02:54:34 +0000 (02:54 +0000)]
ENH: Slightly bigger patch:
1. Getting toward full integration of JMR patch for writting dicom from scratch
2. Update Test to test part of this patch: CreateUniqueUID
3. File was not close properly in gdcmDict
4. Use of typedef is to be prefered when possible (gdcmDict.cxx)
5. Use of const ref instead of copy (speed issue)
6. Remove temporary (duplicate) string in TranslateToKey
7. Mark extremely dangerous code as such (gdcmDocument.cxx and AddEntry fallback case)
8. Do not repeat virtual in subclasses
9. Implemented in gdcm::Util two new function: GetIPAddress, and CreateUniqueUID
malaterre [Tue, 16 Nov 2004 02:04:00 +0000 (02:04 +0000)]
ENH: Apply first patch toward better string comparison when dealing with broken DICOM file. Essentially the string could be padded with a space instead of a null character as defined by standard
regrain [Mon, 15 Nov 2004 16:12:30 +0000 (16:12 +0000)]
* src/gdcmDocument.[cxx|h] : fix memory leaks. The return is suppressed
because never used... and in the same time, that's remove some memory leaks
-- BeNours
regrain [Mon, 15 Nov 2004 15:29:03 +0000 (15:29 +0000)]
* src/gdcmFile.cxx : now delete the PixelConvert instance.
* In examples and tests : change the type of image data variables from void*
to uint8_t*. Remmove all delete on image data variables
-- BeNours
malaterre [Fri, 12 Nov 2004 21:33:46 +0000 (21:33 +0000)]
BUG: Apply patch proposed by Peter Cech (ITK user), to handle some Philips NTSCAN where some private tag were being flip to Big endian for no reason (the rest of the file is in little endian).
regrain [Wed, 10 Nov 2004 16:13:17 +0000 (16:13 +0000)]
* src/gdcmDocument.cxx : Set the file pointer TP to 0 in the constructors.
Verify the file pointer value before open the file, and if it's not null,
a verbose message is generated.
Close correctly the file when the file isn't considered dicom-like. The
correctly close is a call to CloseFile.
When closing the file pointer, test if its not null to close the file.
* src/gdcmPixelConvert.cxx : bug fix for the SIEMENS_GBS_III-16-ACR_NEMA_1.acr
file. For an uncompressed image, the copied datas correspond in the least
case to the image size (calculated) or the image size specified in the
header. A verbose is generated if these two size mismatch
-- BeNours
regrain [Tue, 9 Nov 2004 16:14:20 +0000 (16:14 +0000)]
* src/TestAllReadCompareDicom.cxx : test the existence of the directory
using an 'ifstream' other than a 'FILE *'. The previous solution ('FILE *')
break under windows (with msvc6 compilation).
-- BeNours
regrain [Tue, 9 Nov 2004 11:21:31 +0000 (11:21 +0000)]
* Bugs fix for the Windows build with VC6
* CMakeLists.txt : bug fix - The include of the VTK lib is made only when it's
needed (only for projects required VTK). If the VTK is included in all
projects, there is conflicts with the jpeg lib of vtk when compiling the
gdcmjpeg[8,12,16] projects. The first conflict is on the jmorecfg.h file.
* src/gdcmUtil.h : export binary_write methods. Otherwise, there's problems
when compiling the gdcm_wrap.cxx file (created by the compilation of the
gdcm.i file)
* vtk/vtkGdcmDemo.cxx : remove the use of std namespace for the cerr use
(like it's already made for the cout use). Otherwise, conflict with the
std::cerr of vtk.
-- BeNours
frog [Tue, 9 Nov 2004 10:25:25 +0000 (10:25 +0000)]
* src/gdcmDicomDit.h the Method typedef is now local to DicomDir class.
* gdcmPython/gdcm.i:
- comments on the DicomDir::Method related usage added.
- now that we use the namespace gdcm, a lot of internal classes do
NOT need to be wrapped anymore.
* gdcmPython/demo/DicomDirProgressMethod.py (that uses the above
DicomDir::Method) new example added.