X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmDocEntry.cxx;h=79103b0164324676c56294b98486f3979a196c14;hb=66c8b2ef6c096d675afb963778604ed7ae72a78c;hp=14a8a81d6b5d176e425a054cdcf503df63c32ec2;hpb=a942295c01a38ddf446e0dac4ff992a64976dd8c;p=gdcm.git diff --git a/src/gdcmDocEntry.cxx b/src/gdcmDocEntry.cxx index 14a8a81d..79103b01 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/02/23 15:29:56 $ - Version: $Revision: 1.87 $ + Date: $Date: 2007/07/26 08:36:49 $ + Version: $Revision: 1.90 $ Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de l'Image). All rights reserved. See Doc/License.txt or @@ -27,7 +27,7 @@ #include // for std::ios::left, ... #include -namespace gdcm +namespace GDCM_NAME_SPACE { //----------------------------------------------------------------------------- @@ -71,7 +71,7 @@ DocEntry::~DocEntry() * @param fp already open ofstream pointer * @param filetype type of the file (ACR, ImplicitVR, ExplicitVR, ...) */ -void DocEntry::WriteContent(std::ofstream *fp, FileType filetype) +void DocEntry::WriteContent(std::ofstream *fp, FileType filetype, bool insideMetaElements) { uint32_t ffff = 0xffffffff; uint16_t group = GetGroup(); @@ -103,7 +103,7 @@ void DocEntry::WriteContent(std::ofstream *fp, FileType filetype) binary_write( *fp, elem); //element number // Dicom V3 group 0x0002 is *always* Explicit VR ! - if ( filetype == ExplicitVR || filetype == JPEG || filetype == JPEG2000 || group == 0x0002 ) + if ( filetype == ExplicitVR || filetype == JPEG || filetype == JPEG2000 || (group == 0x0002 && insideMetaElements) ) { // ----------- Writes the common part : the VR + the length @@ -125,14 +125,25 @@ void DocEntry::WriteContent(std::ofstream *fp, FileType filetype) 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!) + SetVR("UN"); + vr=GetVR(); + } + + //{ binary_write(*fp, vr.str()); // See PS 3.5-2004 page 33, 36 if ( (vr == "SQ") || (vr == "OB") || (vr == "OW") || (vr == "OF") @@ -160,7 +171,7 @@ void DocEntry::WriteContent(std::ofstream *fp, FileType filetype) { binary_write(*fp, shortLgr); } - } + //} } else // IMPLICIT VR { @@ -310,8 +321,11 @@ void DocEntry::Print(std::ostream &os, std::string const & ) s << "[" << vr << "] "; std::string name; - if ( GetElement() == 0x0000 ) + uint16_t e = GetElement(); + if ( e == 0x0000 ) name = "Group Length"; + else if ( GetGroup()%2 == 1 && ( e >= 0x0010 && e <= 0x00ff ) ) + name = "Private Creator"; else { name = GetName();