aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/SideChains/RealTimeGraphX/IGraphController.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-10-10 16:55:44 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-10-10 16:55:44 +0300
commit79eb19cbd10785a7dbc972bc0b26817932237419 (patch)
treee36176fc94ce6f26efc89b006d7e6faf7e4398cb /Software/Visual_Studio/SideChains/RealTimeGraphX/IGraphController.cs
parentdf9197240ba5a643ce1599f36b7e3dd34aad6a60 (diff)
downloadTango-79eb19cbd10785a7dbc972bc0b26817932237419.tar.gz
Tango-79eb19cbd10785a7dbc972bc0b26817932237419.zip
Sign-out works !
Fixed issue where color conversion was busy while not in research module but research module in job view. Added new RealTimeGraphX !
Diffstat (limited to 'Software/Visual_Studio/SideChains/RealTimeGraphX/IGraphController.cs')
-rw-r--r--Software/Visual_Studio/SideChains/RealTimeGraphX/IGraphController.cs137
1 files changed, 137 insertions, 0 deletions
diff --git a/Software/Visual_Studio/SideChains/RealTimeGraphX/IGraphController.cs b/Software/Visual_Studio/SideChains/RealTimeGraphX/IGraphController.cs
new file mode 100644
index 000000000..5ce3771e3
--- /dev/null
+++ b/Software/Visual_Studio/SideChains/RealTimeGraphX/IGraphController.cs
@@ -0,0 +1,137 @@
+using RealTimeGraphX.EventArguments;
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace RealTimeGraphX
+{
+ /// <summary>
+ /// Represents a graph controller.
+ /// A graph controller is the first component in the sequence of graph components and it's role is to
+ /// Push data points and pass them to the output <see cref="IGraphRenderer"/>.
+ /// </summary>
+ /// <typeparam name="TDataSeries">The type of the graph data series.</typeparam>
+ /// <seealso cref="RealTimeGraphX.IGraphComponent" />
+ public interface IGraphController<TDataSeries> : IGraphOutputComponent<IGraphRenderer<TDataSeries>>, IGraphComponent where TDataSeries : IGraphDataSeries
+ {
+ #region Events
+
+ /// <summary>
+ /// Occurs when one of the <see cref="Range"/> properties was modified.
+ /// </summary>
+ event EventHandler<IGraphRange> RangeChanged;
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// Gets the graph range (limits).
+ /// </summary>
+ IGraphRange Range { get; }
+
+ /// <summary>
+ /// Gets the data series collection.
+ /// </summary>
+ ReadOnlyObservableCollection<TDataSeries> DataSeriesCollection { get; }
+
+ /// <summary>
+ /// Gets or sets a value indicating whether to pause the graph movement.
+ /// </summary>
+ bool IsPaused { get; set; }
+
+ #endregion
+
+ #region Methods
+
+ /// <summary>
+ /// Adds a new data series.
+ /// </summary>
+ /// <param name="series">The series.</param>
+ void AddDataSeries(TDataSeries series);
+
+ /// <summary>
+ /// Removed the specified data series
+ /// </summary>
+ /// <param name="series">The series.</param>
+ void RemoveDataSeries(TDataSeries series);
+
+ /// <summary>
+ /// Clears the graph data.
+ /// </summary>
+ void Clear();
+
+ #endregion
+ }
+
+ /// <summary>
+ /// Represents a graph controller.
+ /// A graph controller is the first component in the sequence of graph components and it's role is to
+ /// Push data points and pass them to the output <see cref="IGraphRenderer{XDataPoint, YDataPoint}"/>.
+ /// </summary>
+ /// <typeparam name="TDataSeries">The type of the graph data series.</typeparam>
+ /// <typeparam name="XDataPoint">The type of the x-axis data point.</typeparam>
+ /// <typeparam name="YDataPoint">The type of the y-axis data point.</typeparam>
+ /// <seealso cref="RealTimeGraphX.IGraphOutputComponent{RealTimeGraphX.IGraphRenderer}" />
+ /// <seealso cref="RealTimeGraphX.IGraphComponent" />
+ public interface IGraphController<TDataSeries, XDataPoint, YDataPoint> : IGraphController<TDataSeries>, IGraphOutputComponent<IGraphRenderer<TDataSeries, XDataPoint, YDataPoint>> where XDataPoint : GraphDataPointBase where YDataPoint : GraphDataPointBase where TDataSeries : IGraphDataSeries
+ {
+ #region Events
+
+ /// <summary>
+ /// Occurs when one of the <see cref="Range"/> properties was modified.
+ /// </summary>
+ new event EventHandler<GraphRange<XDataPoint, YDataPoint>> RangeChanged;
+
+ /// <summary>
+ /// Occurs when the connected <see cref="IGraphRenderer{XDataPoint, YDataPoint}"/> has changed.
+ /// </summary>
+ new event EventHandler<OutputChangedEventArgs<IGraphRenderer<TDataSeries, XDataPoint, YDataPoint>>> OutputChanged;
+
+ #endregion
+
+ #region Properties
+
+ /// <summary>
+ /// Gets the graph range (limits).
+ /// </summary>
+ new GraphRange<XDataPoint, YDataPoint> Range { get; }
+
+ /// <summary>
+ /// Gets the connected output <see cref="IGraphRenderer{XDataPoint, YDataPoint}"/>.
+ /// </summary>
+ new IGraphRenderer<TDataSeries, XDataPoint, YDataPoint> Output { get; }
+
+ #endregion
+
+ #region Methods
+
+ /// <summary>
+ /// Submits the specified x and y data points the controller.
+ /// If the controller has more than one data series the data points will be duplicated.
+ /// </summary>
+ /// <param name="x">X data point.</param>
+ /// <param name="y">Y data point.</param>
+ void PushData(XDataPoint x, YDataPoint y);
+
+ /// <summary>
+ /// Submits the specified collections of x and y data points.
+ /// If the controller has more than one data series the data points will be distributed evenly.
+ /// </summary>
+ /// <param name="xx">X data point collection.</param>
+ /// <param name="yy">Y data point collection.</param>
+ void PushData(IEnumerable<XDataPoint> xx, IEnumerable<YDataPoint> yy);
+
+ /// <summary>
+ /// Submits a matrix of x and y data points. Meaning each data series should process a single collection of x/y data points.
+ /// </summary>
+ /// <param name="xxxx">X matrix.</param>
+ /// <param name="yyyy">Y matrix.</param>
+ void PushData(IEnumerable<IEnumerable<XDataPoint>> xxxx, IEnumerable<IEnumerable<YDataPoint>> yyyy);
+
+ #endregion
+ }
+}