public static Vector Negate (Vector self) => new Vector(-self.X, -self.Y);
public static Vector Subtract (Vector left, Vector right) => new Vector(left.X - right.X, left.Y - right.Y);
public bool Equals (Vector other) => X == other.X && Y == other.Y;
public static Vector Add (Vector left, Vector right) => new Vector(left.X + right.X, left.Y + right.Y);
private Vector CalculateAlignmentOffsetCore (Size clientSize, Size renderSize) { Vector offset = new Vector(); HorizontalAlignment halign = Align; VerticalAlignment valign = VAlign; // This is to degenerate Stretch to Top-Left in case when clipping is about to occur. if (halign == HorizontalAlignment.Stretch && renderSize.Width > clientSize.Width) halign = HorizontalAlignment.Left; if (valign == VerticalAlignment.Stretch && renderSize.Height > clientSize.Height) valign = VerticalAlignment.Top; if (halign == HorizontalAlignment.Center || halign == HorizontalAlignment.Stretch) offset.X = (clientSize.Width - renderSize.Width) / 2; else if (halign == HorizontalAlignment.Right) offset.X = clientSize.Width - renderSize.Width; else offset.X = 0; if (valign == VerticalAlignment.Center || valign == VerticalAlignment.Stretch) offset.Y = (clientSize.Height - renderSize.Height) / 2; else if (valign == VerticalAlignment.Bottom) offset.Y = clientSize.Height - renderSize.Height; else offset.Y = 0; return offset; }