mask/
mask.rs

1use tiny_skia::*;
2
3fn main() {
4    let clip_path = {
5        let mut pb = PathBuilder::new();
6        pb.push_circle(250.0, 250.0, 200.0);
7        pb.push_circle(250.0, 250.0, 100.0);
8        pb.finish().unwrap()
9    };
10
11    let clip_path = clip_path
12        .transform(Transform::from_row(1.0, -0.3, 0.0, 1.0, 0.0, 75.0))
13        .unwrap();
14
15    let mut mask = Mask::new(500, 500).unwrap();
16    mask.fill_path(&clip_path, FillRule::EvenOdd, true, Transform::default());
17
18    let mut paint = Paint::default();
19    paint.anti_alias = false;
20    paint.set_color_rgba8(50, 127, 150, 200);
21
22    let mut pixmap = Pixmap::new(500, 500).unwrap();
23    pixmap.fill_rect(
24        Rect::from_xywh(0.0, 0.0, 500.0, 500.0).unwrap(),
25        &paint,
26        Transform::identity(),
27        Some(&mask),
28    );
29    pixmap.save_png("image.png").unwrap();
30}