internal DicomStreamReader(BufferedStreamReader input, DicomTransferSyntax transferSyntax) { Input = input; TransferSyntax = transferSyntax; DataReader = new BinaryDataReader(input, transferSyntax.ByteOrder); VRCoding = transferSyntax.VRCoding; }
internal DicomStreamWriter(BufferedStreamWriter output, DicomTransferSyntax transferSyntax) { Output = output; TransferSyntax = transferSyntax; DataWriter = new BinaryDataWriter(output, transferSyntax.ByteOrder); VRCoding = transferSyntax.VRCoding; }
internal static long GetDataElementLength(ValueRepresentation vr, DicomVRCoding vrCoding, long unpaddedValueLength) { if (unpaddedValueLength >= uint.MaxValue) { throw new ArgumentOutOfRangeException(nameof(unpaddedValueLength), $"{unpaddedValueLength} is out of 32-bit range"); } var valueLength = ((unpaddedValueLength % 2) != 0) ? (uint)unpaddedValueLength + 1 : (uint)unpaddedValueLength; long dataElementLength = 4; if (vrCoding == DicomVRCoding.Explicit) { dataElementLength += 2; if (vr is IHas16BitExplicitVRLength) { if (valueLength >= ushort.MaxValue) { throw new ArgumentOutOfRangeException(nameof(unpaddedValueLength), $"{unpaddedValueLength} is out of 16-bit range"); } dataElementLength += 2; } else { dataElementLength += 6; } } else { dataElementLength += 4; } dataElementLength += valueLength; return(dataElementLength); }