Browse Source

Optimized CalGrayCS's convertToRgb

p01 11 years ago
parent
commit
f70a072cde
  1. 20
      src/shared/colorspace.js

20
src/shared/colorspace.js

@ -747,25 +747,15 @@ var CalGrayCS = (function CalGrayCSClosure() {
var A = src[srcOffset] * scale; var A = src[srcOffset] * scale;
var AG = Math.pow(A, cs.G); var AG = Math.pow(A, cs.G);
// Computes intermediate variables M, L, N as per spec. // Computes L as per spec. ( = cs.YW * AG )
// Except if other than default BlackPoint values are used. // Except if other than default BlackPoint values are used.
var M = cs.XW * AG;
var L = cs.YW * AG; var L = cs.YW * AG;
var N = cs.ZW * AG;
// Decode XYZ, as per spec.
var X = M;
var Y = L;
var Z = N;
// http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4. // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4.
// This yields values in range [0, 100].
var Lstar = Math.max(116 * Math.pow(Y, 1 / 3) - 16, 0);
// Convert values to rgb range [0, 255]. // Convert values to rgb range [0, 255].
dest[destOffset] = Lstar * 255 / 100; var val = Math.max(295.8 * Math.pow(L, 0.333333333333333333) - 40.8, 0) | 0;
dest[destOffset + 1] = Lstar * 255 / 100; dest[destOffset] = val;
dest[destOffset + 2] = Lstar * 255 / 100; dest[destOffset + 1] = val;
dest[destOffset + 2] = val;
} }
CalGrayCS.prototype = { CalGrayCS.prototype = {

Loading…
Cancel
Save