Optimized CalGrayCS's convertToRgb
This commit is contained in:
parent
ae92b6f96f
commit
f70a072cde
@ -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…
x
Reference in New Issue
Block a user