mechanism to allow Track (or other Route-derived type) to add its own processors...
[ardour.git] / gtk2_ardour / audio_clock.h
index ffd4d6b93a6f52cfc7fa81807ea90dc66c7a7e61..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;
@@ -144,9 +147,6 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
        bool style_resets_first;
        int layout_height;
        int layout_width;
-       int info_height;
-       int upper_height;
-       double mode_based_info_ratio;
        double corner_radius;
        uint32_t font_size;
 
@@ -202,7 +202,6 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
        void on_style_changed (const Glib::RefPtr<Gtk::Style>&);
        void on_size_request (Gtk::Requisition* req);
        bool on_motion_notify_event (GdkEventMotion *ev);
-       void on_size_allocate (Gtk::Allocation&);
        bool on_focus_out_event (GdkEventFocus*);
 
        void set_slave_info ();
@@ -210,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&);
 
@@ -227,7 +227,6 @@ class AudioClock : public CairoWidget, public ARDOUR::SessionHandlePtr
 
        void session_configuration_changed (std::string);
        void session_property_changed (const PBD::PropertyChange&);
-       void metric_position_changed ();
 
        Field index_to_field () const;