Beispiel #1
0
        private static List <LabColor> GenerateSamples(PaletteOptions options)
        {
            var samples      = new List <LabColor>();
            var rangeDivider = Math.Pow(options.Samples, 1.0 / 3.0) * 1.001;

            var hStep = (options.HueMax - options.HueMin) / rangeDivider;
            var cStep = (options.ChromaMax - options.ChromaMin) / rangeDivider;
            var lStep = (options.LightMax - options.LightMin) / rangeDivider;

            for (double h = options.HueMin; h <= options.HueMax; h += hStep)
            {
                for (double c = options.ChromaMin; c <= options.ChromaMax; c += cStep)
                {
                    for (double l = options.LightMin; l <= options.LightMax; l += lStep)
                    {
                        var color = new HclColor(h, c, l).ToLab();
                        if (CheckColor(color, options))
                        {
                            samples.Add(color);
                        }
                    }
                }
            }

            return(samples.Distinct().ToList());
        }
Beispiel #2
0
        private List<LabColor> GenerateColorSamples(PaletteOptions options)
        {
            var samples = new List<LabColor>();
            var rangeDivider = Math.Pow(options.Samples, 1.0 / 3.0) * 1.001;

            var hStep = (options.HueMax - options.HueMin) / rangeDivider;
            var cStep = (options.ChromaMax - options.ChromaMin) / rangeDivider;
            var lStep = (options.LightMax - options.LightMin) / rangeDivider;
            for (double h = options.HueMin; h <= options.HueMax; h += hStep)
            {
                for (double c = options.ChromaMin; c <= options.ChromaMax; c += cStep)
                {
                    for (double l = options.LightMin; l <= options.LightMax; l += lStep)
                    {
                        var color = new HclColor(h, c, l).ToLab();
                        if (color.IsValidRgb() && options.ValidateColor(color))
                        {
                            samples.Add(color);
                        }
                    }
                }
            }
            return samples;
        }