//============================================================================ //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 that stores the margin properties for the GraphPane /// /// /// John Champion /// $Revision: 3.1 $ $Date: 2006/06/24 20:26:44 $ [Serializable] public class Margin : ICloneable, ISerializable { /// /// Private fields that store the size of the margin around the edge of the pane which will be /// kept blank. Use the public properties , , /// , to access these values. /// /// Units are points (1/72 inch) protected float _left, _right, _top, _bottom; #region Constructors /// /// Constructor to build a from the default values. /// public Margin() { _left = Default.Left; _right = Default.Right; _top = Default.Top; _bottom = Default.Bottom; } /// /// Copy constructor /// /// the instance to be copied. public Margin( Margin rhs ) { _left = rhs._left; _right = rhs._right; _top = rhs._top; _bottom = rhs._bottom; } /// /// 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 Margin Clone() { return new Margin( this ); } #endregion #region Properties /// /// Gets or sets a float value that determines the margin area between the left edge of the /// rectangle and the features of the graph. /// /// This value is in units of points (1/72 inch), and is scaled /// linearly with the graph size. /// /// /// /// /// public float Left { get { return _left; } set { _left = value; } } /// /// Gets or sets a float value that determines the margin area between the right edge of the /// rectangle and the features of the graph. /// /// This value is in units of points (1/72 inch), and is scaled /// linearly with the graph size. /// /// /// /// /// public float Right { get { return _right; } set { _right = value; } } /// /// Gets or sets a float value that determines the margin area between the top edge of the /// rectangle and the features of the graph. /// /// This value is in units of points (1/72 inch), and is scaled /// linearly with the graph size. /// /// /// /// /// public float Top { get { return _top; } set { _top = value; } } /// /// Gets or sets a float value that determines the margin area between the bottom edge of the /// rectangle and the features of the graph. /// /// This value is in units of points (1/72 inch), and is scaled /// linearly with the graph size. /// /// /// /// /// public float Bottom { get { return _bottom; } set { _bottom = value; } } /// /// Concurrently sets all outer margin values to a single value. /// /// This value is in units of points (1/72 inch), and is scaled /// linearly with the graph size. /// /// /// /// /// public float All { set { _bottom = value; _top = value; _left = value; _right = value; } } #endregion #region Serialization /// /// Current schema value that defines the version of the serialized file /// public const int schema = 10; /// /// Constructor for deserializing objects /// /// A instance that defines the serialized data /// /// A instance that contains the serialized data /// protected Margin( SerializationInfo info, StreamingContext 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( "schema" ); _left = info.GetSingle( "left" ); _right = info.GetSingle( "right" ); _top = info.GetSingle( "top" ); _bottom = info.GetSingle( "bottom" ); } /// /// 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 virtual void GetObjectData( SerializationInfo info, StreamingContext context ) { info.AddValue( "schema", schema ); info.AddValue( "left", _left ); info.AddValue( "right", _right ); info.AddValue( "top", _top ); info.AddValue( "bottom", _bottom ); } #endregion #region Defaults /// /// A simple struct that defines the default property values for the class. /// public class Default { /// /// The default value for the property, which is /// the size of the space on the left side of the . /// /// Units are points (1/72 inch) public static float Left = 10.0F; /// /// The default value for the property, which is /// the size of the space on the right side of the . /// /// Units are points (1/72 inch) public static float Right = 10.0F; /// /// The default value for the property, which is /// the size of the space on the top side of the . /// /// Units are points (1/72 inch) public static float Top = 10.0F; /// /// The default value for the property, which is /// the size of the space on the bottom side of the . /// /// Units are points (1/72 inch) public static float Bottom = 10.0F; } #endregion } }