X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fgain_meter.h;h=8286cbeb954893b8cd6abc73ca36e58277433439;hb=04bf9d1e9594688db4a69c3660feef2efe23945b;hp=4536bb691b5b8123acfd4c8dfe5a73e5b31db8c1;hpb=e39a8fc9681a35b95e6d0f9b4e1a9b31d932f262;p=ardour.git diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h index 4536bb691b..8286cbeb95 100644 --- a/gtk2_ardour/gain_meter.h +++ b/gtk2_ardour/gain_meter.h @@ -38,6 +38,8 @@ #include "ardour/types.h" #include "ardour/session_handle.h" +#include "ardour_button.h" + #include "gtkmm2ext/click_box.h" #include "gtkmm2ext/focus_entry.h" #include "gtkmm2ext/slider_controller.h" @@ -65,8 +67,7 @@ namespace Gtk { class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr { public: - GainMeterBase (ARDOUR::Session*, const Glib::RefPtr&, const Glib::RefPtr &, - bool horizontal, int); + GainMeterBase (ARDOUR::Session*, bool horizontal, int, int); virtual ~GainMeterBase (); virtual void set_controls (boost::shared_ptr route, @@ -81,11 +82,14 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr void set_meter_strip_name (const char * name); void set_fader_name (const char * name); + void set_flat_buttons (); + virtual void setup_meters (int len=0); + virtual void set_type (ARDOUR::MeterType); boost::shared_ptr get_controllable(); - LevelMeter& get_level_meter() const { return *level_meter; } + LevelMeterHBox& 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; @@ -96,6 +100,7 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr protected: friend class MixerStrip; + friend class MeterStrip; boost::shared_ptr _route; boost::shared_ptr _meter; boost::shared_ptr _amp; @@ -110,12 +115,14 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr Gtkmm2ext::FocusEntry gain_display; Gtk::Button peak_display; Gtk::DrawingArea meter_metric_area; - LevelMeter *level_meter; + Gtk::DrawingArea meter_ticks1_area; + Gtk::DrawingArea meter_ticks2_area; + LevelMeterHBox *level_meter; sigc::connection gain_watching; - Gtk::Button gain_automation_style_button; - Gtk::ToggleButton gain_automation_state_button; + ArdourButton gain_automation_style_button; + ArdourButton gain_automation_state_button; Gtk::Menu gain_astate_menu; Gtk::Menu gain_astyle_menu; @@ -175,15 +182,11 @@ class GainMeterBase : virtual public sigc::trackable, ARDOUR::SessionHandlePtr void parameter_changed (const char*); void reset_peak_display (); + void reset_route_peak_display (ARDOUR::Route*); void reset_group_peak_display (ARDOUR::RouteGroup*); - static sigc::signal ResetAllPeakDisplays; - static sigc::signal ResetGroupPeakDisplays; - + void redraw_metrics (); void on_theme_changed (); - bool style_changed; - bool dpi_changed; - bool color_changed; void color_handler(bool); ARDOUR::DataType _data_type; ARDOUR::ChanCount _previous_amp_output_streams; @@ -197,8 +200,8 @@ private: class GainMeter : public GainMeterBase, public Gtk::VBox { public: - GainMeter (ARDOUR::Session*, int); - ~GainMeter () {} + GainMeter (ARDOUR::Session*, int); + virtual ~GainMeter (); virtual void set_controls (boost::shared_ptr route, boost::shared_ptr meter, @@ -206,32 +209,29 @@ class GainMeter : public GainMeterBase, public Gtk::VBox int get_gm_width (); void setup_meters (int len=0); - - static void setup_slider_pix (); + void set_type (ARDOUR::MeterType); + void route_active_changed (); protected: void hide_all_meters (); gint meter_metrics_expose (GdkEventExpose *); - - typedef std::map MetricPatterns; - static MetricPatterns metric_patterns; - static cairo_pattern_t* render_metrics (Gtk::Widget &, std::vector); + gint meter_ticks1_expose (GdkEventExpose *); + gint meter_ticks2_expose (GdkEventExpose *); private: void meter_configuration_changed (ARDOUR::ChanCount); + void meter_type_changed (ARDOUR::MeterType); Gtk::HBox gain_display_box; Gtk::HBox fader_box; Gtk::VBox* fader_vbox; Gtk::HBox hbox; + Gtk::HBox meter_hbox; Gtk::Alignment fader_alignment; Gtk::Alignment meter_alignment; std::vector _types; - - static Glib::RefPtr slider; - static Glib::RefPtr slider_desensitised; }; #endif /* __ardour_gtk_gain_meter_h__ */