X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fgain_meter.h;h=e706606c76ee7a554efc531abf2a61a2aec74071;hb=51138ef75b4c59ea5a0c35c23906a093c1e34b2c;hp=d05ddc15ac9c2fca6769de37477d1d4367be20c2;hpb=a54f10d8610535616aaa6b6b1e6296bc99e47f1f;p=ardour.git diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index d05ddc15ac..e706606c76 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -88,6 +88,11 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr LevelMeter& get_level_meter() const { return *level_meter; } Gtkmm2ext::SliderController& get_gain_slider() const { return *gain_slider; } + /** Emitted in the GUI thread when a button is pressed over the level meter; + * return true if the event is handled. + */ + PBD::Signal1 LevelMeterButtonPress; + protected: friend class MixerStrip; @@ -123,6 +128,8 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr void gain_automation_state_changed(); void gain_automation_style_changed(); + void setup_gain_adjustment (); + std::string astate_string (ARDOUR::AutoState); std::string short_astate_string (ARDOUR::AutoState); std::string _astate_string (ARDOUR::AutoState, bool); @@ -178,7 +185,13 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr bool dpi_changed; bool color_changed; void color_handler(bool); - bool _is_midi; + ARDOUR::DataType _data_type; + ARDOUR::ChanCount _previous_amp_output_streams; + +private: + + bool level_meter_button_press (GdkEventButton *); + PBD::ScopedConnection _level_meter_connection; }; class GainMeter : public GainMeterBase, public Gtk::VBox @@ -201,13 +214,14 @@ class GainMeter : public GainMeterBase, public Gtk::VBox gint meter_metrics_expose (GdkEventExpose *); - static std::map > metric_pixmaps; - static Glib::RefPtr render_metrics (Gtk::Widget &, std::vector); + typedef std::map MetricPatterns; + static MetricPatterns metric_patterns; + static cairo_pattern_t* render_metrics (Gtk::Widget &, std::vector); private: void meter_configuration_changed (ARDOUR::ChanCount); - + Gtk::HBox gain_display_box; Gtk::HBox fader_box; Gtk::VBox* fader_vbox;