private static void ApplyAccent(Swatch swatch) { paletteHelper.ReplacePrimaryColor(swatch,true); paletteHelper.ReplaceAccentColor(swatch); Settings.Default.AccentTheme = swatch.Name; Settings.Default.Save(); }
public Palette(Swatch primarySwatch, Swatch accentSwatch, int primaryLightHueIndex, int primaryMidHueIndex, int primaryDarkHueIndex, int accentHueIndex) { PrimarySwatch = primarySwatch; AccentSwatch = accentSwatch; PrimaryLightHueIndex = primaryLightHueIndex; PrimaryMidHueIndex = primaryMidHueIndex; PrimaryDarkHueIndex = primaryDarkHueIndex; AccentHueIndex = accentHueIndex; }
public virtual void ReplaceAccentColor(Swatch swatch) { if (swatch == null) throw new ArgumentNullException(nameof(swatch)); foreach (var color in swatch.AccentHues) { ReplaceEntry(color.Name, color.Color); ReplaceEntry(color.Name + "Foreground", color.Foreground); } ReplaceEntry("SecondaryAccentBrush", new SolidColorBrush(swatch.AccentExemplarHue.Color)); ReplaceEntry("SecondaryAccentForegroundBrush", new SolidColorBrush(swatch.AccentExemplarHue.Foreground)); }
/// <summary> /// Replaces the primary colour, selecting a balanced set of hues for the light, mid and dark hues. /// </summary> /// <param name="swatch"></param> public virtual void ReplacePrimaryColor(Swatch swatch) { if (swatch == null) throw new ArgumentNullException(nameof(swatch)); var palette = QueryPalette(); var list = swatch.PrimaryHues.ToList(); var light = list[palette.PrimaryLightHueIndex]; var mid = list[palette.PrimaryMidHueIndex]; var dark = list[palette.PrimaryDarkHueIndex]; ReplacePrimaryColor(swatch, light, mid, dark, list); }
public void ReplaceAccentColor(Swatch swatch) { if (swatch == null) throw new ArgumentNullException(nameof(swatch)); ResourceDictionary oldColorResourceDictionary; if (!TryFindSwatchDictionary(Application.Current.Resources, "SecondaryAccentBrush", out oldColorResourceDictionary)) throw new ApplicationException("Unable to find accent color definition in Application resources."); var newColorResourceDictionary = new ResourceDictionary { {"SecondaryAccentBrush", new SolidColorBrush(swatch.AccentExemplarHue.Color)}, {"SecondaryAccentForegroundBrush", new SolidColorBrush(swatch.AccentExemplarHue.Foreground)}, }; Application.Current.Resources.MergedDictionaries.Remove(oldColorResourceDictionary); Application.Current.Resources.MergedDictionaries.Add(newColorResourceDictionary); }
public void ReplacePrimaryColor(Swatch swatch) { if (swatch == null) throw new ArgumentNullException(nameof(swatch)); ResourceDictionary oldColorResourceDictionary; if (!TryFindSwatchDictionary(Application.Current.Resources, "PrimaryHueMidBrush", out oldColorResourceDictionary)) throw new ApplicationException("Unable to find primary color definition in Application resources."); var list = swatch.PrimaryHues.ToList(); var light = list[2]; var mid = swatch.ExemplarHue; var dark = list[7]; //TODO reuse some of the dupes, freeze. var newColorResourceDictionary = new ResourceDictionary { {"PrimaryHueLightBrush", new SolidColorBrush(light.Color)}, {"PrimaryHueLightForegroundBrush", new SolidColorBrush(light.Foreground)}, {"PrimaryHueMidBrush", new SolidColorBrush(mid.Color)}, {"PrimaryHueMidForegroundBrush", new SolidColorBrush(mid.Foreground)}, {"PrimaryHueDarkBrush", new SolidColorBrush(dark.Color)}, {"PrimaryHueDarkForegroundBrush", new SolidColorBrush(dark.Foreground)} }; if (oldColorResourceDictionary.Keys.OfType<string>().Contains("HighlightBrush")) { newColorResourceDictionary.Add("HighlightBrush", new SolidColorBrush(dark.Color)); newColorResourceDictionary.Add("AccentColorBrush", new SolidColorBrush(list[5].Color)); newColorResourceDictionary.Add("AccentColorBrush2", new SolidColorBrush(list[4].Color)); newColorResourceDictionary.Add("AccentColorBrush3", new SolidColorBrush(list[3].Color)); newColorResourceDictionary.Add("AccentColorBrush4", new SolidColorBrush(list[2].Color)); newColorResourceDictionary.Add("WindowTitleColorBrush", new SolidColorBrush(dark.Color)); newColorResourceDictionary.Add("AccentSelectedColorBrush", new SolidColorBrush(list[5].Foreground)); newColorResourceDictionary.Add("ProgressBrush", new LinearGradientBrush(dark.Color, list[3].Color, 90.0)); newColorResourceDictionary.Add("CheckmarkFill", new SolidColorBrush(list[5].Color)); newColorResourceDictionary.Add("RightArrowFill", new SolidColorBrush(list[5].Color)); newColorResourceDictionary.Add("IdealForegroundColorBrush", new SolidColorBrush(list[5].Foreground)); newColorResourceDictionary.Add("IdealForegroundDisabledBrush", new SolidColorBrush(dark.Color) { Opacity = .4 }); } Application.Current.Resources.MergedDictionaries.Remove(oldColorResourceDictionary); Application.Current.Resources.MergedDictionaries.Add(newColorResourceDictionary); }
public void ReplacePrimaryColor(Swatch swatch, bool mahapps = false) { if (swatch == null) throw new ArgumentNullException(nameof(swatch)); var list = swatch.PrimaryHues.ToList(); var light = list[2]; var mid = swatch.ExemplarHue; var dark = list[7]; foreach (var color in swatch.PrimaryHues) { ReplaceEntry(color.Name, color.Color); ReplaceEntry(color.Name + "Foreground", color.Foreground); } ReplaceEntry("PrimaryHueLightBrush", new SolidColorBrush(light.Color)); ReplaceEntry("PrimaryHueLightForegroundBrush", new SolidColorBrush(light.Foreground)); ReplaceEntry("PrimaryHueMidBrush", new SolidColorBrush(mid.Color)); ReplaceEntry("PrimaryHueMidForegroundBrush", new SolidColorBrush(mid.Foreground)); ReplaceEntry("PrimaryHueDarkBrush", new SolidColorBrush(dark.Color)); ReplaceEntry("PrimaryHueDarkForegroundBrush", new SolidColorBrush(dark.Foreground)); if (mahapps) { ReplaceEntry("HighlightBrush", new SolidColorBrush(dark.Color)); ReplaceEntry("AccentColorBrush", new SolidColorBrush(list[5].Color)); ReplaceEntry("AccentColorBrush2", new SolidColorBrush(list[4].Color)); ReplaceEntry("AccentColorBrush3", new SolidColorBrush(list[3].Color)); ReplaceEntry("AccentColorBrush4", new SolidColorBrush(list[2].Color)); ReplaceEntry("WindowTitleColorBrush", new SolidColorBrush(dark.Color)); ReplaceEntry("AccentSelectedColorBrush", new SolidColorBrush(list[5].Foreground)); ReplaceEntry("ProgressBrush", new LinearGradientBrush(dark.Color, list[3].Color, 90.0)); ReplaceEntry("CheckmarkFill", new SolidColorBrush(list[5].Color)); ReplaceEntry("RightArrowFill", new SolidColorBrush(list[5].Color)); ReplaceEntry("IdealForegroundColorBrush", new SolidColorBrush(list[5].Foreground)); ReplaceEntry("IdealForegroundDisabledBrush", new SolidColorBrush(dark.Color) { Opacity = .4 }); } }
private void ApplyAccent(Swatch swatch) { new PaletteHelper().ReplaceAccentColor(swatch); Settings.Default.AccentColorUri = $"pack://application:,,,/MaterialDesignColors;component/Themes/Recommended/Accent/MaterialDesignColor.{swatch.Name}.xaml"; Settings.Default.Save(); }
private static void ApplyPrimary(Swatch swatch) { new PaletteHelper().ReplacePrimaryColor(swatch); }
private static void ApplyAccent(Swatch swatch) { new PaletteHelper().ReplaceAccentColor(swatch); }
public virtual void ReplaceAccentColor(Swatch swatch) { if (swatch == null) throw new ArgumentNullException(nameof(swatch)); var palette = QueryPalette(); foreach (var color in swatch.AccentHues) { ReplaceEntry(color.Name, color.Color); ReplaceEntry(color.Name + "Foreground", color.Foreground); } var hue = swatch.AccentHues.ElementAt(palette.AccentHueIndex); ReplaceEntry("SecondaryAccentBrush", new SolidColorBrush(hue.Color)); ReplaceEntry("SecondaryAccentForegroundBrush", new SolidColorBrush(hue.Foreground)); }
private static int GetHueIndex(Swatch swatch, Color color, bool isAccent) { var x = (isAccent ? swatch.AccentHues : swatch.PrimaryHues).Select((h, i) => new {h, i}) .FirstOrDefault(a => a.h.Color == color); if (x == null) throw new InvalidOperationException($"Color {color} not found in swatch {swatch.Name}."); return x.i; }
private static void ReplacePrimaryColor(Swatch swatch, Hue light, Hue mid, Hue dark, IList<Hue> allHues) { foreach (var color in swatch.PrimaryHues) { ReplaceEntry(color.Name, color.Color); ReplaceEntry(color.Name + "Foreground", color.Foreground); } ReplaceEntry("PrimaryHueLightBrush", new SolidColorBrush(light.Color)); ReplaceEntry("PrimaryHueLightForegroundBrush", new SolidColorBrush(light.Foreground)); ReplaceEntry("PrimaryHueMidBrush", new SolidColorBrush(mid.Color)); ReplaceEntry("PrimaryHueMidForegroundBrush", new SolidColorBrush(mid.Foreground)); ReplaceEntry("PrimaryHueDarkBrush", new SolidColorBrush(dark.Color)); ReplaceEntry("PrimaryHueDarkForegroundBrush", new SolidColorBrush(dark.Foreground)); //mahapps brushes ReplaceEntry("HighlightBrush", new SolidColorBrush(dark.Color)); ReplaceEntry("AccentColorBrush", new SolidColorBrush(dark.Color)); ReplaceEntry("AccentColorBrush2", new SolidColorBrush(mid.Color)); ReplaceEntry("AccentColorBrush3", new SolidColorBrush(light.Color)); ReplaceEntry("AccentColorBrush4", new SolidColorBrush(light.Color) { Opacity = .82 }); ReplaceEntry("WindowTitleColorBrush", new SolidColorBrush(dark.Color)); ReplaceEntry("AccentSelectedColorBrush", new SolidColorBrush(dark.Foreground)); ReplaceEntry("ProgressBrush", new LinearGradientBrush(dark.Color, mid.Color, 90.0)); ReplaceEntry("CheckmarkFill", new SolidColorBrush(dark.Color)); ReplaceEntry("RightArrowFill", new SolidColorBrush(dark.Color)); ReplaceEntry("IdealForegroundColorBrush", new SolidColorBrush(dark.Foreground)); ReplaceEntry("IdealForegroundDisabledBrush", new SolidColorBrush(dark.Color) { Opacity = .4 }); }