//============================================================================ //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 holds the specific properties for the major tics. Inherits from /// . /// /// John Champion /// $Revision: 3.1 $ $Date: 2006/06/24 20:26:44 $ [Serializable] public class MajorTic : MinorTic, ICloneable, ISerializable { internal bool _isBetweenLabels; #region Constructors /// /// Default constructor for . /// public MajorTic() { _size = Default.Size; _color = Default.Color; _penWidth = Default.PenWidth; this.IsOutside = Default.IsOutside; this.IsInside = Default.IsInside; this.IsOpposite = Default.IsOpposite; _isCrossOutside = Default.IsCrossOutside; _isCrossInside = Default.IsCrossInside; _isBetweenLabels = false; } /// /// Copy constructor. /// /// The that is to be copied. public MajorTic( MajorTic rhs ) : base( rhs ) { _isBetweenLabels = rhs._isBetweenLabels; } /// /// 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 MajorTic Clone() { return new MajorTic( this ); } #endregion #region Properties /// /// Gets or sets a property that determines whether or not the major tics will be drawn /// inbetween the labels, rather than right at the labels. /// /// /// Note that this setting is only /// applicable if = . /// /// true to place the text between the labels for text axes, false otherwise /// /// /// /// /// public bool IsBetweenLabels { get { return _isBetweenLabels; } set { _isBetweenLabels = 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 MajorTic( 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 sch2 = info.GetInt32( "schema2" ); _isBetweenLabels = info.GetBoolean( "isBetweenLabels" ); } /// /// 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( "isBetweenLabels", _isBetweenLabels ); } #endregion #region Defaults /// /// A simple struct that defines the /// default property values for the class. /// public new struct Default { // Default Axis Properties /// /// The default size for the tic marks. /// ( property). Units are in points (1/72 inch). /// public static float Size = 5; /// /// The default pen width for drawing the tic marks. /// ( property). Units are in points (1/72 inch). /// public static float PenWidth = 1.0F; /// /// The display mode for the major outside tic marks /// ( property). /// The major tic spacing is controlled by . /// /// true to show the major tic marks (outside the axis), /// false otherwise public static bool IsOutside = true; /// /// The display mode for the major inside tic marks /// ( property). /// The major tic spacing is controlled by . /// /// true to show the major tic marks (inside the axis), /// false otherwise public static bool IsInside = true; /// /// The display mode for the major opposite tic marks /// ( property). /// The major tic spacing is controlled by . /// /// true to show the major tic marks /// (inside the axis on the opposite side), /// false otherwise public static bool IsOpposite = true; /// /// The default display mode for the major outside /// "cross" tic marks ( property). /// /// /// The "cross" tics are a special, additional set of tic marks that /// always appear on the actual axis, even if it has been shifted due /// to the setting. The other tic marks are always /// fixed to the edges of the . The cross tics /// are normally not displayed, since, if is true, /// they will exactly overlay the "normal" and "inside" tics. If /// is false, then you will most likely want to /// enable the cross tics. /// The major tic spacing is controlled by . /// /// true to show the major cross tic marks, false otherwise public static bool IsCrossOutside = false; /// /// The default display mode for the major inside /// "cross" tic marks ( property). /// /// /// The "cross" tics are a special, additional set of tic marks that /// always appear on the actual axis, even if it has been shifted due /// to the setting. The other tic marks are always /// fixed to the edges of the . The cross tics /// are normally not displayed, since, if is true, /// they will exactly overlay the "normal" and "inside" tics. If /// is false, then you will most likely want to /// enable the cross tics. /// The major tic spacing is controlled by . /// /// true to show the major cross tic marks, false otherwise public static bool IsCrossInside = false; /// /// The default color for major tics ( property). /// public static Color Color = Color.Black; } #endregion } }