use skia_canvas::prelude::*; mod color; mod render; pub mod analysis; pub mod video; pub use color::{extract_background_color, parse_hex_color}; pub use render::Renderer; pub const FOOTER_SIDE_RATIO: f32 = 0.033; pub const FOOTER_BOTTOM_RATIO: f32 = 0.05; pub const DIAG_RING_OFFSET: f32 = 10.0 * std::f32::consts::FRAC_1_SQRT_2; #[derive(Clone, Copy, Debug, Default, PartialEq)] pub struct MeterFrame { pub rms: f32, pub bass: f32, pub mid: f32, pub high: f32, } #[derive(Clone, Copy, Debug, PartialEq)] pub struct Rgba { pub red: f32, pub green: f32, pub blue: f32, } pub const FALLBACK_BACKGROUND: Rgba = Rgba { red: 99.0 / 255.0, green: 153.0 / 255.0, blue: 225.0 / 255.0, }; #[derive(Debug)] pub struct Composition { pub artwork: Option, pub background: Rgba, pub label: String, pub width: u32, pub height: u32, pub intensity: f32, pub response: f32, pub offset: f32, } impl Default for Composition { fn default() -> Self { Self { artwork: None, background: FALLBACK_BACKGROUND, label: "Voice".to_owned(), width: 1280, height: 720, intensity: 0.25, response: 0.25, offset: 100.0, } } }