globally change all use of "frame" to refer to audio into "sample".
[ardour.git] / libs / canvas / canvas / canvas.h
index 2f506fc3c0f625bdc506869423102e4b4f54ecc8..d1521593cd8c07b5dd23edf1f2a7e4d86cba8a18 100644 (file)
@@ -87,13 +87,19 @@ public:
 
        void render (Rect const &, Cairo::RefPtr<Cairo::Context> const &) const;
 
+       void prepare_for_render (Rect const &) const;
+
+       gint64 get_last_render_start_timestamp () const { return _last_render_start_timestamp; }
+
+       gint64 get_microseconds_since_render_start () const;
+
        /** @return root group */
        Item* root () {
                return &_root;
        }
 
-       void set_background_color (ArdourCanvas::Color);
-       ArdourCanvas::Color background_color() const { return _bg_color; }
+       void set_background_color (Gtkmm2ext::Color);
+       Gtkmm2ext::Color background_color() const { return _bg_color; }
 
        /** Called when an item is being destroyed */
        virtual void item_going_away (Item *, Rect) {}
@@ -164,8 +170,10 @@ public:
        virtual Glib::RefPtr<Pango::Context> get_pango_context() = 0;
 
 protected:
-       Root  _root;
-       Color _bg_color;
+       Root             _root;
+       Gtkmm2ext::Color _bg_color;
+
+       mutable gint64 _last_render_start_timestamp;
 
        static uint32_t tooltip_timeout_msecs;
 
@@ -206,6 +214,9 @@ public:
        void start_tooltip_timeout (Item*);
        void stop_tooltip_timeout ();
 
+       void queue_draw ();
+       void queue_draw_area (int x, int y, int width, int height);
+
        Glib::RefPtr<Pango::Context> get_pango_context();
 
        void render (Cairo::RefPtr<Cairo::Context> const & ctx, cairo_rectangle_t* r)
@@ -214,6 +225,8 @@ public:
                Canvas::render (rect, ctx);
        }
 
+       void prepare_for_render () const;
+
        uint32_t background_color() { return Canvas::background_color (); }
 
 protected: