Skip to main content

alpha2_model/
lib.rs

1//! Versioned, host-independent project model for alpha2.
2//!
3//! This crate describes intent only. It contains no decoder handles, GPU
4//! resources, filesystem paths, or application-specific types.
5
6mod animation;
7mod audio;
8mod audio_load;
9mod caption;
10mod caption_import;
11mod composition;
12mod easing;
13mod effect;
14mod error;
15mod fingerprint;
16mod generator;
17mod ids;
18mod lint;
19mod mask;
20mod project;
21mod provider;
22mod resource;
23#[cfg(feature = "schema")]
24mod schema;
25mod source;
26#[cfg(test)]
27pub(crate) mod tests;
28mod text;
29mod time_map;
30mod timeline;
31
32pub use animation::{Animated, Interpolation, Keyframe, Vec2, VisualProperties};
33pub use audio::{
34    AUDIO_EFFECT_STATE_MARGIN_MS, AudioEffect, AudioProperties, Ducking, EQ_FREQUENCY_RANGE_HZ,
35    EQ_Q_RANGE, EqBand, EqBandKind, FadeShape, Limiter, MAX_AUDIO_DELAY_MS, MAX_AUDIO_EFFECTS,
36    MAX_CHAIN_EFFECTS, MAX_COMPRESSOR_RATIO, MAX_ENVELOPE_MS, MAX_EQ_BANDS, MAX_EQ_GAIN_DB,
37    MAX_GAIN, MAX_LOOKAHEAD_MS, MIN_LEVEL_DB, MasterAudio, REVERB_DELAY_MS, TrackAudio,
38};
39pub use audio_load::AudioEffectLoad;
40pub use caption::{CaptionCue, Captions, MAX_CAPTION_FONT_SIZE};
41pub use caption_import::{
42    CaptionImportError, ImportedCaptions, MAX_CAPTION_FILE_BYTES, MAX_CAPTION_FILE_CUES,
43    caption_rows, parse_srt, parse_webvtt,
44};
45pub use composition::{
46    ClipComposition, Composition, CompositionControl, CompositionNode, CompositionReads,
47    MAX_COMPOSITION_CONTROLS, MAX_COMPOSITION_DEPTH, MAX_COMPOSITION_NODES, MAX_COMPOSITIONS,
48    MAX_FRAME_INLINED_NODES, MAX_GROUP_INPUTS, MAX_INLINED_NODES, MAX_MERGE_LAYERS, MergeLayer,
49    NodeInput, NodeOp, TimeScale,
50};
51pub use easing::{CubicBezier, Easing};
52pub use effect::{ClipBlendMode, ClipEffect, EffectValue};
53pub use error::{ModelError, ProjectLoadError};
54pub use fingerprint::{AudioStreamShape, MediaFingerprint, StreamTopology, VideoStreamShape};
55pub use generator::{
56    GeneratedShape, Generator, GradientStop, MAX_GRADIENT_STOPS, Paint, Rgba, Spread, Stroke,
57};
58pub use ids::{ClipId, CompositionId, EffectResourceId, NodeId, ProjectId, TrackId};
59pub use lint::{LintEdge, LintIssue, LintOwner};
60pub use mask::{MAX_CLIP_MASKS, MaskMode, MaskShape, Matte, MatteMode, ShapeMask};
61pub use project::{
62    BlendSpace, CURRENT_SCHEMA_VERSION, ColorPipeline, HDR_PEAK_NITS_RANGE, HdrSources,
63    MAX_CANVAS_DIMENSION, MAX_CANVAS_PIXELS, MAX_CLIPS, MAX_CLIPS_PER_TRACK,
64    MAX_PROJECT_JSON_BYTES, MAX_TRACKS, MAX_TRANSITIONS_PER_TRACK, Project, ProjectSettings, Rgb,
65    SAMPLE_RATE_RANGE,
66};
67pub use provider::{
68    LinearPrimaries, MAX_LOTTIE_DOCUMENT_BYTES, MAX_PROVIDER_DOCUMENT_BYTES, MAX_SEQUENCE_FRAMES,
69    MAX_SVG_DOCUMENT_BYTES, MissingFrames, ProviderSource,
70};
71pub use resource::{EffectResource, EffectResourceKind};
72#[cfg(feature = "schema")]
73pub use schema::{project_json_schema, project_limits_json};
74pub use source::{MediaKind, MediaSource};
75pub use text::{
76    LINE_HEIGHT_RANGE, MAX_FONT_FAMILY_BYTES, MAX_TEXT_CONTENT_BYTES, MAX_TEXT_GENERATOR_FONT_SIZE,
77    MAX_TEXT_OUTLINE_WIDTH, MAX_TEXT_PADDING, TextAlign, TextBackground, TextOutline, TextStyle,
78};
79pub use time_map::{LOOP_FADE_SECONDS, LoopMode, TimeMap};
80pub use timeline::{CacheIntent, Clip, ClipTransition, Timeline, Track, TrackKind};