Browse Source

working on optimizations

sbarman 14 years ago
parent
commit
03747940a2
  1. 60
      pdf.js

60
pdf.js

@ -104,10 +104,14 @@ var Stream = (function() {
dest[n++] = bytes[pos++]; dest[n++] = bytes[pos++];
this.pos = this.end; this.pos = this.end;
}, },
skip: function(n) { skip: function() {
if (!n) this.pos += 1;
n = 1; },
this.pos += n; skipN: function(n) {
this.pos += n;
},
back: function() {
this.pos -= 1;
}, },
reset: function() { reset: function() {
this.pos = this.start; this.pos = this.start;
@ -319,7 +323,7 @@ var FlateStream = (function() {
getByte: function() { getByte: function() {
var bufferLength = this.bufferLength; var bufferLength = this.bufferLength;
var bufferPos = this.bufferPos; var bufferPos = this.bufferPos;
if (bufferLength == bufferPos) { if (bufferLength <= bufferPos) {
if (this.eof) if (this.eof)
return; return;
this.readBlock(); this.readBlock();
@ -349,7 +353,7 @@ var FlateStream = (function() {
lookChar: function() { lookChar: function() {
var bufferLength = this.bufferLength; var bufferLength = this.bufferLength;
var bufferPos = this.bufferPos; var bufferPos = this.bufferPos;
if (bufferLength == bufferPos) { if (bufferLength <= bufferPos) {
if (this.eof) if (this.eof)
return; return;
this.readBlock(); this.readBlock();
@ -380,11 +384,16 @@ var FlateStream = (function() {
// update stream position // update stream position
this.pos = n; this.pos = n;
}, },
skip: function(n) { skip: function() {
if (!n) this.bufferPos++;
n = 1; //this.getByte();
while (n-- > 0) },
this.getChar(); skipN: function(n) {
this.bufferPos += n;
//this.getBytes(n);
},
back: function() {
this.bufferPos--;
}, },
generateHuffmanTable: function(lengths) { generateHuffmanTable: function(lengths) {
var n = lengths.length; var n = lengths.length;
@ -609,19 +618,19 @@ var Ref = (function() {
})(); })();
function IsBool(v) { function IsBool(v) {
return typeof v == "boolean"; return typeof v === "boolean";
} }
function IsInt(v) { function IsInt(v) {
return typeof v == "number" && ((v|0) == v); return typeof v === "number" && ((v|0) === v);
} }
function IsNum(v) { function IsNum(v) {
return typeof v == "number"; return typeof v === "number";
} }
function IsString(v) { function IsString(v) {
return typeof v == "string"; return typeof v === "string";
} }
function IsNull(v) { function IsNull(v) {
@ -633,11 +642,11 @@ function IsName(v) {
} }
function IsCmd(v, cmd) { function IsCmd(v, cmd) {
return v instanceof Cmd && (!cmd || v.cmd == cmd); return v instanceof Cmd && (!cmd || v.cmd === cmd);
} }
function IsDict(v, type) { 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) { function IsArray(v) {
@ -655,13 +664,13 @@ function IsRef(v) {
var EOF = {}; var EOF = {};
function IsEOF(v) { function IsEOF(v) {
return v == EOF; return v === EOF;
} }
var None = {}; var None = {};
function IsNone(v) { function IsNone(v) {
return v == None; return v === None;
} }
var Lexer = (function() { var Lexer = (function() {
@ -714,23 +723,24 @@ var Lexer = (function() {
var str = ch; var str = ch;
var stream = this.stream; var stream = this.stream;
do { do {
ch = stream.lookChar(); ch = stream.getChar();
if (ch == "." && !floating) { if (ch === "." && !floating) {
str += ch; str += ch;
floating = true; floating = true;
} else if (ch == "-") { } else if (ch === "-") {
// ignore minus signs in the middle of numbers to match // ignore minus signs in the middle of numbers to match
// Adobe's behavior // Adobe's behavior
warn("Badly formated number"); warn("Badly formated number");
} else if (ch >= "0" && ch <= "9") { } else if (ch >= "0" && ch <= "9") {
str += ch; str += ch;
} else if (ch == "e" || ch == "E") { } else if (ch === "e" || ch === "E") {
floating = true; floating = true;
} else { } else {
// the last character doesn't belong to us // the last character doesn't belong to us
stream.back();
break; break;
} }
stream.skip(); //stream.skip();
} while (true); } while (true);
var value = parseFloat(str); var value = parseFloat(str);
if (isNaN(value)) if (isNaN(value))
@ -1524,7 +1534,7 @@ var PDFDoc = (function() {
start = 0; start = 0;
stream.pos = start; stream.pos = start;
if (find(stream, "startxref", 1024, true)) { if (find(stream, "startxref", 1024, true)) {
stream.skip(9); stream.skipN(9);
var ch; var ch;
while (Lexer.isSpace(ch = stream.getChar())) while (Lexer.isSpace(ch = stream.getChar()))
; ;

Loading…
Cancel
Save