- From: Romain Menke via GitHub <sysbot+gh@w3.org>
- Date: Mon, 05 Jun 2023 15:42:55 +0000
- To: public-css-archive@w3.org
_I assigned some values to the steps to make sure I am not getting lost somewhere._ ----- For `color-mix(in hsl, transparent, hsl(30deg 30% 40%))` - `transparent` is `rgb(0 0 0 / 0)` - `hsl(30deg 30% 40%)` is already in `hsl` 1. check, for both colors, if each component has an analogous component in the destination color space `rgb(0 0 0 / 0)` -> no analogous components --------- 2. convert both colors to destination color space `rgb(0 0 0 / 0)` -> `hsl(0deg 0 0 / 0)` --------- 3. set the analogous component to missing in the output colors no analogous components -> `hsl(0deg 0 0 / 0)` --------- 4. fill in missing components with components from the other color no missing components -> nothing is filled in --------- 5. convert powerless components to missing components `lightness` is `0` -> `hsl(none none 0 / 0)` [^1] --------- 6. premultiply with alpha -> `hsl(none none 0 / 0)` --------- 7. linear interpolation between the two colors - `hsl(30deg 30% 40%)` - `hsl(none none 0%)` In my implementation this becomes : `hsl(30deg 30% 20%)` But this is most likely an implementation bug. I expect `none` to be resolved at this point because `fill in missing components with components from the other color` is usually done later. My interpolation function : ```js function interpolate(start: number, end: number, p: number): number { if (Number.isNaN(start)) { return end; } if (Number.isNaN(end)) { return start; } return (start * p) + end * (1 - p); } ``` --------- 8. un-premultiply - `hsl(30deg 60% 40%)` --------- With the interpolated alpha the outcome is `hsl(30deg 60% 40% / 0.5)`, which is a totally different color. [^1]: the specification was rewritten to change which components become powerless, but there was no resolution or agreement on that, so I am ignoring that change in this example. -- GitHub Notification of comment by romainmenke Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/8612#issuecomment-1577042345 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Monday, 5 June 2023 15:42:57 UTC