// // System.Drawing.SizeF.cs // // Author: // Mike Kestner (mkestner@speakeasy.net) // // (C) Ximian, Inc. http://www.ximian.com // using System; namespace System.Drawing { public struct SizeF { // Private height and width fields. float wd, ht; // ----------------------- // Public Shared Members // ----------------------- /// /// Empty Shared Field /// /// /// /// An uninitialized SizeF Structure. /// public static readonly SizeF Empty; /// /// Addition Operator /// /// /// /// Addition of two SizeF structures. /// public static SizeF operator + (SizeF sz1, SizeF sz2) { return new SizeF (sz1.Width + sz2.Width, sz1.Height + sz2.Height); } /// /// Equality Operator /// /// /// /// Compares two SizeF objects. The return value is /// based on the equivalence of the Width and Height /// properties of the two Sizes. /// public static bool operator == (SizeF sz_a, SizeF sz_b) { return ((sz_a.Width == sz_b.Width) && (sz_a.Height == sz_b.Height)); } /// /// Inequality Operator /// /// /// /// Compares two SizeF objects. The return value is /// based on the equivalence of the Width and Height /// properties of the two Sizes. /// public static bool operator != (SizeF sz_a, SizeF sz_b) { return ((sz_a.Width != sz_b.Width) || (sz_a.Height != sz_b.Height)); } /// /// Subtraction Operator /// /// /// /// Subtracts two SizeF structures. /// public static SizeF operator - (SizeF sz1, SizeF sz2) { return new SizeF (sz1.Width - sz2.Width, sz1.Height - sz2.Height); } /// /// SizeF to PointF Conversion /// /// /// /// Returns a PointF based on the dimensions of a given /// SizeF. Requires explicit cast. /// public static explicit operator PointF (SizeF sz) { return new PointF (sz.Width, sz.Height); } // ----------------------- // Public Constructors // ----------------------- /// /// SizeF Constructor /// /// /// /// Creates a SizeF from a PointF value. /// public SizeF (PointF pt) { wd = pt.X; ht = pt.Y; } /// /// SizeF Constructor /// /// /// /// Creates a SizeF from an existing SizeF value. /// public SizeF (SizeF sz) { wd = sz.Width; ht = sz.Height; } /// /// SizeF Constructor /// /// /// /// Creates a SizeF from specified dimensions. /// public SizeF (float width, float height) { wd = width; ht = height; } // ----------------------- // Public Instance Members // ----------------------- /// /// IsEmpty Property /// /// /// /// Indicates if both Width and Height are zero. /// public bool IsEmpty { get { return ((wd == 0.0) && (ht == 0.0)); } } /// /// Width Property /// /// /// /// The Width coordinate of the SizeF. /// public float Width { get { return wd; } set { wd = value; } } /// /// Height Property /// /// /// /// The Height coordinate of the SizeF. /// public float Height { get { return ht; } set { ht = value; } } /// /// Equals Method /// /// /// /// Checks equivalence of this SizeF and another object. /// public override bool Equals (object o) { if (!(o is SizeF)) return false; return (this == (SizeF) o); } /// /// GetHashCode Method /// /// /// /// Calculates a hashing value. /// public override int GetHashCode () { return (int) wd ^ (int) ht; } /// /// ToString Method /// /// /// /// Formats the SizeF as a string in coordinate notation. /// public override string ToString () { return String.Format ("[{0},{1}]", wd, ht); } } }