diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-10-10 16:55:44 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-10-10 16:55:44 +0300 |
| commit | 79eb19cbd10785a7dbc972bc0b26817932237419 (patch) | |
| tree | e36176fc94ce6f26efc89b006d7e6faf7e4398cb /Software/Visual_Studio/SideChains/RealTimeGraphX/IGraphController.cs | |
| parent | df9197240ba5a643ce1599f36b7e3dd34aad6a60 (diff) | |
| download | Tango-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.cs | 137 |
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 + } +} |
