From 086323bd628bf5b4770e27fe9cc0e2556bf1a96f Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Mon, 22 Sep 2014 16:26:37 -0500 Subject: [PATCH] PDF.js version 1.0.353 --- bower.json | 2 +- build/pdf.combined.js | 43 ++++++++++++++++++++++++++++++------------- build/pdf.js | 4 ++-- build/pdf.worker.js | 43 ++++++++++++++++++++++++++++++------------- package.json | 2 +- 5 files changed, 64 insertions(+), 30 deletions(-) diff --git a/bower.json b/bower.json index a5ce1ac98..162dab65f 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "pdfjs-dist", - "version": "1.0.351", + "version": "1.0.353", "keywords": [ "Mozilla", "pdf", diff --git a/build/pdf.combined.js b/build/pdf.combined.js index 76d817cf8..cacca859f 100644 --- a/build/pdf.combined.js +++ b/build/pdf.combined.js @@ -21,8 +21,8 @@ if (typeof PDFJS === 'undefined') { (typeof window !== 'undefined' ? window : this).PDFJS = {}; } -PDFJS.version = '1.0.351'; -PDFJS.build = 'cab0430'; +PDFJS.version = '1.0.353'; +PDFJS.build = '480e093'; (function pdfjsWrapper() { // Use strict in our context only - users might not want it @@ -20202,11 +20202,11 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { var bitStrideLength = (width + 7) >> 3; var imgArray = image.getBytes(bitStrideLength * height); var decode = dict.get('Decode', 'D'); - var canTransfer = image instanceof DecodeStream; var inverseDecode = (!!decode && decode[0] > 0); imgData = PDFImage.createMask(imgArray, width, height, - canTransfer, inverseDecode); + image instanceof DecodeStream, + inverseDecode); imgData.cached = true; args = [imgData]; operatorList.addOp(OPS.paintImageMaskXObject, args); @@ -35426,23 +35426,40 @@ var PDFImage = (function PDFImageClosure() { }; PDFImage.createMask = - function PDFImage_createMask(imgArray, width, height, canTransfer, - inverseDecode) { - // If imgArray came from a DecodeStream, we're safe to transfer it. - // Otherwise, copy it. + function PDFImage_createMask(imgArray, width, height, + imageIsFromDecodeStream, inverseDecode) { + + // |imgArray| might not contain full data for every pixel of the mask, so + // we need to distinguish between |computedLength| and |actualLength|. + // In particular, if inverseDecode is true, then the array we return must + // have a length of |computedLength|. + + var computedLength = ((width + 7) >> 3) * height; var actualLength = imgArray.byteLength; - var data; - if (canTransfer) { + var haveFullData = computedLength == actualLength; + var data, i; + + if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) { + // imgArray came from a DecodeStream and its data is in an appropriate + // form, so we can just transfer it. data = imgArray; - } else { + } else if (!inverseDecode) { data = new Uint8Array(actualLength); data.set(imgArray); + } else { + data = new Uint8Array(computedLength); + data.set(imgArray); + for (i = actualLength; i < computedLength; i++) { + data[i] = 0xff; + } } - // Invert if necessary. It's safe to modify the array -- whether it's the + + // If necessary, invert the original mask data (but not any extra we might + // have added above). It's safe to modify the array -- whether it's the // original or a copy, we're about to transfer it anyway, so nothing else // in this thread can be relying on its contents. if (inverseDecode) { - for (var i = 0; i < actualLength; i++) { + for (i = 0; i < actualLength; i++) { data[i] = ~data[i]; } } diff --git a/build/pdf.js b/build/pdf.js index 528449388..315751e89 100644 --- a/build/pdf.js +++ b/build/pdf.js @@ -21,8 +21,8 @@ if (typeof PDFJS === 'undefined') { (typeof window !== 'undefined' ? window : this).PDFJS = {}; } -PDFJS.version = '1.0.351'; -PDFJS.build = 'cab0430'; +PDFJS.version = '1.0.353'; +PDFJS.build = '480e093'; (function pdfjsWrapper() { // Use strict in our context only - users might not want it diff --git a/build/pdf.worker.js b/build/pdf.worker.js index ed91206ac..b750d7862 100644 --- a/build/pdf.worker.js +++ b/build/pdf.worker.js @@ -21,8 +21,8 @@ if (typeof PDFJS === 'undefined') { (typeof window !== 'undefined' ? window : this).PDFJS = {}; } -PDFJS.version = '1.0.351'; -PDFJS.build = 'cab0430'; +PDFJS.version = '1.0.353'; +PDFJS.build = '480e093'; (function pdfjsWrapper() { // Use strict in our context only - users might not want it @@ -15686,11 +15686,11 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { var bitStrideLength = (width + 7) >> 3; var imgArray = image.getBytes(bitStrideLength * height); var decode = dict.get('Decode', 'D'); - var canTransfer = image instanceof DecodeStream; var inverseDecode = (!!decode && decode[0] > 0); imgData = PDFImage.createMask(imgArray, width, height, - canTransfer, inverseDecode); + image instanceof DecodeStream, + inverseDecode); imgData.cached = true; args = [imgData]; operatorList.addOp(OPS.paintImageMaskXObject, args); @@ -30910,23 +30910,40 @@ var PDFImage = (function PDFImageClosure() { }; PDFImage.createMask = - function PDFImage_createMask(imgArray, width, height, canTransfer, - inverseDecode) { - // If imgArray came from a DecodeStream, we're safe to transfer it. - // Otherwise, copy it. + function PDFImage_createMask(imgArray, width, height, + imageIsFromDecodeStream, inverseDecode) { + + // |imgArray| might not contain full data for every pixel of the mask, so + // we need to distinguish between |computedLength| and |actualLength|. + // In particular, if inverseDecode is true, then the array we return must + // have a length of |computedLength|. + + var computedLength = ((width + 7) >> 3) * height; var actualLength = imgArray.byteLength; - var data; - if (canTransfer) { + var haveFullData = computedLength == actualLength; + var data, i; + + if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) { + // imgArray came from a DecodeStream and its data is in an appropriate + // form, so we can just transfer it. data = imgArray; - } else { + } else if (!inverseDecode) { data = new Uint8Array(actualLength); data.set(imgArray); + } else { + data = new Uint8Array(computedLength); + data.set(imgArray); + for (i = actualLength; i < computedLength; i++) { + data[i] = 0xff; + } } - // Invert if necessary. It's safe to modify the array -- whether it's the + + // If necessary, invert the original mask data (but not any extra we might + // have added above). It's safe to modify the array -- whether it's the // original or a copy, we're about to transfer it anyway, so nothing else // in this thread can be relying on its contents. if (inverseDecode) { - for (var i = 0; i < actualLength; i++) { + for (i = 0; i < actualLength; i++) { data[i] = ~data[i]; } } diff --git a/package.json b/package.json index c6627bc5e..efa668056 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pdfjs-dist", - "version": "1.0.351", + "version": "1.0.353", "description": "Generic build of Mozilla's PDF.js library.", "keywords": [ "Mozilla",