onedrop_engine/
lib.rs

1//! # onedrop-engine
2//!
3//! Complete Milkdrop visualization engine assembling parser, evaluator, and renderer.
4//!
5//! This crate provides a high-level API for running Milkdrop visualizations,
6//! handling preset loading, audio analysis, equation evaluation, and rendering.
7
8pub mod audio;
9#[cfg(feature = "audio-input")]
10pub mod audio_input;
11pub mod beat_detection;
12pub mod default_preset;
13pub mod engine;
14pub mod error;
15pub mod fft;
16pub mod history;
17pub mod messages;
18#[cfg(feature = "mpris")]
19pub mod mpris;
20pub mod preset_manager;
21pub mod safe_loader;
22pub mod sprites;
23pub mod transition;
24pub mod warp_eval;
25
26pub use audio::AudioAnalyzer;
27#[cfg(feature = "audio-input")]
28pub use audio_input::{
29    AudioAnalysisInput, AudioInput, AudioInputError, AudioSource, SourceKind, list_sources,
30};
31pub use beat_detection::{BeatDetectionMode, BeatDetector, PresetChange};
32pub use default_preset::default_preset;
33pub use engine::{EngineConfig, FrameProfile, MilkEngine, QualityPreset};
34pub use error::{EngineError, Result};
35pub use fft::FFTAnalyzer;
36pub use history::{ColorState, History, MashUpState, MashUpType};
37pub use messages::{MessageManager, MessageRenderInstance};
38#[cfg(feature = "mpris")]
39pub use mpris::{MprisPoller, MprisSnapshot};
40pub use preset_manager::{
41    DEFAULT_HISTORY_SIZE, DEFAULT_RATING, PresetManager, SelectionMode, TransitionState,
42};
43pub use safe_loader::SafePresetLoader;
44pub use sprites::{SpriteBlendMode, SpriteManager, SpriteRenderInstance};
45pub use transition::{Transition, TransitionManager, TransitionMode};
46
47// Re-export commonly used types
48pub use onedrop_parser::MilkPreset;
49pub use onedrop_renderer::{
50    AudioLevels, MeshQuality, MeshSize, MotionParams, RenderConfig, RenderState, WarpMesh,
51    WarpVertex, WaveParams,
52};
53pub use warp_eval::WarpExecutor;
54
55#[cfg(test)]
56mod tests {
57    use super::*;
58
59    #[test]
60    fn test_create_engine() {
61        let config = EngineConfig::default();
62        let engine = pollster::block_on(MilkEngine::new(config));
63        assert!(engine.is_ok());
64    }
65}