graphics_rs/shapes/
rect.rs1use crate::traits::{canvas::Canvas, shape::Shape};
2
3pub struct Rect {
4 x: usize,
5 y: usize,
6 width: usize,
7 height: usize,
8}
9
10impl Rect {
11 pub fn new(x: usize, y: usize, width: usize, height: usize) -> Self {
12 Self {
13 x,
14 y,
15 width,
16 height,
17 }
18 }
19}
20
21impl Shape for Rect {
22 fn draw_to(&mut self, canvas: &mut impl Canvas) {
23 let x = canvas.clamp_col(self.x as i64) as usize;
24 let w = canvas.clamp_col(self.x as i64 + self.width as i64) as usize;
25 let y = canvas.clamp_row(self.y as i64) as usize;
26 let h = canvas.clamp_row(self.y as i64 + self.height as i64) as usize;
27
28 for row in y..h {
29 for col in x..w {
30 canvas.set_pixel(row, col);
31 }
32 }
33 }
34}