aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/MachineStudio.Dispensers/Properties/Settings.settings
blob: 033d7a5e9e2266753180f4e3a9299f575046701e (plain)
1
2
3
4
5
6
7
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
  <Profiles>
    <Profile Name="(Default)" />
  </Profiles>
  <Settings />
</SettingsFile>
font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
using Google.Protobuf;
using System;
using System.Collections.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;
        }
    }
}