cotati/combinator/
paint.rs1use crate::{Draw, Length, Renderer, Rgba};
2
3pub fn fill<R, D, C, E>(color: C, draw: D) -> impl Fn(&mut R) -> Result<(), E>
5where
6 Rgba: From<C>,
7 R: Renderer,
8 D: Draw<R, Error = E>,
9{
10 let color = color.into();
11
12 move |renderer| {
13 renderer.push_fill(color);
14
15 draw.render(renderer)?;
16
17 renderer.pop(1);
18
19 Ok(())
20 }
21}
22
23pub fn stroke<R, D, C, L, E>(color: C, width: L, draw: D) -> impl Fn(&mut R) -> Result<(), E>
25where
26 Length: From<L>,
27 Rgba: From<C>,
28 R: Renderer,
29 D: Draw<R, Error = E>,
30{
31 let color = color.into();
32 let width = width.into();
33
34 move |renderer| {
35 renderer.push_stroke(color, width);
36
37 draw.render(renderer)?;
38
39 renderer.pop(1);
40
41 Ok(())
42 }
43}