redact_composer/
lib.rs

1#![deny(missing_docs, missing_debug_implementations)]
2#![cfg_attr(not(doctest), doc = include_str!("../README.md"))]
3
4/// Utility traits and types.
5pub mod util;
6
7// Re-export core components
8pub use redact_composer_core::{
9    elements, error, render::Renderer, timing, timing::Timing, Composer, ComposerOptions,
10    Composition, CompositionOptions, Element, Segment, SegmentRef,
11};
12
13/// Types and traits used for and during composition rendering.
14pub mod render {
15    pub use redact_composer_core::render::{
16        context, AdhocRenderer, RenderEngine, RenderSegment, Renderer, RendererGroup, Result,
17    };
18}
19
20#[cfg(feature = "derive")]
21#[doc(inline)]
22/// `feature = derive (default)`
23pub use redact_composer_derive::Element;
24
25#[cfg(feature = "midi")]
26#[doc(inline)]
27/// `feature = midi (default)`
28pub use redact_composer_midi as midi;
29
30#[cfg(feature = "synthesis")]
31#[doc(inline)]
32/// `feature = synthesis (default)`
33pub use redact_composer_synthesis as synthesis;
34
35#[cfg(feature = "musical")]
36#[doc(inline)]
37/// `feature = musical (default)`
38pub use redact_composer_musical as musical;
39
40/// Default renderers for [`midi`] elements if `midi` feature is enabled (default).
41/// Otherwise, just an empty [`RenderEngine`](crate::render::RenderEngine).
42pub fn renderers() -> crate::render::RenderEngine {
43    let mut engine = crate::render::RenderEngine::new();
44
45    #[cfg(feature = "midi")]
46    {
47        engine = engine + midi::renderers();
48    }
49
50    engine
51}