namespace Avalonia.Gif.Decoding { public readonly struct GifRect { public int X { get; } public int Y { get; } public int Width { get; } public int Height { get; } public int TotalPixels { get; } public GifRect(int x, int y, int width, int height) { X = x; Y = y; Width = width; Height = height; TotalPixels = width * height; } public static bool operator ==(GifRect a, GifRect b) { return a.X == b.X && a.Y == b.Y && a.Width == b.Width && a.Height == b.Height; } public static bool operator !=(GifRect a, GifRect b) { return !(a == b); } public override bool Equals(object obj) { if (obj == null || GetType() != obj.GetType()) return false; return this == (GifRect)obj; } public override int GetHashCode() { return X.GetHashCode() ^ Y.GetHashCode() | Width.GetHashCode() ^ Height.GetHashCode(); } } }