fill/
fill.rs

1use tiny_skia::*;
2
3fn main() {
4    let mut paint1 = Paint::default();
5    paint1.set_color_rgba8(50, 127, 150, 200);
6    paint1.anti_alias = true;
7
8    let mut paint2 = Paint::default();
9    paint2.set_color_rgba8(220, 140, 75, 180);
10    paint2.anti_alias = false;
11
12    let path1 = {
13        let mut pb = PathBuilder::new();
14        pb.move_to(60.0, 60.0);
15        pb.line_to(160.0, 940.0);
16        pb.cubic_to(380.0, 840.0, 660.0, 800.0, 940.0, 800.0);
17        pb.cubic_to(740.0, 460.0, 440.0, 160.0, 60.0, 60.0);
18        pb.close();
19        pb.finish().unwrap()
20    };
21
22    let path2 = {
23        let mut pb = PathBuilder::new();
24        pb.move_to(940.0, 60.0);
25        pb.line_to(840.0, 940.0);
26        pb.cubic_to(620.0, 840.0, 340.0, 800.0, 60.0, 800.0);
27        pb.cubic_to(260.0, 460.0, 560.0, 160.0, 940.0, 60.0);
28        pb.close();
29        pb.finish().unwrap()
30    };
31
32    let mut pixmap = Pixmap::new(1000, 1000).unwrap();
33    pixmap.fill_path(
34        &path1,
35        &paint1,
36        FillRule::Winding,
37        Transform::identity(),
38        None,
39    );
40    pixmap.fill_path(
41        &path2,
42        &paint2,
43        FillRule::Winding,
44        Transform::identity(),
45        None,
46    );
47    pixmap.save_png("image.png").unwrap();
48}