X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=inline;f=gtk2_ardour%2Fmeter_strip.h;h=3836ede93f88062d80aa750ef340cbfdab6ebef7;hb=424d368614eda4b3c34d1a0962ef641d6850fb6d;hp=0d9dcaa0aa7e67270c4c8fffec6e6d0c64edc222;hpb=9bab5c919babe2d842bb5f997d55524bd0235e17;p=ardour.git diff --git a/gtk2_ardour/meter_strip.h b/gtk2_ardour/meter_strip.h index 0d9dcaa0aa..3836ede93f 100644 --- a/gtk2_ardour/meter_strip.h +++ b/gtk2_ardour/meter_strip.h @@ -29,11 +29,13 @@ #include "ardour/types.h" #include "ardour/ardour.h" #include "route_ui.h" +#include "ardour_button.h" #include "level_meter.h" namespace ARDOUR { class Route; + class RouteGroup; class Session; } namespace Gtk { @@ -41,19 +43,24 @@ namespace Gtk { class Style; } -class Meterbridge; - class MeterStrip : public Gtk::VBox, public RouteUI { public: - MeterStrip (Meterbridge&, ARDOUR::Session*, boost::shared_ptr); + MeterStrip (ARDOUR::Session*, boost::shared_ptr); + MeterStrip (int); ~MeterStrip (); void fast_update (); - void display_metrics (bool); boost::shared_ptr route() { return _route; } static PBD::Signal1 CatchDeletion; + static PBD::Signal0 MetricChanged; + + void reset_peak_display (); + void reset_group_peak_display (ARDOUR::RouteGroup*); + + void set_metric_mode (int); + bool has_midi() { return _has_midi; } protected: boost::shared_ptr _route; @@ -61,21 +68,10 @@ class MeterStrip : public Gtk::VBox, public RouteUI void self_delete (); gint meter_metrics_expose (GdkEventExpose *); - gint meter_ticks_expose (GdkEventExpose *, Gtk::DrawingArea *); gint meter_ticks1_expose (GdkEventExpose *); gint meter_ticks2_expose (GdkEventExpose *); - typedef std::map MetricPatterns; - static MetricPatterns metric_patterns; - - typedef std::map TickPatterns; - static TickPatterns ticks_patterns; - - static cairo_pattern_t* render_metrics (Gtk::Widget &, std::vector); - static cairo_pattern_t* render_ticks (Gtk::Widget &, std::vector); - void on_theme_changed (); - bool style_changed; void on_size_allocate (Gtk::Allocation&); void on_size_request (Gtk::Requisition*); @@ -87,12 +83,23 @@ class MeterStrip : public Gtk::VBox, public RouteUI private: Gtk::HBox meterbox; - Gtk::Label label; + Gtk::HBox namebx; + ArdourButton name_label; Gtk::DrawingArea meter_metric_area; Gtk::DrawingArea meter_ticks1_area; Gtk::DrawingArea meter_ticks2_area; + + Gtk::Alignment meter_align; + Gtk::Alignment peak_align; + Gtk::HBox peakbx; + Gtk::HBox btnbox; + ArdourButton peak_display; + std::vector _types; + float max_peak; + bool _has_midi; + LevelMeter *level_meter; void meter_changed (); @@ -100,6 +107,9 @@ class MeterStrip : public Gtk::VBox, public RouteUI void strip_property_changed (const PBD::PropertyChange&); void meter_configuration_changed (ARDOUR::ChanCount); + static int max_pattern_metric_size; // == FastMeter::max_pattern_metric_size + + bool peak_button_release (GdkEventButton*); }; #endif /* __ardour_mixer_strip__ */