pierro 0.1.0

An immediate mode UI library for Rust
Documentation

#[derive(Clone, Copy)]
pub struct Range {
    pub min: f32,
    pub max: f32
}

impl Range {

    pub const fn new(min: f32, max: f32) -> Self {
        Self {
            min,
            max,
        }
    }

    pub fn min_size(min: f32, size: f32) -> Self {
        Self::new(min, min + size)
    }

    pub fn max_size(max: f32, size: f32) -> Self {
        Self::new(max - size, max)
    }

    pub fn center_size(center: f32, size: f32) -> Self {
        Self::new(center - size / 2.0, center + size / 2.0)
    }

    pub fn point(pt: f32) -> Self {
        Self::min_size(pt, 0.0)
    }

    pub fn size(&self) -> f32 {
        self.max - self.min 
    }

    pub fn contains(&self, x: f32) -> bool {
        x >= self.min && x <= self.max
    }

    pub fn intersect(&self, other: Range) -> Self {
        Self::new(
            self.min.max(other.min),
            self.max.min(other.max)
        )
    }

    pub fn center(&self) -> f32 {
        (self.min + self.max) / 2.0
    }

}