/// <summary> /// Загружает цвета по имени файла baml ресурса /// </summary> /// <param name="name"></param> /// <param name="groupRes"></param> /// <param name="assemblyName"></param> /// <returns></returns> private static ResourceDictionary GetResourceDictionaryBaml(string name, IEnumerable <IGrouping <string, SelBaml> > groupRes, string assemblyName) { foreach (IEnumerable <SelBaml> item in groupRes) { SelBaml selBaml = item.First(); if (String.Equals(selBaml.match.Groups["fileName"].Value, name, StringComparison.CurrentCultureIgnoreCase)) { var res = Read(assemblyName, selBaml.key); return(res); } } return(null); }
/// <summary> /// Создает наборы цветов и проверят их с класическими цветами /// </summary> /// <param name="classicColors"></param> /// <param name="groupRes"></param> /// <param name="assemblyName"></param> /// <returns></returns> private List <Swatch> GetSwatches(Swatch classicColors, IGrouping <string, SelBaml>[] groupRes, string assemblyName) { List <Swatch> swatches = new List <Swatch>(); foreach (IEnumerable <SelBaml> grp in groupRes) { SelBaml selBaml = grp.First(); var name = selBaml.match.Groups["fileName"].Value; if (!string.Equals(name, classicColors.Name, StringComparison.CurrentCultureIgnoreCase)) { var res = GetResourceDictionaryBaml(name, groupRes, assemblyName); if (res == null) { throw new Exception(name + " not found"); } if (res.Count == 0) { continue; // throw new Exception(name + " is empty"); } if (res.Count > 0) { Dictionary <string, Color> colors = GetColors(res); Swatch swatch = new Swatch(name); swatches.Add(swatch); foreach (Hue hue in classicColors.Hues) { if (!colors.ContainsKey(hue.Name)) { swatch.AddHue(new Hue(hue.Name, hue.Color)); } else { swatch.AddHue(new Hue(hue.Name, colors[hue.Name])); } } } } } return(swatches); }