{"version":3,"file":"canUseNewCanvasBlendModes.mjs","sources":["../../../../../src/rendering/renderers/canvas/utils/canUseNewCanvasBlendModes.ts"],"sourcesContent":["import { DOMAdapter } from '../../../../environment/adapter';\n\nimport type { ICanvas } from '../../../../environment/canvas/ICanvas';\n\nlet canUseNewCanvasBlendModesValue: boolean | undefined;\n\nfunction createColoredCanvas(color: string): ICanvas\n{\n    const canvas = DOMAdapter.get().createCanvas(6, 1);\n    const context = canvas.getContext('2d');\n\n    context.fillStyle = color;\n    context.fillRect(0, 0, 6, 1);\n\n    return canvas;\n}\n\n/**\n * Checks whether advanced Canvas blend modes are supported.\n * @returns True if advanced blend modes are available.\n * @internal\n */\nexport function canUseNewCanvasBlendModes(): boolean\n{\n    if (canUseNewCanvasBlendModesValue !== undefined)\n    {\n        return canUseNewCanvasBlendModesValue;\n    }\n\n    try\n    {\n        const magenta = createColoredCanvas('#ff00ff');\n        const yellow = createColoredCanvas('#ffff00');\n\n        const canvas = DOMAdapter.get().createCanvas(6, 1);\n        const context = canvas.getContext('2d');\n\n        context.globalCompositeOperation = 'multiply';\n        context.drawImage(magenta as unknown as CanvasImageSource, 0, 0);\n        context.drawImage(yellow as unknown as CanvasImageSource, 2, 0);\n\n        const imageData = context.getImageData(2, 0, 1, 1);\n\n        if (!imageData)\n        {\n            canUseNewCanvasBlendModesValue = false;\n        }\n        else\n        {\n            const data = imageData.data;\n\n            canUseNewCanvasBlendModesValue = (data[0] === 255 && data[1] === 0 && data[2] === 0);\n        }\n    }\n    catch (_error)\n    {\n        canUseNewCanvasBlendModesValue = false;\n    }\n\n    return canUseNewCanvasBlendModesValue;\n}\n"],"names":[],"mappings":";;;AAIA,IAAI,8BAAA;AAEJ,SAAS,oBAAoB,KAAA,EAC7B;AACI,EAAA,MAAM,SAAS,UAAA,CAAW,GAAA,EAAI,CAAE,YAAA,CAAa,GAAG,CAAC,CAAA;AACjD,EAAA,MAAM,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,IAAI,CAAA;AAEtC,EAAA,OAAA,CAAQ,SAAA,GAAY,KAAA;AACpB,EAAA,OAAA,CAAQ,QAAA,CAAS,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAC,CAAA;AAE3B,EAAA,OAAO,MAAA;AACX;AAOO,SAAS,yBAAA,GAChB;AACI,EAAA,IAAI,mCAAmC,KAAA,CAAA,EACvC;AACI,IAAA,OAAO,8BAAA;AAAA,EACX;AAEA,EAAA,IACA;AACI,IAAA,MAAM,OAAA,GAAU,oBAAoB,SAAS,CAAA;AAC7C,IAAA,MAAM,MAAA,GAAS,oBAAoB,SAAS,CAAA;AAE5C,IAAA,MAAM,SAAS,UAAA,CAAW,GAAA,EAAI,CAAE,YAAA,CAAa,GAAG,CAAC,CAAA;AACjD,IAAA,MAAM,OAAA,GAAU,MAAA,CAAO,UAAA,CAAW,IAAI,CAAA;AAEtC,IAAA,OAAA,CAAQ,wBAAA,GAA2B,UAAA;AACnC,IAAA,OAAA,CAAQ,SAAA,CAAU,OAAA,EAAyC,CAAA,EAAG,CAAC,CAAA;AAC/D,IAAA,OAAA,CAAQ,SAAA,CAAU,MAAA,EAAwC,CAAA,EAAG,CAAC,CAAA;AAE9D,IAAA,MAAM,YAAY,OAAA,CAAQ,YAAA,CAAa,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAEjD,IAAA,IAAI,CAAC,SAAA,EACL;AACI,MAAA,8BAAA,GAAiC,KAAA;AAAA,IACrC,CAAA,MAEA;AACI,MAAA,MAAM,OAAO,SAAA,CAAU,IAAA;AAEvB,MAAA,8BAAA,GAAkC,IAAA,CAAK,CAAC,CAAA,KAAM,GAAA,IAAO,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA,IAAK,IAAA,CAAK,CAAC,CAAA,KAAM,CAAA;AAAA,IACtF;AAAA,EACJ,SACO,MAAA,EACP;AACI,IAAA,8BAAA,GAAiC,KAAA;AAAA,EACrC;AAEA,EAAA,OAAO,8BAAA;AACX;;;;"}