From 9459ca5583881f595682f89bb116e33c6162ba36 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 10 Aug 2022 18:15:39 -0600 Subject: [PATCH] ardourfader: beginning of per-fader color --- libs/widgets/ardour_fader.cc | 22 ++++++++++++++++++---- libs/widgets/widgets/ardour_fader.h | 7 +++++++ 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/libs/widgets/ardour_fader.cc b/libs/widgets/ardour_fader.cc index b414e27883..b87d595cad 100644 --- a/libs/widgets/ardour_fader.cc +++ b/libs/widgets/ardour_fader.cc @@ -58,6 +58,8 @@ ArdourFader::ArdourFader (Gtk::Adjustment& adj, int orientation, int fader_lengt , _dragging (false) , _centered_text (true) , _current_parent (0) + , have_explicit_bg (false) + , have_explicit_fg (false) { _default_value = _adjustment.get_value(); update_unity_position (); @@ -206,6 +208,18 @@ ArdourFader::create_patterns () cairo_surface_destroy (surface); } +Gdk::Color +ArdourFader::bg_color (Gtk::StateType s) +{ + return get_style()->get_bg (s); +} + +Gdk::Color +ArdourFader::fg_color (Gtk::StateType s) +{ + return get_style()->get_fg (s); +} + void ArdourFader::render (Cairo::RefPtr const& ctx, cairo_rectangle_t* area) { @@ -258,9 +272,9 @@ ArdourFader::render (Cairo::RefPtr const& ctx, cairo_rectangle_t cairo_matrix_init_translate (&matrix, 0, (h - ds)); cairo_pattern_set_matrix (_pattern, &matrix); } else { - CairoWidget::set_source_rgb_a (cr, get_style()->get_bg (get_state()), 1); + CairoWidget::set_source_rgb_a (cr, bg_color (get_state()), 1); cairo_fill (cr); - CairoWidget::set_source_rgb_a (cr, get_style()->get_fg (get_state()), 1); + CairoWidget::set_source_rgb_a (cr, fg_color (get_state()), 1); Gtkmm2ext::rounded_rectangle (cr, CORNER_OFFSET, ds + CORNER_OFFSET, w - CORNER_SIZE, h - ds - CORNER_SIZE, CORNER_RADIUS); } @@ -288,9 +302,9 @@ ArdourFader::render (Cairo::RefPtr const& ctx, cairo_rectangle_t cairo_matrix_init_translate (&matrix, w - ds, 0); cairo_pattern_set_matrix (_pattern, &matrix); } else { - CairoWidget::set_source_rgb_a (cr, get_style()->get_bg (get_state()), 1); + CairoWidget::set_source_rgb_a (cr, bg_color (get_state()), 1); cairo_fill (cr); - CairoWidget::set_source_rgb_a (cr, get_style()->get_fg (get_state()), 1); + CairoWidget::set_source_rgb_a (cr, fg_color (get_state()), 1); Gtkmm2ext::rounded_rectangle (cr, CORNER_OFFSET, CORNER_OFFSET, ds - CORNER_SIZE, h - CORNER_SIZE, CORNER_RADIUS); } diff --git a/libs/widgets/widgets/ardour_fader.h b/libs/widgets/widgets/ardour_fader.h index 31ca47d6c1..6d1fff33d6 100644 --- a/libs/widgets/widgets/ardour_fader.h +++ b/libs/widgets/widgets/ardour_fader.h @@ -27,6 +27,7 @@ #include #include "gtkmm2ext/cairo_widget.h" +#include "gtkmm2ext/colors.h" #include "widgets/visibility.h" namespace ArdourWidgets { @@ -99,12 +100,18 @@ private: sigc::connection _parent_style_change; Widget * _current_parent; Gdk::Color get_parent_bg (); + Gtkmm2ext::Color _explicit_bg; + bool have_explicit_bg; + Gtkmm2ext::Color _explicit_fg; + bool have_explicit_fg; void create_patterns(); void adjustment_changed (); void set_adjustment_from_event (GdkEventButton *); void update_unity_position (); int display_span (); + Gdk::Color bg_color (Gtk::StateType); + Gdk::Color fg_color (Gtk::StateType); struct FaderImage { cairo_pattern_t* pattern;