9a9339b90b
Replace the ...-with-tail variant actions with a pure tail_control module + a docked-panel footer toggle (Off/Auto/Manual) read by CAPTURE_ITEM/TRACK. Default None (byte-identical); Manual fixed 2s, in-memory session lifetime. Tail mechanism unchanged; retired the variant ids.
34 lines
1.1 KiB
C++
34 lines
1.1 KiB
C++
// tail_control — pure implementation. See tail_control.h. NO REAPER / SWELL / vendor.
|
|
|
|
#include "tail_control.h"
|
|
|
|
#include <algorithm>
|
|
|
|
namespace reasampler {
|
|
|
|
TailMode cycleTailMode(TailMode current) {
|
|
switch (current) {
|
|
case TailMode::None: return TailMode::Auto;
|
|
case TailMode::Auto: return TailMode::Manual;
|
|
case TailMode::Manual: return TailMode::None;
|
|
}
|
|
return TailMode::None; // unreachable for a valid enum; fail to the safe default
|
|
}
|
|
|
|
double clampManualMs(double manualMs) {
|
|
// Same runaway guard the pure tailRenderSettingsFor applies to Manual: floor a
|
|
// negative request to 0, cap at the 8 s ceiling.
|
|
return std::clamp(manualMs, 0.0, kMaxTailMs);
|
|
}
|
|
|
|
std::string tailToggleLabel(const TailSetting& setting) {
|
|
switch (setting.mode) {
|
|
case TailMode::None: return "Tail: Off";
|
|
case TailMode::Auto: return "Tail: Auto";
|
|
case TailMode::Manual: return "Tail: Manual";
|
|
}
|
|
return "Tail: Off"; // unreachable for a valid enum; fail to the safe default
|
|
}
|
|
|
|
} // namespace reasampler
|