修正生成动态颜色时存在的无限循环问题。

This commit is contained in:
徐涛 2025-02-16 11:45:35 +08:00
parent 4054c2ce56
commit 9b6f4ace14

View File

@ -63,6 +63,10 @@ impl DynamicColor {
} }
} }
pub fn tone(&self, scheme: &DynamicScheme) -> f32 {
(self.tone)(scheme)
}
pub fn get_lch(&self, scheme: &DynamicScheme) -> Lch { pub fn get_lch(&self, scheme: &DynamicScheme) -> Lch {
let tone = self.get_tone(scheme); let tone = self.get_tone(scheme);
(self.palette)(scheme).tone(tone) (self.palette)(scheme).tone(tone)
@ -88,14 +92,14 @@ impl DynamicColor {
let n_contrast = (nearer.contrast_curve.as_ref().unwrap()).get(scheme.contrast_level); let n_contrast = (nearer.contrast_curve.as_ref().unwrap()).get(scheme.contrast_level);
let f_contrast = (farther.contrast_curve.as_ref().unwrap()).get(scheme.contrast_level); let f_contrast = (farther.contrast_curve.as_ref().unwrap()).get(scheme.contrast_level);
let n_initial_tone = nearer.get_tone(scheme); let n_initial_tone = nearer.tone(scheme);
let mut n_tone = let mut n_tone =
if super::contrast::ratio_of_tones(bg_tone, n_initial_tone) >= n_contrast { if super::contrast::ratio_of_tones(bg_tone, n_initial_tone) >= n_contrast {
n_initial_tone n_initial_tone
} else { } else {
foreground_tone(bg_tone, n_contrast) foreground_tone(bg_tone, n_contrast)
}; };
let f_initial_tone = farther.get_tone(scheme); let f_initial_tone = farther.tone(scheme);
let mut f_tone = let mut f_tone =
if super::contrast::ratio_of_tones(bg_tone, f_initial_tone) >= f_contrast { if super::contrast::ratio_of_tones(bg_tone, f_initial_tone) >= f_contrast {
f_initial_tone f_initial_tone