Merge remote branch 'upstream/master'

This commit is contained in:
Vivien Nicolas 2011-08-31 13:43:28 +02:00
commit 25d4fb0d81
3 changed files with 47 additions and 32 deletions

72
pdf.js
View File

@ -4331,7 +4331,7 @@ var PartialEvaluator = (function() {
var startRange = tokens[j]; var startRange = tokens[j];
var endRange = tokens[j + 1]; var endRange = tokens[j + 1];
var code = tokens[j + 2]; var code = tokens[j + 2];
while(startRange < endRange) { while (startRange < endRange) {
encodingMap[startRange] = code++; encodingMap[startRange] = code++;
++startRange; ++startRange;
} }
@ -4365,9 +4365,9 @@ var PartialEvaluator = (function() {
case 0x5D: case 0x5D:
// collect array items // collect array items
var items = [], item; var items = [], item;
while (tokens.length && (item = tokens.pop()) != beginArrayToken) { while (tokens.length &&
(item = tokens.pop()) != beginArrayToken)
items.unshift(item); items.unshift(item);
}
tokens.push(items); tokens.push(items);
break; break;
} }
@ -5359,9 +5359,10 @@ var SeparationCS = (function() {
var tinted = this.tintFn.func(color); var tinted = this.tintFn.func(color);
return this.base.getRgb(tinted); return this.base.getRgb(tinted);
}, },
getRgbBuffer: function sepcs_getRgbBuffer(input) { getRgbBuffer: function sepcs_getRgbBuffer(input, bits) {
var tintFn = this.tintFn; var tintFn = this.tintFn;
var base = this.base; var base = this.base;
var scale = 1 / ((1 << bits) - 1);
var length = 3 * input.length; var length = 3 * input.length;
var pos = 0; var pos = 0;
@ -5369,12 +5370,12 @@ var SeparationCS = (function() {
var numComps = base.numComps; var numComps = base.numComps;
var baseBuf = new Uint8Array(numComps * input.length); var baseBuf = new Uint8Array(numComps * input.length);
for (var i = 0, ii = input.length; i < ii; ++i) { for (var i = 0, ii = input.length; i < ii; ++i) {
var scaled = input[i] / 255; var scaled = input[i] * scale;
var tinted = tintFn.func([scaled]); var tinted = tintFn.func([scaled]);
for (var j = 0; j < numComps; ++j) for (var j = 0; j < numComps; ++j)
baseBuf[pos++] = 255 * tinted[j]; baseBuf[pos++] = 255 * tinted[j];
} }
return base.getRgbBuffer(baseBuf); return base.getRgbBuffer(baseBuf, 8);
} }
}; };
@ -5443,7 +5444,7 @@ var IndexedCS = (function() {
} }
} }
return base.getRgbBuffer(baseBuf); return base.getRgbBuffer(baseBuf, 8);
} }
}; };
return constructor; return constructor;
@ -5461,11 +5462,12 @@ var DeviceGrayCS = (function() {
var c = color[0]; var c = color[0];
return [c, c, c]; return [c, c, c];
}, },
getRgbBuffer: function graycs_getRgbBuffer(input) { getRgbBuffer: function graycs_getRgbBuffer(input, bits) {
var scale = 255 / ((1 << bits) - 1);
var length = input.length * 3; var length = input.length * 3;
var rgbBuf = new Uint8Array(length); var rgbBuf = new Uint8Array(length);
for (var i = 0, j = 0; i < length; ++i) { for (var i = 0, j = 0; i < length; ++i) {
var c = input[i]; var c = (scale * input[i]) | 0;
rgbBuf[j++] = c; rgbBuf[j++] = c;
rgbBuf[j++] = c; rgbBuf[j++] = c;
rgbBuf[j++] = c; rgbBuf[j++] = c;
@ -5477,7 +5479,7 @@ var DeviceGrayCS = (function() {
})(); })();
var DeviceRgbCS = (function() { var DeviceRgbCS = (function() {
function constructor() { function constructor(bits) {
this.name = 'DeviceRGB'; this.name = 'DeviceRGB';
this.numComps = 3; this.numComps = 3;
this.defaultColor = [0, 0, 0]; this.defaultColor = [0, 0, 0];
@ -5486,8 +5488,15 @@ var DeviceRgbCS = (function() {
getRgb: function rgbcs_getRgb(color) { getRgb: function rgbcs_getRgb(color) {
return color; return color;
}, },
getRgbBuffer: function rgbcs_getRgbBuffer(input) { getRgbBuffer: function rgbcs_getRgbBuffer(input, bits) {
return input; if (bits == 8)
return input;
var scale = 255 / ((1 << bits) - 1);
var i, length = input.length;
var rgbBuf = new Uint8Array(length);
for (i = 0; i < length; ++i)
rgbBuf[i] = (scale * input[i]) | 0;
return rgbBuf;
} }
}; };
return constructor; return constructor;
@ -5554,7 +5563,8 @@ var DeviceCmykCS = (function() {
return [r, g, b]; return [r, g, b];
}, },
getRgbBuffer: function cmykcs_getRgbBuffer(colorBuf) { getRgbBuffer: function cmykcs_getRgbBuffer(colorBuf, bits) {
var scale = 1 / ((1 << bits) - 1);
var length = colorBuf.length / 4; var length = colorBuf.length / 4;
var rgbBuf = new Uint8Array(length * 3); var rgbBuf = new Uint8Array(length * 3);
var rgbBufPos = 0; var rgbBufPos = 0;
@ -5563,7 +5573,7 @@ var DeviceCmykCS = (function() {
for (var i = 0; i < length; i++) { for (var i = 0; i < length; i++) {
var cmyk = []; var cmyk = [];
for (var j = 0; j < 4; ++j) for (var j = 0; j < 4; ++j)
cmyk.push(colorBuf[colorBufPos++] / 255); cmyk.push(scale * colorBuf[colorBufPos++]);
var rgb = this.getRgb(cmyk); var rgb = this.getRgb(cmyk);
for (var j = 0; j < 3; ++j) for (var j = 0; j < 3; ++j)
@ -5946,13 +5956,14 @@ var PDFImage = (function() {
var length = width * height; var length = width * height;
var bufferPos = 0; var bufferPos = 0;
var output = new Uint8Array(length); var output = bpc <= 8 ? new Uint8Array(length) :
bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length);
if (bpc == 1) { if (bpc == 1) {
var valueZero = 0, valueOne = 255; var valueZero = 0, valueOne = 1;
if (decodeMap) { if (decodeMap) {
valueZero = decodeMap[0] ? 255 : 0; valueZero = decodeMap[0] ? 1 : 0;
valueOne = decodeMap[1] ? 255 : 0; valueOne = decodeMap[1] ? 1 : 0;
} }
var rowComps = width * numComps; var rowComps = width * numComps;
var mask = 0; var mask = 0;
@ -5977,25 +5988,22 @@ var PDFImage = (function() {
if (decodeMap != null) if (decodeMap != null)
TODO('interpolate component values'); TODO('interpolate component values');
var rowComps = width * numComps; var rowComps = width * numComps;
var bits = 0; var bits, buf;
var buf = 0;
for (var i = 0, ii = length; i < ii; ++i) { for (var i = 0, ii = length; i < ii; ++i) {
if (i % rowComps == 0) {
buf = 0;
bits = 0;
}
while (bits < bpc) { while (bits < bpc) {
buf = (buf << 8) | buffer[bufferPos++]; buf = (buf << 8) | buffer[bufferPos++];
bits += 8; bits += 8;
} }
var remainingBits = bits - bpc;
var ret = buf >> remainingBits;
if (i % rowComps == 0) { var remainingBits = bits - bpc;
buf = 0; output[i] = buf >> remainingBits;
bits = 0; buf = buf & ((1 << remainingBits) - 1);
} else { bits = remainingBits;
buf = buf & ((1 << remainingBits) - 1);
bits = remainingBits;
}
output[i] = Math.round(255 * ret / ((1 << bpc) - 1));
} }
} }
return output; return output;
@ -6055,7 +6063,7 @@ var PDFImage = (function() {
var imgArray = this.image.getBytes(height * rowBytes); var imgArray = this.image.getBytes(height * rowBytes);
var comps = this.colorSpace.getRgbBuffer( var comps = this.colorSpace.getRgbBuffer(
this.getComponents(imgArray, decodeMap)); this.getComponents(imgArray, decodeMap), bpc);
var compsPos = 0; var compsPos = 0;
var opacity = this.getOpacity(); var opacity = this.getOpacity();
var opacityPos = 0; var opacityPos = 0;

View File

@ -0,0 +1 @@
http://www.archive.org/download/PdKids/PdKids.pdf

View File

@ -103,5 +103,11 @@
"link": true, "link": true,
"rounds": 1, "rounds": 1,
"type": "eq" "type": "eq"
},
{ "id": "pdkids",
"file": "pdfs/pdkids.pdf",
"link": true,
"rounds": 1,
"type": "eq"
} }
] ]