]> git.parisson.com Git - pdf.js.git/commitdiff
made Ascii85Stream be a child of DecodeStream
authorsbarman <sbarman@L3CWZ5T.(none)>
Wed, 22 Jun 2011 05:39:38 +0000 (22:39 -0700)
committersbarman <sbarman@L3CWZ5T.(none)>
Wed, 22 Jun 2011 05:39:38 +0000 (22:39 -0700)
pdf.js

diff --git a/pdf.js b/pdf.js
index e955c25eaa33e81b6acd367c2eaf85f5a580e519..5ed0eb59d9a2260cff4325aa172e0171074be61c 100644 (file)
--- a/pdf.js
+++ b/pdf.js
@@ -171,15 +171,22 @@ var DecodeStream = (function() {
         getBytes: function(length) {
             var pos = this.pos;
 
-            this.ensureBuffer(pos + length);
-            while (!this.eof && this.bufferLength < pos + length)
-                this.readBlock();
+            if (length) {
+                this.ensureBuffer(pos + length);
+                var end = pos + length;
 
-            var end = pos + length;
-            var bufEnd = this.bufferLength;
+                while (!this.eof && this.bufferLength < end)
+                    this.readBlock();
+
+                var bufEnd = this.bufferLength;
+                if (end > bufEnd)
+                    end = bufEnd;
+            } else {
+                while (!this.eof)
+                    this.readBlock();
 
-            if (end > bufEnd)
-                end = bufEnd;
+                var end = this.bufferLength;
+            }
 
             this.pos = end;
             return this.buffer.subarray(pos, end)
@@ -763,132 +770,64 @@ var Ascii85Stream = (function() {
     function constructor(str) {
         this.str = str;
         this.dict = str.dict;
-        this.eof = false;
-        this.pos = 0;
-        this.bufferLength = 0;
-        this.buffer = null;
+        
+        DecodeStream.call(this);
     }
-    constructor.prototype = {
-        ensureBuffer: function(requested) {
-            var buffer = this.buffer;
-            var current = buffer ? buffer.byteLength : 0;
-            if (requested < current)
-                return buffer;
-            var size = 512;
-            while (size < requested)
-                size <<= 1;
-            var buffer2 = Uint8Array(size);
-            for (var i = 0; i < current; ++i)
-                buffer2[i] = buffer[i];
-            return this.buffer = buffer2;
-        },
-        getByte: function() {
-            var pos = this.pos;
-            while (this.bufferLength <= pos) {
-                if (this.eof)
-                    return;
-                this.readBlock();
-            }
-            return this.buffer[this.pos++];
-        },
-       getBytes: function(length) {
-            var pos = this.pos;
 
-            this.ensureBuffer(pos + length);
-            if (length) {
-                while (!this.eof && this.bufferLength < pos + length)
-                    this.readBlock();
+    constructor.prototype = Object.create(DecodeStream.prototype);
+    constructor.prototype.readBlock = function() {
+        const tildaCode = "~".charCodeAt(0);
+        const zCode = "z".charCodeAt(0);
+        var str = this.str;
 
-                var end = pos + length;
-                var bufEnd = this.bufferLength;
+        var c = str.getByte();
+        while (Lexer.isSpace(String.fromCharCode(c)))
+            c = str.getByte();
 
-                if (end > bufEnd)
-                    end = bufEnd;
-            } else {
-                while(!this.eof)
-                    this.readBlock();
-                var end = this.bufferLength;
-            }
-            this.pos = end;
-            return this.buffer.subarray(pos, end)
-        },
-        lookChar: function() {
-            var pos = this.pos;
-            while (this.bufferLength <= pos) {
-                if (this.eof)
-                    return;
-                this.readBlock();
-            }
-            return String.fromCharCode(this.buffer[this.pos]);
-        },
-        getChar: function() {
-            var pos = this.pos;
-            while (this.bufferLength <= pos) {
-                if (this.eof)
-                    return;
-                this.readBlock();
-            }
-            return String.fromCharCode(this.buffer[this.pos++]);
-        },
-        skip: function(n) {
-            if (!n)
-                n = 1;
-            this.pos += n;
-        },
-        readBlock: function() {
-            const tildaCode = "~".charCodeAt(0);
-            const zCode = "z".charCodeAt(0);
-            var str = this.str;
+        if (!c || c === tildaCode) {
+            this.eof = true;
+            return;
+        } 
 
-            var c = str.getByte();
-            while (Lexer.isSpace(String.fromCharCode(c)))
+        var bufferLength = this.bufferLength;
+
+        // special code for z
+        if (c == zCode) {
+            this.ensureBuffer(bufferLength + 4);
+            var buffer = this.buffer;
+            for (var i = 0; i < 4; ++i)
+                buffer[bufferLength + i] = 0;
+            this.bufferLength += 4;
+        } else {
+            var input = new Uint8Array(5);
+            input[0] = c;
+            for (var i = 1; i < 5; ++i){
                 c = str.getByte();
-            if (!c || c === tildaCode) {
-                this.eof = true;
-                return;
-            } 
+                while (Lexer.isSpace(String.fromCharCode(c)))
+                    c = str.getByte();
 
-            var bufferLength = this.bufferLength;
+                input[i] = c;
 
-            // special code for z
-            if (c == zCode) {
-                this.ensureBuffer(bufferLength + 4);
-                var buffer = this.buffer;
-                buffer[bufferLength++] = 0;
-                buffer[bufferLength++] = 0;
-                buffer[bufferLength++] = 0;
-                buffer[bufferLength++] = 0;
-                this.bufferLength += 4;
-            } else {
-                var input = new Uint8Array(5);
-                input[0] = c;
-                for (var i = 1; i < 5; ++i){
-                    c = str.getByte();
-                    while (Lexer.isSpace(String.fromCharCode(c)))
-                        c = str.getByte();
+                if (!c || c == tildaCode)
+                    break;
+            }
+            this.ensureBuffer(bufferLength + i - 1);
+            var buffer = this.buffer;
+            this.bufferLength += i - 1;
 
-                    input[i] = c;
-                    
-                    if (!c || c == tildaCode)
-                        break;
-                }
-                this.ensureBuffer(bufferLength + i - 1);
-                var buffer = this.buffer;
-                this.bufferLength += i - 1;
-                // partial ending;
-                if (i < 5) {
-                    for (++i; i < 5; ++i)
-                        input[i] = 0x21 + 84;
-                    this.eof = true;
-                }
-                var t = 0;
-                for (var i = 0; i < 5; ++i)
-                    t = t * 85 + (input[i] - 0x21);
-                
-                for (var i = 3; i >= 0; --i){
-                    buffer[bufferLength + i] = t & 0xFF;
-                    t >>= 8;
-                }
+            // partial ending;
+            if (i < 5) {
+                for (; i < 5; ++i)
+                    input[i] = 0x21 + 84;
+                this.eof = true;
+            }
+            var t = 0;
+            for (var i = 0; i < 5; ++i)
+                t = t * 85 + (input[i] - 0x21);
+
+            for (var i = 3; i >= 0; --i){
+                buffer[bufferLength + i] = t & 0xFF;
+                t >>= 8;
             }
         }
     };
@@ -2402,6 +2341,7 @@ var CanvasGraphics = (function() {
 
     constructor.prototype = {
         translateFont: function(fontDict, xref, resources) {
+            return;
             var descriptor = xref.fetch(fontDict.get("FontDescriptor"));
 
             var fontName = descriptor.get("FontName");