summaryrefslogtreecommitdiff
path: root/gtk2_ardour/gain_meter.h
diff options
context:
space:
mode:
authorTaybin Rutkin <taybin@taybin.com>2005-09-25 18:42:24 +0000
committerTaybin Rutkin <taybin@taybin.com>2005-09-25 18:42:24 +0000
commit209d967b1bb80a9735d690d8f4f0455ecb9970ca (patch)
tree9d76ddcd7c1ac9d91bb2b1a33d31b66ce4ded5de /gtk2_ardour/gain_meter.h
parente4b9aed743fc765219ac775905a221c017c88fba (diff)
Initial import of gtk2_ardour.
git-svn-id: svn://localhost/trunk/ardour2@24 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/gain_meter.h')
-rw-r--r--gtk2_ardour/gain_meter.h156
1 files changed, 156 insertions, 0 deletions
diff --git a/gtk2_ardour/gain_meter.h b/gtk2_ardour/gain_meter.h
new file mode 100644
index 0000000000..06ae0dafd9
--- /dev/null
+++ b/gtk2_ardour/gain_meter.h
@@ -0,0 +1,156 @@
+/*
+ Copyright (C) 2002 Paul Davis
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+ $Id$
+*/
+
+#ifndef __ardour_gtk_gain_meter_h__
+#define __ardour_gtk_gain_meter_h__
+
+#include <vector>
+
+#include <ardour/types.h>
+
+#include <gtk--.h>
+#include <gtkmmext/slider_controller.h>
+#include <gtkmmext/click_box.h>
+
+#include "enums.h"
+
+namespace ARDOUR {
+ class IO;
+ class Session;
+ class Route;
+ class RouteGroup;
+}
+namespace Gtkmmext {
+ class FastMeter;
+ class BarController;
+ class Pix;
+}
+
+class GainMeter : public Gtk::VBox
+{
+ public:
+ GainMeter (ARDOUR::IO&, ARDOUR::Session&);
+ ~GainMeter ();
+
+ void update_gain_sensitive ();
+
+ void update_meters ();
+ void update_meters_falloff ();
+
+ void effective_gain_display ();
+
+ void set_width (Width);
+ void setup_meters ();
+
+ void set_meter_strip_name (string name);
+ void set_fader_name (string name);
+
+ private:
+ ARDOUR::IO& _io;
+ ARDOUR::Session& _session;
+
+ bool ignore_toggle;
+
+ Gtkmmext::VSliderController *gain_slider;
+ Gtk::Adjustment gain_adjustment;
+ Gtk::Frame gain_display_frame;
+ Gtkmmext::ClickBox gain_display;
+ Gtk::Frame peak_display_frame;
+ Gtk::EventBox peak_display;
+ Gtk::Label peak_display_label;
+ Gtk::Button gain_unit_button;
+ Gtk::Label gain_unit_label;
+ Gtk::HBox gain_display_box;
+ Gtk::HBox fader_box;
+ Gtk::DrawingArea meter_metric_area;
+ Gtk::Button meter_point_button;
+ Gtk::Label meter_point_label;
+ Gtk::Table top_table;
+ Width _width;
+
+ gint meter_metrics_expose (GdkEventExpose *);
+
+ static void _gain_printer (char buf[32], Gtk::Adjustment&, void *);
+ void gain_printer (char buf[32], Gtk::Adjustment&);
+
+ struct MeterInfo {
+ Gtkmmext::FastMeter *meter;
+ gint16 width;
+ bool packed;
+
+ MeterInfo() {
+ meter = 0;
+ width = 0;
+ packed = false;
+ }
+ };
+
+ static const guint16 regular_meter_width = 5;
+ static const guint16 thin_meter_width = 2;
+ vector<MeterInfo> meters;
+ float max_peak;
+
+
+ Gtk::HBox hbox;
+ Gtk::HBox meter_packer;
+
+ void gain_adjusted ();
+ void gain_changed (void *);
+
+ void meter_point_clicked ();
+ void meter_changed (void *);
+ void gain_unit_changed ();
+
+ void hide_all_meters ();
+
+ gint meter_button_press (GdkEventButton*, uint32_t);
+ gint meter_button_release (GdkEventButton*, uint32_t);
+
+ gint peak_button_release (GdkEventButton*);
+
+ Gtk::Menu* meter_menu;
+ void popup_meter_menu (GdkEventButton*);
+
+ gint start_gain_touch (GdkEventButton*);
+ gint end_gain_touch (GdkEventButton*);
+
+ gint entry_focus_event (GdkEventFocus* ev);
+
+ void set_mix_group_meter_point (ARDOUR::Route&, ARDOUR::MeterPoint);
+ void set_meter_point (ARDOUR::Route&, ARDOUR::MeterPoint);
+ gint meter_release (GdkEventButton*);
+ gint meter_press (GdkEventButton*);
+ bool wait_for_release;
+ ARDOUR::MeterPoint old_meter_point;
+
+ void meter_hold_changed();
+
+ void reset_peak_display ();
+ void reset_group_peak_display (ARDOUR::RouteGroup*);
+
+ static SigC::Signal0<void> ResetAllPeakDisplays;
+ static SigC::Signal1<void,ARDOUR::RouteGroup*> ResetGroupPeakDisplays;
+
+ static Gtkmmext::Pix* slider_pix;
+ static int setup_slider_pix ();
+};
+
+#endif /* __ardour_gtk_gain_meter_h__ */
+