debug instrumentation for locate time
[ardour.git] / libs / ardour / beats_frames_converter.cc
index 94042b1b03c0ae84ccece34fa4eaefc6f2464223..f35e2c757ae2a82aed10fdf3a95da41d4c92d5c2 100644 (file)
 
 namespace ARDOUR {
 
-/** Takes a positive duration in beats and considers it as a distance from the origin
+/** Takes a positive duration in quarter-note 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
+BeatsFramesConverter::to (Evoral::Beats beats) const
 {
-       if (beats < 0) {
+       if (beats < Evoral::Beats()) {
                std::cerr << "negative beats passed to BFC: " << beats << std::endl;
                PBD::stacktrace (std::cerr, 30);
+               return 0;
        }
-       assert (beats >= 0);
-       framecnt_t r = _tempo_map.framepos_plus_beats (_origin_b, beats) - _origin_b;
-       return r;
+       return _tempo_map.framepos_plus_qn (_origin_b, beats) - _origin_b;
 }
 
 /** Takes a duration in frames and considers it as a distance from the origin
- *  supplied to the constructor.  Returns the equivalent number of beats,
+ *  supplied to the constructor.  Returns the equivalent number of quarter-note beats,
  *  taking tempo changes into account.
  */
-double
+Evoral::Beats
 BeatsFramesConverter::from (framepos_t frames) const
 {
-       double b = _tempo_map.framewalk_to_beats (_origin_b, frames);
-       return b;
+       return _tempo_map.framewalk_to_qn (_origin_b, frames);
+}
+
+/** As above, but with quarter-note beats in double instead (for GUI). */
+framepos_t
+DoubleBeatsFramesConverter::to (double beats) const
+{
+       if (beats < 0.0) {
+               std::cerr << "negative beats passed to BFC: " << beats << std::endl;
+               PBD::stacktrace (std::cerr, 30);
+               return 0;
+       }
+       return _tempo_map.framepos_plus_qn (_origin_b, Evoral::Beats(beats)) - _origin_b;
+}
+
+/** As above, but with quarter-note beats in double instead (for GUI). */
+double
+DoubleBeatsFramesConverter::from (framepos_t frames) const
+{
+       return _tempo_map.framewalk_to_qn (_origin_b, frames).to_double();
 }
 
 } /* namespace ARDOUR */