From ef0e08814ac95a5412e8650112e23add221767d1 Mon Sep 17 00:00:00 2001 From: jpr Date: Tue, 28 Aug 2007 09:29:26 +0000 Subject: [PATCH] When 'Pixel Aspect Ratio' exists, don't add a default 'Pixel Spacing' --- src/gdcmDocEntry.cxx | 21 +++++---------------- src/gdcmFileHelper.cxx | 40 +++++++++++++++++++--------------------- 2 files changed, 24 insertions(+), 37 deletions(-) diff --git a/src/gdcmDocEntry.cxx b/src/gdcmDocEntry.cxx index afea104a..4d7f80e7 100644 --- a/src/gdcmDocEntry.cxx +++ b/src/gdcmDocEntry.cxx @@ -3,8 +3,8 @@ Program: gdcm Module: $RCSfile: gdcmDocEntry.cxx,v $ Language: C++ - Date: $Date: 2007/07/27 09:49:31 $ - Version: $Revision: 1.91 $ + Date: $Date: 2007/08/28 09:29:26 $ + Version: $Revision: 1.92 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -69,7 +69,7 @@ DocEntry::~DocEntry() /** * \brief Writes the common part of any DataEntry, SeqEntry * @param fp already open ofstream pointer - * @param filetype type of the file (ACR, ImplicitVR, ExplicitVR, ...) + * @param filetype type of the file (ACR, ImplicitVR, ExplicitVR, JPEG, JPEG2000...) */ void DocEntry::WriteContent(std::ofstream *fp, FileType filetype, bool insideMetaElements) { @@ -125,20 +125,9 @@ void DocEntry::WriteContent(std::ofstream *fp, FileType filetype, bool insideMet uint16_t zero = 0; uint16_t shortLgr = (uint16_t)lgth; -/* - if( IsVRUnknown() ) - { - // GDCM_VRUNKNOWN was stored in the Entry VR; - // deal with Entry as if TS were Implicit VR - binary_write(*fp, lgth); - } - else -*/ if( IsVRUnknown() ) { - // if VR was not set, we set it to "UN" - // (FileHelper::Write has no longer to switch to ImplicitVR - // when undocumented VR DataElements exist!) + // if VR was not set by user, we set it to "UN" SetVR("UN"); vr=GetVR(); } @@ -152,7 +141,7 @@ void DocEntry::WriteContent(std::ofstream *fp, FileType filetype, bool insideMet binary_write(*fp, zero); if ( (filetype == JPEG || filetype == JPEG2000) && group == 0x7fe0 && elem == 0x0010) { - gdcmAssertMacro( GetVR() == "OW" ); + // gdcmAssertMacro( GetVR() == "OW" ); //?!? binary_write(*fp, ffff); } else if (vr == "SQ") diff --git a/src/gdcmFileHelper.cxx b/src/gdcmFileHelper.cxx index 6c2c3f86..9005f118 100644 --- a/src/gdcmFileHelper.cxx +++ b/src/gdcmFileHelper.cxx @@ -4,8 +4,8 @@ Module: $RCSfile: gdcmFileHelper.cxx,v $ Language: C++ - Date: $Date: 2007/08/27 16:14:47 $ - Version: $Revision: 1.122 $ + Date: $Date: 2007/08/28 09:29:26 $ + Version: $Revision: 1.123 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -1650,21 +1650,24 @@ void FileHelper::CheckMandatoryElements() } } - std::string pixelSpacing = FileInternal->GetEntryString(0x0028,0x0030); - if ( pixelSpacing == GDCM_UNFOUND ) + std::string pixelAspectRatio = FileInternal->GetEntryString(0x0028,0x0034); + if ( pixelAspectRatio == GDCM_UNFOUND ) // avoid conflict with pixelSpacing ! { - pixelSpacing = "1.0\\1.0"; - // if missing, Pixel Spacing forced to "1.0\1.0" - CopyMandatoryEntry(0x0028,0x0030,pixelSpacing,"DS"); - } - - // 'Imager Pixel Spacing' : defaulted to 'Pixel Spacing' - // --> This one is the *legal* one ! - if ( ContentType != USER_OWN_IMAGE) - // we write it only when we are *sure* the image comes from - // an imager (see also 0008,0x0064) - CheckMandatoryEntry(0x0018,0x1164,pixelSpacing,"DS"); - + std::string pixelSpacing = FileInternal->GetEntryString(0x0028,0x0030); + if ( pixelSpacing == GDCM_UNFOUND ) + { + pixelSpacing = "1.0\\1.0"; + // if missing, Pixel Spacing forced to "1.0\1.0" + CopyMandatoryEntry(0x0028,0x0030,pixelSpacing,"DS"); + } + + // 'Imager Pixel Spacing' : defaulted to 'Pixel Spacing' + // --> This one is the *legal* one ! + if ( ContentType != USER_OWN_IMAGE) + // we write it only when we are *sure* the image comes from + // an imager (see also 0008,0x0064) + CheckMandatoryEntry(0x0018,0x1164,pixelSpacing,"DS"); + } /* ///Exact meaning of RETired fields @@ -2267,8 +2270,3 @@ void RescaleFunction(ImageIOBase::IOComponentType bufferType, } } */ - - ::itk::ExceptionObject e(__FILE__, __LINE__, message.str().c_str(),ITK_LOCATION); - throw e; - } -} -- 2.45.1