LitDev.LDColours.RGB2HSL C# (CSharp) Method

RGB2HSL() public static method

public static RGB2HSL ( double R, double G, double B ) : double[]
R double
G double
B double
return double[]
        public static double[] RGB2HSL(double R, double G, double B)
        {
            R = R < 0.0 ? 0.0 : R > 255.0 ? 1.0 : R / 255.0;
            G = G < 0.0 ? 0.0 : G > 255.0 ? 1.0 : G / 255.0;
            B = B < 0.0 ? 0.0 : B > 255.0 ? 1.0 : B / 255.0;

            double M = System.Math.Max(R, System.Math.Max(G, B));
            double m = System.Math.Min(R, System.Math.Min(G, B));
            double C = M - m;

            double H = 0.0, S, L;

            if (C == 0) H = 0.0;
            else if (M == R) H = ((G - B) / C) % 6.0;
            else if (M == G) H = ((B - R) / C) + 2.0;
            else if (M == B) H = ((R - G) / C) + 4.0;
            H *= 60.0;
            while (H < 0.0) H += 360.0;
            while (H > 360.0) H -= 360.0;
            H = H % 360.0;
            L = (M + m) / 2.0;
            S = (C == 0 || L == 1) ? 0.0 : C / (1.0 - System.Math.Abs(2.0 * L - 1.0));

            return new double[] { H, S, L };
        }