Expand description
Effects panel. Top: the CATALOGUE as a thumbnail grid — one ~96x54 card per EffectKind showing the
effect applied to a stock image with its name underneath, grouped by EffectKind::category() under
collapsible headers, with a search box. Thumbnails arrive through set_thumbnail(kind, id, size),
which the app calls after rendering them on the GPU; without a GL context a card still shows its name
on a neutral tile (never blank) — an effect with EffectKind::applies_to_audio() instead gets a
solid green tile with a music-note glyph, since it has no picture to render. The catalogue is filtered
to what the first selected clip can use (audio clip -> audio effects only, and vice versa); with
nothing selected it shows everything. Clicking a card adds the effect to every eligible selected
clip, right-clicking opens its quick actions (selected clips / every clip on the track), and only a
deliberate press-and-move makes it a DragPayload::Effect drag source (ui::drag_source).
Below: the FIRST selected clip’s effect stack, in order: for each effect a header row (enabled
checkbox, name, mask button, “Edit shader…” for a custom shader, copy/paste params, painted
reorder and remove buttons) and its parameters from
effect.specs(): a “From … for …” row giving the effect a window inside the clip (0 length = to the
end of it, so an effect covers the whole clip until the user says otherwise), then
label + DragValue (range from ParamSpec, speed ≈ (max-min)/200) — or a CHECKBOX when
EffectKind::is_bool_param — + a diamond keyframe toggle at clip-local playhead time
(Animated::toggle_key / set_at, highlighted when a key exists) + a button to clear them. Tint shows a
colour button bound to R/G/B as well.
An effect with a mask gets the inspector’s mask grid inline (shape / position / radius / feather /
invert …) plus a delete button. A clip that renders from a REAL node graph (Clip::uses_graph) greys
the stack out — the graph is what the renderer evaluates, so stack edits would be invisible — and
offers “Unlink” to get back to the list.
Every change → undo once per gesture (same edit_start rule as the inspector).
Structs§
Enums§
- Scope 🔒
- Which clips a catalogue pick lands on: a click (and the first menu entry) means the selection, the card’s quick-action menu can widen it to the whole track the selection sits on.
Constants§
- CARD
- Card size of one catalogue thumbnail (the name is drawn under it).
- PARAM_
CLIP 🔒 - One effect’s parameters on the panel’s private clipboard (Copy / Paste on the stack rows).
- PENDING_
MOTION 🔒 - THUMBS 🔒
- GPU-rendered catalogue thumbnails, uploaded by the app (empty without a GL context).
Functions§
- catalogue 🔒
- The catalogue grid: search box + collapsible category sections of thumbnail cards, filtered to what
the selected clip (
audio) can use. Returns the effect a card click or quick-action menu asked for. - categories 🔒
- Catalogue categories in
EffectKind::ALLorder (first appearance wins), so the grid is stable. - clear_
thumbnails - Drop every catalogue thumbnail (stock image changed / GL context lost).
- effect_
card 🔒 - One catalogue card: the thumbnail (or a neutral named tile, or a green tile + note for an audio
effect) with the effect name underneath. A plain clickable / right-clickable widget that only
becomes a
DragPayload::Effectsource on a deliberate drag (ui::drag_source). - fits_
selection 🔒 - Whether
kindbelongs in the catalogue for the selected clip:audiois the first selected clip’s “is it an audio clip” (None = nothing selected, so nothing is filtered out). - key_
buttons 🔒 - matches 🔒
- set_
thumbnail - The app hands a rendered catalogue thumbnail to the panel (texture must stay alive while shown).
- show
- take_
pending_ motion - A motion preset captured via “Save as motion preset…” waiting for the app to store it in Settings.
- thumbnail 🔒
- thumbnail_
count - How many thumbnails the panel currently holds.
- wobble_
suffix 🔒 - Unit suffix for a wobble parameter.