X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Flevel_meter.h;h=f3ff2a8550f682d37a55d234a895c615befd7bab;hb=95f2e4199b8f500beab4fae262715a237e14902b;hp=a355d7d28540fedc065e19afc74bc97b2e25173d;hpb=58f4d6689970e5232eae79b02bd37ed8b6f47337;p=ardour.git diff --git a/gtk2_ardour/level_meter.h b/gtk2_ardour/level_meter.h index a355d7d285..f3ff2a8550 100644 --- a/gtk2_ardour/level_meter.h +++ b/gtk2_ardour/level_meter.h @@ -34,10 +34,9 @@ #include "ardour/chan_count.h" #include "ardour/session_handle.h" -#include -#include -#include -#include +#include "widgets/fastmeter.h" +#include "widgets/focus_entry.h" +#include "widgets/slider_controller.h" #include "enums.h" @@ -49,11 +48,11 @@ namespace Gtk { class Menu; } -class LevelMeterBase : public ARDOUR::SessionHandlePtr +class LevelMeterBase : public ARDOUR::SessionHandlePtr, virtual public sigc::trackable { - public: +public: LevelMeterBase (ARDOUR::Session*, PBD::EventLoop::InvalidationRecord* ir, - Gtkmm2ext::FastMeter::Orientation o = Gtkmm2ext::FastMeter::Vertical); + ArdourWidgets::FastMeter::Orientation o = ArdourWidgets::FastMeter::Vertical); virtual ~LevelMeterBase (); virtual void set_meter (ARDOUR::PeakMeter* meter); @@ -65,40 +64,41 @@ class LevelMeterBase : 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; } + void set_meter_type (ARDOUR::MeterType); + ARDOUR::MeterType meter_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: +protected: virtual void mtr_pack(Gtk::Widget &w) = 0; virtual void mtr_remove(Gtk::Widget &w) = 0; - private: +private: PBD::EventLoop::InvalidationRecord* parent_invalidator; ARDOUR::PeakMeter* _meter; - Gtkmm2ext::FastMeter::Orientation _meter_orientation; + ArdourWidgets::FastMeter::Orientation _meter_orientation; Width _width; struct MeterInfo { - Gtkmm2ext::FastMeter *meter; - gint16 width; - int length; - bool packed; - float max_peak; - - MeterInfo() { - meter = 0; - width = 0; - length = 0; - packed = false; - max_peak = -INFINITY; - } + ArdourWidgets::FastMeter* meter; + gint16 width; + int length; + bool packed; + float max_peak; + + MeterInfo() { + meter = 0; + width = 0; + length = 0; + packed = false; + max_peak = -INFINITY; + } }; guint16 regular_meter_width; @@ -106,8 +106,11 @@ class LevelMeterBase : public ARDOUR::SessionHandlePtr guint16 thin_meter_width; std::vector meters; float max_peak; - ARDOUR::MeterType meter_type; + 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; @@ -121,30 +124,28 @@ class LevelMeterBase : 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: +public: LevelMeterHBox (ARDOUR::Session*); ~LevelMeterHBox(); - protected: +protected: void mtr_pack(Gtk::Widget &w); void mtr_remove(Gtk::Widget &w); }; class LevelMeterVBox : public LevelMeterBase, public Gtk::VBox { - public: +public: LevelMeterVBox (ARDOUR::Session*); ~LevelMeterVBox(); - protected: +protected: void mtr_pack(Gtk::Widget &w); void mtr_remove(Gtk::Widget &w); };