material_color_utils/helpers/
structs.rs1use crate::dynamic::color_spec::{Platform, SpecVersion};
2use crate::dynamic::variant::Variant;
3use crate::palettes::tonal_palette::TonalPalette;
4use crate::utils::color_utils::Argb;
5
6#[derive(Debug, Clone, PartialEq)]
7#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
8pub struct MaterializedTheme {
9 pub source_color: Argb,
10 pub variant: Variant,
11 pub contrast_level: f64,
12 pub platform: Platform,
13 pub spec_version: SpecVersion,
14 pub schemes: MaterializedSchemeGroup,
15}
16
17#[derive(Debug, Clone, PartialEq)]
18#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
19pub struct MaterializedSchemeGroup {
20 pub light: MaterializedScheme,
21 pub dark: MaterializedScheme,
22}
23
24#[derive(Debug, Clone, PartialEq)]
25#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
26pub struct MaterializedScheme {
27 pub is_dark: bool,
29 pub source_color: Argb,
30 pub variant: Variant,
31 pub contrast_level: f64,
32 pub platform: Platform,
33 pub spec_version: SpecVersion,
34
35 pub primary_palette: TonalPalette,
37 pub secondary_palette: TonalPalette,
38 pub tertiary_palette: TonalPalette,
39 pub neutral_palette: TonalPalette,
40 pub neutral_variant_palette: TonalPalette,
41 pub error_palette: TonalPalette,
42
43 pub background: Argb,
45 pub on_background: Argb,
46 pub surface: Argb,
47 pub surface_dim: Argb,
48 pub surface_bright: Argb,
49 pub surface_container_lowest: Argb,
50 pub surface_container_low: Argb,
51 pub surface_container: Argb,
52 pub surface_container_high: Argb,
53 pub surface_container_highest: Argb,
54 pub on_surface: Argb,
55 pub surface_variant: Argb,
56 pub on_surface_variant: Argb,
57 pub inverse_surface: Argb,
58 pub inverse_on_surface: Argb,
59
60 pub outline: Argb,
62 pub outline_variant: Argb,
63 pub shadow: Argb,
64 pub scrim: Argb,
65 pub surface_tint: Argb,
66
67 pub primary: Argb,
69 pub on_primary: Argb,
70 pub primary_container: Argb,
71 pub on_primary_container: Argb,
72 pub inverse_primary: Argb,
73
74 pub secondary: Argb,
76 pub on_secondary: Argb,
77 pub secondary_container: Argb,
78 pub on_secondary_container: Argb,
79
80 pub tertiary: Argb,
82 pub on_tertiary: Argb,
83 pub tertiary_container: Argb,
84 pub on_tertiary_container: Argb,
85
86 pub error: Argb,
88 pub on_error: Argb,
89 pub error_container: Argb,
90 pub on_error_container: Argb,
91
92 pub primary_fixed: Argb,
94 pub primary_fixed_dim: Argb,
95 pub on_primary_fixed: Argb,
96 pub on_primary_fixed_variant: Argb,
97
98 pub secondary_fixed: Argb,
99 pub secondary_fixed_dim: Argb,
100 pub on_secondary_fixed: Argb,
101 pub on_secondary_fixed_variant: Argb,
102
103 pub tertiary_fixed: Argb,
104 pub tertiary_fixed_dim: Argb,
105 pub on_tertiary_fixed: Argb,
106 pub on_tertiary_fixed_variant: Argb,
107}