encode8 function
round(255 ยท encode(x)) for linear-light x, without pow: binary
search over the 255 thresholds t_v = decode((v + 0.5)/255). Inputs
outside 0, 1 clamp to 0 / 255.
Implementation
int encode8(double x) {
var lo = 0;
var hi = 255;
while (lo < hi) {
final mid = (lo + hi) >> 1;
if (x < srgbEncodeThreshold[mid]) {
hi = mid;
} else {
lo = mid + 1;
}
}
return lo;
}