From 03747940a2f8346e484898b026f43785c25abd04 Mon Sep 17 00:00:00 2001 From: sbarman Date: Thu, 9 Jun 2011 17:15:44 -0700 Subject: [PATCH] working on optimizations --- pdf.js | 60 ++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/pdf.js b/pdf.js index c6f9f06e7..a17d39cff 100644 --- a/pdf.js +++ b/pdf.js @@ -104,10 +104,14 @@ var Stream = (function() { dest[n++] = bytes[pos++]; this.pos = this.end; }, - skip: function(n) { - if (!n) - n = 1; - this.pos += n; + skip: function() { + this.pos += 1; + }, + skipN: function(n) { + this.pos += n; + }, + back: function() { + this.pos -= 1; }, reset: function() { this.pos = this.start; @@ -319,7 +323,7 @@ var FlateStream = (function() { getByte: function() { var bufferLength = this.bufferLength; var bufferPos = this.bufferPos; - if (bufferLength == bufferPos) { + if (bufferLength <= bufferPos) { if (this.eof) return; this.readBlock(); @@ -349,7 +353,7 @@ var FlateStream = (function() { lookChar: function() { var bufferLength = this.bufferLength; var bufferPos = this.bufferPos; - if (bufferLength == bufferPos) { + if (bufferLength <= bufferPos) { if (this.eof) return; this.readBlock(); @@ -380,11 +384,16 @@ var FlateStream = (function() { // update stream position this.pos = n; }, - skip: function(n) { - if (!n) - n = 1; - while (n-- > 0) - this.getChar(); + skip: function() { + this.bufferPos++; + //this.getByte(); + }, + skipN: function(n) { + this.bufferPos += n; + //this.getBytes(n); + }, + back: function() { + this.bufferPos--; }, generateHuffmanTable: function(lengths) { var n = lengths.length; @@ -609,19 +618,19 @@ var Ref = (function() { })(); function IsBool(v) { - return typeof v == "boolean"; + return typeof v === "boolean"; } function IsInt(v) { - return typeof v == "number" && ((v|0) == v); + return typeof v === "number" && ((v|0) === v); } function IsNum(v) { - return typeof v == "number"; + return typeof v === "number"; } function IsString(v) { - return typeof v == "string"; + return typeof v === "string"; } function IsNull(v) { @@ -633,11 +642,11 @@ function IsName(v) { } function IsCmd(v, cmd) { - return v instanceof Cmd && (!cmd || v.cmd == cmd); + return v instanceof Cmd && (!cmd || v.cmd === cmd); } function IsDict(v, type) { - return v instanceof Dict && (!type || v.get("Type").name == type); + return v instanceof Dict && (!type || v.get("Type").name === type); } function IsArray(v) { @@ -655,13 +664,13 @@ function IsRef(v) { var EOF = {}; function IsEOF(v) { - return v == EOF; + return v === EOF; } var None = {}; function IsNone(v) { - return v == None; + return v === None; } var Lexer = (function() { @@ -714,23 +723,24 @@ var Lexer = (function() { var str = ch; var stream = this.stream; do { - ch = stream.lookChar(); - if (ch == "." && !floating) { + ch = stream.getChar(); + if (ch === "." && !floating) { str += ch; floating = true; - } else if (ch == "-") { + } else if (ch === "-") { // ignore minus signs in the middle of numbers to match // Adobe's behavior warn("Badly formated number"); } else if (ch >= "0" && ch <= "9") { str += ch; - } else if (ch == "e" || ch == "E") { + } else if (ch === "e" || ch === "E") { floating = true; } else { // the last character doesn't belong to us + stream.back(); break; } - stream.skip(); + //stream.skip(); } while (true); var value = parseFloat(str); if (isNaN(value)) @@ -1524,7 +1534,7 @@ var PDFDoc = (function() { start = 0; stream.pos = start; if (find(stream, "startxref", 1024, true)) { - stream.skip(9); + stream.skipN(9); var ch; while (Lexer.isSpace(ch = stream.getChar())) ;