From: regrain Date: Wed, 24 Nov 2004 16:39:17 +0000 (+0000) Subject: * src/gdcmBinEntry.cxx, gdcmSeqEntry.cxx, gdcmSQItem.cxx, gdcmValEntry.cxx : X-Git-Tag: Version1.0.bp~571 X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=commitdiff_plain;h=c852120fdb6d542d84f74440b68414fdb52178d7;p=gdcm.git * 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 --- diff --git a/ChangeLog b/ChangeLog index 6e84dc28..c96d898f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2004-11-24 Benoit Regrain + * 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 + 2004-11-24 Benoit Regrain * Amelioration of code, remove some code copy. For the loading of BinEntry (in gdcmDocument), add the test to verify if the file is already diff --git a/Example/PrintFile.cxx b/Example/PrintFile.cxx index 9e41e49c..4b02c55b 100644 --- a/Example/PrintFile.cxx +++ b/Example/PrintFile.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: PrintFile.cxx,v $ Language: C++ - Date: $Date: 2004/11/24 10:23:46 $ - Version: $Revision: 1.12 $ + Date: $Date: 2004/11/24 16:39:17 $ + Version: $Revision: 1.13 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -46,7 +46,9 @@ int main(int argc, char* argv[]) std::cout << "\n\n" << std::endl; int dataSize = f1->GetImageDataSize(); - std::cout <GetImageDataSizeRaw() << std::endl; int nX,nY,nZ,sPP,planarConfig; std::string pixelType; nX=e1->GetXSize(); diff --git a/Testing/TestAllReadCompareDicom.cxx b/Testing/TestAllReadCompareDicom.cxx index 5472f477..11a2d7de 100644 --- a/Testing/TestAllReadCompareDicom.cxx +++ b/Testing/TestAllReadCompareDicom.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: TestAllReadCompareDicom.cxx,v $ Language: C++ - Date: $Date: 2004/11/24 10:23:46 $ - Version: $Revision: 1.17 $ + Date: $Date: 2004/11/24 16:39:18 $ + Version: $Revision: 1.18 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -27,59 +27,58 @@ int InternalTest(std::string const & filename, { std::cout << " Testing: " << filename << std::endl; + ////// Step 1: + std::cout << " 1..."; gdcm::File* tested = new gdcm::File( filename ); if( !tested->GetHeader()->IsReadable() ) { - std::cout << " Image not gdcm compatible:" + std::cout << " Failed" << std::endl + << " Image not gdcm compatible:" << filename << std::endl; delete tested; return 1; } ////// Step 2: - ////// Check for existence of reference baseline dicom file: + std::cout << "2..."; FILE* testFILE = fopen( referenceFileName.c_str(), "r" ); if (! testFILE ) { - ////// Step 3a: - uint8_t* testedImageData = tested->GetImageData(); // Kludge + uint8_t* testedImageData = tested->GetImageDataRaw(); // Kludge (void)testedImageData; tested->WriteDcmExplVR( referenceFileName ); - std::cerr << " Creating reference baseline file :" << std::endl - << " " << referenceFileName - << std::endl; - delete tested; - //delete (char*)testedImageData; - return 0; } else { fclose( testFILE ); } + ////// Step 3a: ////// When reference file is not gdcm readable test is failed: - + std::cout << "3a..."; + gdcm::File* reference = new gdcm::File( referenceFileName ); if( !reference->GetHeader()->IsReadable() ) { - std::cout << " Failed: reference image " << std::endl - << " " << referenceFileName <GetImageDataSize(); - uint8_t* testedImageData = tested->GetImageData(); + std::cout << "3b..."; + int testedDataSize = tested->GetImageDataSizeRaw(); + uint8_t* testedImageData = tested->GetImageDataRaw(); - int referenceDataSize = reference->GetImageDataSize(); - uint8_t* referenceImageData = reference->GetImageData(); + int referenceDataSize = reference->GetImageDataSizeRaw(); + uint8_t* referenceImageData = reference->GetImageDataRaw(); if (testedDataSize != referenceDataSize) { @@ -108,7 +107,7 @@ int InternalTest(std::string const & filename, delete tested; delete reference; - std::cout << " Passed..." << std::endl; + std::cout << "OK." << std::endl; return 0; } diff --git a/Testing/TestCopyDicom.cxx b/Testing/TestCopyDicom.cxx index 66c2ad22..5a3aa14e 100644 --- a/Testing/TestCopyDicom.cxx +++ b/Testing/TestCopyDicom.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: TestCopyDicom.cxx,v $ Language: C++ - Date: $Date: 2004/11/24 10:23:46 $ - Version: $Revision: 1.19 $ + Date: $Date: 2004/11/24 16:39:18 $ + Version: $Revision: 1.20 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -76,8 +76,8 @@ int CopyDicom(std::string const & filename, gdcm::File *original = new gdcm::File( filename ); gdcm::File *copy = new gdcm::File( output ); - size_t dataSize = original->GetImageDataSize(); - uint8_t* imageData = original->GetImageData(); + size_t dataSize = original->GetImageDataSizeRaw(); + uint8_t* imageData = original->GetImageDataRaw(); (void)dataSize; // To use the variable and not have warnings at compil. (void)imageData; // To use the variable and not have warnings at compil. @@ -152,8 +152,8 @@ int CopyDicom(std::string const & filename, //////////////// Step 5: std::cout << "5..."; - int dataSizeWritten = copy->GetImageDataSize(); - uint8_t* imageDataWritten = copy->GetImageData(); + int dataSizeWritten = copy->GetImageDataSizeRaw(); + uint8_t* imageDataWritten = copy->GetImageDataRaw(); if (dataSize != dataSizeWritten) { diff --git a/Testing/TestReadWriteReadCompare.cxx b/Testing/TestReadWriteReadCompare.cxx index 5597861e..24a2a763 100644 --- a/Testing/TestReadWriteReadCompare.cxx +++ b/Testing/TestReadWriteReadCompare.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: TestReadWriteReadCompare.cxx,v $ Language: C++ - Date: $Date: 2004/11/24 10:23:46 $ - Version: $Revision: 1.14 $ + Date: $Date: 2004/11/24 16:39:18 $ + Version: $Revision: 1.15 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -40,8 +40,8 @@ int CompareInternal(std::string const & filename, std::string const & output) //////////////// Step 2: gdcm::File* file = new gdcm::File( header ); - int dataSize = file->GetImageDataSize(); - uint8_t* imageData = file->GetImageData(); //EXTREMELY IMPORTANT + int dataSize = file->GetImageDataSizeRaw(); + uint8_t* imageData = file->GetImageDataRaw(); //EXTREMELY IMPORTANT // Sure, it is : It's up to the user to decide if he wants to // GetImageData or if he wants to GetImageDataRaw // (even if we do it by setting a flag, he will have to decide) @@ -83,8 +83,8 @@ int CompareInternal(std::string const & filename, std::string const & output) } std::cout << "3..."; // For the next step: - int dataSizeWritten = reread->GetImageDataSize(); - uint8_t* imageDataWritten = reread->GetImageData(); + int dataSizeWritten = reread->GetImageDataSizeRaw(); + uint8_t* imageDataWritten = reread->GetImageDataRaw(); //////////////// Step 4: diff --git a/src/gdcmBinEntry.cxx b/src/gdcmBinEntry.cxx index d0301c5e..10fc9898 100644 --- a/src/gdcmBinEntry.cxx +++ b/src/gdcmBinEntry.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmBinEntry.cxx,v $ Language: C++ - Date: $Date: 2004/11/16 16:20:23 $ - Version: $Revision: 1.37 $ + Date: $Date: 2004/11/24 16:39:18 $ + Version: $Revision: 1.38 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -74,6 +74,7 @@ BinEntry::~BinEntry() void BinEntry::Print(std::ostream &os) { + os << "B "; DocEntry::Print(os); std::ostringstream s; void* binArea = GetBinArea(); diff --git a/src/gdcmDocument.cxx b/src/gdcmDocument.cxx index c5d39139..c5079fe4 100644 --- a/src/gdcmDocument.cxx +++ b/src/gdcmDocument.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDocument.cxx,v $ Language: C++ - Date: $Date: 2004/11/24 11:17:47 $ - Version: $Revision: 1.136 $ + Date: $Date: 2004/11/24 16:39:18 $ + Version: $Revision: 1.137 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -488,6 +488,15 @@ void Document::Write(std::ofstream* fp, FileType filetype) /// (necessary if user wants to write a DICOM V3 file /// starting from an ACR-NEMA (V2) Header + if ( filetype == ImplicitVR || filetype == ExplicitVR ) + { + // writing Dicom File Preamble + char filePreamble[128]; + memset(filePreamble, 0, 128); + fp->write(filePreamble, 128); + fp->write("DICM", 4); + } + if (filetype == ImplicitVR) { std::string ts = @@ -1103,6 +1112,9 @@ void Document::LoadEntryBinArea(uint16_t group, uint16_t elem) */ void Document::LoadEntryBinArea(BinEntry* element) { + if(element->GetBinArea()) + return; + bool openFile = !Fp; if(openFile) OpenFile(); diff --git a/src/gdcmFile.cxx b/src/gdcmFile.cxx index 666a8e96..46e1f4c0 100644 --- a/src/gdcmFile.cxx +++ b/src/gdcmFile.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmFile.cxx,v $ Language: C++ - Date: $Date: 2004/11/24 11:17:47 $ - Version: $Revision: 1.161 $ + Date: $Date: 2004/11/24 16:39:18 $ + Version: $Revision: 1.162 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -75,7 +75,7 @@ File::File(std::string const & filename ) */ void File::Initialise() { - WriteMode = WMODE_RGB; + WriteMode = WMODE_DECOMPRESSED; WriteType = WTYPE_IMPL_VR; PixelConverter = new PixelConvert; @@ -191,6 +191,37 @@ int File::ComputeDecompressedPixelDataSizeFromHeader() return DecompressedSize; } +/// Accessor to \ref ImageDataSize +size_t File::GetImageDataSize() +{ + if ( ! GetDecompressed() ) + { + // If the decompression failed nothing can be done. + return 0; + } + + if ( HeaderInternal->HasLUT() && PixelConverter->BuildRGBImage() ) + { + return PixelConverter->GetRGBSize(); + } + else + { + // When no LUT or LUT conversion fails, return the decompressed + return PixelConverter->GetDecompressedSize(); + } +} + +/// Accessor to \ref ImageDataSizeRaw +size_t File::GetImageDataSizeRaw() +{ + if ( ! GetDecompressed() ) + { + // If the decompression failed nothing can be done. + return 0; + } + return PixelConverter->GetDecompressedSize(); +} + /** * \brief - Allocates necessary memory, * - Reads the pixels from disk (uncompress if necessary), @@ -218,82 +249,6 @@ uint8_t* File::GetImageData() // When no LUT or LUT conversion fails, return the decompressed return PixelConverter->GetDecompressed(); } - -/* if ( ! GetDecompressed() ) - { - // If the decompression failed nothing can be done. - return 0; - } - - uint8_t* pixelData; - if ( HeaderInternal->HasLUT() && PixelConverter->BuildRGBImage() ) - { - pixelData = PixelConverter->GetRGB(); - } - else - { - // When no LUT or LUT conversion fails, return the decompressed - pixelData = PixelConverter->GetDecompressed(); - } - -// PIXELCONVERT CLEANME - // Restore the header in a disk-consistent state - // (if user asks twice to get the pixels from disk) - if ( PixelRead != -1 ) // File was "read" before - { - RestoreInitialValues(); - } - if ( PixelConverter->GetRGB() ) - { - // now, it's an RGB image - // Lets's write it in the Header - std::string spp = "3"; // Samples Per Pixel - HeaderInternal->SetEntryByNumber(spp,0x0028,0x0002); - std::string rgb = "RGB "; // Photometric Interpretation - HeaderInternal->SetEntryByNumber(rgb,0x0028,0x0004); - std::string planConfig = "0"; // Planar Configuration - HeaderInternal->SetEntryByNumber(planConfig,0x0028,0x0006); - PixelRead = 0; // no PixelRaw - } - else - { - if ( HeaderInternal->HasLUT() ) - { - // The LUT interpretation failed - std::string photometricInterpretation = Util::DicomString("MONOCHROME1"); - HeaderInternal->SetEntryByNumber( photometricInterpretation, - 0x0028, 0x0004 ); - PixelRead = 0; // no PixelRaw - } - else - { - if ( PixelConverter->IsDecompressedRGB() ) - { - /////////////////////////////////////////////////// - // now, it's an RGB image - // Lets's write it in the Header - // Droping Palette Color out of the Header - // has been moved to the Write process. - // TODO : move 'values' modification to the write process - // : save also (in order to be able to restore) - // : 'high bit' -when not equal to 'bits stored' + 1 - // : 'bits allocated', when it's equal to 12 ?! - std::string spp = "3"; // Samples Per Pixel - std::string photInt = "RGB "; // Photometric Interpretation - std::string planConfig = "0"; // Planar Configuration - HeaderInternal->SetEntryByNumber(spp,0x0028,0x0002); - HeaderInternal->SetEntryByNumber(photInt,0x0028,0x0004); - HeaderInternal->SetEntryByNumber(planConfig,0x0028,0x0006); - } - PixelRead = 1; // PixelRaw - } - } - - // We say the value *is* loaded. - SetPixelData(pixelData); -// END PIXELCONVERT CLEANME - - return pixelData;*/ } /** @@ -368,45 +323,6 @@ size_t File::GetImageDataIntoVector (void* destination, size_t maxSize) uint8_t* File::GetImageDataRaw () { return GetDecompressed(); -/* uint8_t* decompressed = GetDecompressed(); - if ( ! decompressed ) - { - return 0; - } - -// PIXELCONVERT CLEANME - // Restore the header in a disk-consistent state - // (if user asks twice to get the pixels from disk) - if ( PixelRead != -1 ) // File was "read" before - { - RestoreInitialValues(); - } - if ( PixelConverter->IsDecompressedRGB() ) - { - /////////////////////////////////////////////////// - // now, it's an RGB image - // Lets's write it in the Header - // Droping Palette Color out of the Header - // has been moved to the Write process. - // TODO : move 'values' modification to the write process - // : save also (in order to be able to restore) - // : 'high bit' -when not equal to 'bits stored' + 1 - // : 'bits allocated', when it's equal to 12 ?! - std::string spp = "3"; // Samples Per Pixel - std::string photInt = "RGB "; // Photometric Interpretation - std::string planConfig = "0"; // Planar Configuration - HeaderInternal->SetEntryByNumber(spp,0x0028,0x0002); - HeaderInternal->SetEntryByNumber(photInt,0x0028,0x0004); - HeaderInternal->SetEntryByNumber(planConfig,0x0028,0x0006); - } - - // We say the value *is* loaded. - SetPixelData(decompressed); - - PixelRead = 1; // PixelRaw -// END PIXELCONVERT CLEANME - - return decompressed;*/ } uint8_t* File::GetDecompressed() @@ -565,15 +481,6 @@ bool File::WriteBase (std::string const & fileName, FileType type) return false; } - if ( type == ImplicitVR || type == ExplicitVR ) - { - // writing Dicom File Preamble - char filePreamble[128]; - memset(filePreamble, 0, 128); - fp1->write(filePreamble, 128); - fp1->write("DICM", 4); - } - switch(WriteMode) { case WMODE_NATIVE : @@ -593,33 +500,13 @@ bool File::WriteBase (std::string const & fileName, FileType type) // if recognition code tells us we dealt with a LibIDO image // we reproduce on disk the switch between lineNumber and columnNumber // just before writting ... - /// \todo the best trick would be *change* the recognition code /// but pb expected if user deals with, e.g. COMPLEX images - - std::string rows, columns; - if ( HeaderInternal->GetFileType() == ACR_LIBIDO) +/* if ( HeaderInternal->GetFileType() == ACR_LIBIDO) { SetWriteToLibido(); - } - // ----------------- End of Special Patch ---------------- - -/* uint16_t grPixel = HeaderInternal->GetGrPixel(); - uint16_t numPixel = HeaderInternal->GetNumPixel();; - - DocEntry* PixelElement = - GetHeader()->GetDocEntryByNumber(grPixel, numPixel); - - if ( PixelRead == 1 ) - { - // we read pixel 'as is' (no tranformation LUT -> RGB) - PixelElement->SetLength( ImageDataSizeRaw ); - } - else if ( PixelRead == 0 ) - { - // we tranformed GrayLevel pixels + LUT into RGB Pixel - PixelElement->SetLength( ImageDataSize ); }*/ + // ----------------- End of Special Patch ---------------- HeaderInternal->Write(fp1, type); @@ -628,11 +515,10 @@ bool File::WriteBase (std::string const & fileName, FileType type) // // ...and we restore the Header to be Dicom Compliant again // just after writting - - if ( HeaderInternal->GetFileType() == ACR_LIBIDO ) +/* if ( HeaderInternal->GetFileType() == ACR_LIBIDO ) { RestoreWriteFromLibido(); - } + }*/ // ----------------- End of Special Patch ---------------- RestoreWrite(); @@ -679,56 +565,104 @@ void File::SetWriteToNative() void File::SetWriteToDecompressed() { -// if (( !HeaderInternal->HasLUT() ) || (!PixelConverter->BuildRGBImage())) - if(HeaderInternal->HasLUT() && PixelConverter->BuildRGBImage()) + if(HeaderInternal->GetNumberOfScalarComponents()==3 && !HeaderInternal->HasLUT()) { SetWriteToRGB(); } else { ValEntry* photInt = CopyValEntry(0x0028,0x0004); - photInt->SetValue("MONOCHROME1 "); - photInt->SetLength(12); + if(HeaderInternal->HasLUT()) + { + photInt->SetValue("PALETTE COLOR "); + photInt->SetLength(14); + } + else + { + photInt->SetValue("MONOCHROME1 "); + photInt->SetLength(12); + } BinEntry* pixel = CopyBinEntry(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel()); pixel->SetValue(GDCM_BINLOADED); - pixel->SetBinArea(PixelConverter->GetDecompressed(),false); - pixel->SetLength(PixelConverter->GetDecompressedSize()); + if(Pixel_Data) + { + pixel->SetBinArea(Pixel_Data,false); + pixel->SetLength(ImageDataSize); + } + else + { + pixel->SetBinArea(PixelConverter->GetDecompressed(),false); + pixel->SetLength(PixelConverter->GetDecompressedSize()); + } Archive->Push(photInt); Archive->Push(pixel); } -/* else - { - SetWriteToRGB(); - } */ } void File::SetWriteToRGB() { - if(PixelConverter->BuildRGBImage()) + if(HeaderInternal->GetNumberOfScalarComponents()==3 && !HeaderInternal->HasLUT()) { + PixelConverter->BuildRGBImage(); + ValEntry* spp = CopyValEntry(0x0028,0x0002); spp->SetValue("3 "); spp->SetLength(2); - ValEntry* photInt = CopyValEntry(0x0028,0x0004); - photInt->SetValue("RGB "); - photInt->SetLength(4); - ValEntry* planConfig = CopyValEntry(0x0028,0x0006); planConfig->SetValue("0 "); planConfig->SetLength(2); + ValEntry* photInt = CopyValEntry(0x0028,0x0004); + photInt->SetValue("RGB "); + photInt->SetLength(4); + BinEntry* pixel = CopyBinEntry(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel()); pixel->SetValue(GDCM_BINLOADED); - pixel->SetBinArea(PixelConverter->GetRGB(),false); - pixel->SetLength(PixelConverter->GetRGBSize()); + if(Pixel_Data) + { + pixel->SetBinArea(Pixel_Data,false); + pixel->SetLength(ImageDataSize); + } + else if(PixelConverter->GetRGB()) + { + pixel->SetBinArea(PixelConverter->GetRGB(),false); + pixel->SetLength(PixelConverter->GetRGBSize()); + } + else // Decompressed data + { + pixel->SetBinArea(PixelConverter->GetDecompressed(),false); + pixel->SetLength(PixelConverter->GetDecompressedSize()); + } Archive->Push(spp); - Archive->Push(photInt); Archive->Push(planConfig); + Archive->Push(photInt); Archive->Push(pixel); + + // For old ACR-NEMA + // Thus, we have a RGB image and the bits allocated = 24 and + // samples per pixels = 1 (in the read file) + if(HeaderInternal->GetBitsAllocated()==24) + { + ValEntry* bitsAlloc = CopyValEntry(0x0028,0x0100); + bitsAlloc->SetValue("8 "); + bitsAlloc->SetLength(2); + + ValEntry* bitsStored = CopyValEntry(0x0028,0x0101); + bitsStored->SetValue("8 "); + bitsStored->SetLength(2); + + ValEntry* highBit = CopyValEntry(0x0028,0x0102); + highBit->SetValue("7 "); + highBit->SetLength(2); + + Archive->Push(bitsAlloc); + Archive->Push(bitsStored); + Archive->Push(highBit); + } } else { @@ -742,6 +676,11 @@ void File::RestoreWrite() Archive->Restore(0x0028,0x0004); Archive->Restore(0x0028,0x0006); Archive->Restore(GetHeader()->GetGrPixel(),GetHeader()->GetNumPixel()); + + // For old ACR-NEMA (24 bits problem) + Archive->Restore(0x0028,0x0100); + Archive->Restore(0x0028,0x0101); + Archive->Restore(0x0028,0x0102); } void File::SetWriteToLibido() diff --git a/src/gdcmFile.h b/src/gdcmFile.h index 8ed3171f..43b6f736 100644 --- a/src/gdcmFile.h +++ b/src/gdcmFile.h @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmFile.h,v $ Language: C++ - Date: $Date: 2004/11/24 10:23:47 $ - Version: $Revision: 1.74 $ + Date: $Date: 2004/11/24 16:39:18 $ + Version: $Revision: 1.75 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -59,10 +59,9 @@ public: Header* GetHeader() { return HeaderInternal; } /// Accessor to \ref ImageDataSize - size_t GetImageDataSize() { return ImageDataSize; }; - + size_t GetImageDataSize(); /// Accessor to \ref ImageDataSizeRaw - size_t GetImageDataSizeRaw() { return ImageDataSizeRaw; }; + size_t GetImageDataSizeRaw(); /// Accessor to \ref PixelConverter PixelConvert* GetPixelConverter() { return PixelConverter; }; diff --git a/src/gdcmSQItem.cxx b/src/gdcmSQItem.cxx index 166fd40a..01f78332 100644 --- a/src/gdcmSQItem.cxx +++ b/src/gdcmSQItem.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmSQItem.cxx,v $ Language: C++ - Date: $Date: 2004/11/10 18:27:23 $ - Version: $Revision: 1.36 $ + Date: $Date: 2004/11/24 16:39:19 $ + Version: $Revision: 1.37 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -60,6 +60,7 @@ SQItem::~SQItem() */ void SQItem::Print(std::ostream& os) { + os << "S "; std::ostringstream s; if (SQDepthLevel > 0) diff --git a/src/gdcmSeqEntry.cxx b/src/gdcmSeqEntry.cxx index 2a7d748d..a0e53cfe 100644 --- a/src/gdcmSeqEntry.cxx +++ b/src/gdcmSeqEntry.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmSeqEntry.cxx,v $ Language: C++ - Date: $Date: 2004/11/19 12:44:00 $ - Version: $Revision: 1.36 $ + Date: $Date: 2004/11/24 16:39:19 $ + Version: $Revision: 1.37 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -85,6 +85,8 @@ void SeqEntry::Print( std::ostream &os ) { // First, Print the Dicom Element itself. SetPrintLevel(2); + + os << "S "; DocEntry::Print(os); os << std::endl; diff --git a/src/gdcmValEntry.cxx b/src/gdcmValEntry.cxx index 8781df1e..673f9489 100644 --- a/src/gdcmValEntry.cxx +++ b/src/gdcmValEntry.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmValEntry.cxx,v $ Language: C++ - Date: $Date: 2004/11/16 16:49:01 $ - Version: $Revision: 1.36 $ + Date: $Date: 2004/11/24 16:39:19 $ + Version: $Revision: 1.37 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -76,6 +76,7 @@ void ValEntry::Print(std::ostream & os) TSKey v; std::string d2; + os << "V "; DocEntry::Print(os); if (g == 0xfffe)