bevy_color/
color_range.rs1use std::ops::Range;
2
3use crate::Mix;
4
5pub trait ColorRange<T: Mix> {
11 fn at(&self, factor: f32) -> T;
14}
15
16impl<T: Mix> ColorRange<T> for Range<T> {
17 fn at(&self, factor: f32) -> T {
18 self.start.mix(&self.end, factor)
19 }
20}
21
22#[cfg(test)]
23mod tests {
24 use super::*;
25 use crate::palettes::basic;
26 use crate::{LinearRgba, Srgba};
27
28 #[test]
29 fn test_color_range() {
30 let range = basic::RED..basic::BLUE;
31 assert_eq!(range.at(0.0), basic::RED);
32 assert_eq!(range.at(0.5), Srgba::new(0.5, 0.0, 0.5, 1.0));
33 assert_eq!(range.at(1.0), basic::BLUE);
34
35 let lred: LinearRgba = basic::RED.into();
36 let lblue: LinearRgba = basic::BLUE.into();
37
38 let range = lred..lblue;
39 assert_eq!(range.at(0.0), lred);
40 assert_eq!(range.at(0.5), LinearRgba::new(0.5, 0.0, 0.5, 1.0));
41 assert_eq!(range.at(1.0), lblue);
42 }
43}