From 18ce3ebaed503898caa7991877a2484221276c97 Mon Sep 17 00:00:00 2001 From: Julian Viereck Date: Wed, 14 Sep 2011 10:08:10 -0700 Subject: [PATCH] Just use imageData directly on Gecko --- pdf.js | 30 +++++++++++++++++++++--------- worker.js | 4 ++-- 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/pdf.js b/pdf.js index 23dd910aa..141d10876 100644 --- a/pdf.js +++ b/pdf.js @@ -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); diff --git a/worker.js b/worker.js index a1bbf85a6..b46326160 100644 --- a/worker.js +++ b/worker.js @@ -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");