From 6cf2659f8bb6b4f18fb47c98f0f089a8782f94bb Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 11 Aug 2023 15:35:12 +0200 Subject: [PATCH] Add Location flags to define sections --- libs/ardour/ardour/location.h | 3 +++ libs/ardour/enums.cc | 1 + libs/ardour/location.cc | 11 +++++++++++ libs/ardour/luabindings.cc | 1 + 4 files changed, 16 insertions(+) diff --git a/libs/ardour/ardour/location.h b/libs/ardour/ardour/location.h index a5f1190c2c..75eca45970 100644 --- a/libs/ardour/ardour/location.h +++ b/libs/ardour/ardour/location.h @@ -67,6 +67,7 @@ public: IsClockOrigin = 0x200, IsXrun = 0x400, IsCueMarker = 0x800, + IsSection = 0x1000, }; Location (Session &); @@ -108,6 +109,7 @@ public: void set_is_clock_origin (bool yn, void* src); void set_skip (bool yn); void set_skipping (bool yn); + void set_section (bool yn); bool is_auto_punch () const { return _flags & IsAutoPunch; } bool is_auto_loop () const { return _flags & IsAutoLoop; } @@ -121,6 +123,7 @@ public: bool is_clock_origin() const { return _flags & IsClockOrigin; } bool is_skipping() const { return (_flags & IsSkip) && (_flags & IsSkipping); } bool is_xrun() const { return _flags & IsXrun; } + bool is_section() const { return _flags & IsSection; } bool matches (Flags f) const { return _flags & f; } /* any range with start < end -- not a marker */ diff --git a/libs/ardour/enums.cc b/libs/ardour/enums.cc index 7aace4ea8f..1131f33416 100644 --- a/libs/ardour/enums.cc +++ b/libs/ardour/enums.cc @@ -595,6 +595,7 @@ setup_enum_writer () REGISTER_CLASS_ENUM (Location, IsClockOrigin); REGISTER_CLASS_ENUM (Location, IsXrun); REGISTER_CLASS_ENUM (Location, IsCueMarker); + REGISTER_CLASS_ENUM (Location, IsSection); REGISTER_BITS (_Location_Flags); REGISTER_CLASS_ENUM (Track, NoFreeze); diff --git a/libs/ardour/location.cc b/libs/ardour/location.cc index 1c46b63319..afee4afbe9 100644 --- a/libs/ardour/location.cc +++ b/libs/ardour/location.cc @@ -575,6 +575,17 @@ Location::set_skipping (bool yn) } } +void +Location::set_section (bool yn) +{ + if (is_session_range ()) { + return; + } + if (set_flag_internal (yn, IsSection)) { + emit_signal (Flag); /* EMIT SIGNAL */ + } +} + void Location::set_auto_punch (bool yn, void*) { diff --git a/libs/ardour/luabindings.cc b/libs/ardour/luabindings.cc index 905ed66c9b..3edc9ff299 100644 --- a/libs/ardour/luabindings.cc +++ b/libs/ardour/luabindings.cc @@ -3003,6 +3003,7 @@ LuaBindings::common (lua_State* L) .addConst ("IsHidden", ARDOUR::Location::Flags(Location::IsHidden)) .addConst ("IsCDMarker", ARDOUR::Location::Flags(Location::IsCDMarker)) .addConst ("IsCueMarker", ARDOUR::Location::Flags(Location::IsCueMarker)) + .addConst ("IsSection", ARDOUR::Location::Flags(Location::IsSection)) .addConst ("IsRangeMarker", ARDOUR::Location::Flags(Location::IsRangeMarker)) .addConst ("IsSessionRange", ARDOUR::Location::Flags(Location::IsSessionRange)) .addConst ("IsSkip", ARDOUR::Location::Flags(Location::IsSkip))