From d0faa49dc04de0ceb5e9854e965bb32473bc5b85 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Tue, 13 Nov 2018 14:45:22 +0200 Subject: Machine Studio v3.5.68 Prevent graph crashing on OnRender. Differed SynchronizeColorSpaces with timer. Implemented color calibration for Research module. --- .../Renderers/GraphScrollingRenderer.cs | 71 +++++++++++----------- 1 file changed, 37 insertions(+), 34 deletions(-) (limited to 'Software/Visual_Studio/SideChains') diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphX/Renderers/GraphScrollingRenderer.cs b/Software/Visual_Studio/SideChains/RealTimeGraphX/Renderers/GraphScrollingRenderer.cs index e3bf6182e..3d127c448 100644 --- a/Software/Visual_Studio/SideChains/RealTimeGraphX/Renderers/GraphScrollingRenderer.cs +++ b/Software/Visual_Studio/SideChains/RealTimeGraphX/Renderers/GraphScrollingRenderer.cs @@ -27,52 +27,55 @@ namespace RealTimeGraphX.Renderers /// protected override List OnRender(IEnumerable seriesCollection, TDataSeries series, PendingSeries toRender) { - XDataPoint min_x = toRender.XX.First(); - XDataPoint max_x = toRender.XX.Last(); - - YDataPoint min_y = Input.Range.MinimumY; - YDataPoint max_y = Input.Range.MaximumY; + List points = new List(); - if (Input.Range.AutoY) + if (toRender.XX.Count > 0 && toRender.YY.Count > 0) { - min_y = _current_min_y; - max_y = _current_max_y; - } + XDataPoint min_x = toRender.XX.First(); + XDataPoint max_x = toRender.XX.Last(); + + YDataPoint min_y = Input.Range.MinimumY; + YDataPoint max_y = Input.Range.MaximumY; - OnEffectiveRangeXChanged(min_x, max_x); - OnEffectiveRangeYChanged(min_y, max_y); + if (Input.Range.AutoY) + { + min_y = _current_min_y; + max_y = _current_max_y; + } - var dxList = toRender.XX.Select(x => x.ComputeRelativePosition(min_x, max_x)).ToList(); - var dyList = toRender.YY.Select(x => x.ComputeRelativePosition(min_y, max_y)).ToList(); + OnEffectiveRangeXChanged(min_x, max_x); + OnEffectiveRangeYChanged(min_y, max_y); - if (max_x - min_x > Input.Range.MaximumX) - { - var offset = ((max_x - min_x) - Input.Range.MaximumX) + min_x; + var dxList = toRender.XX.Select(x => x.ComputeRelativePosition(min_x, max_x)).ToList(); + var dyList = toRender.YY.Select(x => x.ComputeRelativePosition(min_y, max_y)).ToList(); - for (int i = 0; i < toRender.XX.Count; i++) + if (max_x - min_x > Input.Range.MaximumX) { - if (toRender.XX[i] < offset) - { - toRender.XX.RemoveAt(i); - toRender.YY.RemoveAt(i); - i--; - } - else + var offset = ((max_x - min_x) - Input.Range.MaximumX) + min_x; + + for (int i = 0; i < toRender.XX.Count; i++) { - break; + if (toRender.XX[i] < offset) + { + toRender.XX.RemoveAt(i); + toRender.YY.RemoveAt(i); + i--; + } + else + { + break; + } } } - } - - List points = new List(); - for (int i = 0; i < dxList.Count; i++) - { - float image_x = ConvertXValueToRendererValue(dxList[i]); - float image_y = (float)Math.Min(ConvertYValueToRendererValue(dyList[i]), Output.SurfaceHeight - 2); + for (int i = 0; i < dxList.Count; i++) + { + float image_x = ConvertXValueToRendererValue(dxList[i]); + float image_y = (float)Math.Min(ConvertYValueToRendererValue(dyList[i]), Output.SurfaceHeight - 2); - GraphPoint point = new GraphPoint(image_x, image_y); - points.Add(point); + GraphPoint point = new GraphPoint(image_x, image_y); + points.Add(point); + } } return points; -- cgit v1.3.1