This commit is contained in:
Sébastien d'Herbais de Thun 2023-12-11 17:03:59 +01:00 committed by GitHub
parent ce9d420472
commit 343a423e9f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 4 deletions

View File

@ -255,7 +255,7 @@ pub trait ColorEncode {
impl ColorEncode for ColorSpace {
fn encode(&self, color: Color) -> [f32; 4] {
match self {
ColorSpace::Oklab => {
ColorSpace::Oklab | ColorSpace::Oklch => {
let [l, c, h, alpha] = color.to_oklch().to_vec4();
// Clamp on Oklch's chroma, not Oklab's a\* and b\* as to not distort hue.
let c = c.clamp(0.0, 0.5);
@ -272,9 +272,6 @@ impl ColorEncode for ColorSpace {
let [h, s, v, _] = color.to_hsv().to_vec4();
[h / 360.0, s, v, 0.0]
}
ColorSpace::Oklch => {
unimplemented!("Oklch is always converted to Oklab first")
}
_ => color.to_vec4(),
}
}

View File

@ -0,0 +1,20 @@
// Minimal reproduction of #2902
// Ref: false
---
#set page(width: 15cm, height: auto, margin: 1em)
#set block(width: 100%, height: 1cm, above: 2pt)
// Oklch
#block(fill: gradient.linear(red, purple, space: oklch))
#block(fill: gradient.linear(..color.map.rainbow, space: oklch))
#block(fill: gradient.linear(..color.map.plasma, space: oklch))
---
#set page(width: 15cm, height: auto, margin: 1em)
#set block(width: 100%, height: 1cm, above: 2pt)
// Oklab
#block(fill: gradient.linear(red, purple, space: oklab))
#block(fill: gradient.linear(..color.map.rainbow, space: oklab))
#block(fill: gradient.linear(..color.map.plasma, space: oklab))