[emath] Add Pos2::zero() and Rect::clamp(point)

This commit is contained in:
Emil Ernerfeldt 2021-01-16 20:57:31 +01:00
parent 33545501f9
commit d11b02d45e
2 changed files with 15 additions and 0 deletions

View file

@ -35,6 +35,13 @@ impl From<&[f32; 2]> for Pos2 {
}
impl Pos2 {
/// The zero position, the origin.
/// The top left corner in a GUI.
/// Same as `Pos2::default()`.
pub const fn zero() -> Self {
Self { x: 0.0, y: 0.0 }
}
pub const fn new(x: f32, y: f32) -> Self {
Self { x, y }
}

View file

@ -131,6 +131,14 @@ impl Rect {
&& p.y <= self.min.y + self.size().y
}
/// Return the given points clamped to be inside the rectangle
#[must_use]
pub fn clamp(&self, mut p: Pos2) -> Pos2 {
p.x = clamp(p.x, self.x_range());
p.y = clamp(p.y, self.y_range());
p
}
pub fn extend_with(&mut self, p: Pos2) {
self.min = self.min.min(p);
self.max = self.max.max(p);