summaryrefslogtreecommitdiff
path: root/gtk2_ardour/level_meter.h
diff options
context:
space:
mode:
authorDoug McLain <doug@nostar.net>2007-12-20 23:25:19 +0000
committerDoug McLain <doug@nostar.net>2007-12-20 23:25:19 +0000
commitb42213bb04031b954eda4f9b39c5f183bfb96ede (patch)
treeae68422474fb07d4d48486294cbc365cea8fc611 /gtk2_ardour/level_meter.h
parent8c2715ce2c82873ce77319e918b01dbb9e8685b8 (diff)
Port level meters to trunk
git-svn-id: svn://localhost/ardour2/trunk@2802 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/level_meter.h')
-rw-r--r--gtk2_ardour/level_meter.h109
1 files changed, 109 insertions, 0 deletions
diff --git a/gtk2_ardour/level_meter.h b/gtk2_ardour/level_meter.h
new file mode 100644
index 0000000000..dfae72a576
--- /dev/null
+++ b/gtk2_ardour/level_meter.h
@@ -0,0 +1,109 @@
+/*
+ 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.
+
+*/
+
+#ifndef __ardour_gtk_track_meter_h__
+#define __ardour_gtk_track_meter_h__
+
+#include <vector>
+#include <map>
+
+#include <gtkmm/box.h>
+#include <gtkmm/adjustment.h>
+#include <gtkmm/frame.h>
+#include <gtkmm/eventbox.h>
+#include <gtkmm/button.h>
+#include <gtkmm/table.h>
+#include <gtkmm/drawingarea.h>
+
+#include <ardour/types.h>
+
+#include <gtkmm2ext/click_box.h>
+#include <gtkmm2ext/focus_entry.h>
+#include <gtkmm2ext/slider_controller.h>
+
+#include "enums.h"
+
+namespace ARDOUR {
+ class IO;
+ class Session;
+ class Route;
+ class RouteGroup;
+}
+namespace Gtkmm2ext {
+ class FastMeter;
+ class BarController;
+}
+namespace Gtk {
+ class Menu;
+}
+
+class LevelMeter : public Gtk::HBox
+{
+ public:
+ LevelMeter (boost::shared_ptr<ARDOUR::IO>, ARDOUR::Session&);
+ ~LevelMeter ();
+
+ void update_gain_sensitive ();
+
+ void update_meters ();
+ void update_meters_falloff ();
+ void clear_meters ();
+ void hide_meters ();
+ void setup_meters (int len=0);
+
+ private:
+
+ //friend class MixerStrip;
+ boost::shared_ptr<ARDOUR::IO> _io;
+ ARDOUR::Session& _session;
+
+ Width _width;
+
+ struct MeterInfo {
+ Gtkmm2ext::FastMeter *meter;
+ gint16 width;
+ int length;
+ bool packed;
+
+ MeterInfo() {
+ meter = 0;
+ width = 0;
+ length = 0;
+ packed = false;
+ }
+ };
+
+ static const guint16 regular_meter_width = 3;
+ static const guint16 thin_meter_width = 2;
+ vector<MeterInfo> meters;
+
+ //Gtk::HBox meter_packer;
+
+ void hide_all_meters ();
+
+ void parameter_changed (const char*);
+
+ void on_theme_changed ();
+ bool style_changed;
+ bool color_changed;
+ void color_handler ();
+};
+
+#endif /* __ardour_gtk_track_meter_h__ */
+