public void Prepare(IEnumerable <T> instances, float minBrightness = 0.6F, float maxBrightness = 0.9F)
        {
            ColorSelectors = new Dictionary <T, circularSelector <String> >();

            frequencyCounter <T> counter = new frequencyCounter <T>();

            foreach (var inst in instances)
            {
                counter.Count(inst);
            }
            var types = counter.GetDistinctItems();

            var rootColors = rootGradient.GetColorHSVSteps(types.Count); //GetColorSteps(types.Count);

            foreach (var type in types)
            {
                Int32 ti        = types.IndexOf(type);
                var   rootColor = rootColors[ti];

                var A = rootColor.Clone();
                A.V = minBrightness;
                var B = rootColor.Clone();
                B.V = maxBrightness;

                RootColors.Add(type, A.GetHexColor(true));


                ColorGradient typeGradient = new ColorGradient(A.GetHexColor(true), B.GetHexColor(true), ColorGradientFunction.AllAToB);

                ColorSelectors.Add(type, new circularSelector <string>(typeGradient.GetColorSteps(counter.GetFrequencyForItem(type))));
            }
        }
Exemplo n.º 2
0
        protected void Deploy(ColorGradient _gradient)
        {
            gradient = _gradient;
            // Colors = new aceEnumDictionary<T, string>();

            var dict = imbSciEnumExtensions.getEnumDictionary <T>();

            var compositeEnumFlags = imbSciEnumExtensions.getEnumList <T>();
            var baseEnumFlags      = imbSciEnumExtensions.getBaseFlags <T>();

            for (int i = 0; i < baseEnumFlags.Count; i++)
            {
                var c = gradient.GetHexColor(i.GetRatio(baseEnumFlags.Count));
                //Colors[baseEnumFlags[i]] = c;

                this[baseEnumFlags[i]] = c;
                var ce = compositeEnumFlags.FirstOrDefault(x => x.ToString() == baseEnumFlags[i].ToString()); //.Remove(baseEnumFlags[i]);
                compositeEnumFlags.Remove(ce);
            }

            foreach (T composite_enum in compositeEnumFlags)
            {
                Double rt  = 0.5;
                Enum   c_e = dict[composite_enum.ToString()];
                if (Convert.ToInt32(c_e) == 0)
                {
                }
                else
                {
                    List <Double> posList        = new List <double>();
                    var           enumComponents = dict[composite_enum.ToString()].getEnumListFromFlags(); //  composite_enum.getEnumListFromFlags<T>();
                    foreach (var e in enumComponents)
                    {
                        Double r = 0.5;
                        if (baseEnumFlags.Any(x => x.ToString() == e.ToString()))
                        {
                            var ce = baseEnumFlags.First(x => x.ToString() == e.ToString());
                            r = baseEnumFlags.IndexOf(ce).GetRatio(baseEnumFlags.Count);
                        }
                        posList.Add(r);
                    }

                    rt = posList.Average();
                }

                var c = gradient.GetHexColor(rt);

                // T value = (T)Enum.ToObject(typeof(T), composite_enum.ToInt32());


                this[composite_enum] = c;
            }


            //gradient.GetHexColor()
        }
 public void PrepareRoot(String HexA, String HexB)
 {
     rootGradient = new ColorGradient(HexA, HexB, ColorGradientFunction.HueAToB | ColorGradientFunction.Saturation);
 }
Exemplo n.º 4
0
 public ColorEnumDictionary(ColorGradient _gradient)
 {
     Deploy(_gradient);
 }
Exemplo n.º 5
0
        public ColorEnumDictionary(String hexColorStart)
        {
            ColorGradient g = new ColorGradient(hexColorStart);

            Deploy(g);
        }
Exemplo n.º 6
0
        public ColorEnumDictionary(String hexColorStart, String hexColorEnd, ColorGradientFunction functions = ColorGradientFunction.HueAToB)
        {
            ColorGradient g = new ColorGradient(hexColorStart, hexColorEnd, functions);

            Deploy(g);
        }