shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$batcher$canvas$CanvasBatchAdaptor = function(global, require, module, exports) { global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions"); var groupD8 = require("module$node_modules$pixi_DOT_js$lib$maths$matrix$groupD8"); module = require("module$node_modules$pixi_DOT_js$lib$maths$matrix$Matrix"); var getGlobalMixin = require("module$node_modules$pixi_DOT_js$lib$scene$container$container_mixins$getGlobalMixin"), multiplyHexColors = require("module$node_modules$pixi_DOT_js$lib$scene$container$utils$multiplyHexColors"), canvasUtils = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$canvas$utils$canvasUtils"); "use strict"; const node_modules$pixi_DOT_js$lib$rendering$batcher$canvas$CanvasBatchAdaptor$classdecl$var29 = class { static _getPatternRepeat(addressModeU, addressModeV) { addressModeU = addressModeU && "clamp-to-edge" !== addressModeU; addressModeV = addressModeV && "clamp-to-edge" !== addressModeV; return addressModeU && addressModeV ? "repeat" : addressModeU ? "repeat-x" : addressModeV ? "repeat-y" : "no-repeat"; } start(batchPipe, geometry, shader) { } execute(batchPipe, batch) { const elements = batch.elements; if (elements && elements.length) { batchPipe = batchPipe.renderer; var contextSystem = batchPipe.canvasContext, context = contextSystem.activeContext; for (let i = 0; i < elements.length; i++) { var element = elements[i]; if (!element.packAsQuad) { continue; } var quad = element, source = (element = quad.texture) ? canvasUtils.canvasUtils.getCanvasSource(element) : null; if (!source) { continue; } var textureStyle = element.source.style, smoothProperty = contextSystem.smoothProperty, shouldSmooth = "nearest" !== textureStyle.scaleMode; context[smoothProperty] !== shouldSmooth && (context[smoothProperty] = shouldSmooth); contextSystem.setBlendMode(batch.blendMode); smoothProperty = batchPipe.globalUniforms.globalUniformData?.worldColor ?? 4294967295; shouldSmooth = quad.color; var alpha = (smoothProperty >>> 24 & 255) / 255 * ((shouldSmooth >>> 24 & 255) / 255) * (batchPipe.filter?.alphaMultiplier ?? 1); if (0 >= alpha) { continue; } context.globalAlpha = alpha; var tint = getGlobalMixin.bgr2rgb(multiplyHexColors.multiplyHexColors(shouldSmooth & 16777215, smoothProperty & 16777215)), frame = element.frame, repeat = node_modules$pixi_DOT_js$lib$rendering$batcher$canvas$CanvasBatchAdaptor$classdecl$var29._getPatternRepeat(textureStyle.addressModeU ?? textureStyle.addressMode, textureStyle.addressModeV ?? textureStyle.addressMode); textureStyle = element.source._resolution ?? element.source.resolution ?? 1; smoothProperty = quad.renderable?.renderGroup?.isCachedAsTexture; var sx = frame.x * textureStyle; const sy = frame.y * textureStyle, sw = frame.width * textureStyle, sh = frame.height * textureStyle; textureStyle = quad.bounds; shouldSmooth = batchPipe.renderTarget.renderTarget.isRoot; alpha = textureStyle.minX; var dy = textureStyle.minY; const dw = textureStyle.maxX - textureStyle.minX, dh = textureStyle.maxY - textureStyle.minY, rotate = element.rotate; textureStyle = element.uvs; var uvMin = Math.min(textureStyle.x0, textureStyle.x1, textureStyle.x2, textureStyle.x3, textureStyle.y0, textureStyle.y1, textureStyle.y2, textureStyle.y3), uvMax = Math.max(textureStyle.x0, textureStyle.x1, textureStyle.x2, textureStyle.x3, textureStyle.y0, textureStyle.y1, textureStyle.y2, textureStyle.y3); uvMin = "no-repeat" !== repeat && (0 > uvMin || 1 < uvMax); uvMax = !uvMin && (16777215 !== tint || rotate); (uvMax = rotate && !uvMax) ? (node_modules$pixi_DOT_js$lib$rendering$batcher$canvas$CanvasBatchAdaptor$classdecl$var29._tempPatternMatrix.copyFrom(quad.transform), groupD8.groupD8.matrixAppendRotationInv(node_modules$pixi_DOT_js$lib$rendering$batcher$canvas$CanvasBatchAdaptor$classdecl$var29._tempPatternMatrix, rotate, alpha, dy, dw, dh), contextSystem.setContextTransform(node_modules$pixi_DOT_js$lib$rendering$batcher$canvas$CanvasBatchAdaptor$classdecl$var29._tempPatternMatrix, 1 === quad.roundPixels, void 0, smoothProperty && shouldSmooth)) : contextSystem.setContextTransform(quad.transform, 1 === quad.roundPixels, void 0, smoothProperty && shouldSmooth); smoothProperty = dw; shouldSmooth = dh; alpha = uvMax ? 0 : alpha; dy = uvMax ? 0 : dy; uvMax || 1 !== quad.roundPixels || (alpha |= 0, dy |= 0); if (uvMin) { if (quad = frame.width <= element.source.width && frame.height <= element.source.height, 16777215 !== tint && !rotate && quad && (source = canvasUtils.canvasUtils.getTintedCanvas({texture:element}, tint)), source = context.createPattern(source, repeat)) { tint = smoothProperty, quad = shouldSmooth, 0 !== tint && 0 !== quad && (tint = 1 / tint, repeat = 1 / quad, quad = (textureStyle.x1 - textureStyle.x0) * tint, tint *= textureStyle.y1 - textureStyle.y0, frame = (textureStyle.x3 - textureStyle.x0) * repeat, repeat *= textureStyle.y3 - textureStyle.y0, sx = element.source.pixelWidth, element = element.source.pixelHeight, node_modules$pixi_DOT_js$lib$rendering$batcher$canvas$CanvasBatchAdaptor$classdecl$var29._tempPatternMatrix.set(quad * sx, tint * element, frame * sx, repeat * element, (textureStyle.x0 - quad * alpha - frame * dy) * sx, (textureStyle.y0 - tint * alpha - repeat * dy) * element), canvasUtils.canvasUtils.applyPatternTransform(source, node_modules$pixi_DOT_js$lib$rendering$batcher$canvas$CanvasBatchAdaptor$classdecl$var29._tempPatternMatrix), context.fillStyle = source, context.fillRect(alpha, dy, smoothProperty, shouldSmooth)); } } else { element = 16777215 !== tint || rotate ? canvasUtils.canvasUtils.getTintedCanvas({texture:element}, tint) : source, textureStyle = element !== source, context.drawImage(element, textureStyle ? 0 : sx, textureStyle ? 0 : sy, textureStyle ? element.width : sw, textureStyle ? element.height : sh, alpha, dy, smoothProperty, shouldSmooth); } } } } }; require = node_modules$pixi_DOT_js$lib$rendering$batcher$canvas$CanvasBatchAdaptor$classdecl$var29; require._tempPatternMatrix = new module.Matrix(); require.extension = {type:[global.ExtensionType.CanvasPipesAdaptor], name:"batch"}; exports.CanvasBatchAdaptor = require; }; //# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$batcher$canvas$CanvasBatchAdaptor.js.map