fix(color-module): 修复暗黑模式下中性色计算错误
调整暗黑模式下的中性色计算逻辑,确保在不同主题下颜色值计算正确。主要修改了outline、shadow、surface等颜色的计算方式,根据is_dark标志使用不同的系数。
This commit is contained in:
parent
600c8c92ce
commit
a7ef8eb576
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user