refactor MIDISceneChange color property addition by moving it into SceneChange to...
[ardour.git] / libs / ardour / beats_frames_converter.cc
index 59c0bb28962ffe10e954e9ed68ced4dbc0de6b35..94042b1b03c0ae84ccece34fa4eaefc6f2464223 100644 (file)
     $Id: midiregion.h 733 2006-08-01 17:19:38Z drobilla $
 */
 
+#include "pbd/stacktrace.h"
+
 #include "ardour/beats_frames_converter.h"
 #include "ardour/tempo.h"
 
 namespace ARDOUR {
 
-framecnt_t
+/** Takes a positive duration in beats and considers it as a distance from the origin
+ *  supplied to the constructor.  Returns the equivalent number of frames,
+ *  taking tempo changes into account.
+ */
+framepos_t
 BeatsFramesConverter::to (double beats) const
 {
+       if (beats < 0) {
+               std::cerr << "negative beats passed to BFC: " << beats << std::endl;
+               PBD::stacktrace (std::cerr, 30);
+       }
        assert (beats >= 0);
-
-       return _tempo_map.framepos_plus_bbt (_origin_b, Timecode::BBT_Time(beats)) - _origin_b;
+       framecnt_t r = _tempo_map.framepos_plus_beats (_origin_b, beats) - _origin_b;
+       return r;
 }
 
+/** Takes a duration in frames and considers it as a distance from the origin
+ *  supplied to the constructor.  Returns the equivalent number of beats,
+ *  taking tempo changes into account.
+ */
 double
-BeatsFramesConverter::from (framecnt_t frames) const
+BeatsFramesConverter::from (framepos_t frames) const
 {
-       return _tempo_map.framewalk_to_beats (_origin_b, frames);
+       double b = _tempo_map.framewalk_to_beats (_origin_b, frames);
+       return b;
 }
 
 } /* namespace ARDOUR */