This repository has no description
1use shapemaker::*;
2
3pub fn shapes_shed() -> Canvas {
4 let mut canvas = Canvas::with_layers(vec![]);
5
6 canvas.set_grid_size(3, 3);
7 canvas.set_background(Color::White);
8
9 canvas.layer_unchecked("root").add_objects([
10 Object::BigCircle(Point(0, 0)).colored(Color::Black),
11 Object::CurveOutward(Point(1, 1), Point(2, 0), 5.0).colored(Color::Black),
12 Object::CurveInward(Point(2, 1), Point(3, 0), 5.0).colored(Color::Black),
13 Object::SmallCircle(Point(0, 1)).colored(Color::Black),
14 Object::Line(Point(1, 1), Point(2, 2), 5.0).colored(Color::Black),
15 Object::Rectangle(Point(0, 2), Point(0, 2)).colored(Color::Black),
16 Object::Dot(Point(2, 3)).colored(Color::Black),
17 Object::Polygon(
18 Point(2, 1),
19 vec![
20 LineSegment::Straight(Point(3, 1)),
21 LineSegment::Straight(Point(3, 2)),
22 ],
23 )
24 .colored(Color::Black),
25 Object::Text(Point(0, 0), "test".into(), 5.0).colored(Color::Black),
26 ]);
27
28 canvas
29}
30
31pub fn colors_shed() -> Canvas {
32 let mut canvas = Canvas::with_layers(vec!["circles"]);
33 canvas.set_grid_size(3, 3);
34 canvas.canvas_outer_padding = 0;
35 canvas.set_background(Color::White);
36
37 let all_colors = vec![
38 Color::Blue,
39 Color::Cyan,
40 Color::Yellow,
41 Color::Orange,
42 Color::Red,
43 Color::Brown,
44 Color::Purple,
45 Color::Pink,
46 Color::Green,
47 ];
48
49 for (color, point) in std::iter::zip(all_colors, canvas.world_region) {
50 Object::Rectangle(point, point)
51 .colored(color)
52 .add_to(canvas.root());
53 }
54
55 canvas
56}
57
58pub fn grid() -> Canvas {
59 let mut canvas = Canvas::with_layers(vec![]);
60 canvas.set_grid_size(3, 3);
61 canvas.set_background(Color::White);
62
63 for point in canvas.world_region {
64 Object::Dot(point)
65 .colored(Color::Black)
66 .add_to(canvas.root());
67 }
68
69 canvas
70}
71
72fn main() {
73 grid()
74 .render_to_svg_file("grid.svg")
75 .expect("Failed to render grid");
76 colors_shed()
77 .render_to_svg_file("colorshed.svg")
78 .expect("Failed to render colors_shed");
79 shapes_shed()
80 .render_to_svg_file("shapeshed.svg")
81 .expect("Failed to render shapes_shed");
82 shapes_shed()
83 .render_to_png("shapeshed.png", 1000)
84 .expect("Failed to render shapes_shed as PNG");
85}
86
87#[test]
88fn test_grid() {
89 use insta;
90 insta::assert_snapshot! { grid().render_to_svg_string().unwrap() }
91}
92
93#[test]
94fn test_colors_shed() {
95 use insta;
96 insta::assert_snapshot! { colors_shed().render_to_svg_string().unwrap() }
97}
98
99#[test]
100fn test_shapes_shed() {
101 use insta;
102 insta::assert_snapshot! { shapes_shed().render_to_svg_string().unwrap() }
103}