aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Modules/Tango.PPC.JobsV2/AppBarItems/JobProgressAppBarItemView.xaml.cs
blob: f0ba3b77d29f113c3b967ae716ac25e354697fdb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using
ns.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.PMR; using Tango.PMR.Common; using Tango.PMR.Printing; namespace Tango.Integration.Operation { /// <summary> /// Represents a job description file containing a series of job segments and brush stops. /// </summary> public class JobDescriptionFile { private IEnumerable<JobSegment> _segments; /// <summary> /// Initializes a new instance of the <see cref="JobDescriptionFile"/> class. /// </summary> /// <param name="segments">The segments.</param> public JobDescriptionFile(IEnumerable<JobSegment> segments) { _segments = segments; } /// <summary> /// Returns a memory stream containing the job description file data. /// </summary> /// <returns></returns> public MemoryStream ToStream() { List<IMessage> messages = new List<IMessage>(); foreach (var segment in _segments) { var seg = new JobDescriptionFileSegment() { Name = segment.Name, Length = segment.Length, BrushStopsCount = segment.BrushStops.Count, }; messages.Add(seg); foreach (var stop in segment.BrushStops) { var st = new JobDescriptionFileBrushStop() { Index = stop.Index, OffsetMeters = stop.OffsetMeters, OffsetPercent = stop.OffsetPercent, }; st.Dispensers.AddRange(stop.Dispensers.ToList()); messages.Add(st); } } MemoryStream ms = new MemoryStream(); BinaryWriter writer = new BinaryWriter(ms); foreach (var msg in messages) { byte[] data = msg.ToByteArray(); writer.Write(data.Length); writer.Write(data); } ms.Position = 0; return ms; } /// <summary> /// Returns an array of bytes containing the job description file data. /// </summary> /// <returns></returns> public byte[] ToBytes() { using (var ms = ToStream()) { return ms.ToArray(); } } /// <summary> /// Reads the job description file. /// </summary> /// <param name="filePath">The file path.</param> /// <returns></returns> public static List<JobSegment> ReadJobDescriptionFile(String filePath) { using (FileStream fs = new FileStream(filePath, FileMode.Open)) { return ReadJobDescriptionFile(fs); } } /// <summary> /// Reads the job description file. /// </summary> ///<param name="stream">Source stream.</param> /// <returns></returns> public static List<JobSegment> ReadJobDescriptionFile(Stream stream) { List<JobSegment> segments = new List<JobSegment>(); using (BinaryReader reader = new BinaryReader(stream)) { while (stream.Position < stream.Length) { int length = reader.ReadInt32(); var segment = JobDescriptionFileSegment.Parser.ParseFrom(reader.ReadBytes(length)); JobSegment s = new JobSegment(); s.Length = segment.Length; s.Name = segment.Name; for (int i = 0; i < segment.BrushStopsCount; i++) { length = reader.ReadInt32(); var stop = JobDescriptionFileBrushStop.Parser.ParseFrom(reader.ReadBytes(length)); JobBrushStop st = new JobBrushStop(); st.Dispensers.AddRange(stop.Dispensers); st.Index = stop.Index; st.OffsetMeters = stop.OffsetMeters; st.OffsetPercent = stop.OffsetPercent; s.BrushStops.Add(st); } segments.Add(s); } } return segments; } } }