コード例 #1
0
        private Swatch FindDominantSwatch()
        {
            int    maxPop    = Int32.MinValue;
            Swatch maxSwatch = null;

            for (int i = 0, count = mSwatches.Count; i < count; i++)
            {
                Swatch swatch = mSwatches[i];
                if (swatch.GetPopulation() > maxPop)
                {
                    maxSwatch = swatch;
                    maxPop    = swatch.GetPopulation();
                }
            }
            return(maxSwatch);
        }
コード例 #2
0
        private float GenerateScore(Swatch swatch, Target target)
        {
            float[] hsl = swatch.GetHsl();

            float saturationScore = 0;
            float luminanceScore  = 0;
            float populationScore = 0;

            int maxPopulation = mDominantSwatch != null?mDominantSwatch.GetPopulation() : 1;

            if (target.GetSaturationWeight() > 0)
            {
                saturationScore = target.GetSaturationWeight()
                                  * (1f - Math.Abs(hsl[1] - target.GetTargetSaturation()));
            }
            if (target.GetLightnessWeight() > 0)
            {
                luminanceScore = target.GetLightnessWeight()
                                 * (1f - Math.Abs(hsl[2] - target.GetTargetLightness()));
            }
            if (target.GetPopulationWeight() > 0)
            {
                populationScore = target.GetPopulationWeight()
                                  * (swatch.GetPopulation() / (float)maxPopulation);
            }

            return(saturationScore + luminanceScore + populationScore);
        }