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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
/*!
A pure Rust 2D Graphics Library.
Raqote aims to be a small, simple, fast software 2D graphics library with roughly
the same capabilities as the cairo image backend.
Current functionality
- path filling
- stroking
- dashing
- image, solid, and gradient fills
- rectangular and path clipping
- blend modes
Planned functionality
- layers
- extended blend modes
- two circle radial gradients
- perspective image drawing
- shadows?
Example:
```rust
use raqote::*;
let mut dt = DrawTarget::new(400, 400);
let mut pb = PathBuilder::new();
pb.move_to(100., 10.);
pb.cubic_to(150., 40., 175., 0., 200., 10.);
pb.quad_to(120., 100., 80., 200.);
pb.quad_to(150., 180., 300., 300.);
pb.close();
let path = pb.finish();
let gradient = Source::RadialGradient(
Gradient {
stops: vec![
GradientStop {
position: 0.2,
color: 0xff00ff00,
},
GradientStop {
position: 0.8,
color: 0xffffffff,
},
GradientStop {
position: 1.,
color: 0xffff00ff,
},
],
},
Transform::create_translation(-150., -150.),
);
dt.fill(&path, &gradient, &DrawOptions::new());
let mut pb = PathBuilder::new();
pb.move_to(100., 100.);
pb.line_to(300., 300.);
pb.line_to(200., 300.);
let path = pb.finish();
dt.stroke(
&path,
&Source::Solid(SolidSource {
r: 0x0,
g: 0x0,
b: 0x80,
a: 0x80,
}),
&StrokeStyle {
cap: LineCap::Round,
join: LineJoin::Round,
width: 10.,
mitre_limit: 2.,
dash_array: vec![10., 18.],
dash_offset: 16.,
},
&DrawOptions::new()
);
dt.write_png("example.png");
```
Produces:

*/
pub use *;
pub use crate;
pub use crate*;
pub use ;
pub type IntRect = Box2D;
pub type Point = Point2D;
pub type Transform = Transform2D;
pub type Vector = Vector2D;