aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX')
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/DataPoints/DateTimeDataPoint.cs178
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/DataPoints/Int32DataPoint.cs13
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/GraphController.cs151
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphController.cs5
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphDataSeries.cs5
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphSurface.cs10
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/Renderers/ScrollingLineRenderer.cs2
7 files changed, 25 insertions, 339 deletions
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/DataPoints/DateTimeDataPoint.cs b/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/DataPoints/DateTimeDataPoint.cs
deleted file mode 100644
index 9ec750af9..000000000
--- a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/DataPoints/DateTimeDataPoint.cs
+++ /dev/null
@@ -1,178 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-
-namespace RealTimeGraphX.DataPoints
-{
- public class DateTimeDataPoint : GraphDataPoint<DateTime, DateTimeDataPoint>
- {
- /// <summary>
- /// Initializes a new instance of the <see cref="DateTimeDataPoint"/> class.
- /// </summary>
- public DateTimeDataPoint() : base()
- {
-
- }
-
- /// <summary>
- /// Initializes a new instance of the <see cref="DateTimeDataPoint"/> class.
- /// </summary>
- /// <param name="value">The value.</param>
- public DateTimeDataPoint(DateTime value) : base(value)
- {
-
- }
-
- /// <summary>
- /// Performs an implicit conversion from <see cref="System.TimeSpan"/> to <see cref="DateTimeDataPoint"/>.
- /// </summary>
- /// <param name="value">The value.</param>
- /// <returns>
- /// The result of the conversion.
- /// </returns>
- public static implicit operator DateTimeDataPoint(DateTime value)
- {
- return new DateTimeDataPoint(value);
- }
-
- /// <summary>
- /// Implements the operator -.
- /// </summary>
- /// <param name="a">a.</param>
- /// <param name="b">The b.</param>
- /// <returns>
- /// The result of the operator.
- /// </returns>
- public static DateTimeDataPoint operator -(DateTimeDataPoint a, DateTimeDataPoint b)
- {
- return new DateTimeDataPoint(new DateTime(a.Value.Ticks - b.Value.Ticks));
- }
-
- /// <summary>
- /// Implements the operator +.
- /// </summary>
- /// <param name="a">a.</param>
- /// <param name="b">The b.</param>
- /// <returns>
- /// The result of the operator.
- /// </returns>
- public static DateTimeDataPoint operator +(DateTimeDataPoint a, DateTimeDataPoint b)
- {
- return new DateTimeDataPoint(new DateTime(a.Value.Ticks + b.Value.Ticks));
- }
-
- /// <summary>
- /// Sums the value of this instance with another instance value and returns the result.
- /// </summary>
- /// <param name="other">The other instance.</param>
- /// <returns></returns>
- public override IGraphDataPoint Add(IGraphDataPoint other)
- {
- return new DateTimeDataPoint(new DateTime(this.Value.Ticks + (other as DateTimeDataPoint).Value.Ticks));
- }
-
- /// <summary>
- /// Subtract the value of another instance from this instance and returns the result.
- /// </summary>
- /// <param name="other">The other instance.</param>
- /// <returns></returns>
- public override IGraphDataPoint Subtract(IGraphDataPoint other)
- {
- return new DateTimeDataPoint(new DateTime(this.Value.Ticks - (other as DateTimeDataPoint).Value.Ticks));
- }
-
- /// <summary>
- /// Multiplies the value of this instance with another instance value and returns the result.
- /// </summary>
- /// <param name="other">The other instance.</param>
- /// <returns></returns>
- public override IGraphDataPoint Multiply(IGraphDataPoint other)
- {
- return new DateTimeDataPoint(new DateTime(this.Value.Ticks * (other as DateTimeDataPoint).Value.Ticks));
- }
-
- /// <summary>
- /// Divides the value of this instance with another instance value and returns the result.
- /// </summary>
- /// <param name="other">The other instance.</param>
- /// <returns></returns>
- public override IGraphDataPoint Divide(IGraphDataPoint other)
- {
- return new DateTimeDataPoint(new DateTime(this.Value.Ticks / (other as DateTimeDataPoint).Value.Ticks));
- }
-
- /// <summary>
- /// Returns the percentage value of this instance between the specified minimum and maximum values.
- /// </summary>
- /// <param name="min">The minimum.</param>
- /// <param name="max">The maximum.</param>
- /// <returns></returns>
- public override double ComputeRelativePosition(IGraphDataPoint min, IGraphDataPoint max)
- {
- DateTime dMin = min as DateTimeDataPoint;
- DateTime dMax = max as DateTimeDataPoint;
-
- if (dMax.Ticks - dMin.Ticks == 0) //Prevent divide by zero
- {
- return dMin.Ticks;
- }
-
- var result = ((Value.Ticks - dMin.Ticks) * 100) / (dMax.Ticks - dMin.Ticks);
-
- return double.IsNaN(result) ? dMin.Ticks : result;
- }
-
- /// <summary>
- /// Returns the absolute value of the specified percentage value between the specified minimum and maximum values.
- /// </summary>
- /// <param name="min">The minimum.</param>
- /// <param name="max">The maximum.</param>
- /// <param name="percentage">The percentage.</param>
- /// <returns></returns>
- public override IGraphDataPoint ComputeAbsolutePosition(IGraphDataPoint min, IGraphDataPoint max, double percentage)
- {
- double minimum = ((DateTime)min.GetValue()).Ticks;
- double maximum = ((DateTime)max.GetValue()).Ticks;
-
- return new DateTimeDataPoint(new DateTime((long)(minimum + (maximum - minimum) * percentage)));
- }
-
- /// <summary>
- /// Creates a range of values from the specified minimum and maximum.
- /// </summary>
- /// <param name="min">The minimum.</param>
- /// <param name="max">The maximum.</param>
- /// <param name="count">The count.</param>
- /// <returns></returns>
- public override IEnumerable<IGraphDataPoint> CreateRange(IGraphDataPoint min, IGraphDataPoint max, int count)
- {
- double minimum = ((DateTime)min.GetValue()).Ticks;
- double maximum = ((DateTime)max.GetValue()).Ticks;
-
- return Enumerable.Range(0, count).
- Select(i => minimum + (maximum - minimum) * ((double)i / (count - 1))).
- Select(x => new DateTimeDataPoint(new DateTime((long)x)));
- }
-
- /// <summary>
- /// Returns a formated string of this data point.
- /// </summary>
- /// <param name="format">The format.</param>
- /// <returns></returns>
- public override string ToString(string format)
- {
- return Value.ToString(format);
- }
-
- /// <summary>
- /// Parses the specified value and returns a new instance of <see cref="!:TDataType" /> data point.
- /// </summary>
- /// <param name="value">The value.</param>
- /// <returns></returns>
- public override IGraphDataPoint Parse(string value)
- {
- return new DateTimeDataPoint(DateTime.Parse(value));
- }
- }
-}
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/DataPoints/Int32DataPoint.cs b/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/DataPoints/Int32DataPoint.cs
index 787e59aae..4bccdcb74 100644
--- a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/DataPoints/Int32DataPoint.cs
+++ b/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/DataPoints/Int32DataPoint.cs
@@ -118,11 +118,6 @@ namespace RealTimeGraphX.DataPoints
Int32DataPoint dMin = min as Int32DataPoint;
Int32DataPoint dMax = max as Int32DataPoint;
- if (dMax - dMin == 0) //Prevent divide by zero
- {
- return dMin;
- }
-
var result = ((Value - dMin) * 100) / (dMax - dMin);
return result;
@@ -152,12 +147,12 @@ namespace RealTimeGraphX.DataPoints
/// <returns></returns>
public override IEnumerable<IGraphDataPoint> CreateRange(IGraphDataPoint min, IGraphDataPoint max, int count)
{
- double minimum = (int)min.GetValue();
- double maximum = (int)max.GetValue();
+ int minimum = (int)min.GetValue();
+ int maximum = (int)max.GetValue();
return Enumerable.Range(0, count).
- Select(i => minimum + (maximum - minimum) * ((double)i / (count - 1))).
- Select(x => new Int32DataPoint((int)x));
+ Select(i => minimum + (maximum - minimum) * ((int)i / (count - 1))).
+ Select(x => new Int32DataPoint(x));
}
/// <summary>
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>
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphController.cs b/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphController.cs
index 4e36641e7..0dbc49ccb 100644
--- a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphController.cs
+++ b/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphController.cs
@@ -39,11 +39,6 @@ namespace RealTimeGraphX
bool IsPaused { get; set; }
/// <summary>
- /// Gets or sets a value indicating whether to disable the rendering of data.
- /// </summary>
- bool DisableRendering { get; set; }
-
- /// <summary>
/// Gets the current effective x-axis minimum.
/// </summary>
GraphDataPoint EffectiveMinimumX { get; }
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphDataSeries.cs b/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphDataSeries.cs
index 03640e44a..dd05da92b 100644
--- a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphDataSeries.cs
+++ b/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphDataSeries.cs
@@ -27,10 +27,5 @@ namespace RealTimeGraphX
/// Gets or sets a value indicating whether this series should be visible.
/// </summary>
bool IsVisible { get; set; }
-
- /// <summary>
- /// Gets the current value.
- /// </summary>
- Object CurrentValue { get; set; }
}
}
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphSurface.cs b/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphSurface.cs
index a3aeb90d9..310bc7c3d 100644
--- a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphSurface.cs
+++ b/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/IGraphSurface.cs
@@ -12,16 +12,6 @@ namespace RealTimeGraphX
public interface IGraphSurface : IGraphComponent
{
/// <summary>
- /// Occurs when the surface size has changed.
- /// </summary>
- event EventHandler SurfaceSizeChanged;
-
- /// <summary>
- /// Occurs when the surface zoom rectangle has changed.
- /// </summary>
- event EventHandler ZoomRectChanged;
-
- /// <summary>
/// Returns the actual size of the surface.
/// </summary>
/// <returns></returns>
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/Renderers/ScrollingLineRenderer.cs b/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/Renderers/ScrollingLineRenderer.cs
index 0a4ac8368..82e80aa0f 100644
--- a/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/Renderers/ScrollingLineRenderer.cs
+++ b/Software/Visual_Studio/SideChains/RealTimeGraphX-master/RealTimeGraphX/Renderers/ScrollingLineRenderer.cs
@@ -78,7 +78,7 @@ namespace RealTimeGraphX.Renderers
surface.FillSeries(series, GetFillPoints(surface, points));
}
- surface.DrawSeries(series, GetFillPoints(surface, points));
+ surface.DrawSeries(series, points);
}
}
}