diff options
author | Robin Gareus <robin@gareus.org> | 2013-07-24 11:59:40 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2013-07-24 11:59:40 +0200 |
commit | d8372bdf9b62eec064ec7e94bb6237a5363ee40a (patch) | |
tree | e28c909eac8724e282335ae5175009d5a3fd38e8 /gtk2_ardour | |
parent | 6b96a4baa30e60bcabced774acbb6d0c686a5014 (diff) |
color meterbridge strips
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/ardour3_styles.rc.in | 17 | ||||
-rw-r--r-- | gtk2_ardour/ardour3_widget_list.rc | 4 | ||||
-rw-r--r-- | gtk2_ardour/meter_patterns.cc | 8 | ||||
-rw-r--r-- | gtk2_ardour/meter_strip.cc | 52 | ||||
-rw-r--r-- | gtk2_ardour/meter_strip.h | 4 |
5 files changed, 68 insertions, 17 deletions
diff --git a/gtk2_ardour/ardour3_styles.rc.in b/gtk2_ardour/ardour3_styles.rc.in index 45b8458370..8a88e7cbbe 100644 --- a/gtk2_ardour/ardour3_styles.rc.in +++ b/gtk2_ardour/ardour3_styles.rc.in @@ -989,3 +989,20 @@ style "default_toggle_button" bg[ACTIVE] = @@COLPREFIX@_contrasting_indicator fg[ACTIVE] = @@COLPREFIX@_darkest } + + +style "meter_strip_dpm" = "default" +{ +} + +style "meter_strip_ppm" = "default" +{ + bg[NORMAL] = { 0.1, 0.1, 0.1 } + fg[NORMAL] = { 1.0, 1.0, 1.0 } +} + +style "meter_strip_vu" = "default" +{ + bg[NORMAL] = { 1.0, 1.0, 0.85 } + fg[NORMAL] = { 0.0, 0.0, 0.0 } +} diff --git a/gtk2_ardour/ardour3_widget_list.rc b/gtk2_ardour/ardour3_widget_list.rc index 05ebde9421..26b9a99b7f 100644 --- a/gtk2_ardour/ardour3_widget_list.rc +++ b/gtk2_ardour/ardour3_widget_list.rc @@ -290,6 +290,10 @@ widget "*PluginLoadButton" style:highest "small_button" widget "*PluginLoadButton*" style:highest "small_button" widget "*PluginEditorButton" style:highest "default_toggle_button" +widget "*meterstripPPM" style:highest "meter_strip_ppm" +widget "*meterstripDPM" style:highest "meter_strip_dpm" +widget "*meterstripVU" style:highest "meter_strip_vu" + widget "*MetricDialogFrame" style:highest "base_frame" widget "*MetricEntry" style:highest "medium_bold_entry" widget "*MetricButton" style:highest "default_button" diff --git a/gtk2_ardour/meter_patterns.cc b/gtk2_ardour/meter_patterns.cc index 756cdcccbd..4cd96f2433 100644 --- a/gtk2_ardour/meter_patterns.cc +++ b/gtk2_ardour/meter_patterns.cc @@ -200,6 +200,7 @@ static inline float mtr_col_and_fract( } static void set_bg_color(Gtk::Widget& w, cairo_t* cr, MeterType type) { + // TODO use "meterstrip*" stype switch(type) { case MeterVU: cairo_set_source_rgb (cr, 1.0, 1.0, 0.85); @@ -221,7 +222,8 @@ static void set_bg_color(Gtk::Widget& w, cairo_t* cr, MeterType type) { } } -static void set_fg_color(MeterType type, Gdk::Color * c) { +static void set_fg_color(Gtk::Widget& w, MeterType type, Gdk::Color * c) { + // TODO use "meterstrip*" stype switch(type) { case MeterVU: c->set_rgb_p(0.0, 0.0, 0.0); @@ -270,7 +272,7 @@ meter_render_ticks (Gtk::Widget& w, MeterType type, vector<ARDOUR::DataType> typ /* we're overlaying more than 1 set of marks, so use different colours */ c = w.get_style()->get_fg (Gtk::STATE_ACTIVE); } else if (background) { - set_fg_color(type, &c); + set_fg_color(w, type, &c); cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p()); } else { c = w.get_style()->get_fg (Gtk::STATE_NORMAL); @@ -554,7 +556,7 @@ meter_render_metrics (Gtk::Widget& w, MeterType type, vector<DataType> types) /* we're overlaying more than 1 set of marks, so use different colours */ c = w.get_style()->get_fg (Gtk::STATE_ACTIVE); } else if (background) { - set_fg_color(type, &c); + set_fg_color(w, type, &c); cairo_set_source_rgb (cr, c.get_red_p(), c.get_green_p(), c.get_blue_p()); } else { c = w.get_style()->get_fg (Gtk::STATE_NORMAL); diff --git a/gtk2_ardour/meter_strip.cc b/gtk2_ardour/meter_strip.cc index 061c14d468..f7f18fb273 100644 --- a/gtk2_ardour/meter_strip.cc +++ b/gtk2_ardour/meter_strip.cc @@ -64,7 +64,7 @@ MeterStrip::MeterStrip (int metricmode, MeterType mt) { level_meter = 0; _strip_type = 0; - set_spacing(2); + strip.set_spacing(2); peakbx.set_size_request(-1, 14); namebx.set_size_request(18, 52); @@ -77,15 +77,17 @@ MeterStrip::MeterStrip (int metricmode, MeterType mt) meterbox.pack_start(meter_metric_area, true, false); - pack_start (peakbx, false, false); - pack_start (meterbox, true, true); - pack_start (btnbox, false, false); - pack_start (namebx, false, false); + strip.pack_start (peakbx, false, false); + strip.pack_start (meterbox, true, true); + strip.pack_start (btnbox, false, false); + strip.pack_start (namebx, false, false); + add(strip); peakbx.show(); btnbox.show(); meter_metric_area.show(); meterbox.show(); + strip.show(); UI::instance()->theme_changed.connect (sigc::mem_fun(*this, &MeterStrip::on_theme_changed)); ColorsChanged.connect (sigc::mem_fun (*this, &MeterStrip::on_theme_changed)); @@ -98,7 +100,7 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt) , _route(rt) , peak_display() { - set_spacing(2); + strip.set_spacing(2); RouteUI::set_route (rt); SessionHandlePtr::set_session (sess); @@ -174,11 +176,12 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt) update_button_box(); update_name_box(); + update_background (_route->meter_type()); - pack_start (peakbx, false, false); - pack_start (meterbox, true, true); - pack_start (btnbox, false, false); - pack_start (namebx, false, false); + strip.pack_start (peakbx, false, false); + strip.pack_start (meterbox, true, true); + strip.pack_start (btnbox, false, false); + strip.pack_start (namebx, false, false); name_label.show(); peak_display.show(); peakbx.show(); @@ -189,6 +192,8 @@ MeterStrip::MeterStrip (Session* sess, boost::shared_ptr<ARDOUR::Route> rt) meter_align.show(); peak_align.show(); btnbox.show(); + add(strip); + strip.show(); _route->shared_peak_meter()->ConfigurationChanged.connect ( route_connections, invalidator (*this), boost::bind (&MeterStrip::meter_configuration_changed, this, _1), gui_context() @@ -375,7 +380,7 @@ MeterStrip::meter_configuration_changed (ChanCount c) void MeterStrip::on_size_request (Gtk::Requisition* r) { - VBox::on_size_request(r); + EventBox::on_size_request(r); } void @@ -390,7 +395,7 @@ MeterStrip::on_size_allocate (Gtk::Allocation& a) name_label.set_size_request(18, nh-2); name_label.layout()->set_width((nh-4) * PANGO_SCALE); } - VBox::on_size_allocate(a); + EventBox::on_size_allocate(a); } gint @@ -427,10 +432,30 @@ MeterStrip::set_metric_mode (int metricmode, ARDOUR::MeterType mt) _types.push_back (DataType::AUDIO); break; } - + update_background (mt); meter_metric_area.queue_draw (); } +void +MeterStrip::update_background(MeterType type) +{ + switch(type) { + case MeterIEC1DIN: + case MeterIEC1NOR: + case MeterIEC2BBC: + case MeterIEC2EBU: + case MeterK14: + case MeterK20: + set_name ("meterstripPPM"); + break; + case MeterVU: + set_name ("meterstripVU"); + break; + default: + set_name ("meterstripDPM"); + } +} + MeterType MeterStrip::meter_type() { @@ -631,6 +656,7 @@ MeterStrip::meter_type_changed (MeterType type) if (_route->meter_type() != type) { _route->set_meter_type(type); } + update_background (type); MetricChanged(); } diff --git a/gtk2_ardour/meter_strip.h b/gtk2_ardour/meter_strip.h index fd5f65be3c..4b5868e9d2 100644 --- a/gtk2_ardour/meter_strip.h +++ b/gtk2_ardour/meter_strip.h @@ -43,7 +43,7 @@ namespace Gtk { class Style; } -class MeterStrip : public Gtk::VBox, public RouteUI +class MeterStrip : public Gtk::EventBox, public RouteUI { public: MeterStrip (ARDOUR::Session*, boost::shared_ptr<ARDOUR::Route>); @@ -90,6 +90,7 @@ class MeterStrip : public Gtk::VBox, public RouteUI void set_button_names (); private: + Gtk::VBox strip; Gtk::HBox meterbox; Gtk::HBox namebx; ArdourButton name_label; @@ -120,6 +121,7 @@ class MeterStrip : public Gtk::VBox, public RouteUI void strip_property_changed (const PBD::PropertyChange&); void meter_configuration_changed (ARDOUR::ChanCount); void meter_type_changed (ARDOUR::MeterType); + void update_background (ARDOUR::MeterType); static int max_pattern_metric_size; // == FastMeter::max_pattern_metric_size |