1
0
Fork 0
mirror of https://github.com/Ellpeck/MLEM.git synced 2024-06-01 21:03:38 +02:00
MLEM/MLEM/Misc/Padding.cs

61 lines
2.1 KiB
C#

using Microsoft.Xna.Framework;
namespace MLEM.Misc {
public struct Padding {
public float Left;
public float Right;
public float Top;
public float Bottom;
public float Width => this.Left + this.Right;
public float Height => this.Top + this.Bottom;
public Padding(float left, float right, float top, float bottom) {
this.Left = left;
this.Right = right;
this.Top = top;
this.Bottom = bottom;
}
public static implicit operator Padding(Vector2 vec) {
return new Padding(vec.X, vec.X, vec.Y, vec.Y);
}
public static Padding operator *(Padding p, float scale) {
return new Padding(p.Left * scale, p.Right * scale, p.Top * scale, p.Bottom * scale);
}
public static Padding operator +(Padding left, Padding right) {
return new Padding(left.Left + right.Left, left.Right + right.Right, left.Top + right.Top, left.Bottom + right.Bottom);
}
public static Padding operator -(Padding left, Padding right) {
return new Padding(left.Left - right.Left, left.Right - right.Right, left.Top - right.Top, left.Bottom - right.Bottom);
}
public static bool operator ==(Padding left, Padding right) {
return left.Equals(right);
}
public static bool operator !=(Padding left, Padding right) {
return !(left == right);
}
public bool Equals(Padding other) {
return this.Left.Equals(other.Left) && this.Right.Equals(other.Right) && this.Top.Equals(other.Top) && this.Bottom.Equals(other.Bottom);
}
public override bool Equals(object obj) {
return obj is Padding other && this.Equals(other);
}
public override int GetHashCode() {
var hashCode = this.Left.GetHashCode();
hashCode = (hashCode * 397) ^ this.Right.GetHashCode();
hashCode = (hashCode * 397) ^ this.Top.GetHashCode();
hashCode = (hashCode * 397) ^ this.Bottom.GetHashCode();
return hashCode;
}
}
}