using System.Collections.Generic; using System.IO; using fis.Vid.Visuals; namespace fis.Vid { public class VinnoCarotid3DPhysicalData { /// /// Get cartid type. /// public CarotidType CarotidType { get; } /// /// Get vinno visual. /// public IList VinnoVisuals { get; } /// /// Get vinno visual. /// public VinnoProbe VinnoProbe { get; } public VinnoCarotid3DPhysicalData(CarotidType carotidType, VinnoProbe vinnoProbe, IList vinnoVisuals) { VinnoProbe = vinnoProbe; VinnoVisuals = vinnoVisuals; CarotidType = carotidType; } /// /// Convert to bytes. /// /// Bytes. public byte[] ToBytes() { using (var stream = new MemoryStream()) { var writer = new VinnoStreamWriter(stream); writer.WriteByte((byte)CarotidType); writer.WriteBytes(VinnoProbe.ToBytes()); writer.WriteByte((byte)VinnoVisuals.Count); foreach (var visual in VinnoVisuals) { writer.WriteBytes(visual.ToBytes()); } return stream.ToArray(); } } /// /// From bytes. /// /// bytes. /// Instance of vinno carotid 3d physical data. public static VinnoCarotid3DPhysicalData FromBytes(byte[] bytes) { using (var stream = new MemoryStream(bytes)) { stream.Position = 0; var reader = new VinnoStreamReader(stream); var carotidType = (CarotidType)reader.ReadByte(); var probe = VinnoProbe.FromBytes(reader.ReadBytes()); var visualCount = reader.ReadByte(); var visuals = new List(); for (int i = 0; i < visualCount; i++) { var visual = VinnoVisual.FromBytes(reader.ReadBytes()); visuals.Add(visual); } return new VinnoCarotid3DPhysicalData(carotidType, probe, visuals); } } } }