//============================================================================ //ZedGraph Class Library - A Flexible Line Graph/Bar Graph Library in C# //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.Text; using System.Runtime.Serialization; using System.Security.Permissions; namespace DrawGraph { /// /// Class that handles the data associated with the major grid lines on the chart. /// Inherits from . /// /// /// John Champion /// $Revision: 3.1 $ $Date: 2006/06/24 20:26:44 $ [Serializable] public class MajorGrid : MinorGrid, ICloneable, ISerializable { internal bool _isZeroLine; #region Constructors /// /// Default constructor /// public MajorGrid() { _dashOn = Default.DashOn; _dashOff = Default.DashOff; _penWidth = Default.PenWidth; _isVisible = Default.IsVisible; _color = Default.Color; _isZeroLine = Default.IsZeroLine; } /// /// Copy constructor /// /// The source to be copied. public MajorGrid( MajorGrid rhs ) : base( rhs ) { _isZeroLine = rhs._isZeroLine; } /// /// Implement the interface in a typesafe manner by just /// calling the typed version of /// /// A deep copy of this object object ICloneable.Clone() { return this.Clone(); } /// /// Typesafe, deep-copy clone method. /// /// A new, independent copy of this class public new MajorGrid Clone() { return new MajorGrid( this ); } #endregion #region Properties /// /// Gets or sets a boolean value that determines if a line will be drawn at the /// zero value for the axis. /// /// /// The zero line is a line that divides the negative values from the positive values. /// The default is set according to /// , , /// , /// /// true to show the zero line, false otherwise public bool IsZeroLine { get { return _isZeroLine; } set { _isZeroLine = value; } } #endregion #region Serialization /// /// Current schema value that defines the version of the serialized file /// public const int schema2 = 10; /// /// Constructor for deserializing objects /// /// A instance that defines the serialized data /// /// A instance that contains the serialized data /// protected MajorGrid( SerializationInfo info, StreamingContext context ) : base( info, context ) { // The schema value is just a file version parameter. You can use it to make future versions // backwards compatible as new member variables are added to classes int sch = info.GetInt32( "schema2" ); _isZeroLine = info.GetBoolean( "isZeroLine" ); } /// /// Populates a instance with the data needed to serialize the target object /// /// A instance that defines the serialized data /// A instance that contains the serialized data [SecurityPermissionAttribute( SecurityAction.Demand, SerializationFormatter = true )] public override void GetObjectData( SerializationInfo info, StreamingContext context ) { base.GetObjectData( info, context ); info.AddValue( "schema2", schema2 ); info.AddValue( "isZeroLine", _isZeroLine ); } #endregion #region Defaults /// /// A simple struct that defines the /// default property values for the class. /// public new struct Default { /// /// The default "dash on" size for drawing the grid /// ( property). Units are in points (1/72 inch). /// public static float DashOn = 1.0F; /// /// The default "dash off" size for drawing the grid /// ( property). Units are in points (1/72 inch). /// public static float DashOff = 5.0F; /// /// The default pen width for drawing the grid /// ( property). Units are in points (1/72 inch). /// public static float PenWidth = 1.0F; /// /// The default color for the grid lines /// ( property). This color only affects the /// grid lines. /// public static Color Color = Color.Black; /// /// The default display mode for the grid lines /// ( property). true /// to show the grid lines, false to hide them. /// public static bool IsVisible = false; /// /// The default boolean value that determines if a line will be drawn at the /// zero value for the axis. /// /// /// The zero line is a line that divides the negative values from the positive values. /// The default is set according to /// , , /// , /// /// true to show the zero line, false otherwise public static bool IsZeroLine = false; } #endregion } }