X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmFile.cxx;h=035e25c3d5935b736cd172d9be5fe46558427c41;hb=abac16617f1453f5db19618ccb45e821efa867b6;hp=4921affdf3820fe2858911157c0295bcd9f98eaa;hpb=8da9df62c47908e7b9a67238a6c12b92ba6cae7a;p=gdcm.git diff --git a/src/gdcmFile.cxx b/src/gdcmFile.cxx index 4921affd..035e25c3 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/25 13:12:02 $ - Version: $Revision: 1.164 $ + Date: $Date: 2004/11/30 14:17:52 $ + Version: $Revision: 1.167 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -406,11 +406,20 @@ bool File::WriteBase (std::string const & fileName, FileType type) SetWriteFileTypeToExplicitVR(); break; case ACR: - SetWriteFileTypeToACR(); - break; case ACR_LIBIDO: - SetWriteFileTypeToACRLibido(); + SetWriteFileTypeToACR(); break; + default: + SetWriteFileTypeToExplicitVR(); + } + + if( type == ACR_LIBIDO ) + { + SetWriteToLibido(); + } + else + { + SetWriteToNoLibido(); } switch(WriteMode) @@ -459,6 +468,7 @@ bool File::WriteBase (std::string const & fileName, FileType type) RestoreWrite(); RestoreWriteFileType(); + RestoreWriteOfLibido(); return check; } @@ -481,12 +491,12 @@ bool File::CheckWriteIntegrity() numberBitsAllocated = 16; } - int decSize = HeaderInternal->GetXSize() + size_t decSize = HeaderInternal->GetXSize() * HeaderInternal->GetYSize() * HeaderInternal->GetZSize() * ( numberBitsAllocated / 8 ) * HeaderInternal->GetSamplesPerPixel(); - int rgbSize = decSize; + size_t rgbSize = decSize; if( HeaderInternal->HasLUT() ) rgbSize = decSize * 3; @@ -670,15 +680,10 @@ void File::SetWriteFileTypeToACR() Archive->Push(0x0002,0x0010); } -void File::SetWriteFileTypeToACRLibido() -{ - SetWriteFileTypeToACR(); -} - void File::SetWriteFileTypeToExplicitVR() { - std::string ts = - Util::DicomString( TransferSyntaxStrings[ExplicitVRLittleEndian] ); + std::string ts = Util::DicomString( + Document::GetTransferSyntaxValue(ExplicitVRLittleEndian).c_str() ); ValEntry* tss = CopyValEntry(0x0002,0x0010); tss->SetValue(ts); @@ -689,8 +694,8 @@ void File::SetWriteFileTypeToExplicitVR() void File::SetWriteFileTypeToImplicitVR() { - std::string ts = - Util::DicomString( TransferSyntaxStrings[ImplicitVRLittleEndian] ); + std::string ts = Util::DicomString( + Document::GetTransferSyntaxValue(ImplicitVRLittleEndian).c_str() ); ValEntry* tss = CopyValEntry(0x0002,0x0010); tss->SetValue(ts); @@ -723,12 +728,33 @@ void File::SetWriteToLibido() Archive->Push(newRow); Archive->Push(newCol); } + + ValEntry *libidoCode = CopyValEntry(0x0008,0x0010); + libidoCode->SetValue("ACRNEMA_LIBIDO_1.1"); + libidoCode->SetLength(10); + Archive->Push(libidoCode); } -void File::RestoreWriteFromLibido() +void File::SetWriteToNoLibido() +{ + ValEntry *recCode = dynamic_cast(HeaderInternal->GetDocEntryByNumber(0x0008,0x0010)); + if( recCode ) + { + if( recCode->GetValue() == "ACRNEMA_LIBIDO_1.1" ) + { + ValEntry *libidoCode = CopyValEntry(0x0008,0x0010); + libidoCode->SetValue(""); + libidoCode->SetLength(0); + Archive->Push(libidoCode); + } + } +} + +void File::RestoreWriteOfLibido() { Archive->Restore(0x0028,0x0010); Archive->Restore(0x0028,0x0011); + Archive->Restore(0x0008,0x0010); } ValEntry* File::CopyValEntry(uint16_t group,uint16_t element) @@ -770,23 +796,6 @@ BinEntry* File::CopyBinEntry(uint16_t group,uint16_t element) //----------------------------------------------------------------------------- // Private -/** - * \brief Set the pixel datas in the good entry of the Header - */ -void File::SetPixelData(uint8_t* data) -{ - GetHeader()->SetEntryByNumber( GDCM_BINLOADED, - GetHeader()->GetGrPixel(), GetHeader()->GetNumPixel()); - - // Will be 7fe0, 0010 in standard case - DocEntry* currentEntry = GetHeader()->GetDocEntryByNumber(GetHeader()->GetGrPixel(), GetHeader()->GetNumPixel()); - if ( currentEntry ) - { - if ( BinEntry* binEntry = dynamic_cast(currentEntry) ) - // Flag is to false because datas are kept in the gdcmPixelConvert - binEntry->SetBinArea( data, false ); - } -} //----------------------------------------------------------------------------- } // end namespace gdcm