X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDataEntry.cxx;h=d183d93675735ef05adea15b231abb002d25b2a0;hb=906464b1c71b1b623f8202a693e75a358a5bd965;hp=97afe0cb24cb22876179ae42ed5039eda4c8336c;hpb=5ac625c72835828d687ebdef878691d0913ae41b;p=gdcm.git diff --git a/src/gdcmDataEntry.cxx b/src/gdcmDataEntry.cxx index 97afe0cb..d183d936 100644 --- a/src/gdcmDataEntry.cxx +++ b/src/gdcmDataEntry.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDataEntry.cxx,v $ Language: C++ - Date: $Date: 2005/11/29 12:48:45 $ - Version: $Revision: 1.24 $ + Date: $Date: 2006/02/07 12:37:19 $ + Version: $Revision: 1.31 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -25,6 +25,12 @@ #include +#if defined(__BORLANDC__) + #include // for memcpy + #include // for atof + #include // for isdigit +#endif + namespace gdcm { //----------------------------------------------------------------------------- @@ -75,7 +81,9 @@ DataEntry::~DataEntry () //----------------------------------------------------------------------------- // Public /** - * \brief Sets the value (non string) of the current Dicom Header Entry + * \brief Sets the value (non string) of the current DataEntry + * @param area area + * @param self self */ void DataEntry::SetBinArea( uint8_t *area, bool self ) { @@ -87,7 +95,9 @@ void DataEntry::SetBinArea( uint8_t *area, bool self ) State = STATE_LOADED; } /** - * \brief Inserts the value (non string) into the current Dicom Header Entry + * \brief Inserts the value (non string) into the current DataEntry + * @param area area + * @param length length */ void DataEntry::CopyBinArea( uint8_t *area, uint32_t length ) { @@ -107,6 +117,11 @@ void DataEntry::CopyBinArea( uint8_t *area, uint32_t length ) } } +/** + * \brief Inserts the elementary (non string) value into the current DataEntry + * @param id index of the elementary value to be set + * @param val value, passed as a double + */ void DataEntry::SetValue(const uint32_t &id, const double &val) { if( !BinArea ) @@ -151,9 +166,10 @@ void DataEntry::SetValue(const uint32_t &id, const double &val) } /** * \brief returns, as a double (?!?) one of the values - // (when entry is multivaluated), identified by its index. - // Returns 0.0 if index is wrong - // FIXME : warn the user there was a problem ! + * (when entry is multivaluated), identified by its index. + * Returns 0.0 if index is wrong + * FIXME : warn the user there was a problem ! + * @param id id */ double DataEntry::GetValue(const uint32_t &id) const { @@ -307,7 +323,7 @@ uint32_t DataEntry::GetValueCount( ) const return GetLength(); } /** - * \brief Sets the 'value' of an Entry, passed as a std::string + * \brief Sets the 'value' of a DataEntry, passed as a std::string * @param value string representation of the value to be set */ void DataEntry::SetString(std::string const &value) @@ -485,7 +501,7 @@ void DataEntry::WriteContent(std::ofstream *fp, FileType filetype) return; //delimitors have NO value } - // --> We only deal with Little Endian writting + // --> We only deal with Little Endian writting. // --> forget Big Endian Transfer Syntax writting! // Next DICOM version will give it up ... @@ -506,8 +522,8 @@ void DataEntry::WriteContent(std::ofstream *fp, FileType filetype) uint8_t *data = BinArea; //safe notation size_t l = GetLength(); - gdcmDebugMacro ("in DataEntry::WriteContent " << GetKey() - << " : " << Global::GetVR()->GetAtomicElementLength(this->GetVR()) + gdcmDebugMacro("in DataEntry::WriteContent " << GetKey() << " AtomicLength: " + << Global::GetVR()->GetAtomicElementLength(this->GetVR() ) // << " BinArea in :" << &BinArea ); if (BinArea) // the binArea was *actually* loaded { @@ -524,7 +540,6 @@ void DataEntry::WriteContent(std::ofstream *fp, FileType filetype) } case 2: { -gdcmDebugMacro ("AtomicLength = 2 found; lgt =" << l); uint16_t *data16 = (uint16_t *)data; for(i=0;iseekp(l, std::ios::cur); // At Write time, for unloaded elems + } } // to avoid gdcm to propagate oddities // (length was already modified) if (l%2) - fp->seekp(1, std::ios::cur); + fp->seekp(1, std::ios::cur); // At Write time, for non even length elems } /** @@ -578,7 +596,7 @@ uint32_t DataEntry::ComputeFullLength() //----------------------------------------------------------------------------- // Protected /// \brief Creates a DataEntry owned BinArea (remove previous one if any) -void DataEntry::NewBinArea(void) +void DataEntry::NewBinArea( ) { DeleteBinArea(); if( GetLength() > 0 ) @@ -624,13 +642,8 @@ void DataEntry::Print(std::ostream &os, std::string const & ) v = GetString(); const VRKey &vr = GetVR(); - if( vr == "US" || vr == "SS" ) - s << " [" << GetString() << "]"; - else if( vr == "UL" || vr == "SL" ) - s << " [" << GetString() << "]"; - else if ( vr == "FL" ) - s << " [" << GetString() << "]"; - else if ( vr == "FD" ) + if( vr == "US" || vr == "SS" || vr == "UL" || vr == "SL" + || vr == "FL" || vr == "FD") s << " [" << GetString() << "]"; else {