// // System.Drawing.PointF.cs // // Author: // Mike Kestner (mkestner@speakeasy.net) // // Copyright (C) 2001 Mike Kestner // Copyright (C) 2004 Novell, Inc. http://www.novell.com // // // Copyright (C) 2004 Novell, Inc (http://www.novell.com) // // Permission is hereby granted, free of charge, to any person obtaining // a copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to // permit persons to whom the Software is furnished to do so, subject to // the following conditions: // // The above copyright notice and this permission notice shall be // included in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // using System; using System.Runtime.InteropServices; using System.ComponentModel; namespace System.Drawing { [Serializable] [ComVisible (true)] public struct PointF { // Private x and y coordinate fields. private float cx, cy; // ----------------------- // Public Shared Members // ----------------------- /// /// Empty Shared Field /// /// /// /// An uninitialized PointF Structure. /// public static readonly PointF Empty; /// /// Addition Operator /// /// /// /// Translates a PointF using the Width and Height /// properties of the given Size. /// public static PointF operator + (PointF pt, Size sz) { return new PointF (pt.X + sz.Width, pt.Y + sz.Height); } /// /// Equality Operator /// /// /// /// Compares two PointF objects. The return value is /// based on the equivalence of the X and Y properties /// of the two points. /// public static bool operator == (PointF pt_a, PointF pt_b) { return ((pt_a.X == pt_b.X) && (pt_a.Y == pt_b.Y)); } /// /// Inequality Operator /// /// /// /// Compares two PointF objects. The return value is /// based on the equivalence of the X and Y properties /// of the two points. /// public static bool operator != (PointF pt_a, PointF pt_b) { return ((pt_a.X != pt_b.X) || (pt_a.Y != pt_b.Y)); } /// /// Subtraction Operator /// /// /// /// Translates a PointF using the negation of the Width /// and Height properties of the given Size. /// public static PointF operator - (PointF pt, Size sz) { return new PointF (pt.X - sz.Width, pt.Y - sz.Height); } // ----------------------- // Public Constructor // ----------------------- /// /// PointF Constructor /// /// /// /// Creates a PointF from a specified x,y coordinate pair. /// public PointF (float x, float y) { cx = x; cy = y; } // ----------------------- // Public Instance Members // ----------------------- /// /// IsEmpty Property /// /// /// /// Indicates if both X and Y are zero. /// [Browsable (false)] public bool IsEmpty { get { return ((cx == 0.0) && (cy == 0.0)); } } /// /// X Property /// /// /// /// The X coordinate of the PointF. /// public float X { get { return cx; } set { cx = value; } } /// /// Y Property /// /// /// /// The Y coordinate of the PointF. /// public float Y { get { return cy; } set { cy = value; } } /// /// Equals Method /// /// /// /// Checks equivalence of this PointF and another object. /// public override bool Equals (object o) { if (!(o is PointF)) return false; return (this == (PointF) o); } /// /// GetHashCode Method /// /// /// /// Calculates a hashing value. /// public override int GetHashCode () { return (int) cx ^ (int) cy; } /// /// ToString Method /// /// /// /// Formats the PointF as a string in coordinate notation. /// public override string ToString () { return String.Format ("{{X={0}, Y={1}}}", cx, cy); } } }