示例#1
0
        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);
        }
示例#2
0
        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));
        }
示例#3
0
        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));
            }
        }
示例#4
0
 public static Vector2 FitInto(this Vector2 sizeLimit, float wantAspect, FitIntoMode mode)
 {
     return(sizeLimit.FitInto(new Vector2(wantAspect, 1.0f), mode));
 }