- From: Chris Lilley via GitHub <sysbot+gh@w3.org>
- Date: Sat, 16 Dec 2023 17:03:00 +0000
- To: public-css-archive@w3.org
> So it seems HSL algorithm can be altered successfully to correct the negative saturation without introducing issues if negative saturation is a problem. We now have: ```js /** * @param {number} red - Red component 0..1 * @param {number} green - Green component 0..1 * @param {number} blue - Blue component 0..1 * @return {number[]} Array of HSL values: Hue as degrees 0..360, Saturation and Lightness in reference range [0,100] */ function rgbToHsl (red, green, blue) { let max = Math.max(red, green, blue); let min = Math.min(red, green, blue); let [hue, sat, light] = [NaN, 0, (min + max)/2]; let d = max - min; if (d !== 0) { sat = (light === 0 || light === 1) ? 0 : (max - light) / Math.min(light, 1 - light); switch (max) { case red: hue = (green - blue) / d + (green < blue ? 6 : 0); break; case green: hue = (blue - red) / d + 2; break; case blue: hue = (red - green) / d + 4; } hue = hue * 60; } // Very out of gamut colors can produce negative saturation // If so, just rotate the hue by 180 and use a positive saturation // see https://github.com/w3c/csswg-drafts/issues/9222 if (sat < 0) { hue += 180; sat = Math.abs(sat); } if (hue >= 360) { hue -= 360; } return [hue, sat * 100, light * 100]; } ``` -- GitHub Notification of comment by svgeesus Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/9222#issuecomment-1858872032 using your GitHub account -- Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config
Received on Saturday, 16 December 2023 17:03:03 UTC