Skip to main content

Module scenario

Module scenario 

Source

Structs§

Annotation
A single studio feedback note attached to an element at a moment in time.
AnnotationTarget
What an annotation points at: a JSON Pointer into the source scenario, plus optional context captured at click time.
AudioConfig
The object form of AudioValue — file tracks plus, optionally, a synthesised score (issue #331’s voices/score/master, matching the issue body’s example verbatim). bpm/beat_offset default to the scenario’s own Scenario::bpm/Scenario::beat_offset when absent here — see AudioConfig::as_score’s caller in rustmotion’s encode crate, which is where that fallback is actually applied (this crate only carries the override, it does not resolve it: Scenario alone does not know its own bpm by the time include::resolve_includes has consumed it — the caller captures both before that happens).
AudioTrack
Camera
Virtual camera for pan/zoom/rotation effects at the scene level.
CameraKeyframe
A keyframe for a camera property.
CameraKeyframePoint
A single time-value point in a camera keyframe.
CameraMotionBlurConfig
Shutter-window camera motion blur, opt-in via camera.motion_blur.
CameraOrigin
Focal point of the camera in frame pixels.
ComponentTemplateDef
One entry of Scenario::components — a named, reusable template.
ComponentTemplateParam
One parameter declared by a ComponentTemplateDef. See ComponentTemplateDef::params for how this differs from VariableDefinition.
FontEntry
Font file to load at startup.
IncludeDirective
Directive to inject scenes from an external scenario file.
IrisRing
A coloured border traced along an iris mask’s moving edge. Inside the ring is whichever scene the mask currently reveals, outside it is the one it is covering.
ResolvedScenario
ResolvedView
Scenario
Deliberately not #[derive(Deserialize)] — see [ScenarioDe]/impl From<ScenarioDe> for Scenario just below for why: this type needs a post-deserialize pass (propagating bpm/beat_offset/ timing/snap down onto every reachable Scene) that a plain derive can’t express, and every call site that builds a Scenario from JSON (loader.rs, include.rs’s own included-file loading) is outside this workstream’s owned files this wave — the propagation has to happen inside Scenario::deserialize itself so those callers need no changes.
Scene
SceneLayout
Scene-level flex layout configuration
SceneLight
Where the light comes from, and how strong it is.
Transition
VariableDefinition
Definition of a variable in a structural component.
VhsTrackingLine
The travelling line of a PostEffect::Vhs tear.
VideoConfig
View
VolumeKeyframe
Dynamic volume control point
WorldPosition
ZoomBlurOrigin
The centre an iris mask grows from (or closes onto), or a zoom_blur transition radiates its streaks from, in frame pixels. Absent = frame centre.

Enums§

AnnotationStatus
Lifecycle of a studio annotation.
AudioValue
Scenario::audio’s wire shape (issue #331): either the legacy bare array of file-based AudioTracks, or a single object that can carry both file tracks and a synthesised score, mixed into one bus. Which shape a given "audio" value is is unambiguous from its JSON kind (array vs. object), so #[serde(untagged)] needs no help distinguishing them.
BlurDirection
Direction for progressive blur.
IrisShape
The silhouette an iris transition’s mask takes as it grows.
MaskShape
The arbitrary silhouette a mask transition scales up from origin, authored in the shape’s own local coordinates (whatever range its points or path data use — a 100x100 star, a 24x24 icon glyph, anything). The silhouette’s own bounding-box centre is what tracks origin, not a fixed point like (0, 0), so a lopsided glyph still grows from its visual middle. Reuses the same kind vocabulary as style.clip-path (polygon, path) rather than inventing a second grammar for the same idea.
PanBackground
Whether a camera_pan treats the background as a fixed backdrop the scenes slide across, or as part of each scene, travelling with it.
PixelDissolveOrder
The order pixel_dissolve turns its cells in.
PostEffect
A post-processing effect applied to the full frame buffer after Skia renders. Effects are pure Rust, deterministic, and applied in declaration order.
SceneEntry
An entry in the scenes array: either a concrete scene or an include directive.
SceneStart
When a scene starts, on the scenario’s absolute timeline. See Scene::at.
SceneStartAuto
The literal string "auto" — the only value SceneStart::Auto can hold. Its own tiny externally-tagged enum so it round-trips as the bare string "auto" (serde’s default representation for a fieldless variant), matching every other snake_case string enum in this file.
SceneTail
How a scene behaves when it is rendered past its own duration because the next scene’s transition overlaps into it. See Scene::tail.
SnapMode
What Scenario.snap rounds resolved times onto. Currently only the beat grid; the variant exists so the field reads as intent ("beat") rather than a bare boolean.
TimingMode
Scene-placement semantics for a scenario (issue #336). See Scene::at and Scene::tail for what "v2" unlocks.
TransitionCorner
The corner a corner_reveal is anchored to.
TransitionDirection
Which way a directional transition travels.
TransitionType
VariableType
Supported variable types.
VideoCodec
ViewType