Example #1
0
        public static RGB HSLtoRGB(HSL values) //http://www.rapidtables.com/convert/color/hsl-to-rgb.htm
        {
            HSL hsl = new HSL(values.h, values.s, values.l).Validate();

            float H = hsl.Factorize().x;
            float S = hsl.s;
            float L = hsl.l;

            float C = (1 - Mathf.Abs(2 * L - 1)) * S;
            float X = C * (1 - Mathf.Abs(H / 60 % 2 - 1));
            float m = L - C / 2;

            float r = 0, g = 0, b = 0;

            if (0 <= H && H < 60)
            {
                r = C;
                g = X;
                b = 0;
            }
            else if (60 <= H && H < 120)
            {
                r = X;
                g = C;
                b = 0;
            }
            else if (120 <= H && H < 180)
            {
                r = 0;
                g = C;
                b = X;
            }
            else if (180 <= H && H < 240)
            {
                r = 0;
                g = X;
                b = C;
            }
            else if (240 <= H && H < 300)
            {
                r = X;
                g = 0;
                b = C;
            }
            else if (300 <= H && H < 360)
            {
                r = C;
                g = 0;
                b = X;
            }

            return(new RGB(r + m, g + m, b + m).Validate());
        }