Skip to main content

graphitepdf_kit/
pattern.rs

1use crate::vector::Color;
2
3#[derive(Clone, Debug)]
4pub enum Pattern {
5    Solid(Color),
6    LinearGradient(LinearGradient),
7    RadialGradient(RadialGradient),
8    Tiling(TilingPattern),
9}
10
11#[derive(Clone, Debug)]
12pub struct LinearGradient {
13    pub x0: f64,
14    pub y0: f64,
15    pub x1: f64,
16    pub y1: f64,
17    pub stops: Vec<GradientStop>,
18}
19
20#[derive(Clone, Debug)]
21pub struct RadialGradient {
22    pub cx0: f64,
23    pub cy0: f64,
24    pub r0: f64,
25    pub cx1: f64,
26    pub cy1: f64,
27    pub r1: f64,
28    pub stops: Vec<GradientStop>,
29}
30
31#[derive(Clone, Debug)]
32pub struct GradientStop {
33    pub offset: f64,
34    pub color: Color,
35}
36
37impl GradientStop {
38    pub fn new(offset: f64, color: Color) -> Self {
39        Self { offset, color }
40    }
41}
42
43#[derive(Clone, Debug)]
44pub struct TilingPattern {
45    pub x_step: f64,
46    pub y_step: f64,
47    pub bbox: (f64, f64, f64, f64),
48}