From 683bc1942720c80e9d47788c5217bc7b746436dd Mon Sep 17 00:00:00 2001
From: sbarman <sbarman@L3CWZ5T.(none)>
Date: Mon, 27 Jun 2011 09:58:02 -0700
Subject: [PATCH] working version of PDFImage

---
 pdf.js | 32 +++++++++++++++++++++++++++++---
 1 file changed, 29 insertions(+), 3 deletions(-)

diff --git a/pdf.js b/pdf.js
index 8b8e6ff54..542c0d48a 100644
--- 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 {