1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
use crate::canvas::{Canvas, Draw};
use crate::color::RGBA;

#[derive(Debug)]
pub struct Line {
    pub end1: (isize, isize),
    pub end2: (isize, isize),

    pub color: RGBA,
}

impl Draw for Line {
    fn draw(&self, canvas: &mut Canvas) {
        canvas.draw_line(
            self.end1.0,
            self.end1.1,
            self.end2.0,
            self.end2.1,
            self.color,
        );
    }
}

#[derive(Debug)]
pub struct Circle {
    pub center: (isize, isize),
    pub radius: u32,
    pub solid: bool,

    pub color: RGBA,
}

impl Draw for Circle {
    fn draw(&self, canvas: &mut Canvas) {
        match self.solid {
            true => canvas.draw_circle_solid(self.center.0, self.center.1, self.radius, self.color),
            false => canvas.draw_circle(self.center.0, self.center.1, self.radius, self.color),
        }
    }
}