public T ReadSingleValue(DicomStreamReader reader) { EnsureSingleValue <T>(reader); var result = reader.DataReader.Read <T>(); reader.EndReadValue(); return(result); }
public DicomTag ReadSingleValue(DicomStreamReader reader) { EnsureSingleValue(reader, 4); var tag = DicomTag.ReadFrom(reader.DataReader); reader.EndReadValue(); return(tag); }
protected T[] ReadArray(DicomStreamReader reader) { var count = GetValueCount <T>(reader); var array = new T[count]; reader.DataReader.Read <T>(array); reader.EndReadValue(); return(array); }
protected string ReadEntireValue(DicomStreamReader reader) { var valueLength = GetDefinedValueLength(reader); var bytes = reader.Input.ReadBytes(valueLength); reader.EndReadValue(); var encoding = reader.EncodedStringDecoder ?? StringDecoder.Default; return(encoding.Decode(this, TrimEnd(bytes))); }
public DicomTag[] ReadValues(DicomStreamReader reader) { var count = GetValueCount(reader, 4); var array = new DicomTag[count]; for (var i = 0; i < count; i++) { array[i] = DicomTag.ReadFrom(reader.DataReader); } reader.EndReadValue(); return(array); }
internal string ReadEntireValue(DicomStreamReader reader) { var valueLength = GetDefinedValueLength(reader); var bytes = reader.Input.ReadBytes(valueLength); var significantBytes = StripNonSignificantBytes(bytes); var value = Encoding.ASCII.GetString(significantBytes); if (reader.CurrentTag == DicomTag.SpecificCharacterSet) { reader.ApplySpecfificCharacterSet(value.Split('\\')); } reader.EndReadValue(); return(value); }
public override byte[] ReadValue(DicomStreamReader reader) { if (reader.ValueLength < uint.MaxValue) { var result = reader.Input.ReadBytes(reader.ValueLength); reader.EndReadValue(); return(result); } else { var chunks = new List <byte[]>(); while (reader.TryReadItemTagOfSequenceWithUndefinedLength()) { if (reader.ValueLength < uint.MaxValue) { var chunk = reader.Input.ReadBytes(reader.ValueLength); reader.EndReadValue(); chunks.Add(chunk); } else { throw new NotSupportedException("Cannot read chunks with undefined length"); } } var totalLength = chunks.Sum(chunk => chunk.LongLength); var byteArray = new byte[totalLength]; Span <byte> copyWindow = byteArray; foreach (var chunk in chunks) { chunk.CopyTo(copyWindow); copyWindow = copyWindow.Slice(chunk.Length); } return(byteArray); } }