usingRealTimeGraphX.EventArguments;usingSystem;usingSystem.Collections.Generic;usingSystem.Collections.ObjectModel;namespaceRealTimeGraphX{/// <summary>/// Represents a graph controller./// </summary>/// <seealso cref="RealTimeGraphX.IGraphComponent" />publicinterfaceIGraphController:IGraphComponent{#region Events/// <summary>/// Occurs when the current effective minimum/maximum values have changed./// </summary>eventEventHandler<RangeChangedEventArgs>EffectiveRangeChanged;/// <summary>/// Occurs when the current virtual (effective minimum/maximum after transformation) minimum/maximum values have changed./// </summary>eventEventHandler<RangeChangedEventArgs>VirtualRangeChanged;#endregion#region Properties/// <summary>/// Gets or sets the controller refresh rate./// Higher rate requires more CPU time./// </summary>TimeSpanRefreshRate{get;set;}/// <summary>/// Gets or sets a value indicating whether to pause the rendering./// </summary>boolIsPaused{get;set;}/// <summary>/// Gets or sets a value indicating whether to disable the rendering of data./// </summary>boolDisableRendering{get;set;}/// <summary>/// Gets the current effective x-axis minimum./// </summary>GraphDataPointEffectiveMinimumX{get;}/// <summary>/// Gets the current effective x-axis maximum./// </summary>GraphDataPointEffectiveMaximumX{get;}/// <summary>/// Gets the current effective y-axis minimum./// </summary>GraphDataPointEffectiveMinimumY{get;}/// <summary>/// Gets the current effective y-axis maximum./// </summary>GraphDataPointEffectiveMaximumY{get;}/// <summary>/// Gets the current virtual (effective minimum/maximum after transformation) x-axis minimum./// </summary>GraphDataPointVirtualMinimumX{get;}/// <summary>/// Gets the current virtual (effective minimum/maximum after transformation) x-axis maximum./// </summary>GraphDataPointVirtualMaximumX{get;}/// <summary>/// Gets the current virtual (effective minimum/maximum after transformation) y-axis minimum./// </summary>GraphDataPointVirtualMinimumY{get;}/// <summary>/// Gets the current virtual (effective minimum/maximum after transformation) y-axis maximum./// </summary>GraphDataPointVirtualMaximumY{get;}/// <summary>/// Clears all data points from this controller./// </summary>voidClear();#endregion#region Commands/// <summary>/// Gets the clear command./// </summary>GraphCommandClearCommand{get;}#endregion#region Methods/// <summary>/// Requests the controller to invoke a virtual range change event./// </summary>voidRequestVirtualRangeChange();#endregion}/// <summary>/// Represents a graph controller capable of pushing data points to it's associated <see cref="IGraphRenderer{TDataSeries}">Graph Renderer</see>/// and rendering them to it's associated <see cref="IGraphSurface{TDataSeries}">Graph Surface</see>./// </summary>/// <typeparam name="TDataSeries">The type of the data series.</typeparam>/// <seealso cref="RealTimeGraphX.IGraphComponent" />publicinterfaceIGraphController<TDataSeries>:IGraphControllerwhereTDataSeries:IGraphDataSeries{#region Properties/// <summary>/// Gets the data series collection./// </summary>ObservableCollection<TDataSeries>DataSeriesCollection{get;}/// <summary>/// Gets or sets the graph renderer./// </summary>IGraphRenderer<TDataSeries>Renderer{get;set;}/// <summary>/// Gets or sets the graph surface./// </summary>IGraphSurface<TDataSeries>Surface{get;set;}#endregion}/// <summary>/// Represents a graph controller capable of pushing data points to it's associated <see cref="IGraphRenderer{TDataSeries}">Graph Renderer</see>/// and rendering them to it's associated <see cref="IGraphSurface{TDataSeries}">Graph Surface</see>./// </summary>/// <typeparam name="TDataSeries">The type of the data series.</typeparam>/// <typeparam name="TXDataPoint">The type of the x data point.</typeparam>/// <typeparam name="TYDataPoint">The type of the y data point.</typeparam>/// <seealso cref="RealTimeGraphX.IGraphComponent" />publicinterfaceIGraphController<TDataSeries,TXDataPoint,TYDataPoint>:IGraphController<TDataSeries>whereTXDataPoint:GraphDataPointwhereTYDataPoint:GraphDataPointwhereTDataSeries:IGraphDataSeries{#region Properties/// <summary>/// Gets or sets the graph range (data point boundaries)./// </summary>GraphRange<TXDataPoint,TYDataPoint>Range{get;set;}#endregion#region Methods/// <summary>/// Submits the specified x and y data points./// 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>voidPushData(TXDataPointx,TYDataPointy);/// <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>voidPushData(IEnumerable<TXDataPoint>xx,IEnumerable<TYDataPoint>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>voidPushData(IEnumerable<IEnumerable<TXDataPoint>>xxxx,IEnumerable<IEnumerable<TYDataPoint>>yyyy);#endregion}}