void wxRibbonAUIArtProvider::SetColourScheme( const wxColour& primary, const wxColour& secondary, const wxColour& tertiary) { wxRibbonHSLColour primary_hsl(primary); wxRibbonHSLColour secondary_hsl(secondary); wxRibbonHSLColour tertiary_hsl(tertiary); // Map primary & secondary luminance from [0, 1] to [0.15, 0.85] primary_hsl.luminance = float(cos(primary_hsl.luminance * M_PI) * -0.35 + 0.5); secondary_hsl.luminance = float(cos(secondary_hsl.luminance * M_PI) * -0.35 + 0.5); // TODO: Remove next line once this provider stops piggybacking MSW wxRibbonMSWArtProvider::SetColourScheme(primary, secondary, tertiary); #define LikePrimary(luminance) \ wxRibbonShiftLuminance(primary_hsl, luminance ## f).ToRGB() #define LikeSecondary(luminance) \ wxRibbonShiftLuminance(secondary_hsl, luminance ## f).ToRGB() m_tab_ctrl_background_colour = LikePrimary(0.9); m_tab_ctrl_background_gradient_colour = LikePrimary(1.7); m_tab_border_pen = LikePrimary(0.75); m_tab_label_colour = LikePrimary(0.1); m_tab_hover_background_top_colour = primary_hsl.ToRGB(); m_tab_hover_background_top_gradient_colour = LikePrimary(1.6); m_tab_hover_background_brush = m_tab_hover_background_top_colour; m_tab_active_background_colour = m_tab_ctrl_background_gradient_colour; m_tab_active_background_gradient_colour = primary_hsl.ToRGB(); m_tab_active_top_background_brush = m_tab_active_background_colour; m_panel_label_colour = m_tab_label_colour; m_panel_minimised_label_colour = m_panel_label_colour; m_panel_hover_label_colour = tertiary_hsl.ToRGB(); m_page_border_pen = m_tab_border_pen; m_panel_border_pen = m_tab_border_pen; m_background_brush = primary_hsl.ToRGB(); m_page_hover_background_colour = LikePrimary(1.5); m_page_hover_background_gradient_colour = LikePrimary(0.9); m_panel_label_background_colour = LikePrimary(0.85); m_panel_label_background_gradient_colour = LikePrimary(0.97); m_panel_hover_label_background_gradient_colour = secondary_hsl.ToRGB(); m_panel_hover_label_background_colour = secondary_hsl.Lighter(0.2f).ToRGB(); m_button_bar_hover_border_pen = secondary_hsl.ToRGB(); m_button_bar_hover_background_brush = LikeSecondary(1.7); m_button_bar_active_background_brush = LikeSecondary(1.4); m_button_bar_label_colour = m_tab_label_colour; m_button_bar_label_disabled_colour = m_tab_label_colour; m_gallery_border_pen = m_tab_border_pen; m_gallery_item_border_pen = m_button_bar_hover_border_pen; m_gallery_hover_background_brush = LikePrimary(1.2); m_gallery_button_background_colour = m_page_hover_background_colour; m_gallery_button_background_gradient_colour = m_page_hover_background_gradient_colour; m_gallery_button_hover_background_brush = m_button_bar_hover_background_brush; m_gallery_button_active_background_brush = m_button_bar_active_background_brush; m_gallery_button_disabled_background_brush = primary_hsl.Desaturated(0.15f).ToRGB(); SetColour(wxRIBBON_ART_GALLERY_BUTTON_FACE_COLOUR, LikePrimary(0.1)); SetColour(wxRIBBON_ART_GALLERY_BUTTON_DISABLED_FACE_COLOUR, wxColour(128, 128, 128)); SetColour(wxRIBBON_ART_GALLERY_BUTTON_ACTIVE_FACE_COLOUR, LikeSecondary(0.1)); SetColour(wxRIBBON_ART_GALLERY_BUTTON_HOVER_FACE_COLOUR, LikeSecondary(0.1)); m_toolbar_border_pen = m_tab_border_pen; SetColour(wxRIBBON_ART_TOOLBAR_FACE_COLOUR, LikePrimary(0.1)); m_tool_background_colour = m_page_hover_background_colour; m_tool_background_gradient_colour = m_page_hover_background_gradient_colour; m_toolbar_hover_borden_pen = m_button_bar_hover_border_pen; m_tool_hover_background_brush = m_button_bar_hover_background_brush; m_tool_active_background_brush = m_button_bar_active_background_brush; //For highlight pages wxColour top_colour1((m_tab_active_background_colour.Red() + m_tab_hover_background_top_colour.Red())/2, (m_tab_active_background_colour.Green() + m_tab_hover_background_top_colour.Green())/2, (m_tab_active_background_colour.Blue() + m_tab_hover_background_top_colour.Blue())/2); wxColour bottom_colour1((m_tab_active_background_gradient_colour.Red() + m_tab_hover_background_top_gradient_colour.Red())/2, (m_tab_active_background_gradient_colour.Green() + m_tab_hover_background_top_gradient_colour.Green())/2, (m_tab_active_background_gradient_colour.Blue() + m_tab_hover_background_top_gradient_colour.Blue())/2); m_tab_highlight_top_colour = top_colour1; m_tab_highlight_top_gradient_colour = bottom_colour1; m_tab_highlight_colour = top_colour1; m_tab_highlight_gradient_colour = bottom_colour1; #undef LikeSecondary #undef LikePrimary }
void wxRibbonMetroArtProvider::SetColourScheme( const wxColour& primary, const wxColour& secondary, const wxColour& tertiary) { m_primary_scheme_colour = primary; m_secondary_scheme_colour = secondary; m_tertiary_scheme_colour = tertiary; wxRibbonHSLColour primary_hsl(primary); wxRibbonHSLColour secondary_hsl(secondary); // tertiary not used for anything // Map primary saturation from [0, 1] to [.25, .75] bool primary_is_gray = false; static const double gray_saturation_threshold = 0.01; if(primary_hsl.saturation <= gray_saturation_threshold) primary_is_gray = true; else { primary_hsl.saturation = cos(primary_hsl.saturation * M_PI) * -0.25 + 0.5; } // Map primary luminance from [0, 1] to [.23, .83] primary_hsl.luminance = cos(primary_hsl.luminance * M_PI) * -0.3 + 0.53; // Map secondary saturation from [0, 1] to [0.16, 0.84] bool secondary_is_gray = false; if(secondary_hsl.saturation <= gray_saturation_threshold) secondary_is_gray = true; else { secondary_hsl.saturation = cos(secondary_hsl.saturation * M_PI) * -0.34 + 0.5; } // Map secondary luminance from [0, 1] to [0.1, 0.9] secondary_hsl.luminance = cos(secondary_hsl.luminance * M_PI) * -0.4 + 0.5; #define LikePrimary(h, s, l) \ primary_hsl.ShiftHue(h ## f).Saturated(primary_is_gray ? 0 : s ## f) \ .Lighter(l ## f).ToRGB() #define LikeSecondary(h, s, l) \ secondary_hsl.ShiftHue(h ## f).Saturated(secondary_is_gray ? 0 : s ## f) \ .Lighter(l ## f).ToRGB() m_page_border_pen = wxColour(218,219,220); // LikePrimary(1.4, 0.00, -0.2); // LikePrimary(1.4, 0.00, -0.08); // these are all needed for galleries (which are drawn using base class methods) m_page_background_top_colour = wxColour(245,246,247); // wxColour(254,254,254); // m_page_background_top_gradient_colour = wxColour(245,246,247); // wxColour(242,244,246); m_page_background_colour = wxColour(245,246,247); m_page_background_gradient_colour = wxColour(245,246,247); // wxColour(229,233,238); m_tab_active_background_colour = wxColour(245,246,247); // LikePrimary(1.0, 1.0, 0.94); m_tab_active_background_gradient_colour = *wxBLUE; // wxColour(250,250,250); // LikePrimary(1.0, 1.0, 0.94); m_tab_separator_colour = wxColour (245,246,247); // LikePrimary(0.9, 0.24, 0.05); m_tab_ctrl_background_brush = wxColour(254,254,254); // LikePrimary(1.0, 0.39, 0.07); m_tab_hover_background_colour = wxColour(253,253,253); // LikePrimary(1.3, 0.15, 0.10); m_tab_hover_background_top_colour = *wxBLUE; // wxColour(254,254,254); // LikePrimary(1.4, 0.36, 0.08); m_tab_border_pen = wxColour(218,219,220); // LikePrimary(1.4, 0.03, -0.05); m_tab_separator_gradient_colour = LikePrimary(1.7, -0.15, -0.18); m_tab_hover_background_top_gradient_colour = *wxBLUE; // wxColour(254,254,254); // LikePrimary(1.8, 0.34, 0.13); m_tab_label_colour = LikePrimary(4.3, 0.13, -0.49); m_tab_hover_background_gradient_colour = *wxBLUE; // LikeSecondary(-1.5, -0.34, 0.01); m_panel_minimised_border_gradient_pen = wxColour(232,239,247); // LikePrimary(-6.9, -0.17, -0.09); m_panel_minimised_border_pen = wxColour(164, 206, 249); // LikePrimary(-5.3, -0.24, -0.06); m_panel_border_gradient_pen = *wxBLUE; // LikePrimary(-5.2, -0.15, -0.06); m_panel_border_pen = wxColour(226,227,228); // LikePrimary(-2.8, -0.32, 0.02); m_panel_hover_label_background_brush = *wxBLUE; // LikePrimary(1.0, 0.30, 0.09); m_panel_active_background_colour = LikePrimary(1.6, -0.18, 0.18); m_panel_active_background_gradient_colour = LikePrimary(0.5, 0.34, 0.05); m_panel_label_colour = LikePrimary(2.8, -0.14, -0.45); // LikePrimary(2.8, -0.14, -0.35); m_panel_minimised_label_colour = m_tab_label_colour; m_panel_hover_button_background_brush = wxColour(232,239,247); //LikeSecondary(-0.9, 0.16, -0.07); m_panel_hover_button_border_pen = wxColour(164, 206, 249); // LikeSecondary(-3.9, -0.16, -0.14); SetColour(wxRIBBON_ART_PANEL_BUTTON_FACE_COLOUR, LikePrimary(1.4, -0.21, -0.23)); SetColour(wxRIBBON_ART_PANEL_BUTTON_HOVER_FACE_COLOUR, LikePrimary(1.5, -0.24, -0.29)); m_button_bar_label_colour = LikePrimary(2.8, -0.14, -0.6); // m_tab_label_colour; m_button_bar_hover_border_pen = wxColour(164, 206, 249); // LikeSecondary(-6.2, 0.47, -0.1); // LikeSecondary(-6.2, -0.47, -0.14); m_button_bar_hover_background_gradient_colour = wxColour(232,239,247); // LikeSecondary(-0.6, 0.16, 0.2); // LikeSecondary(-0.6, 0.16, 0.04); m_button_bar_hover_background_colour = wxColour(232,239,247); // LikeSecondary(-0.2, 0.16, -0.01); // LikeSecondary(-0.2, 0.16, -0.10); m_button_bar_hover_background_top_gradient_colour = wxColour(232,239,247); // LikeSecondary(0.2, 0.16, 0.03); // LikeSecondary(0.2, 0.16, 0.03); // m_button_bar_hover_background_top_colour = *wxRED; // LikeSecondary(8.8, 0.16, 0.17); // LikeSecondary(8.8, 0.16, 0.17); m_button_bar_active_border_pen = wxColour(102,167,232); // LikeSecondary(-6.2, -0.47, -0.25); m_button_bar_active_background_top_colour = *wxYELLOW; // LikeSecondary(-8.4, 0.08, 0.06); m_button_bar_active_background_top_gradient_colour = *wxYELLOW; // LikeSecondary(-9.7, 0.13, -0.07); m_button_bar_active_background_colour = wxColour(209,232,255); // LikeSecondary(-9.9, 0.14, -0.14); m_button_bar_active_background_gradient_colour = *wxYELLOW; // LikeSecondary(-8.7, 0.17, -0.03); m_gallery_button_disabled_background_colour = LikePrimary(-2.8, -0.46, 0.09); m_gallery_button_disabled_background_top_brush = LikePrimary(-2.8, -0.36, 0.15); m_gallery_hover_background_brush = LikePrimary(-0.8, 0.05, 0.15); m_gallery_border_pen = LikePrimary(0.7, -0.02, 0.03); m_gallery_button_background_top_brush = LikePrimary(0.8, 0.34, 0.13); m_gallery_button_background_colour = LikePrimary(1.3, 0.10, 0.08); // SetColour used so that the relevant bitmaps are generated SetColour(wxRIBBON_ART_GALLERY_BUTTON_FACE_COLOUR, LikePrimary(1.4, -0.21, -0.23)); SetColour(wxRIBBON_ART_GALLERY_BUTTON_HOVER_FACE_COLOUR, LikePrimary(1.5, -0.24, -0.29)); SetColour(wxRIBBON_ART_GALLERY_BUTTON_ACTIVE_FACE_COLOUR, LikePrimary(1.5, -0.24, -0.29)); SetColour(wxRIBBON_ART_GALLERY_BUTTON_DISABLED_FACE_COLOUR, LikePrimary(0.0, -1.0, 0.0)); m_gallery_button_disabled_background_gradient_colour = LikePrimary(1.5, -0.43, 0.12); m_gallery_button_background_gradient_colour = LikePrimary(1.7, 0.11, 0.09); m_gallery_item_border_pen = LikeSecondary(-3.9, -0.16, -0.14); m_gallery_button_hover_background_colour = m_button_bar_hover_background_colour; // LikeSecondary(-0.9, 0.16, -0.07); m_gallery_button_hover_background_gradient_colour = m_button_bar_hover_background_gradient_colour; // LikeSecondary(0.1, 0.12, 0.03); m_gallery_button_hover_background_top_brush = m_button_bar_hover_background_top_gradient_colour; // LikeSecondary(4.3, 0.16, 0.17); m_gallery_button_active_background_colour = LikeSecondary(-9.9, 0.03, -0.22); m_gallery_button_active_background_gradient_colour = LikeSecondary(-9.5, 0.14, -0.11); m_gallery_button_active_background_top_brush = LikeSecondary(-9.0, 0.15, -0.08); m_toolbar_border_pen = m_button_bar_hover_border_pen; // LikePrimary(1.4, -0.21, -0.16); SetColour(wxRIBBON_ART_TOOLBAR_FACE_COLOUR, LikePrimary(1.4, -0.17, -0.22)); m_tool_background_top_colour = LikePrimary(-1.9, -0.07, 0.06); m_tool_background_top_gradient_colour = LikePrimary(1.4, 0.12, 0.08); m_tool_background_colour = wxColour(232,239,247); // LikePrimary(1.4, -0.09, 0.03); m_tool_background_gradient_colour = *wxRED; // LikePrimary(1.9, 0.11, 0.09); m_tool_hover_background_top_colour = m_button_bar_hover_background_top_colour; // LikeSecondary(3.4, 0.11, 0.16); m_tool_hover_background_top_gradient_colour = m_button_bar_hover_background_top_gradient_colour; // LikeSecondary(-1.4, 0.04, 0.08); m_tool_hover_background_colour = m_button_bar_hover_background_colour; // LikeSecondary(-1.8, 0.16, -0.12); m_tool_hover_background_gradient_colour = m_button_bar_hover_background_gradient_colour; // LikeSecondary(-2.6, 0.16, 0.05); m_tool_active_background_top_colour = LikeSecondary(-9.9, -0.12, -0.09); m_tool_active_background_top_gradient_colour = LikeSecondary(-8.5, 0.16, -0.12); m_tool_active_background_colour = LikeSecondary(-7.9, 0.16, -0.20); m_tool_active_background_gradient_colour = LikeSecondary(-6.6, 0.16, -0.10); #undef LikePrimary #undef LikeSecondary // Invalidate cached tab separator m_cached_tab_separator_visibility = -1.0; }