Ejemplo n.º 1
0
        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);
        }