swf_types/
gradient.rs

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}