public DicomFieldAttribute(ushort group, ushort element) { _tag = new DicomTag(group, element); _default = DicomFieldDefault.None; _defltOnZL = false; _createEmpty = false; }
public DicomFieldAttribute(uint tag) { _tag = new DicomTag(tag); _default = DicomFieldDefault.None; _defltOnZL = false; _createEmpty = false; }
public DicomFieldAttribute(uint tag) { _tag = DicomTagDictionary.GetDicomTag(tag); if (_tag == null) _tag = new DicomTag(tag, "Unknown Tag", "UnknownTag", DicomVr.UNvr, false, 1, uint.MaxValue, false); _default = DicomFieldDefault.None; _defltOnZL = false; _createEmpty = false; }
public DicomFieldAttribute(uint tag) { _tag = DicomTagDictionary.GetDicomTag(tag); if (_tag == null) { _tag = new DicomTag(tag, "Unknown Tag", "UnknownTag", DicomVr.UNvr, false, 1, uint.MaxValue, false); } _default = DicomFieldDefault.None; _defltOnZL = false; _createEmpty = false; }
private object LoadDicomFieldValue(DcmElement elem, Type vtype, DicomFieldDefault deflt, bool udzl) { if (vtype.IsSubclassOf(typeof(DcmElement))) { if (elem != null && vtype != elem.GetType()) throw new DicomDataException("Invalid binding type for Element VR!"); return elem; } else if (vtype.IsArray) { if (elem != null) { if (vtype.GetElementType() != elem.GetValueType()) throw new DicomDataException("Invalid binding type for Element VR!"); if (elem.GetValueType() == typeof(DateTime)) return (elem as DcmDateElementBase).GetDateTimes(); else return elem.GetValueObjectArray(); } else { if (deflt == DicomFieldDefault.EmptyArray) return Array.CreateInstance(vtype, 0); else return null; } } else { if (elem != null) { if (elem.Length == 0 && udzl) { return GetDefaultValue(vtype, deflt); } if (vtype != elem.GetValueType()) { if (vtype == typeof(string)) { return elem.GetValueString(); } else if (vtype == typeof(DicomUID) && elem.VR == DicomVR.UI) { return (elem as DcmUniqueIdentifier).GetUID(); } else if (vtype == typeof(DicomTransferSyntax) && elem.VR == DicomVR.UI) { return (elem as DcmUniqueIdentifier).GetTS(); } else if (vtype == typeof(DcmDateRange) && elem.GetType().IsSubclassOf(typeof(DcmDateElementBase))) { return (elem as DcmDateElementBase).GetDateTimeRange(); } else if (vtype == typeof(Int32)) { return Convert.ToInt32(elem.GetValueString(), 10); } else if (vtype == typeof(object)) { return elem.GetValueObject(); } else throw new DicomDataException("Invalid binding type for Element VR!"); } else { return elem.GetValueObject(); } } else { return GetDefaultValue(vtype, deflt); } } }
private object GetDefaultValue(Type vtype, DicomFieldDefault deflt) { try { if (vtype == typeof(DicomUID) || vtype == typeof(DicomTransferSyntax) || vtype.IsSubclassOf(typeof(DcmElement))) return null; if (deflt == DicomFieldDefault.Null || deflt == DicomFieldDefault.None) return null; if (deflt == DicomFieldDefault.DBNull) return DBNull.Value; if (deflt == DicomFieldDefault.Default && vtype != typeof(string)) return Activator.CreateInstance(vtype); if (vtype == typeof(string)) { if (deflt == DicomFieldDefault.StringEmpty || deflt == DicomFieldDefault.Default) return String.Empty; } else if (vtype == typeof(DateTime)) { if (deflt == DicomFieldDefault.DateTimeNow) return DateTime.Now; if (deflt == DicomFieldDefault.MinValue) return DateTime.MinValue; if (deflt == DicomFieldDefault.MaxValue) return DateTime.MaxValue; } else if (vtype.IsSubclassOf(typeof(ValueType))) { if (deflt == DicomFieldDefault.MinValue) { PropertyInfo pi = vtype.GetProperty("MinValue", BindingFlags.Static); if (pi != null) return pi.GetValue(null, null); } if (deflt == DicomFieldDefault.MaxValue) { PropertyInfo pi = vtype.GetProperty("MaxValue", BindingFlags.Static); if (pi != null) return pi.GetValue(null, null); } return Activator.CreateInstance(vtype); } return null; } catch (Exception) { Debug.Log.Error("Error in default value type! - {0}", vtype.ToString()); return null; } }