lerc.js 1.6 KB

123456789101112131415161718192021222324252627282930313233
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. const pako_1 = require("pako");
  7. const lerc_1 = __importDefault(require("lerc"));
  8. const basedecoder_js_1 = __importDefault(require("./basedecoder.js"));
  9. const globals_js_1 = require("../globals.js");
  10. class LercDecoder extends basedecoder_js_1.default {
  11. constructor(fileDirectory) {
  12. super();
  13. this.planarConfiguration = typeof fileDirectory.PlanarConfiguration !== 'undefined' ? fileDirectory.PlanarConfiguration : 1;
  14. this.samplesPerPixel = typeof fileDirectory.SamplesPerPixel !== 'undefined' ? fileDirectory.SamplesPerPixel : 1;
  15. this.addCompression = fileDirectory.LercParameters[globals_js_1.LercParameters.AddCompression];
  16. }
  17. decodeBlock(buffer) {
  18. switch (this.addCompression) {
  19. case globals_js_1.LercAddCompression.None:
  20. break;
  21. case globals_js_1.LercAddCompression.Deflate:
  22. buffer = (0, pako_1.inflate)(new Uint8Array(buffer)).buffer; // eslint-disable-line no-param-reassign, prefer-destructuring
  23. break;
  24. default:
  25. throw new Error(`Unsupported LERC additional compression method identifier: ${this.addCompression}`);
  26. }
  27. const lercResult = lerc_1.default.decode(buffer, { returnPixelInterleavedDims: this.planarConfiguration === 1 });
  28. const lercData = lercResult.pixels[0];
  29. return lercData.buffer;
  30. }
  31. }
  32. exports.default = LercDecoder;
  33. //# sourceMappingURL=lerc.js.map