Tempo ramps - consolidate meter dragging code.
[ardour.git] / libs / ardour / ardour / tempo.h
index f3b94e05ee8e9f9f25127365d6245119a302b3fc..5416ad3462b7b01a9f12b589cd2b76413b425960 100644 (file)
@@ -374,14 +374,14 @@ class LIBARDOUR_API TempoMap : public PBD::StatefulDestructible
        const MeterSection& meter_section_at_beat (double beat) const;
 
 
-       /** add a tempo section locked to pls. ignored values are set in recompute_tempos()
+       /** add a tempo section locked to pls. ignored values will be set in recompute_tempos()
         * @param pulse pulse position of new section. ignored if pls == AudioTime
         * @param frame frame position of new section. ignored if pls == MusicTime
         * @param type type of new tempo section (Ramp, Constant)
         */
        TempoSection* add_tempo (const Tempo&, const double& pulse, const framepos_t& frame, TempoSection::Type type, PositionLockStyle pls);
 
-       /** add an meter section locked to pls.. ignored values are set in recompute_meters()
+       /** add an meter section locked to pls.. ignored values will be set in recompute_meters()
         * @param beat beat position of new section
         * @param where bbt position of new section
         * @param frame frame position of new section. ignored if pls == MusicTime
@@ -391,19 +391,17 @@ class LIBARDOUR_API TempoMap : public PBD::StatefulDestructible
        void remove_tempo (const TempoSection&, bool send_signal);
        void remove_meter (const MeterSection&, bool send_signal);
 
-       framepos_t predict_tempo_frame (TempoSection* section, const Timecode::BBT_Time& bbt);
-       double predict_tempo_pulse (TempoSection* section, const Timecode::BBT_Time& bbt);
-
        void replace_tempo (const TempoSection&, const Tempo&, const double& pulse, const framepos_t& frame
                            , TempoSection::Type type, PositionLockStyle pls);
 
        void replace_meter (const MeterSection&, const Meter&, const Timecode::BBT_Time& where, const framepos_t& frame
                            , PositionLockStyle pls);
 
-       void gui_move_tempo_frame (TempoSection*, const framepos_t& frame);
-       void gui_move_tempo_beat (TempoSection*, const double& beat);
-       void gui_move_meter_frame (MeterSection*, const framepos_t& frame);
-       void gui_move_meter_bbt (MeterSection*, const Timecode::BBT_Time& bbt);
+       std::pair<double, framepos_t> predict_tempo_position (TempoSection* section, const Timecode::BBT_Time& bbt);
+
+       void gui_move_tempo (TempoSection*, const std::pair<double, framepos_t>& pulse);
+       void gui_move_meter (MeterSection*, const framepos_t& frame);
+
        bool gui_change_tempo (TempoSection*, const Tempo& bpm);
        void gui_dilate_tempo (TempoSection* tempo, const framepos_t& frame, const framepos_t& end_frame, const double& pulse);
 
@@ -481,6 +479,7 @@ private:
 
        bool check_solved (const Metrics& metrics) const;
        bool set_active_tempos (const Metrics& metrics, const framepos_t& frame);
+
        bool solve_map_frame (Metrics& metrics, TempoSection* section, const framepos_t& frame);
        bool solve_map_pulse (Metrics& metrics, TempoSection* section, const double& pulse);
        bool solve_map_frame (Metrics& metrics, MeterSection* section, const framepos_t& frame);