X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Flevel_meter.h;h=d5fb62c6ac63cf027a0a21ecac3ef8dfe13a0677;hb=45eff0fa9f0c3091783a51634657b91d16a7444e;hp=ead63aa50b8f090517a8744fc7bed53a9eab1aa7;hpb=580520b12f90251e38d94a1a5d6a199b76142b0b;p=ardour.git diff --git a/gtk2_ardour/level_meter.h b/gtk2_ardour/level_meter.h index ead63aa50b..d5fb62c6ac 100644 --- a/gtk2_ardour/level_meter.h +++ b/gtk2_ardour/level_meter.h @@ -37,6 +37,7 @@ #include #include #include +#include #include "enums.h" @@ -44,18 +45,16 @@ namespace ARDOUR { class Session; class PeakMeter; } -namespace Gtkmm2ext { - class FastMeter; -} namespace Gtk { class Menu; } -class LevelMeter : public Gtk::HBox, public ARDOUR::SessionHandlePtr +class LevelMeterBase : public ARDOUR::SessionHandlePtr, virtual public sigc::trackable { public: - LevelMeter (ARDOUR::Session*); - ~LevelMeter (); + LevelMeterBase (ARDOUR::Session*, PBD::EventLoop::InvalidationRecord* ir, + Gtkmm2ext::FastMeter::Orientation o = Gtkmm2ext::FastMeter::Vertical); + virtual ~LevelMeterBase (); virtual void set_meter (ARDOUR::PeakMeter* meter); @@ -66,16 +65,24 @@ class LevelMeter : public Gtk::HBox, public ARDOUR::SessionHandlePtr void clear_meters (bool reset_highlight = true); void hide_meters (); void setup_meters (int len=0, int width=3, int thin=2); + void set_max_audio_meter_count (uint32_t cnt = 0); void set_type (ARDOUR::MeterType); ARDOUR::MeterType get_type () { return meter_type; } /** Emitted in the GUI thread when a button is pressed over the meter */ PBD::Signal1 ButtonPress; + PBD::Signal1 ButtonRelease; PBD::Signal1 MeterTypeChanged; + protected: + virtual void mtr_pack(Gtk::Widget &w) = 0; + virtual void mtr_remove(Gtk::Widget &w) = 0; + private: + PBD::EventLoop::InvalidationRecord* parent_invalidator; ARDOUR::PeakMeter* _meter; + Gtkmm2ext::FastMeter::Orientation _meter_orientation; Width _width; @@ -101,6 +108,10 @@ class LevelMeter : public Gtk::HBox, public ARDOUR::SessionHandlePtr std::vector meters; float max_peak; ARDOUR::MeterType meter_type; + ARDOUR::MeterType visible_meter_type; + uint32_t midi_count; + uint32_t meter_count; + uint32_t max_visible_meters; PBD::ScopedConnection _configuration_connection; PBD::ScopedConnection _meter_type_connection; @@ -114,11 +125,31 @@ class LevelMeter : public Gtk::HBox, public ARDOUR::SessionHandlePtr void configuration_changed (ARDOUR::ChanCount in, ARDOUR::ChanCount out); void meter_type_changed (ARDOUR::MeterType); - void on_theme_changed (); - bool style_changed; bool color_changed; void color_handler (); }; +class LevelMeterHBox : public LevelMeterBase, public Gtk::HBox +{ + public: + LevelMeterHBox (ARDOUR::Session*); + ~LevelMeterHBox(); + + protected: + void mtr_pack(Gtk::Widget &w); + void mtr_remove(Gtk::Widget &w); +}; + +class LevelMeterVBox : public LevelMeterBase, public Gtk::VBox +{ + public: + LevelMeterVBox (ARDOUR::Session*); + ~LevelMeterVBox(); + + protected: + void mtr_pack(Gtk::Widget &w); + void mtr_remove(Gtk::Widget &w); +}; + #endif /* __ardour_gtk_track_meter_h__ */