Exemplo n.º 1
0
        internal static IRgb ToColor(IHsl item)
        {
            var rangedH = item.H / 360.0;
            var r       = 0.0;
            var g       = 0.0;
            var b       = 0.0;
            var s       = item.S;
            var l       = item.L;

            if (!l.BasicallyEqualTo(0))
            {
                if (s.BasicallyEqualTo(0))
                {
                    r = g = b = l;
                }
                else
                {
                    var temp2 = (l < 0.5) ? l * (1.0 + s) : l + s - (l * s);
                    var temp1 = 2.0 * l - temp2;

                    r = GetColorComponent(temp1, temp2, rangedH + 1.0 / 3.0);
                    g = GetColorComponent(temp1, temp2, rangedH);
                    b = GetColorComponent(temp1, temp2, rangedH - 1.0 / 3.0);
                }
            }
            return(new Rgb {
                R = 255.0 * r,
                G = 255.0 * g,
                B = 255.0 * b
            });
        }
Exemplo n.º 2
0
        internal static IRgb ToColor(IHsl item)
        {
            var h = item.H / 60.0;
            var s = item.S / 100.0;
            var l = item.L / 100.0;

            if (s > 0)
            {
                var result = Rotate(h, s, ref l);

                return(new Rgb
                {
                    R = (result.R + l) * 255,
                    G = (result.G + l) * 255,
                    B = (result.B + l) * 255
                });
            }
            else
            {
                return(new Rgb
                {
                    R = l * 255,
                    G = l * 255,
                    B = l * 255
                });
            }
        }
Exemplo n.º 3
0
        internal static IRgb ToColor(IHsl item)
        {
            var rangedH = item.H / 360.0;
            var r = 0.0;
            var g = 0.0;
            var b = 0.0;
            var s = item.S / 100.0;
            var l = item.L / 100.0;

            if (!l.BasicallyEqualTo(0))
            {
                if (s.BasicallyEqualTo(0))
                {
                    r = g = b = l;
                }
                else
                {
                    var temp2 = (l < 0.5) ? l * (1.0 + s) : l + s - (l * s);
                    var temp1 = 2.0 * l - temp2;

                    r = GetColorComponent(temp1, temp2, rangedH + 1.0 / 3.0);
                    g = GetColorComponent(temp1, temp2, rangedH);
                    b = GetColorComponent(temp1, temp2, rangedH - 1.0 / 3.0);
                }
            }
            return new Rgb
                {
                    R = 255.0 * r,
                    G = 255.0 * g,
                    B = 255.0 * b
                };
        }
Exemplo n.º 4
0
 internal static void ToColorSpace(IRgb color, IHsl item)
 {
     // TODO Losing precision
     var msColor = Color.FromArgb((int)color.R, (int)color.G, (int)color.B);
     item.H = msColor.GetHue();
     item.S = msColor.GetSaturation() * 100.0;
     item.L = msColor.GetBrightness() * 100.0;
 }
Exemplo n.º 5
0
        internal static void ToColorSpace(IRgb color, IHsl item)
        {
            var hsl = ToHsl(color);

            item.H = hsl.Item1;
            item.S = hsl.Item2;
            item.L = hsl.Item3;
        }
        protected static void ExpectedValuesForKnownColor(IColorSpace knownColor, IHsl expectedColor)
        {
            var target = knownColor.To <Hsl>();

            Assert.IsTrue(CloseEnough(expectedColor.H, target.H), "(H)" + expectedColor.H + " != " + target.H);
            Assert.IsTrue(CloseEnough(expectedColor.S, target.S), "(S)" + expectedColor.S + " != " + target.S);
            Assert.IsTrue(CloseEnough(expectedColor.L, target.L), "(L)" + expectedColor.L + " != " + target.L);
        }
Exemplo n.º 7
0
        protected static void ExpectedValuesForKnownColor(IColorSpace knownColor, IHsl expectedColor)
        {
            var target = knownColor.To<Hsl>();

            Assert.IsTrue(CloseEnough(expectedColor.H,target.H),"(H)" + expectedColor.H + " != " + target.H);
            Assert.IsTrue(CloseEnough(expectedColor.S,target.S),"(S)" + expectedColor.S + " != " + target.S);
            Assert.IsTrue(CloseEnough(expectedColor.L,target.L),"(L)" + expectedColor.L + " != " + target.L);
        }
Exemplo n.º 8
0
        protected static void ExpectedValuesForKnownColor(IColorSpace knownColor, IHsl expectedColor)
        {
            var target = knownColor.To <Hsl>();

            Assert.AreEqual(expectedColor.H, target.H, 1.8, "(H)" + expectedColor.H + " != " + target.H);
            Assert.AreEqual(expectedColor.S, target.S, 0.5, "(S)" + expectedColor.S + " != " + target.S);
            Assert.AreEqual(expectedColor.L, target.L, 0.5, "(L)" + expectedColor.L + " != " + target.L);
        }
Exemplo n.º 9
0
        internal static void ToColorSpace(IRgb color, IHsl item)
        {
            // TODO Losing precision
            var msColor = Color.FromArgb((int)color.R, (int)color.G, (int)color.B);

            item.H = msColor.GetHue();
            item.S = msColor.GetSaturation() * 100.0;
            item.L = msColor.GetBrightness() * 100.0;
        }
Exemplo n.º 10
0
        internal static void ToColorSpace(IRgb color, IHsl item)
        {
            var result = ToColorSpace(color.R / 255d, color.G / 255d, color.B / 255d);

            item.H = result.H;
            item.S = result.S;
            item.L = result.L;

            // Range expected by HSL is integer
            item.S = Round(item.S * 100, 3);
            item.L = Round(item.L * 100, 3);
        }
Exemplo n.º 11
0
 public static ColorRGB ToColor(IHsl hsl)
 {
     if (hsl.S == 0)
     {
         return(new ColorRGB(hsl.L, hsl.L, hsl.L, hsl.A));
     }
     else
     {
         var q  = (hsl.L < 0.5) ? (hsl.L * (1 + hsl.S)) : (hsl.L + hsl.S - (hsl.L * hsl.S));
         var p  = (2 * hsl.L) - q;
         var Hk = hsl.H;
         var T  = new double[3];
         T[0] = Hk + (0.333333333333333d);
         T[1] = Hk;
         T[2] = Hk - (0.333333333333333d);
         for (var i = 0; i < 3; i++)
         {
             if (T[i] < 0)
             {
                 T[i] += 1;
             }
             if (T[i] > 1)
             {
                 T[i] -= 1;
             }
             if ((T[i] * 6) < 1)
             {
                 T[i] = p + ((q - p) * 6 * T[i]);
             }
             else if ((T[i] * 2) < 1)
             {
                 T[i] = q;
             }
             else if ((T[i] * 3) < 2)
             {
                 T[i] = p + (q - p) * ((0.666666666666667d) - T[i]) * 6;
             }
             else
             {
                 T[i] = p;
             }
         }
         return(new ColorRGB(T[0], T[1], T[2], hsl.A));
     }
 }
Exemplo n.º 12
0
        static IHsb FromHSL(IHsl color)
        {
            double h, s, b;
            double hh = color.H;
            double ll = color.L;
            double ss = color.S;

            h  = hh;
            ll = ll * 2;
            ss = ss * ((ll <= 1) ? ll : 2 - ll);
            b  = (ll + ss) / 2;
            s  = (2 * ss) / (ll + ss);
            if (double.IsNaN(s))
            {
                s = 0;
            }

            return(new ColorHSB(h, s, b));
        }
Exemplo n.º 13
0
 public CmyColor(IHsl hsl)
 {
     Initialize(hsl.ToRgb());
 }
Exemplo n.º 14
0
 public HslColor(IHsl hsl)
 {
     Ordinals = hsl.Ordinals;
 }
Exemplo n.º 15
0
 public HunterLabColor(IHsl hsl)
 {
     Initialize(hsl.ToRgb());
 }