2#include "trkn/tracktion.hh"
24 return plugin.getVolumeDb();
30 if (plugin.volume.isUsingDefault())
31 trkn_prepare_parameter_value (*plugin.volParam);
32 plugin.setVolumeDb (db);
38 return plugin.getSliderPos();
44 if (plugin.volume.isUsingDefault())
45 trkn_prepare_parameter_value (*plugin.volParam);
46 plugin.setSliderPos (pos);
52 return plugin.getPan();
58 if (plugin.pan.isUsingDefault())
59 trkn_prepare_parameter_value (*plugin.panParam);
67 parameter.updateFromAttachedValue();
71trkn_restore_parameter_values (
te::Edit &edit)
74 trkn_restore_parameter_value (*plugin.volParam);
75 trkn_restore_parameter_value (*plugin.panParam);
79 if (auto plugin = track->getVolumePlugin())
86template<
size_t N>
static JuceWeakReference_Selectable&
87juce_weak_reference_selectable (
const char (&mem)[N])
89 static_assert (N ==
sizeof (JuceWeakReference_Selectable));
90 return *
reinterpret_cast<JuceWeakReference_Selectable*
> (
const_cast<char*
> (mem));
93SelectableBaseref::SelectableBaseref()
95 static_assert (
sizeof (mem_) ==
sizeof (JuceWeakReference_Selectable));
96 JuceWeakReference_Selectable *
const weakref =
new (mem_) JuceWeakReference_Selectable (
nullptr);
100SelectableBaseref::~SelectableBaseref()
102 JuceWeakReference_Selectable &weakref = juce_weak_reference_selectable (mem_);
103 weakref.~JuceWeakReference_Selectable();
106tracktion::Selectable*
107SelectableBaseref::get () const noexcept
109 JuceWeakReference_Selectable &weakref = juce_weak_reference_selectable (mem_);
110 return weakref.get();
114SelectableBaseref::set (tracktion::Selectable *selectable)
noexcept
116 JuceWeakReference_Selectable &weakref = juce_weak_reference_selectable (mem_);
117 weakref = selectable;
121SelectableBaseref::set (
const SelectableBaseref &other)
noexcept
123 JuceWeakReference_Selectable &weakref = juce_weak_reference_selectable (mem_);
124 const JuceWeakReference_Selectable &otherref = juce_weak_reference_selectable (other.mem_);
135 selectable.ase_obj_ = ase_impl;
141 if (selectable && selectable->ase_obj_ == ase_impl)
142 selectable->ase_obj_ =
nullptr;
148 return selectable ? selectable->ase_obj_ :
nullptr;
bool hasActiveModifierAssignments() const
float getCurrentModifierValue() const
VolumeAndPanPlugin::Ptr getMasterVolumePlugin() const
#define assert_return(expr,...)
Return from the current function if expr is unmet and issue an assertion warning.
#define return_unless(cond,...)
Return silently if cond does not evaluate to true with return value ...
The Anklang C++ API namespace.
void register_ase_obj(VirtualBase *ase_impl, tracktion::Selectable &selectable)
Helper: register AseImpl with a tracktion Selectable via ase_obj_.
VirtualBase * find_ase_obj_virtual_base(tracktion::Selectable *selectable)
Helper: lookup Ase::VirtualBase from tracktion Selectable via ase_obj_.
void unregister_ase_obj(VirtualBase *ase_impl, tracktion::Selectable *selectable)
Helper: unregister AseImpl from a tracktion Selectable (selectable may be nullptr)
juce::Array< AudioTrack * > getAudioTracks(const Edit &)
Common base type to allow casting between polymorphic classes.