1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
pub mod core; pub mod graphics; pub use image::*; fn clamp<T: std::cmp::PartialEq + std::cmp::PartialOrd>(a: T, low: T, high: T) -> T { if a < low { return low; } if a > high { return high; } a } fn degrees(radians: f64) -> f64 { return radians * 180.0 / std::f64::consts::PI; } pub fn alpha_compose(bg: &Rgba<u8>, fg: &Rgba<u8>) -> Rgba<u8> { let alpha_f = fg.0[3] as f64 / 255.0; let r = (bg.0[0] as f64 * (1.0 - alpha_f) + fg.0[0] as f64 * alpha_f) as u8; let g = (bg.0[1] as f64 * (1.0 - alpha_f) + fg.0[1] as f64 * alpha_f) as u8; let b = (bg.0[2] as f64 * (1.0 - alpha_f) + fg.0[2] as f64 * alpha_f) as u8; Rgba([r, g, b, 255]) }