public static void WriteMaxLength(DICOMBinaryWriter dw, int length) { dw.Write((byte) ItemType.MAXIMUM_LENGTH); dw.WriteNullBytes(1); // Reserved Null Byte LengthWriter.WriteBigEndian(dw, 4, 2); LengthWriter.WriteBigEndian(dw, length, 4); }
public static void WriteLittleEndian(DICOMBinaryWriter dw, VR vr, DICOMWriteSettings settings, int length) { byte[] lengthBytes = new byte[0]; if (!(settings.TransferSyntax == TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN)) { switch (VRDictionary.GetEncodingFromVR(vr)) { case VREncoding.ExplicitLong: dw.WriteNullBytes(2); lengthBytes = BitConverter.GetBytes(length); break; case VREncoding.ExplicitShort: lengthBytes = BitConverter.GetBytes((short)length); break; case VREncoding.Implicit: lengthBytes = BitConverter.GetBytes(length); break; } } else { lengthBytes =BitConverter.GetBytes(length); } dw.Write(lengthBytes); }
public static void Write(DICOMBinaryWriter dw, VR vr, DICOMWriteSettings settings, int length) { var lengthBytes = BitConverter.GetBytes(length); if (settings.TransferSyntax != TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN) { switch (VRDictionary.GetEncodingFromVR(vr)) { case VREncoding.ExplicitLong: dw.WriteNullBytes(2); lengthBytes = BitConverter.GetBytes(length); break; case VREncoding.ExplicitShort: lengthBytes = BitConverter.GetBytes((ushort)length); if (length > 65536) { throw new ArgumentOutOfRangeException( "Length is greater than allowed for explicit VR syntax. Try using implicit VR"); } break; case VREncoding.Implicit: lengthBytes = BitConverter.GetBytes(length); break; } } if (settings.TransferSyntax == TransferSyntax.EXPLICIT_VR_BIG_ENDIAN) { Array.Reverse(lengthBytes); } dw.Write(lengthBytes); }
public byte[] Write() { var written = new byte[0]; var stream = new MemoryStream(); using (var dw = new DICOMBinaryWriter(stream)) { dw.Write((byte)PDUType.A_ABORT); dw.WriteNullBytes(1); //Reserved Null byte LengthWriter.WriteBigEndian(dw, 4, 4); dw.WriteNullBytes(2); //Reserved Null bytes dw.Write((byte)Source); dw.Write((byte)Reason); written = stream.ToArray(); } return written; }
public static void Write(DICOMBinaryWriter dw, VR vr, DICOMWriteSettings settings, int length) { var lengthBytes = BitConverter.GetBytes(length); if (settings.TransferSyntax != TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN) { //Length byte size depends on VR Encoding switch (VRDictionary.GetEncodingFromVR(vr)) { case VREncoding.ExplicitLong: dw.WriteNullBytes(2); lengthBytes = BitConverter.GetBytes(length); break; case VREncoding.ExplicitShort: lengthBytes = BitConverter.GetBytes((ushort) length); if (length > 65536) { throw new ArgumentOutOfRangeException("Length is greater than allowed for explicit VR syntax. Try using implicit VR"); } break; case VREncoding.Implicit: lengthBytes = BitConverter.GetBytes(length); break; } } if (settings.TransferSyntax == TransferSyntax.EXPLICIT_VR_BIG_ENDIAN) { Array.Reverse(lengthBytes); } dw.Write(lengthBytes); }
public static void Write(DICOMBinaryWriter dw, VR vr, DICOMWriteSettings settings, int length) { var lengthBytes = new byte[0]; if (!(settings.TransferSyntax == TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN)) { switch (VRDictionary.GetEncodingFromVR(vr)) { case VREncoding.ExplicitLong: dw.WriteNullBytes(2); lengthBytes = BitConverter.GetBytes(length); break; case VREncoding.ExplicitShort: lengthBytes = BitConverter.GetBytes((ushort)length); break; case VREncoding.Implicit: lengthBytes = BitConverter.GetBytes(length); break; } } else if (settings.TransferSyntax == TransferSyntax.EXPLICIT_VR_BIG_ENDIAN) { lengthBytes = BitConverter.GetBytes(length); lengthBytes.Reverse(); } else { //Explicit VR Little Endian lengthBytes = BitConverter.GetBytes(length); } dw.Write(lengthBytes); }
public static void Write(DICOMBinaryWriter dw, VR vr, DICOMWriteSettings settings, int length) { var lengthBytes = BitConverter.GetBytes(length); if (settings.TransferSyntax != TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN) { //Length byte size depends on VR Encoding switch (VRDictionary.GetEncodingFromVR(vr)) { case VREncoding.ExplicitLong: dw.WriteNullBytes(2); lengthBytes = BitConverter.GetBytes(length); break; case VREncoding.ExplicitShort: lengthBytes = BitConverter.GetBytes((ushort) length); break; case VREncoding.Implicit: lengthBytes = BitConverter.GetBytes(length); break; } } if (settings.TransferSyntax == TransferSyntax.EXPLICIT_VR_BIG_ENDIAN) { Array.Reverse(lengthBytes); } dw.Write(lengthBytes); }
private static void WriteIndefiniteLength(DICOMWriteSettings settings, DICOMBinaryWriter dw) { if (!(settings.TransferSyntax == TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN)) { dw.WriteNullBytes(2); } dw.Write(new byte[] { 0xFF, 0xFF, 0xFF, 0xFF }); }
private static void WriteIndefiniteLength(DICOMWriteSettings settings, DICOMBinaryWriter dw) { if (!(settings.TransferSyntax == TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN)) { dw.WriteNullBytes(2); } dw.Write(new byte[] {0xFF, 0xFF, 0xFF, 0xFF}); }
private static void WriteUIDItem(DICOMBinaryWriter dw, ItemType iType, string uid) { if (!string.IsNullOrEmpty(uid)) { dw.Write((byte) iType); dw.WriteNullBytes(1); // Reserved Null Byte LengthWriter.WriteBigEndian(dw, uid.Length, 2); dw.Write(uid); } }
public static void WriteAsyncOperations(DICOMBinaryWriter dw, AsyncOperations ao) { if (ao != null) { dw.Write((byte) ItemType.ASYNCHRONOUS_OPERATIONS_WINDOW); dw.WriteNullBytes(1); // Reserved Null Byte LengthWriter.WriteBigEndian(dw, 4, 2); LengthWriter.WriteBigEndian(dw, ao.MaxInvokeOperations, 2); LengthWriter.WriteBigEndian(dw, ao.MaxPerformOperations, 2); } }
private byte[] WriteBody() { var body = new byte[0]; var stream = new MemoryStream(); using (var dw = new DICOMBinaryWriter(stream)) { //Main body LengthWriter.WriteBigEndian(dw, ProtocolVersion, 2); //Protocol Version dw.WriteNullBytes(2); //Reserved Null bytes dw.Write(CalledEntityTitle.PadRight(16)); dw.Write(CallingEntityTitle.PadRight(16)); dw.WriteNullBytes(32); //Reserved Null bytes ItemWriter.WriteApplicationContext(dw, ApplicationContext); foreach (PresentationContext pc in PresentationContexts) { ItemWriter.WritePresentationCtxAcceptType(dw, pc); } ItemWriter.WriteUserInfo(dw, UserInfo); body = stream.ToArray(); } return body; }
public byte[] Write() { var written = new byte[0]; using (var stream = new MemoryStream()) { using (var dw = new DICOMBinaryWriter(stream)) { dw.Write((byte) PDUType.P_DATA_TRANSFER); dw.WriteNullBytes(1); //Reserved Null byte byte[] items = WriteItems(); LengthWriter.WriteBigEndian(dw, items.Length, 4); dw.Write(items); written = stream.ToArray(); } } return written; }
public byte[] Write() { var written = new byte[0]; using (var stream = new MemoryStream()) { using (var dw = new DICOMBinaryWriter(stream)) { dw.Write((byte)PDUType.A_ASSOC_ACCEPT); dw.WriteNullBytes(1); //Reserved Null byte byte[] body = WriteBody(); LengthWriter.WriteBigEndian(dw, body.Length, 4); dw.Write(body); written = stream.ToArray(); } } return written; }
public static void Write(DICOMBinaryWriter dw) { dw.WriteNullBytes(128); dw.Write("DICM"); }
public static void WritePresentationCtxAcceptType(DICOMBinaryWriter dw, PresentationContext pc) { dw.Write((byte) ItemType.PRESENTATION_CONTEXT_ACCEPT); dw.WriteNullBytes(1); //Reserved Null Byte byte[] internBytes; //Will use to get length using (var stream = new MemoryStream()) { using (var intern = new DICOMBinaryWriter(stream)) { intern.Write((byte) pc.Id); intern.WriteNullBytes(1); intern.Write((byte) pc.Reason); intern.WriteNullBytes(1); WriteTransferSyntax(intern, pc.TransferSyntaxes.First()); internBytes = stream.ToArray(); } } LengthWriter.WriteBigEndian(dw, internBytes.Length, 2); dw.Write(internBytes); }
public static void Write(DICOMBinaryWriter dw) { dw.WriteNullBytes(128); dw.Write("DICM"); }
public static void WriteUserInfo(DICOMBinaryWriter dw, UserInfo info) { dw.Write((byte) ItemType.USER_INFO); dw.WriteNullBytes(1); // Reserved Null Byte var body = new byte[0]; using (var stream = new MemoryStream()) //Will write inner object to get length { using (var wr = new DICOMBinaryWriter(stream)) { WriteMaxLength(wr, info.MaxPDULength); WriteImplementationClassUID(wr, info.ImplementationUID); WriteAsyncOperations(wr, info.AsynchronousOperations); WriteImplementationVersion(wr, info.ImplementationVersion); body = stream.ToArray(); } } LengthWriter.WriteBigEndian(dw, body.Length, 2); dw.Write(body); }