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 + ")"); } }
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(); } } }
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"); }
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(); } } }