/// <summary> /// Create new vector from two distance values /// </summary> /// <param name="x">X value</param> /// <param name="y">Y value</param> /// <param name="width">Width value</param> /// <param name="height">Height value</param> public Rectangle2f(DistanceF x, DistanceF y, DistanceF width, DistanceF height) { this.x = x.NativeValue; this.y = y.GetIn(x.NativeUnit); this.w = width.GetIn(x.NativeUnit); this.h = height.GetIn(x.NativeUnit); this.unit = x.NativeUnit; }
/// <summary> /// Return cropped rectangle by specified amounts from all sides /// </summary> /// <param name="left">How much to crop from left</param> /// <param name="right">How much to crop from right</param> /// <param name="top">How much to crop from top</param> /// <param name="bottom">How much to crop from bottom</param> /// <returns>New cropped rectangle</returns> public Rectangle2f Cropped(DistanceF left, DistanceF right, DistanceF top, DistanceF bottom) { float l = left.GetIn(unit); float t = top.GetIn(unit); return new Rectangle2f(x + l, y + t, w - l - right.GetIn(unit), h - t - bottom.GetIn(unit), unit); }
/// <summary> /// Returns scaled vector which maches specified length /// </summary> /// <param name="newLength">New vector length</param> /// <returns>New vector of specified length</returns> public Vector2f Scaled(DistanceF newLength) { float scale = newLength.GetIn(unit) / NativeLength; return this * scale; }
/// <summary> /// Create new vector from two distance values /// </summary> /// <param name="x">X value</param> /// <param name="y">Y value</param> public Vector2f(DistanceF x, DistanceF y) { this.x = x.NativeValue; this.y = y.GetIn(x.NativeUnit); this.unit = x.NativeUnit; }
/// <summary> /// Scales vector to match specified length /// </summary> /// <param name="newLength">New vector length</param> public void Scale(DistanceF newLength) { float scale = newLength.GetIn(unit) / NativeLength; x *= scale; y *= scale; }