|
|
@ -639,8 +639,8 @@ var DeviceCmykCS = (function DeviceCmykCSClosure() { |
|
|
|
var CalGrayCS = (function CalGrayCSClosure() { |
|
|
|
var CalGrayCS = (function CalGrayCSClosure() { |
|
|
|
function CalGrayCS(whitePoint, blackPoint, gamma) { |
|
|
|
function CalGrayCS(whitePoint, blackPoint, gamma) { |
|
|
|
this.name = 'CalGray'; |
|
|
|
this.name = 'CalGray'; |
|
|
|
this.numComps = 3; |
|
|
|
this.numComps = 1; |
|
|
|
this.defaultColor = new Float32Array([0, 0, 0]); |
|
|
|
this.defaultColor = new Float32Array([0]); |
|
|
|
|
|
|
|
|
|
|
|
if (!whitePoint) { |
|
|
|
if (!whitePoint) { |
|
|
|
error('WhitePoint missing - required for color space CalGray'); |
|
|
|
error('WhitePoint missing - required for color space CalGray'); |
|
|
@ -682,24 +682,17 @@ var CalGrayCS = (function CalGrayCSClosure() { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
CalGrayCS.prototype = { |
|
|
|
function convertToRgb(cs, src, srcOffset, dest, destOffset, scale) { |
|
|
|
getRgb: function CalGrayCS_getRgb(src, srcOffset) { |
|
|
|
|
|
|
|
var rgb = new Uint8Array(3); |
|
|
|
|
|
|
|
this.getRgbItem(src, srcOffset, rgb, 0); |
|
|
|
|
|
|
|
return rgb; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
getRgbItem: function CalGrayCS_getRgbItem(src, srcOffset, |
|
|
|
|
|
|
|
dest, destOffset) { |
|
|
|
|
|
|
|
// A represents a gray component of a calibrated gray space.
|
|
|
|
// A represents a gray component of a calibrated gray space.
|
|
|
|
// A <---> AG in the spec
|
|
|
|
// A <---> AG in the spec
|
|
|
|
var A = src[srcOffset]; |
|
|
|
var A = src[srcOffset] * scale; |
|
|
|
var AG = Math.pow(A, this.G); |
|
|
|
var AG = Math.pow(A, cs.G); |
|
|
|
|
|
|
|
|
|
|
|
// Computes intermediate variables M, L, N as per spec.
|
|
|
|
// Computes intermediate variables M, L, N as per spec.
|
|
|
|
// Except if other than default BlackPoint values are used.
|
|
|
|
// Except if other than default BlackPoint values are used.
|
|
|
|
var M = this.XW * AG; |
|
|
|
var M = cs.XW * AG; |
|
|
|
var L = this.YW * AG; |
|
|
|
var L = cs.YW * AG; |
|
|
|
var N = this.ZW * AG; |
|
|
|
var N = cs.ZW * AG; |
|
|
|
|
|
|
|
|
|
|
|
// Decode XYZ, as per spec.
|
|
|
|
// Decode XYZ, as per spec.
|
|
|
|
var X = M; |
|
|
|
var X = M; |
|
|
@ -714,17 +707,26 @@ var CalGrayCS = (function CalGrayCSClosure() { |
|
|
|
dest[destOffset] = Lstar * 255 / 100; |
|
|
|
dest[destOffset] = Lstar * 255 / 100; |
|
|
|
dest[destOffset + 1] = Lstar * 255 / 100; |
|
|
|
dest[destOffset + 1] = Lstar * 255 / 100; |
|
|
|
dest[destOffset + 2] = Lstar * 255 / 100; |
|
|
|
dest[destOffset + 2] = Lstar * 255 / 100; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CalGrayCS.prototype = { |
|
|
|
|
|
|
|
getRgb: function CalGrayCS_getRgb(src, srcOffset) { |
|
|
|
|
|
|
|
var rgb = new Uint8Array(3); |
|
|
|
|
|
|
|
this.getRgbItem(src, srcOffset, rgb, 0); |
|
|
|
|
|
|
|
return rgb; |
|
|
|
|
|
|
|
}, |
|
|
|
|
|
|
|
getRgbItem: function CalGrayCS_getRgbItem(src, srcOffset, |
|
|
|
|
|
|
|
dest, destOffset) { |
|
|
|
|
|
|
|
convertToRgb(this, src, srcOffset, dest, destOffset, 1); |
|
|
|
}, |
|
|
|
}, |
|
|
|
getRgbBuffer: function CalGrayCS_getRgbBuffer(src, srcOffset, count, |
|
|
|
getRgbBuffer: function CalGrayCS_getRgbBuffer(src, srcOffset, count, |
|
|
|
dest, destOffset, bits) { |
|
|
|
dest, destOffset, bits) { |
|
|
|
// TODO: This part is copied from DeviceGray. Make this utility function.
|
|
|
|
var scale = 1 / ((1 << bits) - 1); |
|
|
|
var scale = 255 / ((1 << bits) - 1); |
|
|
|
|
|
|
|
var j = srcOffset, q = destOffset; |
|
|
|
|
|
|
|
for (var i = 0; i < count; ++i) { |
|
|
|
for (var i = 0; i < count; ++i) { |
|
|
|
var c = (scale * src[j++]) | 0; |
|
|
|
convertToRgb(this, src, srcOffset, dest, destOffset, scale); |
|
|
|
dest[q++] = c; |
|
|
|
srcOffset += 1; |
|
|
|
dest[q++] = c; |
|
|
|
destOffset += 3; |
|
|
|
dest[q++] = c; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
}, |
|
|
|
}, |
|
|
|
getOutputLength: function CalGrayCS_getOutputLength(inputLength) { |
|
|
|
getOutputLength: function CalGrayCS_getOutputLength(inputLength) { |
|
|
|