diff --git a/lights/src/rgb.rs b/lights/src/rgb.rs index 617b83e..c54b6fd 100644 --- a/lights/src/rgb.rs +++ b/lights/src/rgb.rs @@ -61,6 +61,12 @@ pub fn blend(a: Rgb, b: Rgb, mix: Rgb) -> Rgb { (a * Rgb(255 - mix.0, 255 - mix.1, 255 - mix.2)) + (b * mix) } -pub fn linear_gradient(from: Rgb, to: Rgb, steps: usize) -> impl Iterator + Clone { - (0..steps).map(move |x| blend(from, to, gray((x * 255 / steps) as u8))) +#[inline] +pub fn blend_steps(from: Rgb, to: Rgb, steps: usize, x: usize) -> Rgb { + blend(from, to, gray((x * 255 / steps) as u8)) +} + +#[inline] +pub fn linear_gradient(from: Rgb, to: Rgb, steps: usize) -> impl Iterator + DoubleEndedIterator + Clone { + (0..steps).map(move |x| blend_steps(from, to, steps, x)) }