Just use imageData directly on Gecko

This commit is contained in:
Julian Viereck 2011-09-14 10:08:10 -07:00
parent 9d2806ec87
commit 18ce3ebaed
2 changed files with 23 additions and 11 deletions

30
pdf.js
View File

@ -6,6 +6,11 @@
var ERRORS = 0, WARNINGS = 1, TODOS = 5;
var verbosity = WARNINGS;
var isGecko = false;
if (typeof navigator !== 'undefined') {
isGecko = navigator.userAgent.indexOf("Gecko/") !== -1;
}
function log(msg) {
if (console && console.log)
console.log(msg);
@ -5469,19 +5474,26 @@ var CanvasGraphics = (function() {
// scale the image to the unit square
ctx.scale(1 / w, -1 / h);
var tmpCanvas = new this.ScratchCanvas(w, h);
var tmpCtx = tmpCanvas.getContext('2d');
var tmpImgData = tmpCtx.getImageData(0, 0, w, h);
var tmpImgData;
// Gecko doesn't care too much of the shape of imgData, but other browser
// do.
if (isGecko) {
tmpImgData = imgData;
} else {
tmpImgData = tmpCtx.getImageData(0, 0, w, h);
// Copy over the imageData.
var tmpImgDataPixels = tmpImgData.data;
var len = tmpImgDataPixels.length;
// Copy over the imageData.
var tmpImgDataPixels = tmpImgData.data;
var len = tmpImgDataPixels.length;
// TODO: There got to be a better way to copy an ImageData array
// then coping over all the bytes one by one :/
while (len--)
tmpImgDataPixels[len] = imgData.data[len];
// TODO: There got to be a better way to copy an ImageData array
// then coping over all the bytes one by one :/
while (len--)
tmpImgDataPixels[len] = imgData.data[len];
}
tmpCtx.putImageData(tmpImgData, 0, 0);
ctx.drawImage(tmpCanvas, 0, -h);

View File

@ -85,7 +85,7 @@ var Objects = {
get: function(objId) {
var obj = Objects[objId];
if (!obj || !obj.isResolved) {
throw "Requesting object that isn't resolved yet";
throw "Requesting object that isn't resolved yet " + objId;
}
return obj.data;
}
@ -162,7 +162,7 @@ var WorkerPDFDoc = (function() {
this.pageCache = [];
var useWorker = false;
var useWorker = true;
if (useWorker) {
var worker = new Worker("../worker/boot_processor.js");