using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
namespace RealTimeGraphX
{
///
/// Represents a graph X or Y data point that can be pushed to an .
///
///
public interface IGraphDataPoint : IComparable
{
///
/// Sums the value of this instance with another instance value and returns the result.
///
/// The other instance.
///
IGraphDataPoint Add(IGraphDataPoint other);
///
/// Subtract the value of another instance from this instance and returns the result.
///
/// The other instance.
///
IGraphDataPoint Subtract(IGraphDataPoint other);
///
/// Multiplies the value of this instance with another instance value and returns the result.
///
/// The other instance.
///
IGraphDataPoint Multiply(IGraphDataPoint other);
///
/// Divides the value of this instance with another instance value and returns the result.
///
/// The other instance.
///
IGraphDataPoint Divide(IGraphDataPoint other);
///
/// Creates a range of values from the specified minimum and maximum.
///
/// The minimum.
/// The maximum.
/// The count.
///
IEnumerable CreateRange(IGraphDataPoint min, IGraphDataPoint max, int count);
///
/// Returns the percentage value of this instance between the specified minimum and maximum values.
///
/// The minimum.
/// The maximum.
///
double ComputeRelativePosition(IGraphDataPoint min, IGraphDataPoint max);
///
/// Returns the absolute value of the specified percentage value between the specified minimum and maximum values.
///
/// The minimum.
/// The maximum.
/// The percentage.
///
IGraphDataPoint ComputeAbsolutePosition(IGraphDataPoint min, IGraphDataPoint max, double percentage);
///
/// Gets the inner value.
///
///
object GetValue();
///
/// Sets the inner value.
///
/// The value.
void SetValue(object value);
///
/// Returns a formated string of this data point.
///
/// The format.
///
String ToString(String format);
}
}