{"version":3,"file":"Basis.mjs","sources":["../src/Basis.ts"],"sourcesContent":["import { INTERNAL_FORMATS } from 'pixijs/compressed-textures';\nimport { TYPES } from 'pixijs/core';\n\n/**\n * The transcoding formats provided by basis_universal.\n *\n * NOTE: Not all of these formats are supported on WebGL!\n * @ignore\n */\n/* eslint-disable camelcase, @typescript-eslint/indent */\nexport enum BASIS_FORMATS\n{\n    cTFETC1 = 0,\n    cTFETC2 = 1,\n    cTFBC1 = 2,\n    cTFBC3 = 3,\n    cTFBC4 = 4,\n    cTFBC5 = 5,\n    cTFBC7 = 6,\n    cTFPVRTC1_4_RGB = 8,\n    cTFPVRTC1_4_RGBA = 9,\n    cTFASTC_4x4 = 10,\n    cTFATC_RGB = 11,\n    cTFATC_RGBA_INTERPOLATED_ALPHA = 12,\n    cTFRGBA32 = 13,\n    cTFRGB565 = 14,\n    cTFBGR565 = 15,\n    cTFRGBA4444 = 16,\n}\n/* eslint-enable camelcase, @typescript-eslint/indent */\n\n/**\n * Maps {@link BASIS_FORMATS} to {@link PIXI.INTERNAL_FORMATS}\n * @ignore\n */\nexport const BASIS_FORMAT_TO_INTERNAL_FORMAT: { [id: number]: INTERNAL_FORMATS } = {\n    [BASIS_FORMATS.cTFETC1]: INTERNAL_FORMATS.COMPRESSED_RGB_ETC1_WEBGL,\n    [BASIS_FORMATS.cTFBC1]: INTERNAL_FORMATS.COMPRESSED_RGB_S3TC_DXT1_EXT,\n    [BASIS_FORMATS.cTFBC3]: INTERNAL_FORMATS.COMPRESSED_RGBA_S3TC_DXT5_EXT,\n    [BASIS_FORMATS.cTFPVRTC1_4_RGB]: INTERNAL_FORMATS.COMPRESSED_RGB_PVRTC_4BPPV1_IMG,\n    [BASIS_FORMATS.cTFPVRTC1_4_RGBA]: INTERNAL_FORMATS.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,\n    [BASIS_FORMATS.cTFATC_RGB]: INTERNAL_FORMATS.COMPRESSED_RGB_ATC_WEBGL,\n    [BASIS_FORMATS.cTFASTC_4x4]: INTERNAL_FORMATS.COMPRESSED_RGBA_ASTC_4x4_KHR,\n};\n\n/**\n * Maps {@link BASIS_FORMATS} to {@link PIXI.TYPES}. These formats are a fallback when the basis file cannot be transcoded\n * to a valid compressed texture format.\n *\n * NOTE: {@link BASIS_FORMATS.cTFBGR565} is not supported, while {@link BASIS_FORMATS.cTFRGBA4444} is not implemented by\n *  [at]pixi/basis.\n * @ignore\n */\nexport const BASIS_FORMAT_TO_TYPE: { [id: number]: TYPES } = {\n    [BASIS_FORMATS.cTFRGBA32]: TYPES.UNSIGNED_BYTE,\n    [BASIS_FORMATS.cTFRGB565]: TYPES.UNSIGNED_SHORT_5_6_5,\n    [BASIS_FORMATS.cTFRGBA4444]: TYPES.UNSIGNED_SHORT_4_4_4_4,\n};\n\n/**\n * Maps {@link PIXI.INTERNAL_FORMATS} to {@link BASIS_FORMATS}\n * @ignore\n */\nexport const INTERNAL_FORMAT_TO_BASIS_FORMAT: { [id: number]: number }\n    = (Object.keys(BASIS_FORMAT_TO_INTERNAL_FORMAT) as string[])\n        .map((key: string) => Number(key))\n        .reduce((reverseMap: any, basisFormat: any) =>\n        {\n            reverseMap[(BASIS_FORMAT_TO_INTERNAL_FORMAT as any)[basisFormat]] = basisFormat;\n\n            return reverseMap;\n        }, {});\n\n/**\n * Enumerates the basis formats with alpha components\n * @ignore\n */\nexport const BASIS_FORMATS_ALPHA: { [id: number]: boolean } = {\n    [BASIS_FORMATS.cTFBC3]: true,\n    [BASIS_FORMATS.cTFPVRTC1_4_RGBA]: true,\n    [BASIS_FORMATS.cTFASTC_4x4]: true,\n};\n\n/**\n * Binding to C++ {@code BasisFile} wrapper class.\n * @see https://github.com/BinomialLLC/basis_universal/blob/master/webgl/transcoder/basis_wrappers.cpp\n * @private\n */\nexport declare class BasisFile\n{\n    constructor(buffer: Uint8Array);\n    getNumImages(): number;\n    getNumLevels(imageId: number): number;\n    getImageWidth(imageId: number, level: number): number;\n    getImageHeight(imageId: number, level: number): number;\n    getHasAlpha(): boolean;\n    startTranscoding(): boolean;\n    getImageTranscodedSizeInBytes(\n        imageId: number,\n        level: number,\n        basisFormat: number): number;\n    transcodeImage(dstBuff: Uint8Array,\n        imageId: number,\n        level: number,\n        basisFormat: BASIS_FORMATS,\n        pvrtcWrapAddressing: boolean,\n        getAlphaForOpaqueFormats: boolean): number;\n    close(): void;\n    delete(): void;\n}\n\n// Missing typings? - https://github.com/microsoft/TypeScript/issues/39655\n/**\n * Compressed texture extensions relevant to the formats into which Basis can decompress into.\n * @ignore\n */\n/* eslint-disable camelcase */\nexport type BasisTextureExtensions = {\n    s3tc?: WEBGL_compressed_texture_s3tc,\n    s3tc_sRGB: WEBGL_compressed_texture_s3tc_srgb,\n    etc: any,\n    etc1: any,\n    pvrtc: any,\n    atc: any,\n    astc: WEBGL_compressed_texture_astc\n};\n/* eslint-enable camelcase */\n\n/**\n * API provided by basis_universal WebGL library.\n * @ignore\n */\nexport type BasisBinding = {\n    BasisFile: typeof BasisFile,\n    initializeBasis(): void\n};\n\n/**\n * Binding to basis_universal WebGL library.\n * @see https://github.com/BinomialLLC/basis_universal/blob/master/webgl/transcoder/build/basis_transcoder.js\n * @ignore\n */\nexport type BASIS = (opts?: { wasmBinary: ArrayBuffer }) => Promise<BasisBinding>;\n"],"names":[],"mappings":"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"}