From d76f5f681531937276a4a379a56a2efafb123166 Mon Sep 17 00:00:00 2001 From: Brendan Dahl Date: Tue, 13 Dec 2011 08:48:27 -0800 Subject: [PATCH] Playing with initial decode map impl. --- src/evaluator.js | 2 +- src/image.js | 21 ++++++++++++++++----- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/evaluator.js b/src/evaluator.js index edef57f91..5c20c8660 100644 --- a/src/evaluator.js +++ b/src/evaluator.js @@ -227,7 +227,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() { data: new Uint8Array(w * h * 4) }; var pixels = imgData.data; - imageObj.fillRgbaBuffer(pixels, imageObj.decode); + imageObj.fillRgbaBuffer(pixels); handler.send('obj', [objId, 'Image', imgData]); }, handler, xref, resources, image, inline); } diff --git a/src/image.js b/src/image.js index 987542c58..8adae5030 100644 --- a/src/image.js +++ b/src/image.js @@ -104,10 +104,13 @@ var PDFImage = (function PDFImageClosure() { }; PDFImage.prototype = { - getComponents: function getComponents(buffer, decodeMap) { + getComponents: function getComponents(buffer) { var bpc = this.bpc; - if (bpc == 8) - return buffer; + var decodeMap = this.decode; + //if (decodeMap) + // debugger; + //if (bpc == 8) + // return buffer; var width = this.width; var height = this.height; @@ -160,6 +163,14 @@ var PDFImage = (function PDFImageClosure() { var remainingBits = bits - bpc; output[i] = buf >> remainingBits; + if (decodeMap) { + var x = output[i]; + var dmin = decodeMap[0]; + var dmax = decodeMap[1]; + var max = Math.pow(2, bpc) - 1; + var val = max * (dmin + x * ((dmax - dmin)/(max))); + output[i] = val; + } buf = buf & ((1 << remainingBits) - 1); bits = remainingBits; } @@ -210,7 +221,7 @@ var PDFImage = (function PDFImageClosure() { } } }, - fillRgbaBuffer: function fillRgbaBuffer(buffer, decodeMap) { + fillRgbaBuffer: function fillRgbaBuffer(buffer) { var numComps = this.numComps; var width = this.width; var height = this.height; @@ -221,7 +232,7 @@ var PDFImage = (function PDFImageClosure() { var imgArray = this.getImageBytes(height * rowBytes); var comps = this.colorSpace.getRgbBuffer( - this.getComponents(imgArray, decodeMap), bpc); + this.getComponents(imgArray), bpc); var compsPos = 0; var opacity = this.getOpacity(); var opacityPos = 0;