(o)
| 210 | }; |
| 211 | |
| 212 | function rgbToHsl(o) { |
| 213 | var r=o[0], g=o[1], b=o[2], m = 1/255; |
| 214 | r *= m, g *= m, b *= m; |
| 215 | // TODO: Math.max/min are pretty slow vs conditional assignment |
| 216 | var max = Math.max(r, g, b), min = Math.min(r, g, b); |
| 217 | var h, s, l = (max + min) * 0.5; |
| 218 | |
| 219 | if (max === min) { |
| 220 | h = s = 0; // achromatic |
| 221 | } else { |
| 222 | var d = max - min; |
| 223 | s = l > 0.5 ? d / (2 - max - min) : d / (max + min); |
| 224 | if (max === r) { h = (g - b) / d + (g < b ? 6 : 0); } |
| 225 | else if (max === g) { h = (b - r) / d + 2; } |
| 226 | else { h = (r - g) / d + 4; } |
| 227 | h /= 6; |
| 228 | } |
| 229 | o[0] = h*360; |
| 230 | o[1] = s*100; |
| 231 | o[2] = l*100; |
| 232 | } |
| 233 | |
| 234 | function hslToRgb(o) { |
| 235 | var h=(o[0]%360)/360, s=o[1]/100, l=o[2]/100; |
no outgoing calls
no test coverage detected