using System.Globalization; namespace CPF.Mac.CoreGraphics { public struct CGRect { public static readonly CGRect Empty; public CGPoint Origin; public CGSize Size; public CGPoint Location => Origin; public double Left => X; public double Top => Y; public double Right => X + Width; public double Bottom => Y + Height; public double X { get { return Origin.X; } set { Origin.X = value; } } public double Y { get { return Origin.Y; } set { Origin.Y = value; } } public double Width { get { return Size.Width; } set { Size.Width = value; } } public double Height { get { return Size.Height; } set { Size.Height = value; } } public CGRect(CGPoint location, CGSize size) { Origin.X = location.X; Origin.Y = location.Y; Size.Width = size.Width; Size.Height = size.Height; } public CGRect(double x, double y, double width, double height) { Origin.X = x; Origin.Y = y; Size.Width = width; Size.Height = height; } public override bool Equals(object obj) { if (obj is CGRect) { return this == (CGRect)obj; } return false; } public override int GetHashCode() { return Origin.GetHashCode() ^ Size.GetHashCode(); } public static bool operator ==(CGRect left, CGRect right) { if (left.Origin == right.Origin) { return left.Size == right.Size; } return false; } public static bool operator !=(CGRect left, CGRect right) { if (!(left.Origin != right.Origin)) { return left.Size != right.Size; } return true; } public override string ToString() { return string.Format(CultureInfo.CurrentCulture, "{{X={0},Y={1},Width={2},Height={3}}}", X, Y, Width, Height); } } }