X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src%2FgdcmHeaderEntry.cxx;h=d11b342f2c3fb3853fdd4cb1a45cdd97bb8beee2;hb=3dc2328d98ad8d9e9f2b8516f8b04053e9cb9ccf;hp=4f53956d68a3a3bb9113d4e4121c47aca1a4da52;hpb=49484255e3674c038cbf2259a8c3325c0039cd41;p=gdcm.git diff --git a/src/gdcmHeaderEntry.cxx b/src/gdcmHeaderEntry.cxx index 4f53956d..d11b342f 100644 --- a/src/gdcmHeaderEntry.cxx +++ b/src/gdcmHeaderEntry.cxx @@ -2,6 +2,16 @@ //----------------------------------------------------------------------------- // #include "gdcmHeaderEntry.h" +#include "gdcmTS.h" +#include "gdcmUtil.h" + +#ifdef GDCM_NO_ANSI_STRING_STREAM +# include +# define ostringstream ostrstream +# else +# include +#endif +#include // for std::ios::left, ... //----------------------------------------------------------------------------- // Constructor / Destructor @@ -11,13 +21,87 @@ * @param in Pointer to existing dictionary entry */ gdcmHeaderEntry::gdcmHeaderEntry(gdcmDictEntry* in) { - ImplicitVr = false; + ImplicitVR = false; entry = in; } //----------------------------------------------------------------------------- // Print +void gdcmHeaderEntry::Print(std::ostream & os) { + size_t o; + unsigned short int g, e; + char st[20]; + TSKey v; + std::string d2; + gdcmTS * ts = gdcmGlobal::GetTS(); + std::ostringstream s; + guint32 lgth; + char greltag[10]; //group element tag + + g = GetGroup(); + e = GetElement(); + v = GetValue(); + o = GetOffset(); + sprintf(greltag,"%04x|%04x ",g,e); + d2 = _CreateCleanString(v); // replace non printable characters by '.' + s << greltag ; + + if (printLevel>=2) { + s << "lg : "; + lgth = GetReadLength(); + if (lgth == 0xffffffff) { + sprintf(st,"x(ffff)"); // I said : "x(ffff)" ! + s.setf(std::ios::left); + s << std::setw(10-strlen(st)) << " "; + s << st << " "; + s.setf(std::ios::left); + s << std::setw(8) << "-1"; + } else { + sprintf(st,"x(%x)",lgth); + s.setf(std::ios::left); + s << std::setw(10-strlen(st)) << " "; + s << st << " "; + s.setf(std::ios::left); + s << std::setw(8) << lgth; + } + s << " Off.: "; + sprintf(st,"x(%x)",o); + s << std::setw(10-strlen(st)) << " "; + s << st << " "; + s << std::setw(8) << o; + } + + s << "[" << GetVR() << "] "; + + if (printLevel>=1) { + s.setf(std::ios::left); + s << std::setw(66-GetName().length()) << " "; + } + + s << "[" << GetName()<< "]"; + s << " [" << d2 << "]"; + // 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) << "]"; + } else { + if (g == 0x0008) { + if ( (e == 0x0016) || (e == 0x1150) ) + s << " ==>\t[" << ts->GetValue(v) << "]"; + } + } + if (e == 0x0000) { // elem 0x0000 --> group length + if (v == "4294967295") // to avoid troubles in convertion + sprintf (st," x(ffffffff)"); + else + sprintf(st," x(%08x)",atoi(v.c_str())); + s << st; + } + s << std::endl; + os << s.str(); +} + //----------------------------------------------------------------------------- // Public