Maps StateStore gesture callbacks onto AAX automation touch/release. More...
#include <aax_editor.hpp>
Public Types | |
| using | Sink = std::function<void(const char* aax_param_id)> |
| Invoked with the AAX parameter-ID string for the gesture's parameter. | |
Public Member Functions | |
| GestureRouter (const PluginDefinition &definition, Sink touch, Sink release) | |
| bool | begin (state::ParamID id) |
| Route Binding::begin_gesture() to AAX_IEffectParameters::TouchParameter. | |
| bool | end (state::ParamID id) |
| Route Binding::end_gesture() to AAX_IEffectParameters::ReleaseParameter. | |
| void | release_all () |
| Release every parameter still held. | |
| bool | is_touched (state::ParamID id) const |
| Whether a gesture is currently open on id. | |
| std::size_t | touched_count () const |
| Number of parameters with an open gesture. | |
| std::uint64_t | unknown_count () const |
| Gestures dropped because the parameter has no AAX registration. | |
| const std::string * | aax_id_for (state::ParamID id) const |
| The AAX parameter-ID string for id, or nullptr when unregistered. | |
Maps StateStore gesture callbacks onto AAX automation touch/release.
The sinks receive the AAX parameter-ID string owned by this router; it stays valid for the router's lifetime, so a sink may pass it straight to an AAX_CParamID parameter without copying.
Main-thread only, matching StateStore::begin_gesture / end_gesture. An editor that edits parameters from a worker marshals the whole gesture with StateStore::run_gesture_on_main.
The router is the single place that guarantees AAX's balance invariant:
| using pulp::format::aax::GestureRouter::Sink = std::function<void(const char* aax_param_id)> |
Invoked with the AAX parameter-ID string for the gesture's parameter.
|
inline |
|
inline |
The AAX parameter-ID string for id, or nullptr when unregistered.
|
inline |
Route Binding::begin_gesture() to AAX_IEffectParameters::TouchParameter.
Returns true when a touch was emitted.
|
inline |
Route Binding::end_gesture() to AAX_IEffectParameters::ReleaseParameter.
Returns true when a release was emitted.
|
inline |
Whether a gesture is currently open on id.
|
inline |
Release every parameter still held.
An editor torn down mid-drag (the user closes the plugin window without lifting the mouse) would otherwise leave the host's automation record open forever.
|
inline |
Number of parameters with an open gesture.
|
inline |
Gestures dropped because the parameter has no AAX registration.
Non-zero means the editor and the parameter definition disagree — a wiring bug.