From d7b685cc5fa0b87e2c5569d97772605759daa586 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sat, 29 Oct 2011 15:53:22 +0000 Subject: [PATCH] make it possible (hackily) to pick the base color for the knob images created by MotionFeedback git-svn-id: svn://localhost/ardour2/branches/3.0@10337 d708f5d6-7413-0410-9779-e7cbd77b26cf --- libs/gtkmm2ext/gtkmm2ext/motionfeedback.h | 3 ++- libs/gtkmm2ext/motionfeedback.cc | 19 +++++++++++++++++-- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/libs/gtkmm2ext/gtkmm2ext/motionfeedback.h b/libs/gtkmm2ext/gtkmm2ext/motionfeedback.h index 70ab50d6ba..b4bf2d9c02 100644 --- a/libs/gtkmm2ext/gtkmm2ext/motionfeedback.h +++ b/libs/gtkmm2ext/gtkmm2ext/motionfeedback.h @@ -63,7 +63,7 @@ class MotionFeedback : public Gtk::VBox boost::shared_ptr controllable() const; virtual void set_controllable (boost::shared_ptr c); - void set_lamp_color (const Gdk::Color&); + static void set_lamp_color (const std::string&); static Glib::RefPtr render_pixbuf (int size); @@ -111,6 +111,7 @@ class MotionFeedback : public Gtk::VBox Gtk::EventBox* value_packer; Glib::RefPtr pixbuf; BindingProxy binding_proxy; + static Gdk::Color* base_color; void (*print_func) (char buf[32], const boost::shared_ptr&, void *); void *print_arg; diff --git a/libs/gtkmm2ext/motionfeedback.cc b/libs/gtkmm2ext/motionfeedback.cc index 6b85913d0c..7a6d02f531 100644 --- a/libs/gtkmm2ext/motionfeedback.cc +++ b/libs/gtkmm2ext/motionfeedback.cc @@ -39,6 +39,8 @@ using namespace Gtk; using namespace Gtkmm2ext; using namespace sigc; +Gdk::Color* MotionFeedback::base_color; + MotionFeedback::MotionFeedback (Glib::RefPtr pix, Type t, boost::shared_ptr c, @@ -60,6 +62,10 @@ MotionFeedback::MotionFeedback (Glib::RefPtr pix, , subwidth (subw) , subheight (subh) { + if (!base_color) { + base_color = new Gdk::Color ("#1a5274"); + } + char value_name[1024]; print_func = default_printer; @@ -467,12 +473,11 @@ MotionFeedback::render_pixbuf (int size) GdkColor col2 = {0,0,0,0}; GdkColor col3 = {0,0,0,0}; - Gdk::Color base ("#b9feff"); GdkColor dark; GdkColor bright; ProlooksHSV* hsv; - hsv = prolooks_hsv_new_for_gdk_color (base.gobj()); + hsv = prolooks_hsv_new_for_gdk_color (base_color->gobj()); bright = (prolooks_hsv_to_gdk_color (hsv, &col2), col2); prolooks_hsv_set_saturation (hsv, 0.66); prolooks_hsv_set_value (hsv, 0.67); @@ -729,3 +734,13 @@ MotionFeedback::core_draw (cairo_t* cr, int phase, double size, double progress_ cairo_pattern_destroy (knob_ripples); } + +void +MotionFeedback::set_lamp_color (const std::string& str) +{ + if (base_color) { + *base_color = Gdk::Color (str); + } else { + base_color = new Gdk::Color (str); + } +}