From ec7826d8a6e9f1bfb58ab5c6ec45702a5b3fa30d Mon Sep 17 00:00:00 2001 From: jpr Date: Tue, 6 May 2003 15:52:13 +0000 Subject: [PATCH] Add protected method : gdcmElValue * GetElValueByNumber(guint16 group, guint16 element); SetImageDataSize now updates both (7fe0,0000) and (7fe0,0010) --- src/gdcmElValSet.cxx | 11 +++++++---- src/gdcmFile.cxx | 34 +++++++++++++++++++--------------- src/gdcmHeader.cxx | 18 +++++++++++++++++- src/gdcmHeader.h | 5 ++++- 4 files changed, 47 insertions(+), 21 deletions(-) diff --git a/src/gdcmElValSet.cxx b/src/gdcmElValSet.cxx index 5d33ab64..70fd2a7a 100644 --- a/src/gdcmElValSet.cxx +++ b/src/gdcmElValSet.cxx @@ -90,9 +90,8 @@ int gdcmElValSet::SetElValueByNumber(string content, lgr = 2; else if( (vr == "UL") || (vr == "SL") ) lgr = 4; - else - lgr = content.length(); - + else + lgr = content.length(); tagHt[key]->SetLength(lgr); return 1; } @@ -107,10 +106,14 @@ int gdcmElValSet::SetElValueByName(string content, string TagName) { if( (vr == "US") || (vr == "SS") ) lgr = 2; else if( (vr == "UL") || (vr == "SL") ) - lgr = 4; + lgr = 4; else lgr = content.length(); +// TODO : WARNING: le cas de l'element des pixels (7fe0,0010) n'est pas traite +// par SetElValueByName +// il faudra utiliser SetElValueByNumber + NameHt[TagName]->SetLength(lgr); return 1; } diff --git a/src/gdcmFile.cxx b/src/gdcmFile.cxx index 6c791419..0284a5c2 100644 --- a/src/gdcmFile.cxx +++ b/src/gdcmFile.cxx @@ -91,15 +91,15 @@ bool gdcmFile::ReadPixelData(void* destination) { IsExplicitVRLittleEndianTransferSyntax() || IsExplicitVRBigEndianTransferSyntax() || IsDeflatedExplicitVRLittleEndianTransferSyntax() ) { - - size_t ItemRead = fread(destination, lgrTotale, 1, fp); - if ( ItemRead != 1 ) { - CloseFile(); - return false; - } else { - CloseFile(); - return true; - } + + size_t ItemRead = fread(destination, lgrTotale, 1, fp); + if ( ItemRead != 1 ) { + CloseFile(); + return false; + } else { + CloseFile(); + return true; + } } if (IsJPEGLossless()) { @@ -127,8 +127,8 @@ bool gdcmFile::ReadPixelData(void* destination) { _IdDcmJpegFree (jpg); CloseFile(); return true; - } - + } + printf ("Sorry, TransfertSyntax not yet taken into account ...\n"); CloseFile(); return false; @@ -317,6 +317,7 @@ return; * \ingroup gdcmFile * \brief TODO JPR * \warning doit-etre etre publique ? FIXME JPR + * TODO : y a-t-il un inconvenient à fusioner ces 2 fonctions * * @param inData TODO JPR * @param ExpectedSize TODO JPR @@ -327,6 +328,8 @@ int gdcmFile::SetImageData(void * inData, size_t ExpectedSize) { SetImageDataSize(ExpectedSize); PixelData = inData; lgrTotale = ExpectedSize; + + return(1); } @@ -337,6 +340,7 @@ int gdcmFile::SetImageData(void * inData, size_t ExpectedSize) { * \brief TODO JPR * \ * \warning WARNING doit-etre etre publique ? FIXME JPR + * TODO : y aurait il un inconvenient à fusionner ces 2 fonctions * * @param ImageDataSize TODO JPR * @@ -345,15 +349,15 @@ int gdcmFile::SetImageData(void * inData, size_t ExpectedSize) { void gdcmFile::SetImageDataSize(size_t ImageDataSize) { string content1; - string content2; char car[20]; // suppose que le ElValue (0x7fe0, 0x0010) existe ... sprintf(car,"%d",ImageDataSize); - content2=car; - SetPubElValByNumber(content2, 0x7fe0, 0x0010); - + + gdcmElValue*a = GetElValueByNumber(0x7fe0, 0x0010); + a->SetLength(ImageDataSize); + ImageDataSize+=8; sprintf(car,"%d",ImageDataSize); content1=car; diff --git a/src/gdcmHeader.cxx b/src/gdcmHeader.cxx index 631b038d..d98074f5 100644 --- a/src/gdcmHeader.cxx +++ b/src/gdcmHeader.cxx @@ -1,4 +1,4 @@ -// $Header: /cvs/public/gdcm/src/Attic/gdcmHeader.cxx,v 1.61 2003/05/05 14:13:59 frog Exp $ +// $Header: /cvs/public/gdcm/src/Attic/gdcmHeader.cxx,v 1.62 2003/05/06 15:52:13 jpr Exp $ #include #include @@ -863,6 +863,18 @@ guint32 gdcmHeader::ReadInt32(void) { return g; } + +gdcmElValue* gdcmHeader::GetElValueByNumber(guint16 Group, guint16 Elem) { + + gdcmElValue* elValue = PubElValSet.GetElementByNumber(Group, Elem); + if (!elValue) { + dbg.Verbose(1, "gdcmHeader::GetElValueByNumber", + "failed to Locate gdcmElValue"); + return (gdcmElValue*)0; + } + return elValue; +} + /** * \ingroup gdcmHeader * \brief Build a new Element Value from all the low level arguments. @@ -1292,7 +1304,11 @@ string gdcmHeader::GetElValRepByName(string TagName) { */ int gdcmHeader::SetPubElValByNumber(string content, guint16 group, guint16 element) + +//TODO : homogeneiser les noms : SetPubElValByNumber qui appelle PubElValSet.SetElValueByNumber +// pourquoi pas SetPubElValueByNumber ?? { + return ( PubElValSet.SetElValueByNumber (content, group, element) ); } diff --git a/src/gdcmHeader.h b/src/gdcmHeader.h index 3373b99a..3ccf8cf4 100644 --- a/src/gdcmHeader.h +++ b/src/gdcmHeader.h @@ -1,4 +1,4 @@ -// $Header: /cvs/public/gdcm/src/Attic/gdcmHeader.h,v 1.21 2003/05/05 14:13:59 frog Exp $ +// $Header: /cvs/public/gdcm/src/Attic/gdcmHeader.h,v 1.22 2003/05/06 15:52:13 jpr Exp $ #ifndef GDCMHEADER_H #define GDCMHEADER_H @@ -86,6 +86,7 @@ private: gdcmElValue * ReadNextElement(void); gdcmElValue * NewElValueByNumber(guint16 group, guint16 element); gdcmElValue * NewElValueByName(string name); + void FindLength(gdcmElValue *); void FindVR(gdcmElValue *); void LoadElementValue(gdcmElValue *); @@ -98,6 +99,8 @@ private: protected: FILE * fp; FileType filetype; + + gdcmElValue * GetElValueByNumber(guint16 group, guint16 element); guint16 SwapShort(guint16); // needed by gdcmFile guint32 SwapLong(guint32); // for JPEG Files :-( -- 2.45.1