]> git.parisson.com Git - pdf.js.git/commitdiff
make lengthDecode a typed array
authorAndreas Gal <andreas.gal@gmail.com>
Sat, 4 Jun 2011 17:18:04 +0000 (10:18 -0700)
committerAndreas Gal <andreas.gal@gmail.com>
Sat, 4 Jun 2011 17:18:04 +0000 (10:18 -0700)
pdf.js

diff --git a/pdf.js b/pdf.js
index 2ce7811052a7e00461b45cb2cf6d41f5534231a3..cc7b25b7c47f55c6acabf34f72bc407c10b13b77 100644 (file)
--- a/pdf.js
+++ b/pdf.js
@@ -116,39 +116,13 @@ var FlateStream = (function() {
         16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15
     ]);
 
-    const lengthDecode = [
-        [0,   3],
-        [0,   4],
-        [0,   5],
-        [0,   6],
-        [0,   7],
-        [0,   8],
-        [0,   9],
-        [0,  10],
-        [1,  11],
-        [1,  13],
-        [1,  15],
-        [1,  17],
-        [2,  19],
-        [2,  23],
-        [2,  27],
-        [2,  31],
-        [3,  35],
-        [3,  43],
-        [3,  51],
-        [3,  59],
-        [4,  67],
-        [4,  83],
-        [4,  99],
-        [4, 115],
-        [5, 131],
-        [5, 163],
-        [5, 195],
-        [5, 227],
-        [0, 258],
-        [0, 258],
-        [0, 258]
-    ];
+    const lengthDecode = new Uint32Array([
+        0x00003, 0x00004, 0x00005, 0x00006, 0x00007, 0x00008, 0x00009,
+        0x0000a, 0x1000b, 0x1000d, 0x1000f, 0x10011, 0x20013, 0x20017,
+        0x2001b, 0x2001f, 0x30023, 0x3002b, 0x30033, 0x3003b, 0x40043,
+        0x40053, 0x40063, 0x40073, 0x50083, 0x500a3, 0x500c3, 0x500e3,
+        0x00102, 0x00102, 0x00102
+    ]);
 
     const distDecode = [
         [0,      1],
@@ -964,10 +938,11 @@ var FlateStream = (function() {
                     buffer[pos++] = code1;
                 } else {
                     code1 -= 257;
-                    var code2 = lengthDecode[code1][0];
+                    code1 = lengthDecode[code1];
+                    var code2 = code1 >> 16;
                     if (code2 > 0)
                         code2 = this.getBits(code2);
-                    var len = lengthDecode[code1][1] + code2;
+                    var len = (code1 & 0xffff) + code2;
                     code1 = this.getCode(distCodeTable);
                     code2 = distDecode[code1][0];
                     if (code2 > 0)