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)))); } }
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); }
public ColorEnumDictionary(ColorGradient _gradient) { Deploy(_gradient); }
public ColorEnumDictionary(String hexColorStart) { ColorGradient g = new ColorGradient(hexColorStart); Deploy(g); }
public ColorEnumDictionary(String hexColorStart, String hexColorEnd, ColorGradientFunction functions = ColorGradientFunction.HueAToB) { ColorGradient g = new ColorGradient(hexColorStart, hexColorEnd, functions); Deploy(g); }