UNPKG

geotiff

Version:

GeoTIFF image decoding in JavaScript

45 lines 1.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const predictor_js_1 = require("../predictor.js"); /** * @typedef {Object} BaseDecoderParameters * @property {number} tileWidth * @property {number} tileHeight * @property {number} predictor * @property {number|number[]|import('../geotiff.js').TypedArray} bitsPerSample * @property {number} planarConfiguration * @property {number} [samplesPerPixel] */ class BaseDecoder { /** * @param {BaseDecoderParameters} parameters */ constructor(parameters) { this.parameters = parameters; } /** * @abstract * @param {ArrayBufferLike} _buffer * @returns {Promise<ArrayBufferLike>|ArrayBufferLike} */ decodeBlock(_buffer) { throw new Error('decodeBlock not implemented'); } /** * @param {ArrayBufferLike} buffer * @returns {Promise<ArrayBufferLike>} */ async decode(buffer) { const decoded = await this.decodeBlock(buffer); const { tileWidth, tileHeight, predictor, bitsPerSample, planarConfiguration, } = this.parameters; if (predictor !== 1) { const isBitsPerSampleArray = Array.isArray(bitsPerSample) || ArrayBuffer.isView(bitsPerSample); const adaptedBitsPerSample = isBitsPerSampleArray ? Array.from(bitsPerSample) : [bitsPerSample]; return (0, predictor_js_1.applyPredictor)(decoded, predictor, tileWidth, tileHeight, adaptedBitsPerSample, planarConfiguration); } return decoded; } } exports.default = BaseDecoder; //# sourceMappingURL=basedecoder.js.map //# sourceMappingURL=basedecoder.js.map