1#[cfg(feature = "serde")]
2use ::serde::{Deserialize, Serialize};
3
4use crate::basic_types::StraightSRgba8;
5
6#[cfg_attr(feature = "serde", derive(Serialize, Deserialize), serde(rename_all = "PascalCase"))]
7#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
8pub enum GradientSpread {
9 Pad,
10 Reflect,
11 Repeat,
12}
13
14#[cfg_attr(feature = "serde", derive(Serialize, Deserialize), serde(rename_all = "PascalCase"))]
15#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
16pub enum ColorSpace {
17 SRgb,
18 LinearRgb,
19}
20
21#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
22#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
23pub struct ColorStop {
24 pub ratio: u8,
25 pub color: StraightSRgba8,
26}
27
28#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
29#[derive(Copy, Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
30pub struct MorphColorStop {
31 pub ratio: u8,
32 pub morph_ratio: u8,
33 pub color: StraightSRgba8,
34 pub morph_color: StraightSRgba8,
35}
36
37#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
38#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
39pub struct Gradient {
40 pub spread: GradientSpread,
41 pub color_space: ColorSpace,
42 pub colors: Vec<ColorStop>,
43}
44
45#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
46#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash)]
47pub struct MorphGradient {
48 pub spread: GradientSpread,
49 pub color_space: ColorSpace,
50 pub colors: Vec<MorphColorStop>,
51}