vello_common/
render_state.rs1use crate::kurbo::{Cap, Join, Stroke};
7use crate::paint::{PaintType, Tint};
8use crate::peniko::color::palette::css::BLACK;
9use crate::peniko::{BlendMode, Compose, Fill, Mix};
10use crate::transforms::Transforms;
11
12#[derive(Debug, Clone)]
14pub struct RenderState {
15 pub paint: PaintType,
17 pub stroke: Stroke,
19 pub fill_rule: Fill,
21 pub blend_mode: BlendMode,
23 pub tint: Option<Tint>,
25 pub transforms: Transforms,
27}
28
29impl Default for RenderState {
30 fn default() -> Self {
31 Self {
32 paint: BLACK.into(),
33 stroke: Stroke {
34 width: 1.0,
35 join: Join::Bevel,
36 start_cap: Cap::Butt,
37 end_cap: Cap::Butt,
38 ..Default::default()
39 },
40 fill_rule: Fill::NonZero,
41 blend_mode: BlendMode::new(Mix::Normal, Compose::SrcOver),
42 tint: None,
43 transforms: Transforms::default(),
44 }
45 }
46}
47
48impl RenderState {
49 pub fn reset(&mut self) {
51 *self = Self::default();
52 }
53}