public static void SkipItemLittleEndian(DICOMBinaryReader dr, TransferSyntax syntax) { var length = LengthReader.ReadLittleEndian(VR.Null, dr.Skip(4)); if (length != -1) { dr.Skip(length); } else { if (syntax == TransferSyntax.EXPLICIT_VR_LITTLE_ENDIAN) { while (!IsEndOfSequenceItemLittleEndian(dr) && dr.StreamLength != dr.StreamPosition) { dr.StreamPosition -= 8; DICOMElementReader.SkipElementExplicitLittleEndian(dr); } } else { while (!IsEndOfSequenceItemLittleEndian(dr) && dr.StreamLength != dr.StreamPosition) { dr.StreamPosition -= 8; DICOMElementReader.SkipElementImplicitLittleEndian(dr); } } } }
/// <summary> /// Reads and returns the next DICOM element starting at the current location in the DICOM binary reader after the tag and VR have been read /// </summary> /// <param name="tag">the DICOM tag of the element</param> /// <param name="vr">the read VR of the element</param> /// <param name="dr">the binary reader which is reading the DICOM object</param> /// <returns></returns> private static IDICOMElement ReadElementExplicitLittleEndian(Tag tag, VR vr, DICOMBinaryReader dr, StringEncoding enc) { var length = LengthReader.ReadLittleEndian(vr, dr); var data = DataReader.ReadLittleEndian(length, dr, TransferSyntax.EXPLICIT_VR_LITTLE_ENDIAN); return(ElementFactory.GenerateElement(tag, vr, data, TransferSyntax.EXPLICIT_VR_LITTLE_ENDIAN, enc)); }
/// <summary> /// Reads and returns the next DICOM element starting at the current location in the DICOM binary reader /// </summary> /// <param name="dr">the binary reader which is reading the DICOM object</param> /// <returns>the next DICOM element</returns> public static IDICOMElement ReadElementExplicitBigEndian(DICOMBinaryReader dr, StringEncoding enc) { var tag = TagReader.ReadBigEndian(dr); var vr = VRReader.ReadVR(dr); var length = LengthReader.ReadBigEndian(vr, dr); var data = DataReader.ReadBigEndian(length, dr); return(ElementFactory.GenerateElement(tag, vr, data, TransferSyntax.EXPLICIT_VR_BIG_ENDIAN, enc)); }
/// <summary> /// Reads and returns the next DICOM element starting at the current location in the DICOM binary reader /// </summary> /// <param name="dr">the binary reader which is reading the DICOM object</param> /// <returns>the next DICOM element</returns> public static IDICOMElement ReadElementExplicitBigEndian(DICOMBinaryReader dr) { Tag tag = TagReader.ReadBigEndian(dr); VR vr = VRReader.ReadVR(dr); int length = LengthReader.ReadBigEndian(vr, dr); byte[] data = DataReader.ReadBigEndian(length, dr); return(ElementFactory.GenerateElement(tag, vr, data, TransferSyntax.EXPLICIT_VR_BIG_ENDIAN)); }
/// <summary> /// Reads and returns the next DICOM element starting at the current location in the DICOM binary reader /// </summary> /// <param name="dr">the binary reader which is reading the DICOM object</param> /// <returns>the next DICOM element</returns> public static IDICOMElement ReadElementExplicitLittleEndian(DICOMBinaryReader dr) { var tag = TagReader.ReadLittleEndian(dr); var vr = VRReader.Read(dr); int length = LengthReader.ReadLittleEndian(vr, dr); var data = DataReader.ReadLittleEndian(length, dr, TransferSyntax.EXPLICIT_VR_LITTLE_ENDIAN); return(ElementFactory.GenerateElement(tag, vr, data, TransferSyntax.EXPLICIT_VR_LITTLE_ENDIAN)); }
/// <summary> /// Reads and returns the next DICOM element starting at the current location in the DICOM binary reader /// </summary> /// <param name="dr">the binary reader which is reading the DICOM object</param> /// <returns>the next DICOM element</returns> public static IDICOMElement ReadElementImplicitLittleEndian(DICOMBinaryReader dr) { var tag = TagReader.ReadLittleEndian(dr); var vr = TagDictionary.GetVRFromTag(tag); int length = LengthReader.ReadLittleEndian(VR.Null, dr); var data = DataReader.ReadLittleEndian(length, dr, TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN); var el = ElementFactory.GenerateElement(tag, vr, data, TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN); return(el); }
public static void SkipElementImplicitLittleEndian(DICOMBinaryReader dr) { var tag = TagReader.ReadLittleEndian(dr); var length = LengthReader.ReadLittleEndian(VR.Null, dr); if (length != -1) { dr.Skip(length); } else { dr.Skip(SequenceReader.ReadIndefiniteLengthLittleEndian(dr, TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN)); dr.Skip(8); } }
public static void SkipElementExplicitBigEndian(DICOMBinaryReader dr) { var tag = TagReader.ReadBigEndian(dr); var vr = VRReader.ReadVR(dr); var length = LengthReader.ReadBigEndian(vr, dr); if (length != -1) { dr.Skip(length); } else { dr.Skip(SequenceReader.ReadIndefiniteLengthBigEndian(dr)); dr.Skip(8); } }
public static void SkipElementExplicitLittleEndian(DICOMBinaryReader dr) { Tag tag = TagReader.ReadLittleEndian(dr); VR vr = VRReader.ReadVR(dr); int length = LengthReader.ReadLittleEndian(vr, dr); if (length != -1) { dr.Skip(length); } else { dr.Skip(SequenceReader.ReadIndefiniteLengthLittleEndian(dr, TransferSyntax.EXPLICIT_VR_LITTLE_ENDIAN)); dr.Skip(8); } }
public static DICOMObject ReadBigEndian(DICOMBinaryReader dr, TransferSyntax syntax) { DICOMObject d; int length = LengthReader.ReadLittleEndian(VR.Null, dr.Skip(4)); if (LengthReader.IsIndefinite(length)) { d = ReadIndefiniteBigEndian(dr, syntax); } else { d = DICOMObjectReader.ReadObject(dr.ReadBytes(length), syntax); } return(d); }
/// <summary> /// Reads and returns the next DICOM element starting at the current location in the DICOM binary reader /// </summary> /// <param name="dr">the binary reader which is reading the DICOM object</param> /// <returns>the next DICOM element</returns> public static IDICOMElement ReadElementImplicitLittleEndian(DICOMBinaryReader dr) { Tag tag = TagReader.ReadLittleEndian(dr); VR vr = TagDictionary.GetVRFromTag(tag); if (CheckForExplicitness(tag, dr, ref vr)) { return(ReadElementExplicitLittleEndian(tag, vr, dr)); } else { int length = LengthReader.ReadLittleEndian(VR.Null, dr); byte[] data = DataReader.ReadLittleEndian(length, dr, TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN); IDICOMElement el = ElementFactory.GenerateElement(tag, vr, data, TransferSyntax.IMPLICIT_VR_LITTLE_ENDIAN); return(el); } }
public static void SkipItemBigEndian(DICOMBinaryReader dr) { var length = LengthReader.ReadBigEndian(VR.Null, dr.Skip(4)); if (length != -1) { dr.Skip(length); } else { while (!IsEndOfSequenceItemBigEndian(dr) && dr.StreamLength != dr.StreamPosition) { dr.StreamPosition -= 8; DICOMElementReader.SkipElementExplicitBigEndian(dr); } } }
public static DICOMObject ReadLittleEndian(DICOMBinaryReader dr, TransferSyntax syntax) { DICOMObject d; //Skip tag dr.Skip(4); int length = LengthReader.ReadLittleEndian(VR.Null, dr); if (LengthReader.IsIndefinite(length)) { d = ReadIndefiniteLittleEndian(dr, syntax); } else { } return(null); }
public static DICOMObject ReadBigEndian(DICOMBinaryReader dr, TransferSyntax syntax, StringEncoding enc) { DICOMObject d; //Skip tag dr.Skip(4); var length = LengthReader.ReadBigEndian(VR.Null, dr); if (LengthReader.IsIndefinite(length)) { d = ReadIndefiniteBigEndian(dr, syntax, enc); } else { d = DICOMObjectReader.ReadObject(dr.ReadBytes(length), syntax); } return(d); }