From: sbarman Date: Mon, 20 Jun 2011 21:02:54 +0000 (-0700) Subject: Merge branch 'master' into streamrewrite2 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=48134150448561eb47852dbbf50831a8cfdff7ae;p=pdf.js.git Merge branch 'master' into streamrewrite2 Conflicts: pdf.js --- 48134150448561eb47852dbbf50831a8cfdff7ae diff --cc pdf.js index b12dc9d,7436b9a..4fd3fed --- a/pdf.js +++ b/pdf.js @@@ -232,12 -233,10 +233,12 @@@ var FlateStream = (function() ]), 5]; function constructor(stream) { - this.stream = stream; + var bytes = stream.getBytes(); - var bytesIdx = 0; ++ var bytesPos = 0; + this.dict = stream.dict; - var cmf = bytes[bytesIdx++]; - var flg = bytes[bytesIdx++]; - var cmf = stream.getByte(); - var flg = stream.getByte(); ++ var cmf = bytes[bytesPos++]; ++ var flg = bytes[bytesPos++]; if (cmf == -1 || flg == -1) error("Invalid header in flate stream"); if ((cmf & 0x0f) != 0x08) @@@ -246,9 -245,6 +247,9 @@@ error("Bad FCHECK in flate stream"); if (flg & 0x20) error("FDICT bit set in flate stream"); + + this.bytes = bytes; - this.bytesIdx = bytesIdx; ++ this.bytesPos = bytesPos; this.eof = false; this.codeSize = 0; this.codeBuf = 0; @@@ -259,14 -255,12 +260,14 @@@ constructor.prototype = { getBits: function(bits) { - var stream = this.stream; var codeSize = this.codeSize; var codeBuf = this.codeBuf; + var bytes = this.bytes; - var bytesIdx = this.bytesIdx; ++ var bytesPos = this.bytesPos; + var b; while (codeSize < bits) { - if ((b = bytes[bytesIdx++]) == undefined) - if ((b = stream.getByte()) == -1) ++ if ((b = bytes[bytesPos++]) == undefined) error("Bad encoding in flate stream"); codeBuf |= b << codeSize; codeSize += 8; @@@ -274,7 -268,6 +275,7 @@@ b = codeBuf & ((1 << bits) - 1); this.codeBuf = codeBuf >> bits; this.codeSize = codeSize -= bits; - this.bytesIdx = bytesIdx; ++ this.bytesPos = bytesPos; return b; }, getCode: function(table) { @@@ -282,12 -275,10 +283,12 @@@ var maxLen = table[1]; var codeSize = this.codeSize; var codeBuf = this.codeBuf; - var stream = this.stream; + var bytes = this.bytes; - var bytesIdx = this.bytesIdx; ++ var bytesPos = this.bytesPos; + while (codeSize < maxLen) { var b; - if ((b = bytes[bytesIdx++]) == undefined) - if ((b = stream.getByte()) == -1) ++ if ((b = bytes[bytesPos++]) == undefined) error("Bad encoding in flate stream"); codeBuf |= (b << codeSize); codeSize += 8; @@@ -299,7 -290,6 +300,7 @@@ error("Bad encoding in flate stream"); this.codeBuf = (codeBuf >> codeLen); this.codeSize = (codeSize - codeLen); - this.bytesIdx = bytesIdx; ++ this.bytesPos = bytesPos; return codeVal; }, ensureBuffer: function(requested) { @@@ -398,8 -391,13 +399,14 @@@ return [codes, maxLen]; }, readBlock: function() { + function repeat(stream, array, len, offset, what) { + var repeat = stream.getBits(len) + offset; + while (repeat-- > 0) + array[i++] = what; + } + - var stream = this.stream; + var bytes = this.bytes; - var bytesIdx = this.bytesIdx; ++ var bytesPos = this.bytesPos; // read block header var hdr = this.getBits(3); @@@ -409,16 -407,16 +416,16 @@@ var b; if (hdr == 0) { // uncompressed block - if ((b = bytes[bytesIdx++]) == undefined) - if ((b = stream.getByte()) == -1) ++ if ((b = bytes[bytesPos++]) == undefined) error("Bad block header in flate stream"); var blockLen = b; - if ((b = bytes[bytesIdx++]) == undefined) - if ((b = stream.getByte()) == -1) ++ if ((b = bytes[bytesPos++]) == undefined) error("Bad block header in flate stream"); blockLen |= (b << 8); - if ((b = bytes[bytesIdx++]) == undefined) - if ((b = stream.getByte()) == -1) ++ if ((b = bytes[bytesPos++]) == undefined) error("Bad block header in flate stream"); var check = b; - if ((b = bytes[bytesIdx++]) == undefined) - if ((b = stream.getByte()) == -1) ++ if ((b = bytes[bytesPos++]) == undefined) error("Bad block header in flate stream"); check |= (b << 8); if (check != (~this.blockLen & 0xffff)) @@@ -427,7 -425,7 +434,7 @@@ var buffer = this.ensureBuffer(bufferLength + blockLen); this.bufferLength = bufferLength + blockLen; for (var n = bufferLength; n < blockLen; ++n) { - if ((b = bytes[bytesIdx++]) == undefined) { - if ((b = stream.getByte()) == -1) { ++ if ((b = bytes[bytesPos++]) == undefined) { this.eof = true; break; }