Пример #1
0
        public void ToHsl()
        {
            foreach (HtmlColorSample sample in HtmlColorSamples.All)
            {
                int r = sample.Rgb.Red;
                int g = sample.Rgb.Green;
                int b = sample.Rgb.Blue;

                RgbColor rgb = new RgbColor(r, g, b);

                double h1 = sample.Hsl.Hue / 360d;
                double s1 = sample.Hsl.Saturation;
                double l1 = sample.Hsl.Lightness;

                ColorUtils.RgbToHsl(r, g, b, out double h2, out double s2, out double l2);
                Assert.AreEqual(h1.ToString("N2"), h2.ToString("N2"), "#1 Hue (" + sample.Name + ")");
                Assert.AreEqual(s1.ToString("N2"), s2.ToString("N2"), "#1 Saturation (" + sample.Name + ")");
                Assert.AreEqual(l1.ToString("N2"), l2.ToString("N2"), "#1 Lightness (" + sample.Name + ")");

                HslColor hsl1 = ColorUtils.RgbToHsl(r, g, b);
                Assert.AreEqual(h1.ToString("N2"), hsl1.H.ToString("N2"), "#2 Hue (" + sample.Name + ")");
                Assert.AreEqual(s1.ToString("N2"), hsl1.S.ToString("N2"), "#2 Saturation (" + sample.Name + ")");
                Assert.AreEqual(l1.ToString("N2"), hsl1.L.ToString("N2"), "#2 Lightness (" + sample.Name + ")");

                HslColor hsl2 = ColorUtils.RgbToHsl(rgb);
                Assert.AreEqual(h1.ToString("N2"), hsl2.H.ToString("N2"), "#3 Hue (" + sample.Name + ")");
                Assert.AreEqual(s1.ToString("N2"), hsl2.S.ToString("N2"), "#3 Saturation (" + sample.Name + ")");
                Assert.AreEqual(l1.ToString("N2"), hsl2.L.ToString("N2"), "#3 Lightness (" + sample.Name + ")");

                HslColor hsl3 = rgb.ToHsl();
                Assert.AreEqual(h1.ToString("N2"), hsl3.H.ToString("N2"), "#4 Hue (" + sample.Name + ")");
                Assert.AreEqual(s1.ToString("N2"), hsl3.S.ToString("N2"), "#4 Saturation (" + sample.Name + ")");
                Assert.AreEqual(l1.ToString("N2"), hsl3.L.ToString("N2"), "#4 Lightness (" + sample.Name + ")");
            }
        }
Пример #2
0
        public void ChangeHsl(double hue, double saturation = 0.0, double lightness = 0.0)
        {
            if (Parameters == null)
            {
                return;
            }

            foreach (var param in Parameter.ColorParameters)
            {
                var r = GetParameter(string.Format("{0}R", param));
                var g = GetParameter(string.Format("{0}G", param));
                var b = GetParameter(string.Format("{0}B", param));

                if (r != null && g != null && b != null)
                {
                    //Create rgbColor, divide by 10
                    RgbColor rgbColor = new RgbColor(r.Float, g.Float, b.Float);
                    var      hslColor = rgbColor.ToHsl();
                    hslColor.ChangeHue(hue);
                    hslColor.ChangeLightness(lightness);
                    hslColor.ChangeSaturation(saturation);

                    RgbColor newColor = hslColor.ToRgb();

                    //Add new color to parameters, multiply by 10
                    r.value = (newColor.R).ToString();
                    g.value = (newColor.G).ToString();
                    b.value = (newColor.B).ToString();
                }
            }
        }
Пример #3
0
        public void RgbTo()
        {
            RgbColor rgb = new RgbColor(0, 0, 0, 0.5);

            Assert.AreEqual(0.5, rgb.ToCmy().Alpha, "To CMY");

            Assert.AreEqual(0.5, rgb.ToCmyk().Alpha, "To CMYK");

            Assert.AreEqual(0.5, rgb.ToHsl().Alpha, "To HSL");

            Assert.AreEqual(0.5, rgb.ToHsv().Alpha, "To HSV");

            Assert.AreEqual(0.5, rgb.ToRgb().Alpha, "To RGB");
        }
Пример #4
0
        public void ChangeHsl(double hue, double saturation = 0.0, double lightness = 0.0, List <IUndoRedo> undos = null, bool hueSet = false, int variance = 0)
        {
            if (Parameters == null)
            {
                return;
            }

            foreach (var param in Parameter.ColorParameters)
            {
                var r = GetParameter(string.Format("{0}R", param));
                var g = GetParameter(string.Format("{0}G", param));
                var b = GetParameter(string.Format("{0}B", param));

                if (r != null && g != null && b != null)
                {
                    //Create rgbColor, divide by 10
                    RgbColor rgbColor = new RgbColor(r.Float, g.Float, b.Float);
                    var      hslColor = rgbColor.ToHsl();
                    RgbColor newColor;

                    if (hueSet)
                    {
                        hslColor.SetHue(hue, variance);
                    }
                    else
                    {
                        hslColor.ChangeHue(hue);
                        hslColor.ChangeLightness(lightness);
                        hslColor.ChangeSaturation(saturation);
                    }

                    newColor = hslColor.ToRgb();

                    undos.Add(new UndoableProperty <Parameter>(nameof(Parameter.value), r, r.value, newColor.R.ToString()));
                    undos.Add(new UndoableProperty <Parameter>(nameof(Parameter.value), g, g.value, newColor.G.ToString()));
                    undos.Add(new UndoableProperty <Parameter>(nameof(Parameter.value), b, b.value, newColor.B.ToString()));

                    //Add new color to parameters, multiply by 10
                    r.value = (newColor.R).ToString();
                    g.value = (newColor.G).ToString();
                    b.value = (newColor.B).ToString();
                }
            }
        }