send control now has working metering, and switches back and forth between busses...
[ardour.git] / gtk2_ardour / time_axis_view.h
index e3fbc885148b0a0f2f0dbe175626c4146fbd2f42..56e70425488dc98b548989f23dccc31434cb9a98 100644 (file)
 
 #include <gtkmm2ext/focus_entry.h>
 
-#include <pbd/stateful.h>
+#include "pbd/stateful.h"
 
-#include <ardour/types.h>
-#include <ardour/region.h>
-#include <evoral/Parameter.hpp>
+#include "ardour/types.h"
+#include "ardour/region.h"
+#include "evoral/Parameter.hpp"
 
 #include "prompter.h"
 #include "axis_view.h"
@@ -66,6 +66,7 @@ class Selection;
 class Selectable;
 class RegionView;
 class GhostRegion;
+class StreamView;
 
 /** Abstract base class for time-axis views (horizontal editor 'strips')
  *
@@ -97,6 +98,9 @@ class TimeAxisView : public virtual AxisView, public PBD::Stateful
        /** @return index of this TimeAxisView within its parent */
        int order () const { return _order; }
 
+       /** @return maximum allowable value of order */
+       static int max_order () { return _max_order; }
+
        ArdourCanvas::Group* canvas_display () { return _canvas_display; }
        ArdourCanvas::Group* canvas_background () { return _canvas_background; }
        ArdourCanvas::Group* ghost_group () { return _ghost_group; }
@@ -149,7 +153,7 @@ class TimeAxisView : public virtual AxisView, public PBD::Stateful
        virtual void set_height (uint32_t h);
        void reset_height();
 
-       TimeAxisView* covers_y_position (double y);
+       std::pair<TimeAxisView*, ARDOUR::layer_t> covers_y_position (double);
 
        /**
         * Steps through the defined heights for this TrackView.
@@ -189,8 +193,8 @@ class TimeAxisView : public virtual AxisView, public PBD::Stateful
 
        void order_selection_trims (ArdourCanvas::Item *item, bool put_start_on_top);
 
-       virtual void get_selectables (nframes_t start, nframes_t end, double top, double bot, list<Selectable*>& results);
-       virtual void get_inverted_selectables (Selection&, list<Selectable *>& results);
+       virtual void get_selectables (nframes_t start, nframes_t end, double top, double bot, std::list<Selectable*>& results);
+       virtual void get_inverted_selectables (Selection&, std::list<Selectable *>& results);
 
        void add_ghost (RegionView*);
        void remove_ghost (RegionView*);
@@ -207,6 +211,9 @@ class TimeAxisView : public virtual AxisView, public PBD::Stateful
        /* call this on the parent */
 
        virtual XMLNode* get_automation_child_xml_node (Evoral::Parameter param) { return 0; }
+
+       virtual LayerDisplay layer_display () const { return Overlaid; }
+       virtual StreamView* view () const { return 0; }
        
        typedef std::vector<boost::shared_ptr<TimeAxisView> > Children;
 
@@ -226,8 +233,8 @@ class TimeAxisView : public virtual AxisView, public PBD::Stateful
 
        uint32_t height;  /* in canvas units */
 
-       string controls_base_unselected_name;
-       string controls_base_selected_name;
+       std::string controls_base_unselected_name;
+       std::string controls_base_selected_name;
 
        bool name_entry_button_press (GdkEventButton *ev);
        bool name_entry_button_release (GdkEventButton *ev);
@@ -303,10 +310,10 @@ class TimeAxisView : public virtual AxisView, public PBD::Stateful
 
        ArdourCanvas::Group      *selection_group;
 
-       list<GhostRegion*> ghosts;
+       std::list<GhostRegion*> ghosts;
 
-       list<SelectionRect*> free_selection_rects;
-       list<SelectionRect*> used_selection_rects;
+       std::list<SelectionRect*> free_selection_rects;
+       std::list<SelectionRect*> used_selection_rects;
 
        SelectionRect* get_selection_rect(uint32_t id);
 
@@ -342,6 +349,8 @@ private:
        double _resize_drag_start;
        int32_t _resize_idle_target;
        ArdourCanvas::Group* _ghost_group;
+
+       static int const _max_order;
        
 }; /* class TimeAxisView */