new tempo handling from drmoore; don't follow playhead when doing requested_return...
[ardour.git] / libs / ardour / ardour / region.h
index 7c99cf9d1dd4cb21f35bfa4dd3b611666592a53d..3aae8c47677fd826e14caa9b1a2b8612049d2b75 100644 (file)
@@ -90,11 +90,17 @@ class Region : public PBD::StatefulDestructible, public boost::enable_shared_fro
        nframes_t length()    const { return _length; }
        layer_t   layer ()    const { return _layer; }
 
+       /* these two are valid ONLY during a StateChanged signal handler */
+
+       nframes_t last_position() const { return _last_position; }
+       nframes_t last_length() const { return _last_length; }
+
        nframes64_t ancestral_start () const { return _ancestral_start; }
        nframes64_t ancestral_length () const { return _ancestral_length; }
        float stretch() const { return _stretch; }
+       float shift() const { return _shift; }
 
-       void set_ancestral_data (nframes64_t start, nframes64_t length, float stretch);
+       void set_ancestral_data (nframes64_t start, nframes64_t length, float stretch, float shift);
 
        nframes_t sync_offset(int& dir) const;
        nframes_t sync_position() const;
@@ -142,7 +148,7 @@ class Region : public PBD::StatefulDestructible, public boost::enable_shared_fro
        void set_position (nframes_t, void *src);
        void set_position_on_top (nframes_t, void *src);
        void special_set_position (nframes_t);
-       void nudge_position (long, void *src);
+       void nudge_position (nframes64_t, void *src);
 
        bool at_natural_position () const;
        void move_to_natural_position (void *src);
@@ -204,16 +210,18 @@ class Region : public PBD::StatefulDestructible, public boost::enable_shared_fro
        void first_edit ();
        
        virtual bool verify_start (nframes_t) = 0;
-       virtual bool verify_start_and_length (nframes_t, nframes_t) = 0;
+       virtual bool verify_start_and_length (nframes_t, nframes_t&) = 0;
        virtual bool verify_start_mutable (nframes_t&_start) = 0;
-       virtual bool verify_length (nframes_t) = 0;
+       virtual bool verify_length (nframes_t&) = 0;
        virtual void recompute_at_start () = 0;
        virtual void recompute_at_end () = 0;
        
        
        nframes_t               _start;
        nframes_t               _length;
+       nframes_t               _last_length;
        nframes_t               _position;
+       nframes_t               _last_position;
        Flag                    _flags;
        nframes_t               _sync_position;
        layer_t                 _layer;
@@ -228,6 +236,7 @@ class Region : public PBD::StatefulDestructible, public boost::enable_shared_fro
        nframes64_t             _ancestral_start;
        nframes64_t             _ancestral_length;
        float                   _stretch;
+       float                   _shift;
 };
 
 } /* namespace ARDOUR */