swf_tree/
gradient.rs

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