- }
- //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 {
- if ( GetLength() !=0 )
- sprintf(st," x(%x)", atoi(v.c_str()));//FIXME
- else
- sprintf(st," ");
+
+ uint16_t z = 0;
+ uint16_t shortLgr = lgr;
+
+ if (vr == "unkn")
+ {
+ // Unknown was 'written'
+ // deal with Little Endian
+ fp->write ( (char*)&shortLgr,(size_t)2 );
+ fp->write ( (char*)&z, (size_t)2 );
+ }
+ else
+ {
+ fp->write (vr.c_str(),(size_t)2 );
+
+
+ if ( (vr == "OB") || (vr == "OW") || (vr == "SQ") || (vr == "UN") )
+ {
+ fp->write ( (char*)&z, (size_t)2 );
+ if (vr == "SQ")
+ {
+ // we set SQ length to ffffffff
+ // and we shall write a Sequence Delimitor Item
+ // at the end of the Sequence!
+ fp->write ( (char*)&ffff,(size_t)4 );
+ }
+ else
+ {
+ fp->write ( (char*)&lgr,(size_t)4 );
+ }
+ }
+ else
+ {
+ fp->write ( (char*)&shortLgr,(size_t)2 );
+ }
+ }
+ }
+ else // IMPLICIT VR
+ {
+ if (vr == "SQ")
+ {
+ fp->write ( (char*)&ffff,(size_t)4 );
+ }
+ else
+ {
+ fp->write ( (char*)&lgr,(size_t)4 );