mechanism to allow Track (or other Route-derived type) to add its own processors...
[ardour.git] / gtk2_ardour / audio_clock.h
index 6b8c31d5ad39db26f66f84d84d5360c1504d8293..9ff8221229c59f7fd7396b56ee16044590c6ed5d 100644 (file)
@@ -34,7 +34,7 @@
 #include "ardour/session_handle.h"
 
 #include "gtkmm2ext/cairo_widget.h"
-#include "ardour_button.h"
+#include "widgets/ardour_button.h"
 
 namespace ARDOUR {
        class Session;
@@ -58,6 +58,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
        Mode mode() const { return _mode; }
        void set_off (bool yn);
        bool off() const { return _off; }
+       bool on() const { return !_off; }
        void set_widget_name (const std::string& name);
        void set_active_state (Gtkmm2ext::ActiveState s);
        void set_editable (bool yn);
@@ -81,8 +82,8 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
        void set_session (ARDOUR::Session *s);
        void set_negative_allowed (bool yn);
 
-       ArdourButton* left_btn () { return &_left_btn; }
-       ArdourButton* right_btn () { return &_right_btn; }
+       ArdourWidgets::ArdourButton* left_btn () { return &_left_btn; }
+       ArdourWidgets::ArdourButton* right_btn () { return &_right_btn; }
 
        /** Alter cairo scaling during rendering.
         *
@@ -102,7 +103,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
        static std::vector<AudioClock*> clocks;
 
        protected:
-       void render (cairo_t*, cairo_rectangle_t*);
+       void render (Cairo::RefPtr<Cairo::Context> const&, cairo_rectangle_t*);
        bool get_is_duration () const { return is_duration; } ;
 
        virtual void build_ops_menu ();
@@ -111,8 +112,8 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
        bool on_button_press_event (GdkEventButton *ev);
        bool on_button_release_event(GdkEventButton *ev);
 
-       ArdourButton _left_btn;
-       ArdourButton _right_btn;
+       ArdourWidgets::ArdourButton _left_btn;
+       ArdourWidgets::ArdourButton _right_btn;
 
        private:
        Mode             _mode;
@@ -129,6 +130,8 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
        bool             _negative_allowed;
        bool             edit_is_negative;
 
+       framepos_t       _limit_pos;
+
        Glib::RefPtr<Pango::Layout> _layout;
 
        bool         _with_info;
@@ -206,6 +209,7 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
        void set_bbt (framepos_t, ARDOUR::framecnt_t, bool);
        void set_minsec (framepos_t, bool);
        void set_frames (framepos_t, bool);
+       void set_out_of_bounds (bool negative);
 
        void set_clock_dimensions (Gtk::Requisition&);