From 39248d682d706eb8d59142e3577671515925030b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 27 May 2022 15:56:13 -0600 Subject: [PATCH] add ::time_domain() methods to Playlist and Region These are heuristics based on data type for now. That may evolve over time, but it's a reasonable place to begin --- libs/ardour/ardour/playlist.h | 2 ++ libs/ardour/ardour/region.h | 1 + libs/ardour/playlist.cc | 13 +++++++++++++ libs/ardour/region.cc | 19 +++++++++++++++++++ 4 files changed, 35 insertions(+) diff --git a/libs/ardour/ardour/playlist.h b/libs/ardour/ardour/playlist.h index 18953812b3..69c2283c61 100644 --- a/libs/ardour/ardour/playlist.h +++ b/libs/ardour/ardour/playlist.h @@ -112,6 +112,8 @@ public: bool set_name (const std::string& str); void set_region_ownership (); + Temporal::TimeDomain time_domain() const; + /*playlist group IDs (pgroup_id) is a group identifier that is implicitly * or explicitly assigned to playlists so they can be associated with each other. * diff --git a/libs/ardour/ardour/region.h b/libs/ardour/ardour/region.h index 04da097d22..0477c762bc 100644 --- a/libs/ardour/ardour/region.h +++ b/libs/ardour/ardour/region.h @@ -108,6 +108,7 @@ public: bool set_name (const std::string& str); const DataType& data_type () const { return _type; } + Temporal::TimeDomain time_domain() const; /** How the region parameters play together: * diff --git a/libs/ardour/playlist.cc b/libs/ardour/playlist.cc index 692ba17fe9..cfcd4b697c 100644 --- a/libs/ardour/playlist.cc +++ b/libs/ardour/playlist.cc @@ -3446,3 +3446,16 @@ Playlist::rdiff_and_add_command (Session* session) session->add_commands (cmds); session->add_command (new StatefulDiffCommand (shared_from_this ())); } + +Temporal::TimeDomain +Playlist::time_domain() const +{ + switch (_type) { + case DataType::AUDIO: + return Temporal::AudioTime; + default: + break; + } + + return Temporal::BeatTime; +} diff --git a/libs/ardour/region.cc b/libs/ardour/region.cc index f8a04648b9..d61a227f2c 100644 --- a/libs/ardour/region.cc +++ b/libs/ardour/region.cc @@ -2068,3 +2068,22 @@ Region::region_relative_position (timepos_t const & p) const */ return p.earlier (position()); } + +Temporal::TimeDomain +Region::time_domain() const +{ + boost::shared_ptr pl (_playlist.lock()); + + if (pl) { + return pl->time_domain (); + } + + switch (_type) { + case DataType::AUDIO: + return Temporal::AudioTime; + default: + break; + } + + return Temporal::BeatTime; +}