encode8 function

int encode8(
  1. double x
)

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;
}