diff options
author | Doug McLain <doug@nostar.net> | 2007-12-04 21:45:59 +0000 |
---|---|---|
committer | Doug McLain <doug@nostar.net> | 2007-12-04 21:45:59 +0000 |
commit | 7388e8e79d876990c7e9dc04b043533c8a3e9cb8 (patch) | |
tree | bceb91b0d120393e89f72695282e8bcad9af0e40 /gtk2_ardour/gain_meter.cc | |
parent | 9cd53b0b27ccc2555d287844c4a1cd3fc5526367 (diff) |
Make level meter colors user definable. Base, Mid, Top, and Clip colors are defined, and a gradient from Base to Mid is created, then a gradient from Mid to Top is created, then solid Clip. Also fixed the theme manager bug of not saving settings since 2.1 or so
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@2745 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/gain_meter.cc')
-rw-r--r-- | gtk2_ardour/gain_meter.cc | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/gtk2_ardour/gain_meter.cc b/gtk2_ardour/gain_meter.cc index 66ce63219c..74a0e0a7fc 100644 --- a/gtk2_ardour/gain_meter.cc +++ b/gtk2_ardour/gain_meter.cc @@ -208,6 +208,7 @@ GainMeter::GainMeter (boost::shared_ptr<IO> io, Session& s) ResetGroupPeakDisplays.connect (mem_fun(*this, &GainMeter::reset_group_peak_display)); UI::instance()->theme_changed.connect (mem_fun(*this, &GainMeter::on_theme_changed)); + ColorsChanged.connect (mem_fun (*this, &GainMeter::color_handler)); //hide_all(); } @@ -456,10 +457,17 @@ GainMeter::setup_meters (int len) meter_metric_area.show_all (); } + int b = ARDOUR_UI::config()->canvasvar_MeterColorBase.get(); + int m = ARDOUR_UI::config()->canvasvar_MeterColorMid.get(); + int t = ARDOUR_UI::config()->canvasvar_MeterColorTop.get(); + int c = ARDOUR_UI::config()->canvasvar_MeterColorClip.get(); + + cerr << "GainMeter::setup_meters() called color_changed = " << color_changed << " colors: " << hex << b << " " << m << " " << t << " " << c << endl;//DEBUG + for (int32_t n = nmeters-1; nmeters && n >= 0 ; --n) { - if (meters[n].width != width || meters[n].length != len) { + if (meters[n].width != width || meters[n].length != len || color_changed) { delete meters[n].meter; - meters[n].meter = new FastMeter ((uint32_t) floor (Config->get_meter_hold()), width, FastMeter::Vertical, len); + meters[n].meter = new FastMeter ((uint32_t) floor (Config->get_meter_hold()), width, FastMeter::Vertical, len, b, m, t, c); //cerr << "GainMeter::setup_meters() w:l = " << width << ":" << len << endl;//DEBUG meters[n].width = width; meters[n].length = len; @@ -471,6 +479,7 @@ GainMeter::setup_meters (int len) meters[n].meter->show_all (); meters[n].packed = true; } + color_changed = false; } int @@ -985,3 +994,8 @@ void GainMeter::clear_meters () } } +void GainMeter::color_handler() +{ + color_changed = true; + setup_meters(); +} |