From 83e100b0133912531166ce524bad1769e36e34ff Mon Sep 17 00:00:00 2001 From: Andreas Gal Date: Fri, 3 Jun 2011 01:57:06 +0800 Subject: [PATCH] starting position of a stream is relative to the file, not the current stream --- pdf.js | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/pdf.js b/pdf.js index 37c93a4ad..8d55ff2ac 100644 --- a/pdf.js +++ b/pdf.js @@ -48,26 +48,24 @@ function shadow(obj, prop, value) { } var Stream = (function() { - function constructor(arrayBuffer, dict) { + function constructor(arrayBuffer, start, length, dict) { this.bytes = new Uint8Array(arrayBuffer); - this.pos = 0; - this.start = 0; + this.start = start || 0; + this.pos = this.start; + this.length = (start + length) || arrayBuffer.byteLength; this.dict = dict; } constructor.prototype = { - get length() { - return this.bytes.length; - }, getByte: function() { var bytes = this.bytes; - if (this.pos >= bytes.length) + if (this.pos >= this.length) return -1; return bytes[this.pos++]; }, lookChar: function() { var bytes = this.bytes; - if (this.pos >= bytes.length) + if (this.pos >= this.length) return; return String.fromCharCode(bytes[this.pos]); }, @@ -89,11 +87,8 @@ var Stream = (function() { moveStart: function() { this.start = this.pos; }, - makeSubStream: function(pos, length, dict) { - var buffer = this.bytes.buffer; - if (length) - return new Stream(new Uint8Array(buffer, pos, length), dict); - return new Stream(new Uint8Array(buffer, pos), dict); + makeSubStream: function(start, length, dict) { + return new Stream(this.bytes.buffer, start, length, dict); } };