public FrameViewModel(IFrameable frameable, IHostTransformation hostTransformation, IFrameSaver frameSaver) { Frameable = frameable; HostTransformation = hostTransformation; FrameSaver = frameSaver; hostTransformation.PropertyChanged += (sender, args) => { switch (args.PropertyName) { case "Quadrangle": OnPropertyChanged("Quadrangle"); break; case "Transformation": OnPropertyChanged("Transformation"); OnPropertyChanged("Lines"); OnPropertyChanged("Points"); OnPropertyChanged("Elements"); break; } }; if (frameSaver != null) { SaveFileContainer = new SaveFileContainerViewModel(this, frameSaver.GetType()); } }
public static IEnumerable <Line> GetLines(this IFrameable frameable) { var lines = new List <Line>(); var tracePoints = frameable.TracePoints; for (var i = 1; i < tracePoints.Length; i++) { var start = tracePoints[i - 1]; var finish = tracePoints[i]; if (!finish.Trace) { continue; } var line = new Line(start.Point, finish.Point); lines.Add(line); } return(lines .Select(line => frameable.Transformation.ReverseTransform(line)));; }
public static IEnumerable <Point> GetPoints(this IFrameable frameable) { return(frameable.TracePoints .Select(tracePoint => tracePoint.Point) .Select(point => frameable.Transformation.ReverseTransform(point))); }
private static void SendUpdateMessage(ISolutionStrategy strategy, ProblemUpdateType updateType, ZmqSocket socket, IFrameable data) { ZmqMessage message = GetUpdateMessage(strategy, updateType, data); socket.SendMessage(message); }
private static ZmqMessage GetUpdateMessage(ISolutionStrategy strategy, ProblemUpdateType updateType, IFrameable data) { var dataFrames = data.GetFrames(Encoding.UTF8).ToList(); List<Frame> msgFrames = new List<Frame>(dataFrames.Count + 5); msgFrames.Add(new Frame(Encoding.UTF8.GetBytes(strategy.Signature))); msgFrames.Add(Frame.Empty); msgFrames.Add(new Frame(new byte[1] { (byte)updateType })); msgFrames.Add(Frame.Empty); msgFrames.Add(new Frame(new byte[1] { 0x7f })); msgFrames.AddRange(dataFrames); ZmqMessage message = new ZmqMessage(msgFrames); return message; }