X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmHeaderEntry.cxx;h=e53120744a3385ac0f75921753cd04a5ca6439f3;hb=8d4184fc7129f85d9ec384a3c7b9c5928a1f5b5e;hp=6ce3a9f8f1d6a7f18339923378db82fadb8bc6fd;hpb=d7a4d5d474ae599b723e52ebda8bd3fc6cee752a;p=gdcm.git diff --git a/src/gdcmHeaderEntry.cxx b/src/gdcmHeaderEntry.cxx index 6ce3a9f8..e5312074 100644 --- a/src/gdcmHeaderEntry.cxx +++ b/src/gdcmHeaderEntry.cxx @@ -27,31 +27,30 @@ gdcmHeaderEntry::gdcmHeaderEntry(gdcmDictEntry* in) { //----------------------------------------------------------------------------- // Print - void gdcmHeaderEntry::Print(std::ostream & os) { size_t o; unsigned short int g, e; char st[20]; TSKey v; - std::string d2; + std::string d2, vr; gdcmTS * ts = gdcmGlobal::GetTS(); std::ostringstream s; guint32 lgth; char greltag[10]; //group element tag - - g = GetGroup(); - e = GetElement(); - v = GetValue(); - o = GetOffset(); + g = GetGroup(); + e = GetElement(); + v = GetValue(); + o = GetOffset(); + vr = GetVR(); sprintf(greltag,"%04x|%04x ",g,e); - d2 = _CreateCleanString(v); // replace non printable characters by '.' s << greltag ; + d2 = _CreateCleanString(v); // replace non printable characters by '.' if (printLevel>=2) { s << "lg : "; lgth = GetReadLength(); if (lgth == 0xffffffff) { - sprintf(st,"x(%ff)"); + sprintf(st,"x(ffff)"); // I said : "x(ffff)" ! s.setf(std::ios::left); s << std::setw(10-strlen(st)) << " "; s << st << " "; @@ -67,12 +66,12 @@ void gdcmHeaderEntry::Print(std::ostream & os) { } s << " Off.: "; sprintf(st,"x(%x)",o); - s << std::setw(10-strlen(st)) << " "; + s << std::setw(10-strlen(st)) << " "; s << st << " "; s << std::setw(8) << o; } - s << "[" << GetVR() << "] "; + s << "[" << vr << "] "; if (printLevel>=1) { s.setf(std::ios::left); @@ -80,24 +79,34 @@ void gdcmHeaderEntry::Print(std::ostream & os) { } s << "[" << GetName()<< "]"; - s << " [" << d2 << "]"; - // Display the UID value (instead of displaying the rough code) + if( (GetLength()<64) || (printLevel>=3) ) + s << " [" << d2 << "]"; + else + s << " [ gdcm::too long for print (" << GetLength() << ") ]"; + + // Display the UID value (instead of displaying the rough code) if (g == 0x0002) { // Any more to be displayed ? - if ( (e == 0x0010) || (e == 0x0002) ) - s << " ==>\t[" << ts->GetValue(v) << "]"; + if ( (e == 0x0010) || (e == 0x0002) ) + s << " ==>\t[" << ts->GetValue(v) << "]"; } else { if (g == 0x0008) { - if ( (e == 0x0016) || (e == 0x1150) ) - s << " ==>\t[" << ts->GetValue(v) << "]"; + if ( (e == 0x0016) || (e == 0x1150) ) + s << " ==>\t[" << ts->GetValue(v) << "]"; + } else { + if (g == 0x0004) { + if ( (e == 0x1510) || (e == 0x1512) ) + s << " ==>\t[" << ts->GetValue(v) << "]"; + } } - } - if (e == 0x0000) { // elem 0x0000 --> group length + } + //if (e == 0x0000) { // elem 0x0000 --> group length + if ( (vr == "UL") || (vr == "US") || (vr == "SL") || (vr == "SS") ) { if (v == "4294967295") // to avoid troubles in convertion sprintf (st," x(ffffffff)"); else - sprintf(st," x(%08x)",atoi(v.c_str())); + sprintf(st," x(%x)",(unsigned long)atof(v.c_str())); s << st; - } + } s << std::endl; os << s.str(); }