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

66 lines
1.1 KiB
C#

using System.Globalization;
using System.Runtime.InteropServices;
namespace CPF.Mac.CoreGraphics
{
[StructLayout(LayoutKind.Sequential, Pack = 8)]
public struct CGPoint
{
public static readonly CGPoint Empty;
public double X;
public double Y;
public override int GetHashCode()
{
return X.GetHashCode() ^ Y.GetHashCode();
}
public static bool operator ==(CGPoint left, CGPoint right)
{
if (left.X == right.X)
{
return left.Y == right.Y;
}
return false;
}
public static bool operator !=(CGPoint left, CGPoint right)
{
if (left.X == right.X)
{
return left.Y != right.Y;
}
return true;
}
public static CGPoint operator +(CGPoint pt, CGSize sz)
{
return new CGPoint(pt.X + sz.Width, pt.Y + sz.Height);
}
public static CGPoint operator -(CGPoint pt, CGSize sz)
{
return new CGPoint(pt.X - sz.Width, pt.Y - sz.Height);
}
public override string ToString()
{
return string.Format(CultureInfo.CurrentCulture, "{{X={0},Y={1}}}", X, Y);
}
public CGPoint(int x, int y)
{
X = x;
Y = y;
}
public CGPoint(double x, double y)
{
X = x;
Y = y;
}
}
}