{
// EXPLICIT VR
guint16 z=0, shortLgr;
- if (vr == "Unknown") { // Unknown was 'written'
+ if (vr == "unkn") { // Unknown was 'written'
shortLgr=lgr;
fwrite ( &shortLgr,(size_t)2 ,(size_t)1 ,_fp);
fwrite ( &z, (size_t)2 ,(size_t)1 ,_fp);
} else {
if (gr != 0xfffe) { // NO value for 'delimiters'
- if (vr == "Unknown") // Unknown was 'written'
+ if (vr == "unkn") // Unknown was 'written'
fwrite(&z,(size_t)2 ,(size_t)1 ,_fp);
else
fwrite (vr.c_str(),(size_t)2 ,(size_t)1 ,_fp);
}
- if ( (vr == "OB") || (vr == "OW") || (vr == "SQ") || gr == 0xfffe) // JPR
+ if ( (vr == "OB") || (vr == "OW") || (vr == "SQ") || gr == 0xfffe)
{
if (gr != 0xfffe)
fwrite ( &z, (size_t)2 ,(size_t)1 ,_fp);
return;
char VR[3];
- int lgrLue;
long PositionOnEntry = ftell(fp);
// Warning: we believe this is explicit VR (Value Representation) because
// is in explicit VR and try to fix things if it happens not to be
// the case.
- lgrLue=fread (&VR, (size_t)2,(size_t)1, fp);
+ int lgrLue=fread (&VR, (size_t)2,(size_t)1, fp); // lgrLue not used
VR[2]=0;
if(!CheckHeaderEntryVR(Entry,VR))
{
sprintf(msg,"Falsely explicit vr file (%04x,%04x)\n",
Entry->GetGroup(),Entry->GetElement());
dbg.Verbose(1, "gdcmParser::FindVR: ",msg);
-
+ if (Entry->GetGroup()%2 && Entry->GetElement() == 0x0000) { // Group length is UL !
+ gdcmDictEntry* NewEntry = NewVirtualDictEntry(
+ Entry->GetGroup(),Entry->GetElement(),
+ "UL","FIXME","Group Length");
+ Entry->SetDictEntry(NewEntry);
+ }
return(false);
}
if ( Entry->IsVRUnknown() )
{
// When not a dictionary entry, we can safely overwrite the VR.
- Entry->SetVR(vr);
+ if (Entry->GetElement() == 0x0000) { // Group length is UL !
+ Entry->SetVR("UL");
+ } else {
+ Entry->SetVR(vr);
+ }
}
else if ( Entry->GetVR() != vr )
{
s << NewInt32;
}
}
-
#ifdef GDCM_NO_ANSI_STRING_STREAM
s << std::ends; // to avoid oddities on Solaris
#endif //GDCM_NO_ANSI_STRING_STREAM
{
gdcmDictEntry *NewTag = GetDictEntryByName(Name);
if (!NewTag)
- NewTag = NewVirtualDictEntry(0xffff, 0xffff, "LO", "Unknown", Name);
+ NewTag = NewVirtualDictEntry(0xffff, 0xffff, "LO", "unkn", Name);
gdcmHeaderEntry* NewEntry = new gdcmHeaderEntry(NewTag);
if (!NewEntry)
// System access
inline int GetSwapCode(void) { return sw; }
- guint16 GetGrPixel(void) {return GrPixel;}
+ guint16 GetGrPixel(void) {return GrPixel;}
guint16 GetNumPixel(void) {return NumPixel;}
guint16 SwapShort(guint16); // needed by gdcmFile
gdcmDictEntry *GetDictEntryByNumber(guint16, guint16);
gdcmDictEntry *NewVirtualDictEntry(guint16 group,
guint16 element,
- std::string vr = "Unknown",
- std::string fourth = "Unknown",
- std::string name = "Unknown");
+ std::string vr = "unkn",
+ std::string fourth = "unkn",
+ std::string name = "unkn");
gdcmDictEntry *NewVirtualDictEntry(gdcmHeaderEntry *);
// HeaderEntry related utilities