use crate::core::Pixels;
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct Range {
min: f32,
max: f32,
}
impl Range {
pub const ZERO_INFINITY: Range = Range {
min: 0.0,
max: f32::INFINITY,
};
pub fn new(min: impl Into<Pixels>, max: impl Into<Pixels>) -> Self {
let min = min.into();
let max = max.into();
if min.0 > max.0 {
Self {
min: max.0,
max: min.0,
}
} else {
Self {
min: min.0,
max: max.0,
}
}
}
pub fn min(self) -> f32 {
self.min
}
pub fn max(self) -> f32 {
self.max
}
pub fn is_within(self, value: f32) -> bool {
value >= self.min && value <= self.max
}
pub fn clamp(self, value: f32) -> f32 {
value.min(self.max).max(self.min)
}
}