From 00a491d93733d4625ad329b2ba8237f445364b3f Mon Sep 17 00:00:00 2001 From: Mirta Date: Wed, 30 Dec 2020 16:39:52 +0200 Subject: merge --- .../RealTimeGraphX/GraphController.cs | 151 +++------------------ 1 file changed, 20 insertions(+), 131 deletions(-) (limited to 'Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/GraphController.cs') diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/GraphController.cs b/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/GraphController.cs index 1b452df57..0331ab3eb 100644 --- a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/GraphController.cs +++ b/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/GraphController.cs @@ -47,8 +47,6 @@ namespace RealTimeGraphX public int RenderedItems { get; set; } public bool IsClearSeries { get; set; } - - public bool IsUpdateSeries { get; set; } } #endregion @@ -80,11 +78,6 @@ namespace RealTimeGraphX /// public bool IsPaused { get; set; } - /// - /// Gets or sets a value indicating whether to disable the rendering of data. - /// - public bool DisableRendering { get; set; } - /// /// Gets the data series collection. /// @@ -115,10 +108,8 @@ namespace RealTimeGraphX get { return _surface; } set { - var previous = _surface; _surface = value; RequestVirtualRangeChange(); - OnSurfaceChanged(previous, _surface); } } @@ -210,7 +201,6 @@ namespace RealTimeGraphX _render_thread = new Thread(RenderThreadMethod); _render_thread.IsBackground = true; - _render_thread.Priority = ThreadPriority.Highest; _render_thread.Start(); } @@ -225,62 +215,42 @@ namespace RealTimeGraphX { while (true) { - if (!IsPaused && !DisableRendering) + if (!IsPaused) { try { - List> pending_lists = new List>(); - - var pending_list_first = _pending_series_collection.BlockDequeue(); - pending_lists.Add(pending_list_first); + var pending_list = _pending_series_collection.BlockDequeue(); - while (_pending_series_collection.Count > 0) + foreach (var pending_series in pending_list) { - var pending_list = _pending_series_collection.BlockDequeue(); - pending_lists.Add(pending_list); - } + if (pending_series.IsClearSeries) + { + _pending_series_collection = new GraphDataQueue>(); + _to_render.Clear(); + break; + } - foreach (var pending_list in pending_lists) - { - foreach (var pending_series in pending_list) + if (_to_render.ContainsKey(pending_series.Series)) { - if (pending_series.IsClearSeries) - { - _pending_series_collection = new GraphDataQueue>(); - _to_render.Clear(); - } - else if (!pending_series.IsUpdateSeries) - { - if (_to_render.ContainsKey(pending_series.Series)) - { - var s = _to_render[pending_series.Series]; - s.XX.AddRange(pending_series.XX); - s.YY.AddRange(pending_series.YY); - } - else - { - _to_render[pending_series.Series] = pending_series; - } - } + var s = _to_render[pending_series.Series]; + s.XX.AddRange(pending_series.XX); + s.YY.AddRange(pending_series.YY); + } + else + { + _to_render[pending_series.Series] = pending_series; } } - if (_to_render.Count > 0) + if (DateTime.Now > _last_render_time.AddMilliseconds(RefreshRate.TotalMilliseconds) && _to_render.Count > 0) { GraphDataPoint min_x = _range.MaximumX - _range.MaximumX; GraphDataPoint max_x = _range.MaximumX; GraphDataPoint min_y = _range.MinimumY; GraphDataPoint max_y = _range.MaximumY; - if (_to_render.Count > 0 && _to_render.First().Value.XX.Count > 0) - { - min_x = _to_render.First().Value.XX.First(); - max_x = _to_render.First().Value.XX.Last(); - } - else - { - continue; - } + min_x = _to_render.First().Value.XX.First(); + max_x = _to_render.First().Value.XX.Last(); if (_range.AutoY) { @@ -347,11 +317,6 @@ namespace RealTimeGraphX foreach (var item in to_render) { - if (item.YY.Count > 0) - { - item.Series.CurrentValue = item.YY.Last().GetValue(); - } - var points = Renderer.Render(Surface, item.Series, _range, item.XX, item.YY, min_x, max_x, min_y, max_y); to_draw.Add(new Tuple>(item.Series, points)); } @@ -390,26 +355,6 @@ namespace RealTimeGraphX #region Protected Methods - /// - /// Called when the surface has changed. - /// - /// The previous. - /// The surface. - protected virtual void OnSurfaceChanged(IGraphSurface previous, IGraphSurface surface) - { - if (previous != null) - { - previous.SurfaceSizeChanged += Surface_SurfaceSizeChanged; - previous.ZoomRectChanged += Surface_ZoomRectChanged; - } - - if (surface != null) - { - surface.SurfaceSizeChanged += Surface_SurfaceSizeChanged; - surface.ZoomRectChanged += Surface_ZoomRectChanged; - } - } - /// /// Raises the event. /// @@ -457,62 +402,6 @@ namespace RealTimeGraphX #endregion - #region Surface Event Handlers - - /// - /// Handles the ZoomRectChanged event of the Surface control. - /// - /// The source of the event. - /// The instance containing the event data. - private void Surface_ZoomRectChanged(object sender, EventArgs e) - { - if (!_pending_series_collection.ToList().SelectMany(x => x).ToList().Exists(x => x.IsUpdateSeries)) - { - List updateSeries = new List(); - - foreach (var pending_Series in _to_render) - { - updateSeries.Add(new PendingSeries() - { - IsUpdateSeries = true, - Series = pending_Series.Value.Series, - XX = new List(), - YY = new List(), - }); - } - - _pending_series_collection.BlockEnqueue(updateSeries); - } - } - - /// - /// Handles the SurfaceSizeChanged event of the Surface control. - /// - /// The source of the event. - /// The instance containing the event data. - private void Surface_SurfaceSizeChanged(object sender, EventArgs e) - { - if (!_pending_series_collection.ToList().SelectMany(x => x).ToList().Exists(x => x.IsUpdateSeries)) - { - List updateSeries = new List(); - - foreach (var pending_Series in _to_render) - { - updateSeries.Add(new PendingSeries() - { - IsUpdateSeries = true, - Series = pending_Series.Value.Series, - XX = new List(), - YY = new List(), - }); - } - - _pending_series_collection.BlockEnqueue(updateSeries); - } - } - - #endregion - #region Public Methods /// -- cgit v1.3.1