Move the DecodeStream and StreamsSequenceStream from src/core/stream.js and into its own file
				
					
				
			This commit is contained in:
		
							parent
							
								
									213e1c389c
								
							
						
					
					
						commit
						30a22a168d
					
				| @ -13,7 +13,7 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import { DecodeStream } from "./stream.js"; | import { DecodeStream } from "./decode_stream.js"; | ||||||
| import { isWhiteSpace } from "./core_utils.js"; | import { isWhiteSpace } from "./core_utils.js"; | ||||||
| 
 | 
 | ||||||
| class Ascii85Stream extends DecodeStream { | class Ascii85Stream extends DecodeStream { | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import { DecodeStream } from "./stream.js"; | import { DecodeStream } from "./decode_stream.js"; | ||||||
| 
 | 
 | ||||||
| class AsciiHexStream extends DecodeStream { | class AsciiHexStream extends DecodeStream { | ||||||
|   constructor(str, maybeLength) { |   constructor(str, maybeLength) { | ||||||
|  | |||||||
| @ -15,7 +15,7 @@ | |||||||
| 
 | 
 | ||||||
| import { Dict, isDict } from "./primitives.js"; | import { Dict, isDict } from "./primitives.js"; | ||||||
| import { CCITTFaxDecoder } from "./ccitt.js"; | import { CCITTFaxDecoder } from "./ccitt.js"; | ||||||
| import { DecodeStream } from "./stream.js"; | import { DecodeStream } from "./decode_stream.js"; | ||||||
| 
 | 
 | ||||||
| class CCITTFaxStream extends DecodeStream { | class CCITTFaxStream extends DecodeStream { | ||||||
|   constructor(str, maybeLength, params) { |   constructor(str, maybeLength, params) { | ||||||
|  | |||||||
							
								
								
									
										222
									
								
								src/core/decode_stream.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										222
									
								
								src/core/decode_stream.js
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,222 @@ | |||||||
|  | /* Copyright 2012 Mozilla Foundation | ||||||
|  |  * | ||||||
|  |  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |  * you may not use this file except in compliance with the License. | ||||||
|  |  * You may obtain a copy of the License at | ||||||
|  |  * | ||||||
|  |  *     http://www.apache.org/licenses/LICENSE-2.0
 | ||||||
|  |  * | ||||||
|  |  * Unless required by applicable law or agreed to in writing, software | ||||||
|  |  * distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |  * See the License for the specific language governing permissions and | ||||||
|  |  * limitations under the License. | ||||||
|  |  */ | ||||||
|  | /* eslint-disable no-var */ | ||||||
|  | 
 | ||||||
|  | import { Stream } from "./stream.js"; | ||||||
|  | import { unreachable } from "../shared/util.js"; | ||||||
|  | 
 | ||||||
|  | // super class for the decoding streams
 | ||||||
|  | var DecodeStream = (function DecodeStreamClosure() { | ||||||
|  |   // Lots of DecodeStreams are created whose buffers are never used.  For these
 | ||||||
|  |   // we share a single empty buffer. This is (a) space-efficient and (b) avoids
 | ||||||
|  |   // having special cases that would be required if we used |null| for an empty
 | ||||||
|  |   // buffer.
 | ||||||
|  |   var emptyBuffer = new Uint8Array(0); | ||||||
|  | 
 | ||||||
|  |   // eslint-disable-next-line no-shadow
 | ||||||
|  |   function DecodeStream(maybeMinBufferLength) { | ||||||
|  |     this._rawMinBufferLength = maybeMinBufferLength || 0; | ||||||
|  | 
 | ||||||
|  |     this.pos = 0; | ||||||
|  |     this.bufferLength = 0; | ||||||
|  |     this.eof = false; | ||||||
|  |     this.buffer = emptyBuffer; | ||||||
|  |     this.minBufferLength = 512; | ||||||
|  |     if (maybeMinBufferLength) { | ||||||
|  |       // Compute the first power of two that is as big as maybeMinBufferLength.
 | ||||||
|  |       while (this.minBufferLength < maybeMinBufferLength) { | ||||||
|  |         this.minBufferLength *= 2; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   DecodeStream.prototype = { | ||||||
|  |     // eslint-disable-next-line getter-return
 | ||||||
|  |     get length() { | ||||||
|  |       unreachable("Should not access DecodeStream.length"); | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     get isEmpty() { | ||||||
|  |       while (!this.eof && this.bufferLength === 0) { | ||||||
|  |         this.readBlock(); | ||||||
|  |       } | ||||||
|  |       return this.bufferLength === 0; | ||||||
|  |     }, | ||||||
|  |     ensureBuffer: function DecodeStream_ensureBuffer(requested) { | ||||||
|  |       var buffer = this.buffer; | ||||||
|  |       if (requested <= buffer.byteLength) { | ||||||
|  |         return buffer; | ||||||
|  |       } | ||||||
|  |       var size = this.minBufferLength; | ||||||
|  |       while (size < requested) { | ||||||
|  |         size *= 2; | ||||||
|  |       } | ||||||
|  |       var buffer2 = new Uint8Array(size); | ||||||
|  |       buffer2.set(buffer); | ||||||
|  |       return (this.buffer = buffer2); | ||||||
|  |     }, | ||||||
|  |     getByte: function DecodeStream_getByte() { | ||||||
|  |       var pos = this.pos; | ||||||
|  |       while (this.bufferLength <= pos) { | ||||||
|  |         if (this.eof) { | ||||||
|  |           return -1; | ||||||
|  |         } | ||||||
|  |         this.readBlock(); | ||||||
|  |       } | ||||||
|  |       return this.buffer[this.pos++]; | ||||||
|  |     }, | ||||||
|  |     getUint16: function DecodeStream_getUint16() { | ||||||
|  |       var b0 = this.getByte(); | ||||||
|  |       var b1 = this.getByte(); | ||||||
|  |       if (b0 === -1 || b1 === -1) { | ||||||
|  |         return -1; | ||||||
|  |       } | ||||||
|  |       return (b0 << 8) + b1; | ||||||
|  |     }, | ||||||
|  |     getInt32: function DecodeStream_getInt32() { | ||||||
|  |       var b0 = this.getByte(); | ||||||
|  |       var b1 = this.getByte(); | ||||||
|  |       var b2 = this.getByte(); | ||||||
|  |       var b3 = this.getByte(); | ||||||
|  |       return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; | ||||||
|  |     }, | ||||||
|  |     getBytes(length, forceClamped = false) { | ||||||
|  |       var end, | ||||||
|  |         pos = this.pos; | ||||||
|  | 
 | ||||||
|  |       if (length) { | ||||||
|  |         this.ensureBuffer(pos + length); | ||||||
|  |         end = pos + length; | ||||||
|  | 
 | ||||||
|  |         while (!this.eof && this.bufferLength < end) { | ||||||
|  |           this.readBlock(); | ||||||
|  |         } | ||||||
|  |         var bufEnd = this.bufferLength; | ||||||
|  |         if (end > bufEnd) { | ||||||
|  |           end = bufEnd; | ||||||
|  |         } | ||||||
|  |       } else { | ||||||
|  |         while (!this.eof) { | ||||||
|  |           this.readBlock(); | ||||||
|  |         } | ||||||
|  |         end = this.bufferLength; | ||||||
|  |       } | ||||||
|  | 
 | ||||||
|  |       this.pos = end; | ||||||
|  |       const subarray = this.buffer.subarray(pos, end); | ||||||
|  |       // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.
 | ||||||
|  |       return forceClamped && !(subarray instanceof Uint8ClampedArray) | ||||||
|  |         ? new Uint8ClampedArray(subarray) | ||||||
|  |         : subarray; | ||||||
|  |     }, | ||||||
|  |     peekByte: function DecodeStream_peekByte() { | ||||||
|  |       var peekedByte = this.getByte(); | ||||||
|  |       if (peekedByte !== -1) { | ||||||
|  |         this.pos--; | ||||||
|  |       } | ||||||
|  |       return peekedByte; | ||||||
|  |     }, | ||||||
|  |     peekBytes(length, forceClamped = false) { | ||||||
|  |       var bytes = this.getBytes(length, forceClamped); | ||||||
|  |       this.pos -= bytes.length; | ||||||
|  |       return bytes; | ||||||
|  |     }, | ||||||
|  |     makeSubStream: function DecodeStream_makeSubStream(start, length, dict) { | ||||||
|  |       if (length === undefined) { | ||||||
|  |         while (!this.eof) { | ||||||
|  |           this.readBlock(); | ||||||
|  |         } | ||||||
|  |       } else { | ||||||
|  |         var end = start + length; | ||||||
|  |         while (this.bufferLength <= end && !this.eof) { | ||||||
|  |           this.readBlock(); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       return new Stream(this.buffer, start, length, dict); | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     getByteRange(begin, end) { | ||||||
|  |       unreachable("Should not call DecodeStream.getByteRange"); | ||||||
|  |     }, | ||||||
|  | 
 | ||||||
|  |     skip: function DecodeStream_skip(n) { | ||||||
|  |       if (!n) { | ||||||
|  |         n = 1; | ||||||
|  |       } | ||||||
|  |       this.pos += n; | ||||||
|  |     }, | ||||||
|  |     reset: function DecodeStream_reset() { | ||||||
|  |       this.pos = 0; | ||||||
|  |     }, | ||||||
|  |     getBaseStreams: function DecodeStream_getBaseStreams() { | ||||||
|  |       if (this.str && this.str.getBaseStreams) { | ||||||
|  |         return this.str.getBaseStreams(); | ||||||
|  |       } | ||||||
|  |       return []; | ||||||
|  |     }, | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   return DecodeStream; | ||||||
|  | })(); | ||||||
|  | 
 | ||||||
|  | var StreamsSequenceStream = (function StreamsSequenceStreamClosure() { | ||||||
|  |   // eslint-disable-next-line no-shadow
 | ||||||
|  |   function StreamsSequenceStream(streams) { | ||||||
|  |     this.streams = streams; | ||||||
|  | 
 | ||||||
|  |     let maybeLength = 0; | ||||||
|  |     for (let i = 0, ii = streams.length; i < ii; i++) { | ||||||
|  |       const stream = streams[i]; | ||||||
|  |       if (stream instanceof DecodeStream) { | ||||||
|  |         maybeLength += stream._rawMinBufferLength; | ||||||
|  |       } else { | ||||||
|  |         maybeLength += stream.length; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     DecodeStream.call(this, maybeLength); | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype); | ||||||
|  | 
 | ||||||
|  |   StreamsSequenceStream.prototype.readBlock = function streamSequenceStreamReadBlock() { | ||||||
|  |     var streams = this.streams; | ||||||
|  |     if (streams.length === 0) { | ||||||
|  |       this.eof = true; | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |     var stream = streams.shift(); | ||||||
|  |     var chunk = stream.getBytes(); | ||||||
|  |     var bufferLength = this.bufferLength; | ||||||
|  |     var newLength = bufferLength + chunk.length; | ||||||
|  |     var buffer = this.ensureBuffer(newLength); | ||||||
|  |     buffer.set(chunk, bufferLength); | ||||||
|  |     this.bufferLength = newLength; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   StreamsSequenceStream.prototype.getBaseStreams = function StreamsSequenceStream_getBaseStreams() { | ||||||
|  |     var baseStreams = []; | ||||||
|  |     for (var i = 0, ii = this.streams.length; i < ii; i++) { | ||||||
|  |       var stream = this.streams[i]; | ||||||
|  |       if (stream.getBaseStreams) { | ||||||
|  |         baseStreams.push(...stream.getBaseStreams()); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     return baseStreams; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   return StreamsSequenceStream; | ||||||
|  | })(); | ||||||
|  | 
 | ||||||
|  | export { DecodeStream, StreamsSequenceStream }; | ||||||
| @ -13,7 +13,7 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import { DecodeStream } from "./stream.js"; | import { DecodeStream } from "./decode_stream.js"; | ||||||
| 
 | 
 | ||||||
| const chunkSize = 512; | const chunkSize = 512; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -53,7 +53,7 @@ import { | |||||||
|   XRefEntryException, |   XRefEntryException, | ||||||
|   XRefParseException, |   XRefParseException, | ||||||
| } from "./core_utils.js"; | } from "./core_utils.js"; | ||||||
| import { NullStream, Stream, StreamsSequenceStream } from "./stream.js"; | import { NullStream, Stream } from "./stream.js"; | ||||||
| import { AnnotationFactory } from "./annotation.js"; | import { AnnotationFactory } from "./annotation.js"; | ||||||
| import { calculateMD5 } from "./crypto.js"; | import { calculateMD5 } from "./crypto.js"; | ||||||
| import { Catalog } from "./catalog.js"; | import { Catalog } from "./catalog.js"; | ||||||
| @ -61,6 +61,7 @@ import { Linearization } from "./parser.js"; | |||||||
| import { ObjectLoader } from "./object_loader.js"; | import { ObjectLoader } from "./object_loader.js"; | ||||||
| import { OperatorList } from "./operator_list.js"; | import { OperatorList } from "./operator_list.js"; | ||||||
| import { PartialEvaluator } from "./evaluator.js"; | import { PartialEvaluator } from "./evaluator.js"; | ||||||
|  | import { StreamsSequenceStream } from "./decode_stream.js"; | ||||||
| import { StructTreePage } from "./struct_tree.js"; | import { StructTreePage } from "./struct_tree.js"; | ||||||
| import { XFAFactory } from "./xfa/factory.js"; | import { XFAFactory } from "./xfa/factory.js"; | ||||||
| import { XRef } from "./xref.js"; | import { XRef } from "./xref.js"; | ||||||
|  | |||||||
| @ -47,7 +47,6 @@ import { | |||||||
|   Ref, |   Ref, | ||||||
|   RefSet, |   RefSet, | ||||||
| } from "./primitives.js"; | } from "./primitives.js"; | ||||||
| import { DecodeStream, NullStream } from "./stream.js"; |  | ||||||
| import { | import { | ||||||
|   ErrorFont, |   ErrorFont, | ||||||
|   Font, |   Font, | ||||||
| @ -85,10 +84,12 @@ import { | |||||||
| } from "./image_utils.js"; | } from "./image_utils.js"; | ||||||
| import { bidi } from "./bidi.js"; | import { bidi } from "./bidi.js"; | ||||||
| import { ColorSpace } from "./colorspace.js"; | import { ColorSpace } from "./colorspace.js"; | ||||||
|  | import { DecodeStream } from "./decode_stream.js"; | ||||||
| import { getGlyphsUnicode } from "./glyphlist.js"; | import { getGlyphsUnicode } from "./glyphlist.js"; | ||||||
| import { getLookupTableFactory } from "./core_utils.js"; | import { getLookupTableFactory } from "./core_utils.js"; | ||||||
| import { getMetrics } from "./metrics.js"; | import { getMetrics } from "./metrics.js"; | ||||||
| import { MurmurHash3_64 } from "./murmurhash3.js"; | import { MurmurHash3_64 } from "./murmurhash3.js"; | ||||||
|  | import { NullStream } from "./stream.js"; | ||||||
| import { OperatorList } from "./operator_list.js"; | import { OperatorList } from "./operator_list.js"; | ||||||
| import { PDFImage } from "./image.js"; | import { PDFImage } from "./image.js"; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -19,7 +19,7 @@ | |||||||
|  * license. |  * license. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import { DecodeStream } from "./stream.js"; | import { DecodeStream } from "./decode_stream.js"; | ||||||
| import { FormatError } from "../shared/util.js"; | import { FormatError } from "../shared/util.js"; | ||||||
| 
 | 
 | ||||||
| // prettier-ignore
 | // prettier-ignore
 | ||||||
|  | |||||||
| @ -16,7 +16,7 @@ | |||||||
| import { assert, FormatError, ImageKind, info, warn } from "../shared/util.js"; | import { assert, FormatError, ImageKind, info, warn } from "../shared/util.js"; | ||||||
| import { isName, isStream, Name } from "./primitives.js"; | import { isName, isStream, Name } from "./primitives.js"; | ||||||
| import { ColorSpace } from "./colorspace.js"; | import { ColorSpace } from "./colorspace.js"; | ||||||
| import { DecodeStream } from "./stream.js"; | import { DecodeStream } from "./decode_stream.js"; | ||||||
| import { JpegStream } from "./jpeg_stream.js"; | import { JpegStream } from "./jpeg_stream.js"; | ||||||
| import { JpxImage } from "./jpx.js"; | import { JpxImage } from "./jpx.js"; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ | |||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import { isDict, isStream } from "./primitives.js"; | import { isDict, isStream } from "./primitives.js"; | ||||||
| import { DecodeStream } from "./stream.js"; | import { DecodeStream } from "./decode_stream.js"; | ||||||
| import { Jbig2Image } from "./jbig2.js"; | import { Jbig2Image } from "./jbig2.js"; | ||||||
| import { shadow } from "../shared/util.js"; | import { shadow } from "../shared/util.js"; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import { DecodeStream } from "./stream.js"; | import { DecodeStream } from "./decode_stream.js"; | ||||||
| import { isDict } from "./primitives.js"; | import { isDict } from "./primitives.js"; | ||||||
| import { JpegImage } from "./jpg.js"; | import { JpegImage } from "./jpg.js"; | ||||||
| import { shadow } from "../shared/util.js"; | import { shadow } from "../shared/util.js"; | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import { DecodeStream } from "./stream.js"; | import { DecodeStream } from "./decode_stream.js"; | ||||||
| import { JpxImage } from "./jpx.js"; | import { JpxImage } from "./jpx.js"; | ||||||
| import { shadow } from "../shared/util.js"; | import { shadow } from "../shared/util.js"; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import { DecodeStream } from "./stream.js"; | import { DecodeStream } from "./decode_stream.js"; | ||||||
| 
 | 
 | ||||||
| class LZWStream extends DecodeStream { | class LZWStream extends DecodeStream { | ||||||
|   constructor(str, maybeLength, earlyChange) { |   constructor(str, maybeLength, earlyChange) { | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import { DecodeStream } from "./stream.js"; | import { DecodeStream } from "./decode_stream.js"; | ||||||
| import { FormatError } from "../shared/util.js"; | import { FormatError } from "../shared/util.js"; | ||||||
| import { isDict } from "./primitives.js"; | import { isDict } from "./primitives.js"; | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -13,7 +13,7 @@ | |||||||
|  * limitations under the License. |  * limitations under the License. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| import { DecodeStream } from "./stream.js"; | import { DecodeStream } from "./decode_stream.js"; | ||||||
| 
 | 
 | ||||||
| class RunLengthStream extends DecodeStream { | class RunLengthStream extends DecodeStream { | ||||||
|   constructor(str, maybeLength) { |   constructor(str, maybeLength) { | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ | |||||||
|  */ |  */ | ||||||
| /* eslint-disable no-var */ | /* eslint-disable no-var */ | ||||||
| 
 | 
 | ||||||
| import { stringToBytes, unreachable } from "../shared/util.js"; | import { stringToBytes } from "../shared/util.js"; | ||||||
| 
 | 
 | ||||||
| var Stream = (function StreamClosure() { | var Stream = (function StreamClosure() { | ||||||
|   // eslint-disable-next-line no-shadow
 |   // eslint-disable-next-line no-shadow
 | ||||||
| @ -134,208 +134,6 @@ var StringStream = (function StringStreamClosure() { | |||||||
|   return StringStream; |   return StringStream; | ||||||
| })(); | })(); | ||||||
| 
 | 
 | ||||||
| // super class for the decoding streams
 |  | ||||||
| var DecodeStream = (function DecodeStreamClosure() { |  | ||||||
|   // Lots of DecodeStreams are created whose buffers are never used.  For these
 |  | ||||||
|   // we share a single empty buffer. This is (a) space-efficient and (b) avoids
 |  | ||||||
|   // having special cases that would be required if we used |null| for an empty
 |  | ||||||
|   // buffer.
 |  | ||||||
|   var emptyBuffer = new Uint8Array(0); |  | ||||||
| 
 |  | ||||||
|   // eslint-disable-next-line no-shadow
 |  | ||||||
|   function DecodeStream(maybeMinBufferLength) { |  | ||||||
|     this._rawMinBufferLength = maybeMinBufferLength || 0; |  | ||||||
| 
 |  | ||||||
|     this.pos = 0; |  | ||||||
|     this.bufferLength = 0; |  | ||||||
|     this.eof = false; |  | ||||||
|     this.buffer = emptyBuffer; |  | ||||||
|     this.minBufferLength = 512; |  | ||||||
|     if (maybeMinBufferLength) { |  | ||||||
|       // Compute the first power of two that is as big as maybeMinBufferLength.
 |  | ||||||
|       while (this.minBufferLength < maybeMinBufferLength) { |  | ||||||
|         this.minBufferLength *= 2; |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   DecodeStream.prototype = { |  | ||||||
|     // eslint-disable-next-line getter-return
 |  | ||||||
|     get length() { |  | ||||||
|       unreachable("Should not access DecodeStream.length"); |  | ||||||
|     }, |  | ||||||
| 
 |  | ||||||
|     get isEmpty() { |  | ||||||
|       while (!this.eof && this.bufferLength === 0) { |  | ||||||
|         this.readBlock(); |  | ||||||
|       } |  | ||||||
|       return this.bufferLength === 0; |  | ||||||
|     }, |  | ||||||
|     ensureBuffer: function DecodeStream_ensureBuffer(requested) { |  | ||||||
|       var buffer = this.buffer; |  | ||||||
|       if (requested <= buffer.byteLength) { |  | ||||||
|         return buffer; |  | ||||||
|       } |  | ||||||
|       var size = this.minBufferLength; |  | ||||||
|       while (size < requested) { |  | ||||||
|         size *= 2; |  | ||||||
|       } |  | ||||||
|       var buffer2 = new Uint8Array(size); |  | ||||||
|       buffer2.set(buffer); |  | ||||||
|       return (this.buffer = buffer2); |  | ||||||
|     }, |  | ||||||
|     getByte: function DecodeStream_getByte() { |  | ||||||
|       var pos = this.pos; |  | ||||||
|       while (this.bufferLength <= pos) { |  | ||||||
|         if (this.eof) { |  | ||||||
|           return -1; |  | ||||||
|         } |  | ||||||
|         this.readBlock(); |  | ||||||
|       } |  | ||||||
|       return this.buffer[this.pos++]; |  | ||||||
|     }, |  | ||||||
|     getUint16: function DecodeStream_getUint16() { |  | ||||||
|       var b0 = this.getByte(); |  | ||||||
|       var b1 = this.getByte(); |  | ||||||
|       if (b0 === -1 || b1 === -1) { |  | ||||||
|         return -1; |  | ||||||
|       } |  | ||||||
|       return (b0 << 8) + b1; |  | ||||||
|     }, |  | ||||||
|     getInt32: function DecodeStream_getInt32() { |  | ||||||
|       var b0 = this.getByte(); |  | ||||||
|       var b1 = this.getByte(); |  | ||||||
|       var b2 = this.getByte(); |  | ||||||
|       var b3 = this.getByte(); |  | ||||||
|       return (b0 << 24) + (b1 << 16) + (b2 << 8) + b3; |  | ||||||
|     }, |  | ||||||
|     getBytes(length, forceClamped = false) { |  | ||||||
|       var end, |  | ||||||
|         pos = this.pos; |  | ||||||
| 
 |  | ||||||
|       if (length) { |  | ||||||
|         this.ensureBuffer(pos + length); |  | ||||||
|         end = pos + length; |  | ||||||
| 
 |  | ||||||
|         while (!this.eof && this.bufferLength < end) { |  | ||||||
|           this.readBlock(); |  | ||||||
|         } |  | ||||||
|         var bufEnd = this.bufferLength; |  | ||||||
|         if (end > bufEnd) { |  | ||||||
|           end = bufEnd; |  | ||||||
|         } |  | ||||||
|       } else { |  | ||||||
|         while (!this.eof) { |  | ||||||
|           this.readBlock(); |  | ||||||
|         } |  | ||||||
|         end = this.bufferLength; |  | ||||||
|       } |  | ||||||
| 
 |  | ||||||
|       this.pos = end; |  | ||||||
|       const subarray = this.buffer.subarray(pos, end); |  | ||||||
|       // `this.buffer` is either a `Uint8Array` or `Uint8ClampedArray` here.
 |  | ||||||
|       return forceClamped && !(subarray instanceof Uint8ClampedArray) |  | ||||||
|         ? new Uint8ClampedArray(subarray) |  | ||||||
|         : subarray; |  | ||||||
|     }, |  | ||||||
|     peekByte: function DecodeStream_peekByte() { |  | ||||||
|       var peekedByte = this.getByte(); |  | ||||||
|       if (peekedByte !== -1) { |  | ||||||
|         this.pos--; |  | ||||||
|       } |  | ||||||
|       return peekedByte; |  | ||||||
|     }, |  | ||||||
|     peekBytes(length, forceClamped = false) { |  | ||||||
|       var bytes = this.getBytes(length, forceClamped); |  | ||||||
|       this.pos -= bytes.length; |  | ||||||
|       return bytes; |  | ||||||
|     }, |  | ||||||
|     makeSubStream: function DecodeStream_makeSubStream(start, length, dict) { |  | ||||||
|       if (length === undefined) { |  | ||||||
|         while (!this.eof) { |  | ||||||
|           this.readBlock(); |  | ||||||
|         } |  | ||||||
|       } else { |  | ||||||
|         var end = start + length; |  | ||||||
|         while (this.bufferLength <= end && !this.eof) { |  | ||||||
|           this.readBlock(); |  | ||||||
|         } |  | ||||||
|       } |  | ||||||
|       return new Stream(this.buffer, start, length, dict); |  | ||||||
|     }, |  | ||||||
| 
 |  | ||||||
|     getByteRange(begin, end) { |  | ||||||
|       unreachable("Should not call DecodeStream.getByteRange"); |  | ||||||
|     }, |  | ||||||
| 
 |  | ||||||
|     skip: function DecodeStream_skip(n) { |  | ||||||
|       if (!n) { |  | ||||||
|         n = 1; |  | ||||||
|       } |  | ||||||
|       this.pos += n; |  | ||||||
|     }, |  | ||||||
|     reset: function DecodeStream_reset() { |  | ||||||
|       this.pos = 0; |  | ||||||
|     }, |  | ||||||
|     getBaseStreams: function DecodeStream_getBaseStreams() { |  | ||||||
|       if (this.str && this.str.getBaseStreams) { |  | ||||||
|         return this.str.getBaseStreams(); |  | ||||||
|       } |  | ||||||
|       return []; |  | ||||||
|     }, |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   return DecodeStream; |  | ||||||
| })(); |  | ||||||
| 
 |  | ||||||
| var StreamsSequenceStream = (function StreamsSequenceStreamClosure() { |  | ||||||
|   // eslint-disable-next-line no-shadow
 |  | ||||||
|   function StreamsSequenceStream(streams) { |  | ||||||
|     this.streams = streams; |  | ||||||
| 
 |  | ||||||
|     let maybeLength = 0; |  | ||||||
|     for (let i = 0, ii = streams.length; i < ii; i++) { |  | ||||||
|       const stream = streams[i]; |  | ||||||
|       if (stream instanceof DecodeStream) { |  | ||||||
|         maybeLength += stream._rawMinBufferLength; |  | ||||||
|       } else { |  | ||||||
|         maybeLength += stream.length; |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|     DecodeStream.call(this, maybeLength); |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   StreamsSequenceStream.prototype = Object.create(DecodeStream.prototype); |  | ||||||
| 
 |  | ||||||
|   StreamsSequenceStream.prototype.readBlock = function streamSequenceStreamReadBlock() { |  | ||||||
|     var streams = this.streams; |  | ||||||
|     if (streams.length === 0) { |  | ||||||
|       this.eof = true; |  | ||||||
|       return; |  | ||||||
|     } |  | ||||||
|     var stream = streams.shift(); |  | ||||||
|     var chunk = stream.getBytes(); |  | ||||||
|     var bufferLength = this.bufferLength; |  | ||||||
|     var newLength = bufferLength + chunk.length; |  | ||||||
|     var buffer = this.ensureBuffer(newLength); |  | ||||||
|     buffer.set(chunk, bufferLength); |  | ||||||
|     this.bufferLength = newLength; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   StreamsSequenceStream.prototype.getBaseStreams = function StreamsSequenceStream_getBaseStreams() { |  | ||||||
|     var baseStreams = []; |  | ||||||
|     for (var i = 0, ii = this.streams.length; i < ii; i++) { |  | ||||||
|       var stream = this.streams[i]; |  | ||||||
|       if (stream.getBaseStreams) { |  | ||||||
|         baseStreams.push(...stream.getBaseStreams()); |  | ||||||
|       } |  | ||||||
|     } |  | ||||||
|     return baseStreams; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   return StreamsSequenceStream; |  | ||||||
| })(); |  | ||||||
| 
 |  | ||||||
| var NullStream = (function NullStreamClosure() { | var NullStream = (function NullStreamClosure() { | ||||||
|   // eslint-disable-next-line no-shadow
 |   // eslint-disable-next-line no-shadow
 | ||||||
|   function NullStream() { |   function NullStream() { | ||||||
| @ -347,10 +145,4 @@ var NullStream = (function NullStreamClosure() { | |||||||
|   return NullStream; |   return NullStream; | ||||||
| })(); | })(); | ||||||
| 
 | 
 | ||||||
| export { | export { NullStream, Stream, StringStream }; | ||||||
|   DecodeStream, |  | ||||||
|   NullStream, |  | ||||||
|   Stream, |  | ||||||
|   StreamsSequenceStream, |  | ||||||
|   StringStream, |  | ||||||
| }; |  | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user