diff options
Diffstat (limited to 'Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/GraphController.cs')
| -rw-r--r-- | Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/GraphController.cs | 151 |
1 files changed, 20 insertions, 131 deletions
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 @@ -81,11 +79,6 @@ namespace RealTimeGraphX public bool IsPaused { get; set; } /// <summary> - /// Gets or sets a value indicating whether to disable the rendering of data. - /// </summary> - public bool DisableRendering { get; set; } - - /// <summary> /// Gets the data series collection. /// </summary> public ObservableCollection<TDataSeries> DataSeriesCollection { get; } @@ -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<List<PendingSeries>> pending_lists = new List<List<PendingSeries>>(); - - 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<List<PendingSeries>>(); + _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<List<PendingSeries>>(); - _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<TDataSeries, IEnumerable<PointF>>(item.Series, points)); } @@ -391,26 +356,6 @@ namespace RealTimeGraphX #region Protected Methods /// <summary> - /// Called when the surface has changed. - /// </summary> - /// <param name="previous">The previous.</param> - /// <param name="surface">The surface.</param> - protected virtual void OnSurfaceChanged(IGraphSurface<TDataSeries> previous, IGraphSurface<TDataSeries> surface) - { - if (previous != null) - { - previous.SurfaceSizeChanged += Surface_SurfaceSizeChanged; - previous.ZoomRectChanged += Surface_ZoomRectChanged; - } - - if (surface != null) - { - surface.SurfaceSizeChanged += Surface_SurfaceSizeChanged; - surface.ZoomRectChanged += Surface_ZoomRectChanged; - } - } - - /// <summary> /// Raises the <see cref="EffectiveRangeChanged"/> event. /// </summary> /// <param name="minimumX">The minimum x.</param> @@ -457,62 +402,6 @@ namespace RealTimeGraphX #endregion - #region Surface Event Handlers - - /// <summary> - /// Handles the ZoomRectChanged event of the Surface control. - /// </summary> - /// <param name="sender">The source of the event.</param> - /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> - private void Surface_ZoomRectChanged(object sender, EventArgs e) - { - if (!_pending_series_collection.ToList().SelectMany(x => x).ToList().Exists(x => x.IsUpdateSeries)) - { - List<PendingSeries> updateSeries = new List<PendingSeries>(); - - foreach (var pending_Series in _to_render) - { - updateSeries.Add(new PendingSeries() - { - IsUpdateSeries = true, - Series = pending_Series.Value.Series, - XX = new List<GraphDataPoint>(), - YY = new List<GraphDataPoint>(), - }); - } - - _pending_series_collection.BlockEnqueue(updateSeries); - } - } - - /// <summary> - /// Handles the SurfaceSizeChanged event of the Surface control. - /// </summary> - /// <param name="sender">The source of the event.</param> - /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param> - private void Surface_SurfaceSizeChanged(object sender, EventArgs e) - { - if (!_pending_series_collection.ToList().SelectMany(x => x).ToList().Exists(x => x.IsUpdateSeries)) - { - List<PendingSeries> updateSeries = new List<PendingSeries>(); - - foreach (var pending_Series in _to_render) - { - updateSeries.Add(new PendingSeries() - { - IsUpdateSeries = true, - Series = pending_Series.Value.Series, - XX = new List<GraphDataPoint>(), - YY = new List<GraphDataPoint>(), - }); - } - - _pending_series_collection.BlockEnqueue(updateSeries); - } - } - - #endregion - #region Public Methods /// <summary> |
