From 28e4708825c1093ab128856e22ed468635b64f54 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Mon, 16 Mar 2015 19:03:41 +0100 Subject: [PATCH] AButton: allow to set custom LED color (for > 2 states) --- gtk2_ardour/ardour_button.cc | 8 ++++++++ gtk2_ardour/ardour_button.h | 4 ++++ 2 files changed, 12 insertions(+) diff --git a/gtk2_ardour/ardour_button.cc b/gtk2_ardour/ardour_button.cc index fcc9f1088e..a0f9a4a389 100644 --- a/gtk2_ardour/ardour_button.cc +++ b/gtk2_ardour/ardour_button.cc @@ -77,6 +77,8 @@ ArdourButton::ArdourButton (Element e) , text_inactive_color(0) , led_active_color(0) , led_inactive_color(0) + , led_custom_color (0) + , use_custom_led_color (false) , convex_pattern (0) , concave_pattern (0) , led_inset_pattern (0) @@ -113,6 +115,8 @@ ArdourButton::ArdourButton (const std::string& str, Element e) , text_inactive_color(0) , led_active_color(0) , led_inactive_color(0) + , led_custom_color (0) + , use_custom_led_color (false) , convex_pattern (0) , concave_pattern (0) , led_inset_pattern (0) @@ -209,6 +213,10 @@ ArdourButton::render (cairo_t* cr, cairo_rectangle_t *) led_color = led_inactive_color; } + if (use_custom_led_color) { + led_color = led_custom_color; + } + void (*rounded_function)(cairo_t*, double, double, double, double, double); switch (_corner_mask) { diff --git a/gtk2_ardour/ardour_button.h b/gtk2_ardour/ardour_button.h index a3bea7ca3a..b1e2bb82ea 100644 --- a/gtk2_ardour/ardour_button.h +++ b/gtk2_ardour/ardour_button.h @@ -65,6 +65,8 @@ class ArdourButton : public CairoWidget , public Gtkmm2ext::Activatable void set_active_state (Gtkmm2ext::ActiveState); void set_visual_state (Gtkmm2ext::VisualState); + void set_custom_led_color (uint32_t c, bool useit = true) { led_custom_color = c; use_custom_led_color = useit; } + void set_act_on_release (bool onRelease) { _act_on_release = onRelease; } Element elements() const { return _elements; } @@ -154,6 +156,8 @@ class ArdourButton : public CairoWidget , public Gtkmm2ext::Activatable uint32_t led_active_color; uint32_t led_inactive_color; + uint32_t led_custom_color; + bool use_custom_led_color; cairo_pattern_t* convex_pattern; cairo_pattern_t* concave_pattern;