{"version":3,"file":"BufferImageSource.mjs","sources":["../../../../../../src/rendering/renderers/shared/texture/sources/BufferImageSource.ts"],"sourcesContent":["import { ExtensionType } from '../../../../../extensions/Extensions';\nimport { TextureSource } from './TextureSource';\n\nimport type { ExtensionMetadata } from '../../../../../extensions/Extensions';\nimport type { TypedArray } from '../../buffer/Buffer';\nimport type { TextureSourceOptions } from './TextureSource';\n\nexport interface BufferSourceOptions extends TextureSourceOptions<TypedArray | ArrayBuffer>\n{\n    width: number;\n    height: number;\n}\n\nexport class BufferImageSource extends TextureSource<TypedArray | ArrayBuffer>\n{\n    public static extension: ExtensionMetadata = ExtensionType.TextureSource;\n\n    public uploadMethodId = 'buffer';\n\n    constructor(options: BufferSourceOptions)\n    {\n        const buffer = options.resource || new Float32Array(options.width * options.height * 4);\n        let format = options.format;\n\n        if (!format)\n        {\n            if (buffer instanceof Float32Array)\n            {\n                format = 'rgba32float';\n            }\n            else if (buffer instanceof Int32Array)\n            {\n                format = 'rgba32uint';\n            }\n            else if (buffer instanceof Uint32Array)\n            {\n                format = 'rgba32uint';\n            }\n            else if (buffer instanceof Int16Array)\n            {\n                format = 'rgba16uint';\n            }\n            else if (buffer instanceof Uint16Array)\n            {\n                format = 'rgba16uint';\n            }\n            else if (buffer instanceof Int8Array)\n            {\n                format = 'bgra8unorm';\n            }\n            else\n            {\n                format = 'bgra8unorm';\n            }\n        }\n\n        super({\n            ...options,\n            resource: buffer,\n            format,\n        });\n    }\n\n    public static test(resource: any): resource is TypedArray | ArrayBuffer\n    {\n        return resource instanceof Int8Array\n        || resource instanceof Uint8Array\n        || resource instanceof Uint8ClampedArray\n        || resource instanceof Int16Array\n        || resource instanceof Uint16Array\n        || resource instanceof Int32Array\n        || resource instanceof Uint32Array\n        || resource instanceof Float32Array;\n    }\n}\n"],"names":[],"mappings":";;;;AAaO,MAAM,0BAA0B,aACvC,CAAA;AAAA,EAKI,YAAY,OACZ,EAAA;AACI,IAAM,MAAA,MAAA,GAAS,QAAQ,QAAY,IAAA,IAAI,aAAa,OAAQ,CAAA,KAAA,GAAQ,OAAQ,CAAA,MAAA,GAAS,CAAC,CAAA,CAAA;AACtF,IAAA,IAAI,SAAS,OAAQ,CAAA,MAAA,CAAA;AAErB,IAAA,IAAI,CAAC,MACL,EAAA;AACI,MAAA,IAAI,kBAAkB,YACtB,EAAA;AACI,QAAS,MAAA,GAAA,aAAA,CAAA;AAAA,OACb,MAAA,IACS,kBAAkB,UAC3B,EAAA;AACI,QAAS,MAAA,GAAA,YAAA,CAAA;AAAA,OACb,MAAA,IACS,kBAAkB,WAC3B,EAAA;AACI,QAAS,MAAA,GAAA,YAAA,CAAA;AAAA,OACb,MAAA,IACS,kBAAkB,UAC3B,EAAA;AACI,QAAS,MAAA,GAAA,YAAA,CAAA;AAAA,OACb,MAAA,IACS,kBAAkB,WAC3B,EAAA;AACI,QAAS,MAAA,GAAA,YAAA,CAAA;AAAA,OACb,MAAA,IACS,kBAAkB,SAC3B,EAAA;AACI,QAAS,MAAA,GAAA,YAAA,CAAA;AAAA,OAGb,MAAA;AACI,QAAS,MAAA,GAAA,YAAA,CAAA;AAAA,OACb;AAAA,KACJ;AAEA,IAAM,KAAA,CAAA;AAAA,MACF,GAAG,OAAA;AAAA,MACH,QAAU,EAAA,MAAA;AAAA,MACV,MAAA;AAAA,KACH,CAAA,CAAA;AA3CL,IAAA,IAAA,CAAO,cAAiB,GAAA,QAAA,CAAA;AAAA,GA4CxB;AAAA,EAEA,OAAc,KAAK,QACnB,EAAA;AACI,IAAA,OAAO,QAAoB,YAAA,SAAA,IACxB,QAAoB,YAAA,UAAA,IACpB,oBAAoB,iBACpB,IAAA,QAAA,YAAoB,UACpB,IAAA,QAAA,YAAoB,WACpB,IAAA,QAAA,YAAoB,UACpB,IAAA,QAAA,YAAoB,eACpB,QAAoB,YAAA,YAAA,CAAA;AAAA,GAC3B;AACJ,CAAA;AA7Da,iBAAA,CAEK,YAA+B,aAAc,CAAA,aAAA;;;;"}