using System; using System.Collections.Generic; using System.ComponentModel; using System.Globalization; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace GeoSigmaDrawLib { [Serializable] [ComVisible(true)] public struct PointD { public static readonly PointD Empty; private double x; private double y; [Browsable(false)] public bool IsEmpty { get { if (x == 0f) { return y == 0f; } return false; } } public double X { get { return x; } set { x = value; } } public double Y { get { return y; } set { y = value; } } public PointD(double x, double y) { this.x = x; this.y = y; } //public static PointD operator +(PointD pt, Size sz) //{ // return Add(pt, sz); //} //public static PointD operator -(PointD pt, Size sz) //{ // return Subtract(pt, sz); //} public static PointD operator +(PointD pt, SizeD sz) { return Add(pt, sz); } public static PointD operator -(PointD pt, SizeD sz) { return Subtract(pt, sz); } public static bool operator ==(PointD left, PointD right) { if (left.X == right.X) { return left.Y == right.Y; } return false; } public static bool operator !=(PointD left, PointD right) { return !(left == right); } //public static PointD Add(PointD pt, SizeD sz) //{ // return new PointD(pt.X + (double)sz.Width, pt.Y + (double)sz.Height); //} //public static PointD Subtract(PointD pt, SizeD sz) //{ // return new PointD(pt.X - (double)sz.Width, pt.Y - (double)sz.Height); //} public static PointD Add(PointD pt, SizeD sz) { return new PointD(pt.X + sz.Width, pt.Y + sz.Height); } public static PointD Subtract(PointD pt, SizeD sz) { return new PointD(pt.X - sz.Width, pt.Y - sz.Height); } /// public override bool Equals(object obj) { if (!(obj is PointD)) { return false; } PointD pointD = (PointD)obj; if (pointD.X == X && pointD.Y == Y) { return pointD.GetType().Equals(GetType()); } return false; } /// public override int GetHashCode() { return base.GetHashCode(); } public override string ToString() { return string.Format(CultureInfo.CurrentCulture, "{{X={0}, Y={1}}}", new object[2] { x, y }); } } }