|
@@ -17,16 +17,12 @@
|
|
|
Object.defineProperty(exports, "__esModule", {
|
|
|
value: true
|
|
|
});
|
|
|
-exports.LZWStream = exports.StringStream = exports.StreamsSequenceStream = exports.Stream = exports.RunLengthStream = exports.PredictorStream = exports.NullStream = exports.JpxStream = exports.JpegStream = exports.FlateStream = exports.DecodeStream = exports.DecryptStream = exports.AsciiHexStream = exports.Ascii85Stream = undefined;
|
|
|
+exports.LZWStream = exports.StringStream = exports.StreamsSequenceStream = exports.Stream = exports.RunLengthStream = exports.PredictorStream = exports.NullStream = exports.FlateStream = exports.DecodeStream = exports.DecryptStream = exports.AsciiHexStream = exports.Ascii85Stream = undefined;
|
|
|
|
|
|
var _util = require('../shared/util');
|
|
|
|
|
|
var _primitives = require('./primitives');
|
|
|
|
|
|
-var _jpg = require('./jpg');
|
|
|
-
|
|
|
-var _jpx = require('./jpx');
|
|
|
-
|
|
|
var Stream = function StreamClosure() {
|
|
|
function Stream(arrayBuffer, start, length, dict) {
|
|
|
this.bytes = arrayBuffer instanceof Uint8Array ? arrayBuffer : new Uint8Array(arrayBuffer);
|
|
@@ -687,126 +683,6 @@ var PredictorStream = function PredictorStreamClosure() {
|
|
|
};
|
|
|
return PredictorStream;
|
|
|
}();
|
|
|
-var JpegStream = function JpegStreamClosure() {
|
|
|
- function JpegStream(stream, maybeLength, dict, params) {
|
|
|
- var ch;
|
|
|
- while ((ch = stream.getByte()) !== -1) {
|
|
|
- if (ch === 0xFF) {
|
|
|
- stream.skip(-1);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- this.stream = stream;
|
|
|
- this.maybeLength = maybeLength;
|
|
|
- this.dict = dict;
|
|
|
- this.params = params;
|
|
|
- DecodeStream.call(this, maybeLength);
|
|
|
- }
|
|
|
- JpegStream.prototype = Object.create(DecodeStream.prototype);
|
|
|
- Object.defineProperty(JpegStream.prototype, 'bytes', {
|
|
|
- get: function JpegStream_bytes() {
|
|
|
- return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength));
|
|
|
- },
|
|
|
- configurable: true
|
|
|
- });
|
|
|
- JpegStream.prototype.ensureBuffer = function JpegStream_ensureBuffer(req) {
|
|
|
- if (this.bufferLength) {
|
|
|
- return;
|
|
|
- }
|
|
|
- var jpegImage = new _jpg.JpegImage();
|
|
|
- var decodeArr = this.dict.getArray('Decode', 'D');
|
|
|
- if (this.forceRGB && Array.isArray(decodeArr)) {
|
|
|
- var bitsPerComponent = this.dict.get('BitsPerComponent') || 8;
|
|
|
- var decodeArrLength = decodeArr.length;
|
|
|
- var transform = new Int32Array(decodeArrLength);
|
|
|
- var transformNeeded = false;
|
|
|
- var maxValue = (1 << bitsPerComponent) - 1;
|
|
|
- for (var i = 0; i < decodeArrLength; i += 2) {
|
|
|
- transform[i] = (decodeArr[i + 1] - decodeArr[i]) * 256 | 0;
|
|
|
- transform[i + 1] = decodeArr[i] * maxValue | 0;
|
|
|
- if (transform[i] !== 256 || transform[i + 1] !== 0) {
|
|
|
- transformNeeded = true;
|
|
|
- }
|
|
|
- }
|
|
|
- if (transformNeeded) {
|
|
|
- jpegImage.decodeTransform = transform;
|
|
|
- }
|
|
|
- }
|
|
|
- if ((0, _primitives.isDict)(this.params)) {
|
|
|
- var colorTransform = this.params.get('ColorTransform');
|
|
|
- if (Number.isInteger(colorTransform)) {
|
|
|
- jpegImage.colorTransform = colorTransform;
|
|
|
- }
|
|
|
- }
|
|
|
- jpegImage.parse(this.bytes);
|
|
|
- var data = jpegImage.getData(this.drawWidth, this.drawHeight, this.forceRGB);
|
|
|
- this.buffer = data;
|
|
|
- this.bufferLength = data.length;
|
|
|
- this.eof = true;
|
|
|
- };
|
|
|
- JpegStream.prototype.getBytes = function JpegStream_getBytes(length) {
|
|
|
- this.ensureBuffer();
|
|
|
- return this.buffer;
|
|
|
- };
|
|
|
- JpegStream.prototype.getIR = function JpegStream_getIR(forceDataSchema) {
|
|
|
- return (0, _util.createObjectURL)(this.bytes, 'image/jpeg', forceDataSchema);
|
|
|
- };
|
|
|
- return JpegStream;
|
|
|
-}();
|
|
|
-var JpxStream = function JpxStreamClosure() {
|
|
|
- function JpxStream(stream, maybeLength, dict, params) {
|
|
|
- this.stream = stream;
|
|
|
- this.maybeLength = maybeLength;
|
|
|
- this.dict = dict;
|
|
|
- this.params = params;
|
|
|
- DecodeStream.call(this, maybeLength);
|
|
|
- }
|
|
|
- JpxStream.prototype = Object.create(DecodeStream.prototype);
|
|
|
- Object.defineProperty(JpxStream.prototype, 'bytes', {
|
|
|
- get: function JpxStream_bytes() {
|
|
|
- return (0, _util.shadow)(this, 'bytes', this.stream.getBytes(this.maybeLength));
|
|
|
- },
|
|
|
- configurable: true
|
|
|
- });
|
|
|
- JpxStream.prototype.ensureBuffer = function JpxStream_ensureBuffer(req) {
|
|
|
- if (this.bufferLength) {
|
|
|
- return;
|
|
|
- }
|
|
|
- var jpxImage = new _jpx.JpxImage();
|
|
|
- jpxImage.parse(this.bytes);
|
|
|
- var width = jpxImage.width;
|
|
|
- var height = jpxImage.height;
|
|
|
- var componentsCount = jpxImage.componentsCount;
|
|
|
- var tileCount = jpxImage.tiles.length;
|
|
|
- if (tileCount === 1) {
|
|
|
- this.buffer = jpxImage.tiles[0].items;
|
|
|
- } else {
|
|
|
- var data = new Uint8ClampedArray(width * height * componentsCount);
|
|
|
- for (var k = 0; k < tileCount; k++) {
|
|
|
- var tileComponents = jpxImage.tiles[k];
|
|
|
- var tileWidth = tileComponents.width;
|
|
|
- var tileHeight = tileComponents.height;
|
|
|
- var tileLeft = tileComponents.left;
|
|
|
- var tileTop = tileComponents.top;
|
|
|
- var src = tileComponents.items;
|
|
|
- var srcPosition = 0;
|
|
|
- var dataPosition = (width * tileTop + tileLeft) * componentsCount;
|
|
|
- var imgRowSize = width * componentsCount;
|
|
|
- var tileRowSize = tileWidth * componentsCount;
|
|
|
- for (var j = 0; j < tileHeight; j++) {
|
|
|
- var rowBytes = src.subarray(srcPosition, srcPosition + tileRowSize);
|
|
|
- data.set(rowBytes, dataPosition);
|
|
|
- srcPosition += tileRowSize;
|
|
|
- dataPosition += imgRowSize;
|
|
|
- }
|
|
|
- }
|
|
|
- this.buffer = data;
|
|
|
- }
|
|
|
- this.bufferLength = this.buffer.length;
|
|
|
- this.eof = true;
|
|
|
- };
|
|
|
- return JpxStream;
|
|
|
-}();
|
|
|
var DecryptStream = function DecryptStreamClosure() {
|
|
|
function DecryptStream(str, maybeLength, decrypt) {
|
|
|
this.str = str;
|
|
@@ -1126,8 +1002,6 @@ exports.AsciiHexStream = AsciiHexStream;
|
|
|
exports.DecryptStream = DecryptStream;
|
|
|
exports.DecodeStream = DecodeStream;
|
|
|
exports.FlateStream = FlateStream;
|
|
|
-exports.JpegStream = JpegStream;
|
|
|
-exports.JpxStream = JpxStream;
|
|
|
exports.NullStream = NullStream;
|
|
|
exports.PredictorStream = PredictorStream;
|
|
|
exports.RunLengthStream = RunLengthStream;
|