public AutomaticMode(IShotGlassPositionSettingRepository shotGlassPositionSettingRepository, IXAxis xAxis, IYAxis yAxis, ISpiritDispenserControl spiritDispenserControl, IEmergencyStop emergencyStop) { _currentStatus = new BehaviorSubject <Status>(Status.NotReady); _shotGlassPositionSettingRepository = shotGlassPositionSettingRepository; _X_Axis = xAxis; _Y_Axis = yAxis; _spiritDispenserControl = spiritDispenserControl; _emergencyStop = emergencyStop; _emergencyStop.EmergencyStopPressedChanged += (estop) => CalculateStatuts(); var components = new List <IObservable <Status> >(); components.Add(_X_Axis.GetStatusObservable()); components.Add(_Y_Axis.GetStatusObservable()); components.Add(_spiritDispenserControl.GetStatusObservable()); components.CombineLatest(lastStates => lastStates.All(state => state == Status.Ready)) .Subscribe(areComponentsReady => { _areComponentsReady = areComponentsReady; CalculateStatuts(); }); }
protected double GetDistance(CGPoint tapLocation, IPointEntry entry, IXAxis xAxis, IYAxis yAxis) { var entryContentLocationX = xAxis.GetContentValue(entry.X); var entryContentLocationY = yAxis.GetContentValue(entry.Y); return(Math.Sqrt(Math.Pow(entryContentLocationX - tapLocation.X, 2) + Math.Pow(entryContentLocationY - tapLocation.Y, 2))); }
public DrivesController(IXAxis xAxis, IYAxis yAxis) { _axis = new Dictionary <string, IAxis>() { { xAxis.Name, xAxis }, { yAxis.Name, yAxis } }; }
public GpioComponentsStartup( IXAxis xAxis, IYAxis yAxis, ISpiritDispenserControl spiritDispenserControl, IStatusLamp statusLamp, IShotGlassPositionSettingsConfiguration shotGlassPositionSettingsConfiguration) { _xAxis = xAxis; _yAxis = yAxis; _spiritDispenserControl = spiritDispenserControl; _statusLamp = statusLamp; _shotGlassPositionSettingsConfiguration = shotGlassPositionSettingsConfiguration; }
private void DrawLabels(CGContext context, IViewPort viewPort, IXAxis xAxis, nfloat positionY, nfloat axisLineStart, nfloat axisLineEnd, TextStyle textStyle, List <Tuple <double, string> > labels) { foreach (var label in labels) { var labelX = xAxis.GetContentValue(label.Item1); var viewPortPositionX = viewPort.DisplayPositionX((nfloat)labelX); if (viewPortPositionX >= axisLineStart && viewPortPositionX <= axisLineEnd) { DrawLabel(context, label.Item2, new CGPoint(viewPortPositionX, positionY), textStyle); } } }
public StatusObserver( IAutomaticMode automatic, IXAxis xAxis, IYAxis yAxis, ISpiritDispenserControl spiritDispenserControl, IStatusLamp statusLamp) { _statusObservables = new List <IObservable <Status> >(); _statusObservables.Add(spiritDispenserControl.GetStatusObservable()); _statusObservables.Add(xAxis.GetStatusObservable()); _statusObservables.Add(yAxis.GetStatusObservable()); _statusObservables.Add(automatic.GetStatusObservable()); _statusLamp = statusLamp; }
protected virtual void DrawLabels(CGContext context, IViewPort viewPort, IXAxis xAxis, nfloat axisLineStart, nfloat axisLineEnd, nfloat axisYPosition, TextStyle textStyle) { var visibleSourceRangeStart = Math.Floor(xAxis.GetSourceValue(viewPort.ViewPortContentOffset.X)); var visibleSourceRangeEnd = Math.Ceiling(xAxis.GetSourceValue(viewPort.ViewPortContentOffset.X + viewPort.ViewPortSize.Width)); var labels = new List <Tuple <double, string> >(); for (double i = visibleSourceRangeStart; i <= visibleSourceRangeEnd; i += Step) { var text = ValueFormatter(i); if (!string.IsNullOrEmpty(text)) { labels.Add(new Tuple <double, string>(i, text)); } } DrawLabels(context, viewPort, xAxis, axisYPosition, axisLineStart, axisLineEnd, textStyle, labels); }
public virtual void DrawAxis(CGContext context, IViewPort viewPort, IXAxis xAxis) { var axisLineStart = viewPort.ViewPortInsets.Left; var axisLineEnd = viewPort.ViewPortInsets.Left + viewPort.ViewPortSize.Width; if (Style.Position.HasFlag(XAxisPosition.Top)) { var topLineY = viewPort.ViewPortRect.Top + Style.AxisDrawOffset; if (Style.LineStyle.ShouldDraw) { DrawAxisLine(context, new CGPoint(axisLineStart, topLineY), new CGPoint(axisLineEnd, topLineY), Style.LineStyle); } if (Style.TextStyle.ShouldDraw) { DrawLabels(context, viewPort, xAxis, axisLineStart, axisLineEnd, topLineY, Style.TextStyle); } } if (Style.Position.HasFlag(XAxisPosition.Bottom)) { var bottomLineY = viewPort.ViewPortRect.Bottom + Style.AxisDrawOffset; if (Style.LineStyle.ShouldDraw) { DrawAxisLine(context, new CGPoint(axisLineStart, bottomLineY), new CGPoint(axisLineEnd, bottomLineY), Style.LineStyle); } if (Style.TextStyle.ShouldDraw) { DrawLabels(context, viewPort, xAxis, axisLineStart, axisLineEnd, bottomLineY, Style.TextStyle); } } }
protected virtual void Draw(CGContext context, IEnumerable <IPointEntry> entries, IEnumerable <IPointEntry> highlightedEntries, IViewPort viewPort, IXAxis xAxis, IYAxis yAxis, PointRenderStyle renderStyle) { var points = entries ?.Select(t => new { Point = GetDrawPosition(t.X, t.Y, viewPort, xAxis, yAxis), IsHighlight = highlightedEntries?.Contains(t) ?? false, Entry = t }) .ToList(); if (points != null) { context.SaveState(); context.ClipToRect(viewPort.ViewPortRect); if (renderStyle.LineStyle.ShouldDraw) { DrawLine(context, points.Select(t => t.Point).ToList(), renderStyle); } if (renderStyle.MarkerStyle.ShouldDraw) { DrawNotHighlightedMarkers(context, points.Where(t => !t.IsHighlight).Select(t => t.Point).ToList(), renderStyle.MarkerStyle); } if (renderStyle.HighlightMarkerStyle.ShouldDraw) { DrawHighlightedMarkers(context, points.Where(t => t.IsHighlight).Select(t => t.Point).ToList(), renderStyle.HighlightMarkerStyle); } foreach (var point in points) { if (ShouldDraw(point.IsHighlight, renderStyle.TextStyle, renderStyle.HighlightTextStyle)) { DrawEntryValue(context, point.Entry, point.Point, point.IsHighlight ? renderStyle.HighlightTextStyle : renderStyle.TextStyle); } } context.RestoreState(); } }
public void DrawPlot(CGContext context, IPointDataSource dataSource, IEnumerable <IPointEntry> highlightedEntries, IViewPort viewPort, IXAxis xAxis, IYAxis yAxis) { var visibleSourceRange = VisibleSourceXRange(xAxis, viewPort); var visibleSourceRangeStart = Math.Floor(visibleSourceRange.Item1); var visibleSourceRangeEnd = Math.Ceiling(visibleSourceRange.Item2); if (Style.BezierCurve) {//для отображения кривых нужны дополнительные точки для рассчета опорных точек //TODO учитывать масштаб visibleSourceRangeStart--; visibleSourceRangeEnd++; } var visibleEntries = dataSource.GetEntriesInRange(visibleSourceRangeStart, visibleSourceRangeEnd); Draw(context, visibleEntries, highlightedEntries, viewPort, xAxis, yAxis, Style); }
protected Tuple <double, double> VisibleSourceXRange(IXAxis xAxis, IViewPort viewPort) => new Tuple <double, double>(xAxis.GetSourceValue(viewPort.ViewPortContentOffset.X), xAxis.GetSourceValue(viewPort.ViewPortContentOffset.X + viewPort.ViewPortSize.Width));
protected virtual CGPoint GetDrawPosition(double sourceX, double sourceY, IViewPort viewPort, IXAxis xAxis, IYAxis yAxis) => viewPort.DisplayPosition(new CGPoint(xAxis.GetContentValue(sourceX), yAxis.GetContentValue(sourceY)));
public bool Tap(CGPoint tapContentLocation, IChartView chartView, IPointDataSource pointDataSource, IPointHighlightHandler highlightHandler, IXAxis xAxis, IYAxis yAxis) { double sourcePositionStart = xAxis.GetSourceValue(tapContentLocation.X - TapDistance); var sourcePositionEnd = xAxis.GetSourceValue(tapContentLocation.X + TapDistance); var entriesInTapRange = pointDataSource .GetEntriesInRange(sourcePositionStart, sourcePositionEnd) .Select((IPointEntry entry) => new { Entry = entry, Distance = GetDistance(tapContentLocation, entry, xAxis, yAxis) }) .Where((t) => t.Distance <= TapDistance) .OrderBy(p => p.Distance); var entryNearestToTap = entriesInTapRange.FirstOrDefault(); if (entryNearestToTap != null) { highlightHandler.TapOnEntries(Multiselect ? entriesInTapRange.Select(t => t.Entry) : new List <IPointEntry> { entryNearestToTap.Entry }); } else { highlightHandler.TapOnNoEntry(); } return(entryNearestToTap != null); }
public AxisHubInformer(IXAxis xAxis, IYAxis yAxis, IHubContext <AxisHub, IAxisHub> hubContext) { _hubContext = hubContext; xAxis.PositionChanged += PositionChangedHandler; yAxis.PositionChanged += PositionChangedHandler; }
public ZoomRectangle(IXAxis xAxis, IYAxis yAxis) { Axes.XAxis = xAxis; Axes.YAxis = yAxis; }
public DefaultGrid(IXAxis xAxis, IYAxis yAxis) { XAxis = xAxis; YAxis = yAxis; }