using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenFlashChartASPNETLibraryV2.GraphElement;
using System.Collections;
namespace OpenFlashChartASPNETLibraryV2.ChartDataValues
{
  /// 
  /// Base (abstract) class for all charts
  /// 
  /// 
  public abstract class ChartDataBase  //: GraphElementBase
  {
    // Fields
    protected List  _values;
    protected int _maxDecimals = 2;
    protected float _maxValue = float.MinValue;
    protected float _minValue = float.MaxValue;
    // Methods
    /// 
    /// constuctor
    /// 
    /// Maximum number of decimal places
    public ChartDataBase(int maxDecimals)
    {
      if (maxDecimals < 0)
      {
        throw new ArgumentOutOfRangeException("maxDecimals", "must be >=0");
      }
      this._maxDecimals = maxDecimals;
      _values = new List();
    }
    /// 
    /// reset all values
    /// 
    public void Reset()
    {
      this._maxDecimals = 2;
      _values = new List ();
    }
    //public override string StringValue()
    //{
    //  return "";// this._sb.ToString();
    //}
    // Properties
    /// 
    /// Maximum value to be displayed
    /// 
    public float MaxValue
    {
      get
      {
        if (this._maxValue < this._minValue)
        {
          return float.MaxValue;
        }
        return this._maxValue;
      }
    }
    /// 
    /// Minimum value to be displayed
    /// 
    public float MinValue
    {
      get
      {
        if (this._minValue > this._maxValue)
        {
          return float.MinValue;
        }
        return this._minValue;
      }
    }
    public abstract IEnumerable GetValues ();
    public abstract string ValuesAsString { get; }
    /// 
    /// Used to format numbers for generated output
    /// 
    /// 
    protected  string GetFormatString()
    {
      string formatStr = "0";
      if (_maxDecimals > 0)
      {
        formatStr = formatStr + "." + new string('#',_maxDecimals);
      }
      return formatStr;
    }
  }
}