diff options
author | Doug McLain <doug@nostar.net> | 2007-12-20 23:25:19 +0000 |
---|---|---|
committer | Doug McLain <doug@nostar.net> | 2007-12-20 23:25:19 +0000 |
commit | b42213bb04031b954eda4f9b39c5f183bfb96ede (patch) | |
tree | ae68422474fb07d4d48486294cbc365cea8fc611 /gtk2_ardour/level_meter.h | |
parent | 8c2715ce2c82873ce77319e918b01dbb9e8685b8 (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.h | 109 |
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__ */ + |