172 lines
5.6 KiB
C#
172 lines
5.6 KiB
C#
//============================================================================
|
|
//PointPairList Class
|
|
//Copyright ?2006 John Champion
|
|
//
|
|
//This library is free software; you can redistribute it and/or
|
|
//modify it under the terms of the GNU Lesser General Public
|
|
//License as published by the Free Software Foundation; either
|
|
//version 2.1 of the License, or (at your option) any later version.
|
|
//
|
|
//This library is distributed in the hope that it will be useful,
|
|
//but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
//Lesser General Public License for more details.
|
|
//
|
|
//You should have received a copy of the GNU Lesser General Public
|
|
//License along with this library; if not, write to the Free Software
|
|
//Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
//=============================================================================
|
|
|
|
using System;
|
|
using System.Drawing;
|
|
using System.Collections.Generic;
|
|
|
|
namespace DrawGraph
|
|
{
|
|
/// <summary>
|
|
/// A collection class containing a list of <see cref="StockPt"/> objects
|
|
/// that define the set of points to be displayed on the curve.
|
|
/// </summary>
|
|
///
|
|
/// <author> John Champion based on code by Jerry Vos</author>
|
|
/// <version> $Revision: 3.4 $ $Date: 2007/02/18 05:51:54 $ </version>
|
|
[Serializable]
|
|
public class StockPointList : List<StockPt>, IPointList, IPointListEdit
|
|
{
|
|
|
|
#region Properties
|
|
|
|
/// <summary>
|
|
/// Indexer to access the specified <see cref="StockPt"/> object by
|
|
/// its ordinal position in the list.
|
|
/// </summary>
|
|
/// <param name="index">The ordinal position (zero-based) of the
|
|
/// <see cref="StockPt"/> object to be accessed.</param>
|
|
/// <value>A <see cref="StockPt"/> object reference.</value>
|
|
public new PointPair this[int index]
|
|
{
|
|
get { return base[index]; }
|
|
set { base[index] = new StockPt( value ); }
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Constructors
|
|
|
|
/// <summary>
|
|
/// Default constructor for the collection class
|
|
/// </summary>
|
|
public StockPointList()
|
|
{
|
|
}
|
|
|
|
/// <summary>
|
|
/// The Copy Constructor
|
|
/// </summary>
|
|
/// <param name="rhs">The StockPointList from which to copy</param>
|
|
public StockPointList( StockPointList rhs )
|
|
{
|
|
for ( int i = 0; i < rhs.Count; i++ )
|
|
{
|
|
StockPt pt = new StockPt( rhs[i] );
|
|
this.Add( pt );
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Implement the <see cref="ICloneable" /> interface in a typesafe manner by just
|
|
/// calling the typed version of <see cref="Clone" />
|
|
/// </summary>
|
|
/// <returns>A deep copy of this object</returns>
|
|
object ICloneable.Clone()
|
|
{
|
|
return this.Clone();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Typesafe, deep-copy clone method.
|
|
/// </summary>
|
|
/// <returns>A new, independent copy of this class</returns>
|
|
public StockPointList Clone()
|
|
{
|
|
return new StockPointList( this );
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region Methods
|
|
|
|
/// <summary>
|
|
/// Add a <see cref="StockPt"/> object to the collection at the end of the list.
|
|
/// </summary>
|
|
/// <param name="point">The <see cref="StockPt"/> object to
|
|
/// be added</param>
|
|
new public void Add( StockPt point )
|
|
{
|
|
base.Add( new StockPt( point ) );
|
|
}
|
|
|
|
/// <summary>
|
|
/// Add a <see cref="PointPair"/> object to the collection at the end of the list.
|
|
/// </summary>
|
|
/// <param name="point">The <see cref="PointPair"/> object to be added</param>
|
|
public void Add( PointPair point )
|
|
{
|
|
// throw new ArgumentException( "Error: Only the StockPt type can be added to StockPointList" +
|
|
// ". An ordinary PointPair is not allowed" );
|
|
base.Add( new StockPt( point ) );
|
|
}
|
|
|
|
/// <summary>
|
|
/// Add a <see cref="StockPt"/> object to the collection at the end of the list using
|
|
/// the specified values. The unspecified values (low, open, close) are all set to
|
|
/// <see cref="PointPairBase.Missing" />.
|
|
/// </summary>
|
|
/// <param name="date">An <see cref="XDate" /> value</param>
|
|
/// <param name="high">The high value for the day</param>
|
|
/// <returns>The zero-based ordinal index where the point was added in the list.</returns>
|
|
public void Add( double date, double high )
|
|
{
|
|
Add( new StockPt( date, high, PointPair.Missing, PointPair.Missing,
|
|
PointPair.Missing, PointPair.Missing ) );
|
|
}
|
|
|
|
/// <summary>
|
|
/// Add a single point to the <see cref="PointPairList"/> from values of type double.
|
|
/// </summary>
|
|
/// <param name="date">An <see cref="XDate" /> value</param>
|
|
/// <param name="high">The high value for the day</param>
|
|
/// <param name="low">The low value for the day</param>
|
|
/// <param name="open">The opening value for the day</param>
|
|
/// <param name="close">The closing value for the day</param>
|
|
/// <param name="vol">The trading volume for the day</param>
|
|
/// <returns>The zero-based ordinal index where the point was added in the list.</returns>
|
|
public void Add( double date, double high, double low, double open, double close, double vol )
|
|
{
|
|
StockPt point = new StockPt( date, high, low, open, close, vol );
|
|
Add( point );
|
|
}
|
|
|
|
/// <summary>
|
|
/// Access the <see cref="StockPt" /> at the specified ordinal index.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// To be compatible with the <see cref="IPointList" /> interface, the
|
|
/// <see cref="StockPointList" /> must implement an index that returns a
|
|
/// <see cref="PointPair" /> rather than a <see cref="StockPt" />. This method
|
|
/// will return the actual <see cref="StockPt" /> at the specified position.
|
|
/// </remarks>
|
|
/// <param name="index">The ordinal position (zero-based) in the list</param>
|
|
/// <returns>The specified <see cref="StockPt" />.
|
|
/// </returns>
|
|
public StockPt GetAt( int index )
|
|
{
|
|
return base[index];
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|
|
|
|
|