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

View File

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

View File

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