]> git.parisson.com Git - pdf.js.git/commitdiff
working version of PDFImage
authorsbarman <sbarman@L3CWZ5T.(none)>
Mon, 27 Jun 2011 16:58:02 +0000 (09:58 -0700)
committersbarman <sbarman@L3CWZ5T.(none)>
Mon, 27 Jun 2011 16:58:02 +0000 (09:58 -0700)
pdf.js

diff --git a/pdf.js b/pdf.js
index 8b8e6ff54346cbe8823b8fcff75753d2ce604123..542c0d48afb249898dc5b4d192958ffb6f599476 100644 (file)
--- a/pdf.js
+++ b/pdf.js
@@ -4446,14 +4446,39 @@ var PDFImage = (function() {
     constructor.prototype = {
         getCompFunction: function getCompFunction(bpc, width, numComps, buffer) {
             var bufferPos = 0;
-            if (bpc == 8) {
+            if (bpc == 1) {
+                var rowComps = width * numComps;
+                var curComp = 0;
+                var mask = 0;
+                var buf = 0;
+                
+                var getComp = function() {
+                    if (mask <= 0) {
+                        buf = buffer[bufferPos++];
+                        mask = 128;
+                    }
+
+                    var ret = buf & mask;
+                    curComp++;
+
+                    if (curComp % rowComps == 0) {
+                        mask = 0;
+                        buf = 0;
+                    } else {
+                        mask >>= 1;
+                    }
+                    return ret * 255;
+                }
+            } else if (bpc == 8) {
                 var getComp = function() {
                     return buffer[bufferPos++];
                 }
             } else {
-                var rowBytes = (width * numComps * bpc + 7) >> 3;
+                var rowComps = width * numComps;
+                var curComp = 0;
                 var bits = 0;
                 var buf = 0;
+
                 var getComp = function() {
                     while (bits < bpc) {
                         buf = (buf << 8) | buffer[bufferPos++];
@@ -4461,8 +4486,9 @@ var PDFImage = (function() {
                     }
                     var remainingBits = bits - bpc;
                     var ret = buf >> remainingBits;
+                    curComp++;
                     
-                    if (bufferPos % rowBytes == 0) {
+                    if (curComp % rowComps == 0) {
                         buf = 0;
                         bits = 0;
                     } else {