Bug 1897092 - Don't clamp hsl/hwb channels for modern syntax colors r=layout-reviewers,emilio

If hsl/hwb colors were created with rcs, then they are assumed to be
modern syntax and thens hould not be gamut mapped/clipped in any way.

Differential Revision: https://phabricator.services.mozilla.com/D210615
This commit is contained in:
Tiaan Louw 2024-05-20 08:37:32 +00:00
parent d390640225
commit dbd7895df6
3 changed files with 28 additions and 64 deletions

View file

@ -114,8 +114,20 @@ impl ColorFunction {
let mut result = AbsoluteColor::new( let mut result = AbsoluteColor::new(
ColorSpace::Hsl, ColorSpace::Hsl,
value!(h).map(|angle| normalize_hue(angle.degrees())), value!(h).map(|angle| normalize_hue(angle.degrees())),
value!(s).map(|s| s.to_number(SATURATION_RANGE).clamp(0.0, SATURATION_RANGE)), value!(s).map(|s| {
value!(l).map(|l| l.to_number(LIGHTNESS_RANGE).clamp(0.0, LIGHTNESS_RANGE)), if *is_legacy_syntax {
s.to_number(SATURATION_RANGE).clamp(0.0, SATURATION_RANGE)
} else {
s.to_number(SATURATION_RANGE)
}
}),
value!(l).map(|l| {
if *is_legacy_syntax {
l.to_number(LIGHTNESS_RANGE).clamp(0.0, LIGHTNESS_RANGE)
} else {
l.to_number(LIGHTNESS_RANGE)
}
}),
alpha!(alpha), alpha!(alpha),
); );
@ -133,8 +145,20 @@ impl ColorFunction {
let mut result = AbsoluteColor::new( let mut result = AbsoluteColor::new(
ColorSpace::Hwb, ColorSpace::Hwb,
value!(h).map(|angle| normalize_hue(angle.degrees())), value!(h).map(|angle| normalize_hue(angle.degrees())),
value!(w).map(|w| w.to_number(WHITENESS_RANGE).clamp(0.0, WHITENESS_RANGE)), value!(w).map(|w| {
value!(b).map(|b| b.to_number(BLACKNESS_RANGE).clamp(0.0, BLACKNESS_RANGE)), if *is_legacy_syntax {
w.to_number(WHITENESS_RANGE).clamp(0.0, WHITENESS_RANGE)
} else {
w.to_number(WHITENESS_RANGE)
}
}),
value!(b).map(|b| {
if *is_legacy_syntax {
b.to_number(BLACKNESS_RANGE).clamp(0.0, BLACKNESS_RANGE)
} else {
b.to_number(BLACKNESS_RANGE)
}
}),
alpha!(alpha), alpha!(alpha),
); );

View file

@ -16,9 +16,3 @@
[Property color value 'lch(from color(srgb 0.25 0.5 0.75) l c h)'] [Property color value 'lch(from color(srgb 0.25 0.5 0.75) l c h)']
expected: FAIL expected: FAIL
[Property color value 'color(from hsl(from color(xyz-d50 0.99 0.88 0.77) h s l) xyz-d50 x y z)']
expected: FAIL
[Property color value 'color(from hsl(from color(xyz-d65 0.99 0.88 0.77) h s l) xyz-d65 x y z)']
expected: FAIL

View file

@ -1,54 +0,0 @@
[relative-color-out-of-gamut.html]
[Property color value 'hsl(from color(display-p3 0 1 0) h s l / alpha)']
expected: FAIL
[Property color value 'hsl(from lab(100 104.3 -50.9) h s l)']
expected: FAIL
[Property color value 'hsl(from lab(0 104.3 -50.9) h s l)']
expected: FAIL
[Property color value 'hsl(from lch(100 116 334) h s l)']
expected: FAIL
[Property color value 'hsl(from lch(0 116 334) h s l)']
expected: FAIL
[Property color value 'hsl(from oklab(1 0.365 -0.16) h s l)']
expected: FAIL
[Property color value 'hsl(from oklab(0 0.365 -0.16) h s l)']
expected: FAIL
[Property color value 'hsl(from oklch(1 0.399 336.3) h s l)']
expected: FAIL
[Property color value 'hsl(from oklch(0 0.399 336.3) h s l)']
expected: FAIL
[Property color value 'hwb(from color(display-p3 0 1 0) h w b / alpha)']
expected: FAIL
[Property color value 'hwb(from lab(100 104.3 -50.9) h w b)']
expected: FAIL
[Property color value 'hwb(from lab(0 104.3 -50.9) h w b)']
expected: FAIL
[Property color value 'hwb(from lch(100 116 334) h w b)']
expected: FAIL
[Property color value 'hwb(from lch(0 116 334) h w b)']
expected: FAIL
[Property color value 'hwb(from oklab(1 0.365 -0.16) h w b)']
expected: FAIL
[Property color value 'hwb(from oklab(0 0.365 -0.16) h w b)']
expected: FAIL
[Property color value 'hwb(from oklch(1 0.399 336.3) h w b)']
expected: FAIL
[Property color value 'hwb(from oklch(0 0.399 336.3) h w b)']
expected: FAIL