aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/GraphController.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/GraphController.cs')
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/GraphController.cs151
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>