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);
}
}
}
}