- From: Chris Lilley via GitHub <sysbot+gh@w3.org>
- Date: Wed, 23 Sep 2020 15:33:12 +0000
- To: public-css-archive@w3.org
> It may be worth solving this issue for implementers who copy the hwbToRgb() function by including the whiteness/blackness normalization logic in the function itself: Agreed. Currently the spec handwaves here: [The following Javascript implementation of the algorithm assumes that the white and black components have already been normalized, so their sum is no larger than 100%, and have been converted into numbers in the range [0,1].](https://drafts.csswg.org/css-color-4/#hwb-to-rgb) I tend to agree that it is better to do the normalization in the sample code. Here is what [color.js does](https://github.com/LeaVerou/color.js/blob/master/src/spaces/hwb.js): ```js from: { srgb (rgb) { let h = Color.spaces.hsl.from.srgb(rgb)[0]; // calculate white and black let w = Math.min(...rgb); let b = 1 - Math.max(...rgb); w *= 100; b *= 100; return [h, w, b]; }, hsv (hsv) { let [h, s, v] = hsv; return [h, v * (100 - s) / 100, 100 - v]; } }, ``` and ```js to: { srgb (hwb) { let [h, w, b] = hwb; // Now convert percentages to [0..1] w /=100; b /= 100; // Normalize so white plus black is no larger than 100 let sum = w + b; if (sum > 1) { w /= sum; b /= sum; } // From https://drafts.csswg.org/css-color-4/#hwb-to-rgb let rgb = Color.spaces.hsl.to.srgb([h, 100, 50]); for (var i = 0; i < 3; i++) { rgb[i] *= (1 - w - b); rgb[i] += w; } return rgb; } }, ``` -- GitHub Notification of comment by svgeesus Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/5531#issuecomment-697551300 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Wednesday, 23 September 2020 15:33:14 UTC