Exemplo n.º 1
0
        /// <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);
        }
Exemplo n.º 2
0
        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");
            }
        }