summaryrefslogtreecommitdiff
path: root/gtk2_ardour/gain_meter.cc
diff options
context:
space:
mode:
authorDoug McLain <doug@nostar.net>2007-12-04 21:45:59 +0000
committerDoug McLain <doug@nostar.net>2007-12-04 21:45:59 +0000
commit7388e8e79d876990c7e9dc04b043533c8a3e9cb8 (patch)
treebceb91b0d120393e89f72695282e8bcad9af0e40 /gtk2_ardour/gain_meter.cc
parent9cd53b0b27ccc2555d287844c4a1cd3fc5526367 (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.cc18
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();
+}