fix(baseline): 确保 neutral_lightest 的亮度高于 neutral_darkest,必要时进行交换
This commit is contained in:
@@ -147,6 +147,13 @@ impl Baseline {
|
|||||||
settings: &Arc<SchemeSetting>,
|
settings: &Arc<SchemeSetting>,
|
||||||
is_dark: bool,
|
is_dark: bool,
|
||||||
) -> Self {
|
) -> Self {
|
||||||
|
// Ensure neutral_lightest has higher lightness than neutral_darkest, swap if necessary
|
||||||
|
let (neutral_lightest, neutral_darkest) = if neutral_lightest.l >= neutral_darkest.l {
|
||||||
|
(*neutral_lightest, *neutral_darkest)
|
||||||
|
} else {
|
||||||
|
(*neutral_darkest, *neutral_lightest)
|
||||||
|
};
|
||||||
|
|
||||||
let (final_secondary, final_tertiary, final_accent) = match settings.expand_method {
|
let (final_secondary, final_tertiary, final_accent) = match settings.expand_method {
|
||||||
ColorExpand::Complementary => {
|
ColorExpand::Complementary => {
|
||||||
let sec_color = secondary.cloned().or(Some(primary.complementary()));
|
let sec_color = secondary.cloned().or(Some(primary.complementary()));
|
||||||
@@ -209,7 +216,7 @@ impl Baseline {
|
|||||||
} else {
|
} else {
|
||||||
neutral_lightest.l
|
neutral_lightest.l
|
||||||
};
|
};
|
||||||
let neutral_swatch = Arc::new(NeutralSwatch::new(*neutral_lightest, *neutral_darkest));
|
let neutral_swatch = Arc::new(NeutralSwatch::new(neutral_lightest, neutral_darkest));
|
||||||
let outline_color = neutral_swatch.get(if is_dark { 0.25 } else { 0.7 });
|
let outline_color = neutral_swatch.get(if is_dark { 0.25 } else { 0.7 });
|
||||||
let outline_variant_color = neutral_swatch.get(if is_dark { 0.2 } else { 0.8 });
|
let outline_variant_color = neutral_swatch.get(if is_dark { 0.2 } else { 0.8 });
|
||||||
let shadow_color = neutral_swatch.get(0.1);
|
let shadow_color = neutral_swatch.get(0.1);
|
||||||
@@ -308,13 +315,13 @@ impl Baseline {
|
|||||||
let (foreground, background) = if is_dark {
|
let (foreground, background) = if is_dark {
|
||||||
// Dark mode: foreground = neutral_lightest, background = neutral_darkest with +10% lightness
|
// Dark mode: foreground = neutral_lightest, background = neutral_darkest with +10% lightness
|
||||||
let background_darkest = Oklch {
|
let background_darkest = Oklch {
|
||||||
l: (neutral_darkest.l * 1.2).min(1.0),
|
l: (neutral_darkest.l * 1.3).min(1.0),
|
||||||
..*neutral_darkest
|
..neutral_darkest
|
||||||
};
|
};
|
||||||
(*neutral_lightest, background_darkest)
|
(neutral_lightest, background_darkest)
|
||||||
} else {
|
} else {
|
||||||
// Light mode: foreground = neutral_darkest, background = neutral_lightest
|
// Light mode: foreground = neutral_darkest, background = neutral_lightest
|
||||||
(*neutral_darkest, *neutral_lightest)
|
(neutral_darkest, neutral_lightest)
|
||||||
};
|
};
|
||||||
|
|
||||||
Self {
|
Self {
|
||||||
|
|||||||
Reference in New Issue
Block a user