start implementing Rectangle
This commit is contained in:
parent
f071cafe51
commit
12a50af544
|
@ -76,6 +76,67 @@ impl PartialEq for Point {
|
|||
|
||||
impl Eq for Point {}
|
||||
|
||||
impl Rectangle {
|
||||
fn from_corner_width_height(corner: Point, width: u32, height: u32) -> Rectangle {
|
||||
Rectangle {
|
||||
x: corner.x(),
|
||||
y: corner.y(),
|
||||
width,
|
||||
height,
|
||||
}
|
||||
}
|
||||
|
||||
fn from_corners(corner_a: Point, corner_b: Point) -> Rectangle {
|
||||
let left = corner_a.x().min(corner_b.x());
|
||||
let top = corner_a.y().min(corner_b.y());
|
||||
|
||||
let width = (corner_a.x() as i64 - corner_b.x() as i64).abs() as u32;
|
||||
let height = (corner_a.y() as i64 - corner_b.y() as i64).abs() as u32;
|
||||
|
||||
Rectangle {
|
||||
x: left,
|
||||
y: top,
|
||||
width,
|
||||
height,
|
||||
}
|
||||
}
|
||||
|
||||
fn at_origin_with_size(width: u32, height: u32) -> Rectangle {
|
||||
Rectangle {
|
||||
x: 0,
|
||||
y: 0,
|
||||
width,
|
||||
height,
|
||||
}
|
||||
}
|
||||
|
||||
fn width(&self) -> u32 {
|
||||
self.width
|
||||
}
|
||||
|
||||
fn height(&self) -> u32 {
|
||||
self.height
|
||||
}
|
||||
|
||||
fn with_width(&self, width: u32) -> Rectangle {
|
||||
Rectangle {
|
||||
x: self.x,
|
||||
y: self.y,
|
||||
width,
|
||||
height: self.height,
|
||||
}
|
||||
}
|
||||
|
||||
fn with_height(&self, height: u32) -> Rectangle {
|
||||
Rectangle {
|
||||
x: self.x,
|
||||
y: self.y,
|
||||
width: self.width,
|
||||
height,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
|
Loading…
Reference in New Issue