AcTools.Utils.ImageUtils.ColorEntry.ToColor C# (CSharp) Метод

ToColor() приватный статический Метод

private static ToColor ( double hue, double sat, double bri ) : Color
hue double
sat double
bri double
Результат Color
            private static Color ToColor(double hue, double sat, double bri) {
                while (hue < 0) {
                    hue += 360;
                }

                while (hue >= 360) {
                    hue -= 360;
                }

                double r, g, b;
                if (bri <= 0) {
                    r = g = b = 0;
                } else if (sat <= 0) {
                    r = g = b = bri;
                } else {
                    var hf = hue / 60.0;
                    var i = (int)Math.Floor(hf);
                    var f = hf - i;
                    var pv = bri * (1 - sat);
                    var qv = bri * (1 - sat * f);
                    var tv = bri * (1 - sat * (1 - f));

                    switch (i) {
                        case 0:
                            r = bri;
                            g = tv;
                            b = pv;
                            break;

                        case 1:
                            r = qv;
                            g = bri;
                            b = pv;
                            break;

                        case 2:
                            r = pv;
                            g = bri;
                            b = tv;
                            break;

                        case 3:
                            r = pv;
                            g = qv;
                            b = bri;
                            break;

                        case 4:
                            r = tv;
                            g = pv;
                            b = bri;
                            break;

                        case 5:
                            r = bri;
                            g = pv;
                            b = qv;
                            break;

                        case 6:
                            r = bri;
                            g = tv;
                            b = pv;
                            break;

                        case -1:
                            r = bri;
                            g = pv;
                            b = qv;
                            break;

                        default:
                            r = g = b = bri;
                            break;
                    }
                }

                return Color.FromArgb((int)(r.Saturate() * 255d), (int)(g.Saturate() * 255d), (int)(b.Saturate() * 255d));
            }
        }