CPF/CPF.Mac/Mac/CoreGraphics/CGRect.cs
2023-11-21 23:05:03 +08:00

125 lines
1.8 KiB
C#

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);
}
}
}