fix: make surfaces lighter if possible in light mode

This commit is contained in:
Ashley Wulber 2023-08-04 17:30:32 -04:00 committed by Ashley Wulber
parent f8c25096fd
commit dae262f466
2 changed files with 12 additions and 8 deletions

View file

@ -620,16 +620,16 @@ impl ThemeBuilder {
let primary_container_bg = if let Some(primary_container_bg_color) = primary_container_bg { let primary_container_bg = if let Some(primary_container_bg_color) = primary_container_bg {
primary_container_bg_color primary_container_bg_color
} else { } else {
get_color(bg_index, 5, &step_array, is_dark, &p_ref.neutral_1) get_surface_color(bg_index, 5, &step_array, is_dark, &p_ref.neutral_1)
}; };
let secondary_container_bg = if let Some(secondary_container_bg) = secondary_container_bg { let secondary_container_bg = if let Some(secondary_container_bg) = secondary_container_bg {
secondary_container_bg secondary_container_bg
} else { } else {
get_color(bg_index, 10, &step_array, is_dark, &p_ref.neutral_2) get_surface_color(bg_index, 10, &step_array, is_dark, &p_ref.neutral_2)
}; };
let bg_component = get_color(bg_index, 8, &step_array, is_dark, &p_ref.neutral_2); let bg_component = get_surface_color(bg_index, 8, &step_array, is_dark, &p_ref.neutral_2);
let on_bg_component = get_text( let on_bg_component = get_text(
color_index(bg_component, step_array.len()), color_index(bg_component, step_array.len()),
&step_array, &step_array,
@ -646,7 +646,8 @@ impl ThemeBuilder {
); );
let primary_index = color_index(primary_container_bg, step_array.len()); let primary_index = color_index(primary_container_bg, step_array.len());
let primary_component = get_color(primary_index, 6, &step_array, is_dark, &p_ref.neutral_3); let primary_component =
get_surface_color(primary_index, 6, &step_array, is_dark, &p_ref.neutral_3);
let on_primary_component = get_text( let on_primary_component = get_text(
color_index(primary_component, step_array.len()), color_index(primary_component, step_array.len()),
&step_array, &step_array,
@ -664,7 +665,7 @@ impl ThemeBuilder {
let secondary_index = color_index(secondary_container_bg, step_array.len()); let secondary_index = color_index(secondary_container_bg, step_array.len());
let secondary_component = let secondary_component =
get_color(secondary_index, 3, &step_array, is_dark, &p_ref.neutral_4); get_surface_color(secondary_index, 3, &step_array, is_dark, &p_ref.neutral_4);
let on_secondary_component = get_text( let on_secondary_component = get_text(
color_index(secondary_component, step_array.len()), color_index(secondary_component, step_array.len()),
&step_array, &step_array,

View file

@ -31,15 +31,18 @@ pub fn get_index(base_index: usize, steps: usize, step_len: usize, is_dark: bool
.filter(|i| *i < step_len) .filter(|i| *i < step_len)
} }
/// get color given a base and some steps /// get surface color given a base and some steps
pub fn get_color( pub fn get_surface_color(
base_index: usize, base_index: usize,
steps: usize, steps: usize,
step_array: &Vec<Srgba>, step_array: &Vec<Srgba>,
is_dark: bool, mut is_dark: bool,
fallback: &Srgba, fallback: &Srgba,
) -> Srgba { ) -> Srgba {
assert!(step_array.len() == 100); assert!(step_array.len() == 100);
if !is_dark && base_index >= 88 {
is_dark = true;
}
get_index(base_index, steps, step_array.len(), is_dark) get_index(base_index, steps, step_array.len(), is_dark)
.and_then(|i| step_array.get(i).cloned()) .and_then(|i| step_array.get(i).cloned())
.unwrap_or_else(|| fallback.to_owned()) .unwrap_or_else(|| fallback.to_owned())