public static RgbColour GetRgbFromHls(HslColour colour) { double l = colour.L; double s = colour.S; double h = colour.H; double p2; if (l <= 0.5) { p2 = l * (1 + s); } else { p2 = l + s - l * s; } double p1 = 2 * l - p2; double doubleR, doubleG, doubleB; if (s == 0) { doubleR = l; doubleG = l; doubleB = l; } else { doubleR = QqhToRgb(p1, p2, h + 120); doubleG = QqhToRgb(p1, p2, h); doubleB = QqhToRgb(p1, p2, h - 120); } // Convert RGB to the 0 to 255 range. var r = (byte)(doubleR * 255.0); var g = (byte)(doubleG * 255.0); var b = (byte)(doubleB * 255.0); return(new RgbColour(r, g, b)); }
public static HslColour AdjustLightness(HslColour c, double deltaL) { return(new HslColour(c.H, c.S, Math.Min(Math.Max(0.0d, c.L + deltaL), 1.0d))); }