From ee86aea7f298c0bdc72733b47c40270ff38c2ba6 Mon Sep 17 00:00:00 2001 From: Héctor Ramón Jiménez Date: Sun, 7 Apr 2024 19:32:49 +0200 Subject: Use `Lch` to choose white text when not readable in `theme::palette` --- core/src/theme/palette.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'core/src/theme') diff --git a/core/src/theme/palette.rs b/core/src/theme/palette.rs index ca91c248..aca72eb0 100644 --- a/core/src/theme/palette.rs +++ b/core/src/theme/palette.rs @@ -4,7 +4,7 @@ use crate::{color, Color}; use once_cell::sync::Lazy; use palette::color_difference::Wcag21RelativeContrast; use palette::rgb::Rgb; -use palette::{FromColor, Hsl, Mix}; +use palette::{FromColor, Hsl, Lch, Mix}; /// A color palette. #[derive(Debug, Clone, Copy, PartialEq)] @@ -613,7 +613,7 @@ fn mix(a: Color, b: Color, factor: f32) -> Color { fn readable(background: Color, text: Color) -> Color { if is_readable(background, text) { text - } else if is_dark(background) { + } else if to_lch(background).l < 70.0 { Color::WHITE } else { Color::BLACK @@ -635,6 +635,10 @@ fn to_hsl(color: Color) -> Hsl { Hsl::from_color(Rgb::from(color)) } +fn to_lch(color: Color) -> Lch { + Lch::from_color(Rgb::from(color)) +} + fn from_hsl(hsl: Hsl) -> Color { Rgb::from_color(hsl).into() } -- cgit