using RealTimeGraphX.EventArguments;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Text;
namespace RealTimeGraphX
{
///
/// Represents a graph renderer capable of receiving a series of data points from a controller and transforming them to drawing points.
///
/// The type of the data series.
///
public interface IGraphRenderer : IGraphComponent where TDataSeries : IGraphDataSeries
{
///
/// Arranges the series of data points and returns a series of drawing points.
///
/// The target graph surface.
/// The instance of the current rendered data series.
/// Instance of graph range.
/// Collection of x coordinates.
/// Collection of y coordinates.
/// The minimum x coordinates value.
/// The maximum x coordinates value.
/// The minimum y coordinates value.
/// The maximum y coordinates value.
///
IEnumerable Render(IGraphSurface surface, TDataSeries series, IGraphRange range, List xx, List yy, GraphDataPoint minimumX, GraphDataPoint maximumX, GraphDataPoint minimumY, GraphDataPoint maximumY);
///
/// Draws the specified data series points on the target surface.
///
/// The target graph surface.
/// The instance of the current rendered data series.
/// The collection of the current data series drawing points.
/// The index of the current data series within the collection of data series.
/// The length of the data series collection.
void Draw(IGraphSurface surface, TDataSeries series, IEnumerable points, int index, int count);
}
}