From a7ef8eb576d90f0992917057d5cc12db681cb9fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Fri, 18 Jul 2025 15:45:11 +0800 Subject: [PATCH] =?UTF-8?q?fix(color-module):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=9A=97=E9=BB=91=E6=A8=A1=E5=BC=8F=E4=B8=8B=E4=B8=AD=E6=80=A7?= =?UTF-8?q?=E8=89=B2=E8=AE=A1=E7=AE=97=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 调整暗黑模式下的中性色计算逻辑,确保在不同主题下颜色值计算正确。主要修改了outline、shadow、surface等颜色的计算方式,根据is_dark标志使用不同的系数。 --- .../src/schemes/q_style_2/baseline.rs | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/color-module/src/schemes/q_style_2/baseline.rs b/color-module/src/schemes/q_style_2/baseline.rs index 93bbdee..9aa5a23 100644 --- a/color-module/src/schemes/q_style_2/baseline.rs +++ b/color-module/src/schemes/q_style_2/baseline.rs @@ -2,10 +2,10 @@ use std::{collections::HashMap, sync::Arc}; use linked_hash_map::LinkedHashMap; use palette::{ - color_theory::{Analogous, Complementary, SplitComplementary, Tetradic, Triadic}, Oklch, ShiftHue, + color_theory::{Analogous, Complementary, SplitComplementary, Tetradic, Triadic}, }; -use serde::{ser::SerializeStruct, Serialize}; +use serde::{Serialize, ser::SerializeStruct}; use crate::{ convert::map_oklch_to_srgb_hex, @@ -193,20 +193,23 @@ impl Baseline { } }; let reference_lightness = if is_dark { - neutral_lightest.l - } else { neutral_darkest.l + } else { + neutral_lightest.l }; let neutral_swatch = Arc::new(NeutralSwatch::new(*neutral_lightest, *neutral_darkest)); - let outline_color = neutral_swatch.get(reference_lightness * 0.8); - let outline_variant_color = neutral_swatch.get(reference_lightness * 0.6); - let shadow_color = neutral_swatch.get(10.0); - let overlay_color = neutral_swatch.get(reference_lightness * 0.2); + let outline_color = + neutral_swatch.get(neutral_lightest.l * if is_dark { 0.5 } else { 0.7 }); + let outline_variant_color = + neutral_swatch.get(neutral_lightest.l * if is_dark { 0.3 } else { 0.8 }); + let shadow_color = neutral_swatch.get(0.1); + let overlay_color = + neutral_swatch.get(neutral_lightest.l * if is_dark { 0.4 } else { 0.5 }); - let neutral_color = neutral_swatch.get(75.0); - let neutral_variant_color = neutral_swatch.get(55.0); - let surface_color = neutral_swatch.get(98.0); - let surface_variant_color = neutral_swatch.get(90.0); + let neutral_color = neutral_swatch.get(if is_dark { 0.35 } else { 0.65 }); + let neutral_variant_color = neutral_swatch.get(if is_dark { 0.45 } else { 0.55 }); + let surface_color = neutral_swatch.get(if is_dark { 0.10 } else { 0.98 }); + let surface_variant_color = neutral_swatch.get(if is_dark { 0.20 } else { 0.85 }); let neutral_set = ColorSet::new( &neutral_color,