shapes/
shapes.rs

1use graphics_rs::{
2    color,
3    graphics::Graphics,
4    shapes::{circle::Circle, line::Line, rect::Rect, triangle::Triangle},
5    simple_canvas::SimpleCanvas,
6    traits::{canvas::Canvas, canvas_handler::CanvasHandler},
7};
8
9struct ShapesHandler;
10
11impl<'a> CanvasHandler for ShapesHandler {
12    fn update<T: Canvas>(&mut self, canvas: &mut T) {
13        canvas.change_color(color::BLACK);
14        canvas.fill();
15
16        canvas.change_color(color::BLUE);
17        canvas.draw_shape(&mut Line::new(400, 0, 400, 800));
18        canvas.draw_shape(&mut Line::new(0, 0, canvas.width(), canvas.height()));
19        canvas.draw_shape(&mut Line::new(0, 400, 800, 400));
20        canvas.draw_shape(&mut Line::new(0, canvas.height(), canvas.width(), 0));
21
22        canvas.change_color(color::RED);
23        canvas.draw_shape(&mut Rect::new(300, 200, 200, 100));
24        canvas.draw_shape(&mut Rect::new(200, 300, 100, 200));
25        canvas.draw_shape(&mut Rect::new(300, 500, 200, 100));
26        canvas.draw_shape(&mut Rect::new(500, 300, 100, 200));
27
28        canvas.change_color(color::GREEN);
29        canvas.draw_shape(&mut Circle::new(200, 200, 50));
30        canvas.draw_shape(&mut Circle::new(200, 600, 50));
31        canvas.draw_shape(&mut Circle::new(600, 200, 50));
32        canvas.draw_shape(&mut Circle::new(600, 600, 50));
33
34        canvas.change_color(color::WHITE);
35        canvas.draw_shape(&mut Triangle::new(100, 0, 100, 100, 0, 100));
36        canvas.draw_shape(&mut Triangle::new(700, 0, 800, 100, 700, 100));
37        canvas.draw_shape(&mut Triangle::new(100, 700, 100, 800, 0, 700));
38        canvas.draw_shape(&mut Triangle::new(700, 700, 800, 700, 700, 800));
39
40        return;
41    }
42}
43
44const WIDTH: usize = 800;
45const HEIGHT: usize = 800;
46
47fn main() -> Result<(), String> {
48    let antialiasing = false;
49    let antialiasing_resolution = 1;
50    let fill_color = Some(color::BLACK);
51
52    let mut canvas = SimpleCanvas::new(
53        WIDTH as usize,
54        HEIGHT as usize,
55        fill_color,
56        antialiasing,
57        antialiasing_resolution,
58    );
59
60    let mut graphics = Graphics::create(&mut canvas)?;
61    graphics.run(&mut ShapesHandler {})?;
62
63    Ok(())
64}