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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
mod circle;
mod ellipse;
mod geometry;
mod line;
mod painter;
mod path;
mod rect;
mod tess;
mod triangle;
pub use crate::builder::DrawBuilder;
pub use crate::draw::Draw;
pub use circle::Circle;
pub use ellipse::Ellipse;
pub use line::Line;
pub use painter::create_shape_pipeline;
pub(crate) use painter::*;
pub use path::Path;
pub use rect::Rectangle;
pub use triangle::Triangle;
pub trait DrawShapes {
fn line(&mut self, p1: (f32, f32), p2: (f32, f32)) -> DrawBuilder<Line>;
fn triangle(&mut self, a: (f32, f32), b: (f32, f32), c: (f32, f32)) -> DrawBuilder<Triangle>;
fn path(&mut self) -> DrawBuilder<Path>;
fn rect(&mut self, position: (f32, f32), size: (f32, f32)) -> DrawBuilder<Rectangle>;
fn circle(&mut self, radius: f32) -> DrawBuilder<Circle>;
fn ellipse(&mut self, position: (f32, f32), size: (f32, f32)) -> DrawBuilder<Ellipse>;
}
impl DrawShapes for Draw {
fn line(&mut self, p1: (f32, f32), p2: (f32, f32)) -> DrawBuilder<Line> {
DrawBuilder::new(self, Line::new(p1, p2))
}
fn triangle(&mut self, a: (f32, f32), b: (f32, f32), c: (f32, f32)) -> DrawBuilder<Triangle> {
DrawBuilder::new(self, Triangle::new(a, b, c))
}
fn path(&mut self) -> DrawBuilder<Path> {
DrawBuilder::new(self, Path::new())
}
fn rect(&mut self, position: (f32, f32), size: (f32, f32)) -> DrawBuilder<Rectangle> {
DrawBuilder::new(self, Rectangle::new(position, size))
}
fn circle(&mut self, radius: f32) -> DrawBuilder<Circle> {
DrawBuilder::new(self, Circle::new(radius))
}
fn ellipse(&mut self, position: (f32, f32), size: (f32, f32)) -> DrawBuilder<Ellipse> {
DrawBuilder::new(self, Ellipse::new(position, size))
}
}