summaryrefslogtreecommitdiff
path: root/gtk2_ardour/stripable_time_axis.h
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2017-06-09 14:48:33 +0200
committerRobin Gareus <robin@gareus.org>2017-06-15 16:06:32 +0200
commitaf6941ac3409167cc7e4eb799035fbcdc9e835dd (patch)
tree027c6de093e8b49d041e1980b40f6feb32f121bd /gtk2_ardour/stripable_time_axis.h
parent5957a4619ae06158dda68f92f346fbb26d7bb724 (diff)
Prepare VCA Automation Lanes -- refactor TAV
* add an abstract StripableTimeAxisView (Route TAV + VCA TAV) * move common strip-methods into STAV * Add Automation Lanes to VCA TAV * Allow ATAV without Automatable for VCA Controls
Diffstat (limited to 'gtk2_ardour/stripable_time_axis.h')
-rw-r--r--gtk2_ardour/stripable_time_axis.h83
1 files changed, 83 insertions, 0 deletions
diff --git a/gtk2_ardour/stripable_time_axis.h b/gtk2_ardour/stripable_time_axis.h
new file mode 100644
index 0000000000..4734c1bf85
--- /dev/null
+++ b/gtk2_ardour/stripable_time_axis.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2017 Robin Gareus <robin@gareus.org>
+ * Copyright (C) 2016 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __ardour_stripable_time_axis_h__
+#define __ardour_stripable_time_axis_h__
+
+#include "automation_time_axis.h"
+#include "time_axis_view.h"
+
+class StripableTimeAxisView : public TimeAxisView
+{
+public:
+ StripableTimeAxisView (PublicEditor&, ARDOUR::Session*, ArdourCanvas::Canvas& canvas);
+ virtual ~StripableTimeAxisView ();
+
+ void set_stripable (boost::shared_ptr<ARDOUR::Stripable>);
+ boost::shared_ptr<ARDOUR::Stripable> stripable() const { return _stripable; }
+
+ typedef std::map<Evoral::Parameter, boost::shared_ptr<AutomationTimeAxisView> > AutomationTracks;
+ const AutomationTracks& automation_tracks() const { return _automation_tracks; }
+ virtual Gtk::CheckMenuItem* automation_child_menu_item (Evoral::Parameter);
+
+ virtual void create_automation_child (const Evoral::Parameter& param, bool show) = 0;
+ boost::shared_ptr<AutomationTimeAxisView> automation_child(Evoral::Parameter param);
+
+ void request_redraw ();
+
+protected:
+ void reset_samples_per_pixel ();
+ virtual void set_samples_per_pixel (double);
+ void add_automation_child(Evoral::Parameter param, boost::shared_ptr<AutomationTimeAxisView> track, bool show=true);
+
+ virtual void create_gain_automation_child (const Evoral::Parameter &, bool) = 0;
+ virtual void create_trim_automation_child (const Evoral::Parameter &, bool) = 0;
+ virtual void create_mute_automation_child (const Evoral::Parameter &, bool) = 0;
+
+ void automation_track_hidden (Evoral::Parameter param);
+
+ void update_gain_track_visibility ();
+ void update_trim_track_visibility ();
+ void update_mute_track_visibility ();
+
+ virtual void show_all_automation (bool apply_to_selection = false);
+ virtual void show_existing_automation (bool apply_to_selection = false);
+ virtual void hide_all_automation (bool apply_to_selection = false);
+
+ boost::shared_ptr<ARDOUR::Stripable> _stripable;
+
+ boost::shared_ptr<AutomationTimeAxisView> gain_track;
+ boost::shared_ptr<AutomationTimeAxisView> trim_track;
+ boost::shared_ptr<AutomationTimeAxisView> mute_track;
+
+ typedef std::map<Evoral::Parameter, Gtk::CheckMenuItem*> ParameterMenuMap;
+ /** parameter -> menu item map for the main automation menu */
+ ParameterMenuMap _main_automation_menu_map;
+
+ Gtk::CheckMenuItem* gain_automation_item;
+ Gtk::CheckMenuItem* trim_automation_item;
+ Gtk::CheckMenuItem* mute_automation_item;
+
+ AutomationTracks _automation_tracks;
+
+ ArdourCanvas::Canvas& parent_canvas;
+ bool no_redraw;
+};
+
+#endif /* __ardour_stripable_time_axis_h__ */