Optimize automation-event process splitting
[ardour.git] / gtk2_ardour / tempo_curve.h
index be378078c7ddc6833fe1b317e3f66ac24cf45a03..55ce76db3a3912dc4aac482c955f5f80a4991354 100644 (file)
@@ -9,8 +9,9 @@
 #include "ardour/ardour.h"
 #include "pbd/signals.h"
 
-#include "canvas/fwd.h"
 #include "canvas/types.h"
+#include "canvas/framed_curve.h"
+#include "canvas/text.h"
 
 namespace ARDOUR {
        class TempoSection;
@@ -19,8 +20,8 @@ class PublicEditor;
 
 class TempoCurve : public sigc::trackable
 {
-  public:
-       TempoCurve (PublicEditor& editor, ArdourCanvas::Container &, guint32 rgba, ARDOUR::TempoSection& temp, framepos_t frame, bool handle_events);
+public:
+       TempoCurve (PublicEditor& editor, ArdourCanvas::Container &, guint32 rgba, ARDOUR::TempoSection& temp, samplepos_t sample, bool handle_events);
        ~TempoCurve ();
 
        static PBD::Signal1<void,TempoCurve*> CatchDeletion;
@@ -30,9 +31,9 @@ class TempoCurve : public sigc::trackable
        ArdourCanvas::Item& the_item() const;
        void canvas_height_set (double);
 
-       void set_position (framepos_t lower, framepos_t upper);
+       void set_position (samplepos_t lower, samplepos_t upper);
        void set_color_rgba (uint32_t rgba);
-       framepos_t position() const { return frame_position; }
+       samplepos_t position() const { return sample_position; }
 
        ArdourCanvas::Container * get_parent() { return _parent; }
        void reparent (ArdourCanvas::Container & parent);
@@ -40,7 +41,7 @@ class TempoCurve : public sigc::trackable
        void hide ();
        void show ();
 
-       ARDOUR::TempoSection& tempo () { return _tempo; }
+       ARDOUR::TempoSection& tempo () const { return _tempo; }
 
        void set_max_tempo (const double& max) { _max_tempo = max; }
        void set_min_tempo (const double& min) { _min_tempo = min; }
@@ -51,24 +52,25 @@ protected:
        ArdourCanvas::Container* _parent;
        ArdourCanvas::Container *group;
        ArdourCanvas::Points *points;
-       ArdourCanvas::Rectangle* _background;
-       ArdourCanvas::Curve* _curve;
+       ArdourCanvas::FramedCurve* _curve;
 
        double        unit_position;
-       framepos_t    frame_position;
-       framepos_t    _end_frame;
+       samplepos_t    sample_position;
+       samplepos_t    _end_sample;
        bool         _shown;
        double       _canvas_height;
        uint32_t     _color;
 
        void reposition ();
 private:
-       double       _max_tempo;
        double       _min_tempo;
+       double       _max_tempo;
        /* disallow copy construction */
        TempoCurve (TempoCurve const &);
        TempoCurve & operator= (TempoCurve const &);
        ARDOUR::TempoSection& _tempo;
+       ArdourCanvas::Text *_start_text;
+       ArdourCanvas::Text *_end_text;
 
 };
 #endif /* __gtk_ardour_tempo_curve_h__ */