public static Vector2 FitInto(this Vector2 sizeLimit, Vector2 innerSize, FitIntoMode mode) { Vector2 scalage = sizeLimit / innerSize; float adjust = mode == FitIntoMode.ShrinkToFit ? Mathf.Min(scalage.x, scalage.y) : Mathf.Min(scalage.x, scalage.y); return(innerSize * adjust); }
public static Rect FitInto(this Rect limitRect, float wantAspect, FitIntoMode mode) { Vector2 limitSize = limitRect.size; Vector2 fitSize = limitSize.FitInto(wantAspect, mode); Vector2 posOffset = (limitSize - fitSize) / 2.0f; return(new Rect(limitRect.position + posOffset, fitSize)); }
public static Rect FitInto(this Rect limitRect, float wantAspect, FitIntoMode mode, TextAlignment textAlign) { Vector2 limitSize = limitRect.size; Vector2 fitSize = limitSize.FitInto(wantAspect, mode); Vector2 posOffset = (limitSize - fitSize) / 2.0f; if (textAlign == TextAlignment.Center) { return(new Rect(limitRect.position + posOffset, fitSize)); } else if (textAlign == TextAlignment.Left) { return(new Rect(limitRect.position + new Vector2(0.0f, posOffset.y), fitSize)); } else { return(new Rect(limitRect.position + new Vector2(posOffset.x + fitSize.x, posOffset.y), fitSize)); } }
public static Vector2 FitInto(this Vector2 sizeLimit, float wantAspect, FitIntoMode mode) { return(sizeLimit.FitInto(new Vector2(wantAspect, 1.0f), mode)); }