/// <summary> /// Gets a specified number of incrementally toned versions of the current color, toward gray. /// </summary> /// <param name="numberOfTones"> /// The number of tones to return. /// The higher the number of tints, the more subtle the toning will be between successive tones. /// </param> /// <param name="includeThisColor"> /// If true, the current color will be included in the resulting ColorSpace array. /// </param> /// <returns>An array of ColorSpace objects that are tones of the current color.</returns> public ColorSpace[] GetTones(int numberOfTones, bool includeThisColor = false) { var resultSizeOffset = includeThisColor ? 1 : 0; var result = new ColorSpace[numberOfTones + resultSizeOffset]; var hsl = ToColorSpace <Hsl>(); var increment = hsl.S / (numberOfTones + 1); var s = includeThisColor ? hsl.S : hsl.S - increment; for (var i = 0; i < numberOfTones + resultSizeOffset; i++) { result[i] = new Hsl(hsl.H, s, hsl.L); s -= increment; } return(result); }
public static ColorSpace FromXElement(XElement element) { if (element.Name != "ColorSpace") { throw new XmlException("XElement name must be \"ColorSpace\""); } switch (element.Attribute("Type").Value) { case "CMY": { var result = new Cmy(); result.FromXNode(element); return(result); } case "CMYK": { var result = new Cmyk(); result.FromXNode(element); return(result); } case "HSL": { var result = new Hsl(); result.FromXNode(element); return(result); } case "HSV": { var result = new Hsv(); result.FromXNode(element); return(result); } case "HunterLAB": { var result = new HunterLab(); result.FromXNode(element); return(result); } case "LAB": { var result = new Lab(); result.FromXNode(element); return(result); } case "LCH": { var result = new Lch(); result.FromXNode(element); return(result); } case "LUV": { var result = new Luv(); result.FromXNode(element); return(result); } case "RGB": { var result = new Rgb(); result.FromXNode(element); return(result); } case "RGBA": { var result = new Rgba(); result.FromXNode(element); return(result); } case "XYZ": { var result = new Xyz(); result.FromXNode(element); return(result); } case "YXY": { var result = new Yxy(); result.FromXNode(element); return(result); } default: throw new ArgumentException("Unrecognized ColorSpace type"); } }