Example #1
0
        public static HsvColor RgbColorToHsvColor(RgbColor rgbColor)
        {
            double rgbMax;
            double rgbMin;

            var hue        = GetHue(rgbColor, out rgbMax, out rgbMin);
            var value      = rgbMax;
            var saturation = Equals(rgbMax, 0.0) ? 0.0 : 1.0 - rgbMin / rgbMax;

            return(new HsvColor(rgbColor.A, hue, saturation, value));
        }
Example #2
0
        public static HslColor RgbColorToHslColor(RgbColor rgbColor)
        {
            double rgbMax;
            double rgbMin;

            var hue       = GetHue(rgbColor, out rgbMax, out rgbMin);
            var lightness = 0.5 * (rgbMax + rgbMin);

            var d = rgbMax - rgbMin;

            var saturation = lightness > 0.5 ? d / (2 - rgbMax - rgbMin) : d / (rgbMax + rgbMin);

            return(new HslColor(rgbColor.A, hue, saturation.IsNaN() ? 0 : saturation, lightness));
        }
Example #3
0
        public static RgbColor HsvColorToRgbColor(HsvColor hsvColor)
        {
            var a = hsvColor.Alpha;
            var h = hsvColor.Hue;
            var s = hsvColor.Saturation;
            var v = hsvColor.Value;

            var hn = Math.Floor(h / 60.0);

            var hi = (int)hn % 6;
            var f  = (h / 60.0) - hn;

            var p = v * (1.0 - s);
            var q = v * (1.0 - (f * s));
            var t = v * (1.0 - ((1.0 - f) * s));

            switch (hi)
            {
            case 0:
                return(RgbColor.FromRgb(a, v, t, p));

            case 1:
                return(RgbColor.FromRgb(a, q, v, p));

            case 2:
                return(RgbColor.FromRgb(a, p, v, t));

            case 3:
                return(RgbColor.FromRgb(a, p, q, v));

            case 4:
                return(RgbColor.FromRgb(a, t, p, v));

            case 5:
                return(RgbColor.FromRgb(a, v, p, q));

            default:
                return(RgbColor.FromRgb(a, 0.0, 0.0, 0.0));
            }
        }
Example #4
0
        private static double GetHue(RgbColor rgbColor, out double rgbMax, out double rgbMin)
        {
            rgbMax = MaxRgb(rgbColor);
            rgbMin = MinRgb(rgbColor);

            if (Equals(rgbColor.R, rgbColor.G) && Equals(rgbColor.G, rgbColor.B))
            {
                return(0.0);
            }

            double hue;

            var delta = rgbMax - rgbMin;

            if (Equals(rgbColor.R, rgbMax))
            {
                hue = (rgbColor.G - rgbColor.B) / delta;
            }
            else if (Equals(rgbColor.G, rgbMax))
            {
                hue = 2 + (rgbColor.B - rgbColor.R) / delta;
            }
            else
            {
                hue = 4 + (rgbColor.R - rgbColor.G) / delta;
            }

            hue *= 60;

            if (hue < 0.0)
            {
                hue += 360.0;
            }

            return(hue);
        }
Example #5
0
 public static RgbColor Desaturate(RgbColor rgb, double amount, ColorFunctionUnits units)
 {
     return(Desaturate(rgb.ToHslColor(), amount, units).ToRgbColor());
 }
Example #6
0
 public static RgbColor Tint(RgbColor color, double amount, ColorFunctionUnits units)
 {
     return(Mix(RgbWhite, color, GetRelativeUnit(amount, units)));
 }
Example #7
0
 public static RgbColor Shade(RgbColor color, double amount, ColorFunctionUnits units)
 {
     return(Mix(RgbBlack, color, GetRelativeUnit(amount, units)));
 }
Example #8
0
 public static RgbColor Mix(RgbColor color1, RgbColor color2, double weight = 0.5)
 {
     return(RgbColor.Mix(color1, color2, weight));
 }
Example #9
0
 public static RgbColor Lighten(RgbColor rgb, double amount, ColorFunctionUnits units)
 {
     return(Lighten(rgb.ToHslColor(), amount, units).ToRgbColor());
 }
Example #10
0
 public static RgbColor Greyscale(RgbColor color)
 {
     return(Desaturate(color, 100.0, ColorFunctionUnits.Percentage));
 }
Example #11
0
        public static RgbColor FadeOut(RgbColor rgb, double amount, ColorFunctionUnits units)
        {
            rgb.A = ChannelOperation(FunctionKind.Decrease, rgb.A, amount, units);

            return(rgb);
        }
Example #12
0
 public static sRgbColor RgbTosRgb(RgbColor rgbColor)
 {
     return(new sRgbColor((byte)(rgbColor.A * byte.MaxValue + 0.5), ScRgbTosRgb(rgbColor.R), ScRgbTosRgb(rgbColor.G), ScRgbTosRgb(rgbColor.B)));
 }
Example #13
0
 private static double MinRgb(RgbColor rgbColor)
 {
     return(Math.Min(rgbColor.R, Math.Min(rgbColor.G, rgbColor.B)));
 }