public static ColorScheme FromHue(float hue, float multiplier) { Func <HSLColor, float, HSLColor> getColor = (hsl, luminosity) => hsl.WithLuminosity(((luminosity - 0.5f) * multiplier) + 0.5f); var scheme = new ColorScheme(); HSLColor gray; if (multiplier > 0.9f || multiplier < -0.9f) { gray = HSLColor.FromRGB(0.5f, 0.5f, 0.5f); } else { gray = HSLColor.FromRGB(0.5f, 0.5f, 0.515f); } var highlight = new HSLColor(hue, 1f, 0.5f); // Light scheme scheme.IsLightTheme = multiplier > 0; //if (scheme.IsLightTheme) //{ // scheme.TabPanelBG = Color.White; //} //else //{ // scheme.TabPanelBG = Color.Gray; //} // Text scheme.TextCaret = new SolidBrush(scheme.Text = (multiplier > 0 ? HSLColor.FromRGB(0, 0, 0) : HSLColor.FromRGB(1, 1, 1)).ToColor()); scheme.ChatBorderFocused = scheme.ChatBorder = getColor(gray, 1f).ToPen(); scheme.ChatMessageSeperatorBorder = getColor(gray, 0.99f).ToPen(); scheme.ChatMessageSeperatorBorderInner = getColor(gray, 0.8f).ToPen(); scheme.ChatSeperator = getColor(gray, 0.75f).ToColor(); // Backgrounds scheme.ChatBackground = getColor(gray, 0.95f).ToBrush(); if (scheme.IsLightTheme) { scheme.ChatBackgroundHighlighted = getColor(HSLColor.FromRGB(1f, 0.5f, 0.5f), 0.9f).ToBrush(); scheme.ChatBackgroundResub = getColor(HSLColor.FromRGB(0.5f, 0.5f, 1f), 0.9f).ToBrush(); scheme.ChatBackgroundWhisper = getColor(HSLColor.FromRGB(0.5f, 1f, 0.5f), 0.9f).ToBrush(); } else { //scheme.ChatBackgroundHighlighted = getColor(HSLColor.FromRGB(0.6f, 0.5f, 0.52f), 0.9f).ToBrush(); //scheme.ChatBackgroundHighlighted = new SolidBrush(Color.FromArgb(52, 0, 16)); var l = multiplier == -1 ? 0 : 20; scheme.ChatBackgroundHighlighted = new SolidBrush(Color.FromArgb(55 + l, 20 + l, 24 + l)); scheme.ChatBackgroundResub = new SolidBrush(Color.FromArgb(47 + l, 20 + l, 70 + l)); scheme.ChatBackgroundWhisper = new SolidBrush(Color.FromArgb(20 + l, 40 + l, 70 + l)); //scheme.ChatBackgroundResub = getColor(HSLColor.FromRGB(0.52f, 0.5f, 0.6f), 0.8f).ToBrush(); //scheme.ChatBackgroundWhisper = getColor(HSLColor.FromRGB(0.5f, 0.55f, 0.5f), 0.8f).ToBrush(); } scheme.Menu = getColor(gray, 0.90f).ToBrush(); scheme.MenuBorder = getColor(gray, 0.86f).ToPen(); scheme.ChatInputOuter = getColor(gray, 0.90f).ToBrush(); scheme.ChatInputBorder = getColor(gray, 0.86f).ToPen(); // Scroll scheme.ScrollbarThumb = getColor(gray, 0.8f).ToBrush(); // Highlights scheme.TabSelectedBG = highlight.WithLuminosity(0.5f).WithSaturation(0.5f).ToBrush(); scheme.TabHighlightedBG = highlight.WithLuminosity(0.8f).WithSaturation(0.5f).ToBrush(); scheme.TabNewMessageBG = highlight.WithLuminosity(0.9f).WithSaturation(0.5f).ToBrush(); scheme.TabNewMessageBG = new HatchBrush(HatchStyle.LightUpwardDiagonal, highlight.WithLuminosity(0.85f).WithSaturation(0.5f).ToColor(), highlight.WithLuminosity(0.95f).WithSaturation(0.5f).ToColor()); scheme.TextFocused = getColor(highlight, 0.25f).ToColor(); return(scheme); }