using System;

namespace Apewer.Internals
{

    internal class NumberHelper
    {

        /// <summary>约束值范围,若源值不在范围中,则修改为接近的值。</summary>
        public static int RestrictValue(int argOrigin, int argMin, int argMax)
        {
            if (argMin > argMax) return argOrigin;

            if (argOrigin < argMin) return argMin;
            if (argOrigin > argMax) return argMax;
            return argOrigin;
        }

        /// <summary>约束值范围,若源值不在范围中,则修改为接近的值。</summary>
        public static T RestrictValue<T>(T argOrigin, T argMin, T argMax) where T : IComparable
        {
            var origin = argOrigin;
            var min = argMin;
            var max = argMax;

            try
            {
                if (min.CompareTo(max) > 0) return argOrigin;

                if (origin.CompareTo(min) < 0) return min;
                if (origin.CompareTo(max) > 0) return max;
                return origin;
            }
            catch { }

            return origin;
        }

    }

}