major internal plugin & processor API change:
[ardour.git] / libs / ardour / ardour / beats_frames_converter.h
index 2e170d278a74c350ec45aaecdce04d5e5b05399d..4b7169bfe7edc7b5cbe36300d49696e80e0d079b 100644 (file)
@@ -19,7 +19,9 @@
     $Id: midiregion.h 733 2006-08-01 17:19:38Z drobilla $
 */
 
+#include "evoral/Beats.hpp"
 #include "evoral/TimeConverter.hpp"
+
 #include "ardour/libardour_visibility.h"
 #include "ardour/types.h"
 
@@ -34,15 +36,35 @@ class TempoMap;
  *  from some origin (supplied to the constructor in frames), and converts
  *  them to the opposite unit, taking tempo changes into account.
  */
-class LIBARDOUR_API BeatsFramesConverter : public Evoral::TimeConverter<double,framepos_t> {
+class LIBARDOUR_API BeatsFramesConverter
+       : public Evoral::TimeConverter<Evoral::Beats,framepos_t> {
 public:
        BeatsFramesConverter (TempoMap& tempo_map, framepos_t origin)
+               : Evoral::TimeConverter<Evoral::Beats, framepos_t> (origin)
+               , _tempo_map(tempo_map)
+       {}
+
+       framepos_t    to (Evoral::Beats beats) const;
+       Evoral::Beats from (framepos_t frames) const;
+
+private:
+       TempoMap& _tempo_map;
+};
+
+/** Converter between beats and frames.  Takes distances in beats or frames
+ *  from some origin (supplied to the constructor in frames), and converts
+ *  them to the opposite unit, taking tempo changes into account.
+ */
+class LIBARDOUR_API DoubleBeatsFramesConverter
+       : public Evoral::TimeConverter<double,framepos_t> {
+public:
+       DoubleBeatsFramesConverter (TempoMap& tempo_map, framepos_t origin)
                : Evoral::TimeConverter<double, framepos_t> (origin)
                , _tempo_map(tempo_map)
        {}
 
-       framepos_t to (double beats)        const;
-       double     from (framepos_t frames) const;
+       framepos_t          to (double beats) const;
+       double from (framepos_t frames) const;
 
 private:
        TempoMap& _tempo_map;