shadow$provide.module$node_modules$pixi_DOT_js$lib$scene$text_html$HTMLTextPipe = function(global, require, module, exports) { global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions"); var Texture = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$Texture"), GCManagedHash = require("module$node_modules$pixi_DOT_js$lib$utils$data$GCManagedHash"), updateTextBounds = require("module$node_modules$pixi_DOT_js$lib$scene$text$utils$updateTextBounds"), BatchableHTMLText = require("module$node_modules$pixi_DOT_js$lib$scene$text_html$BatchableHTMLText"); "use strict"; class HTMLTextPipe { constructor(renderer) { this._renderer = renderer; renderer.runners.resolutionChange.add(this); this._managedTexts = new GCManagedHash.GCManagedHash({renderer, type:"renderable", onUnload:this.onTextUnload.bind(this), name:"htmlText"}); } resolutionChange() { for (const key in this._managedTexts.items) { const text = this._managedTexts.items[key]; if (text?._autoResolution) { text.onViewUpdate(); } } } validateRenderable(htmlText) { return this._getGpuText(htmlText).currentKey !== htmlText.styleKey ? !0 : !1; } addRenderable(htmlText, instructionSet) { const batchableHTMLText = this._getGpuText(htmlText); if (htmlText._didTextUpdate) { const resolution = htmlText._autoResolution ? this._renderer.resolution : htmlText.resolution; batchableHTMLText.currentKey === htmlText.styleKey && htmlText.resolution === resolution || this._updateGpuText(htmlText).catch(e => { console.error(e); }); htmlText._didTextUpdate = !1; updateTextBounds.updateTextBounds(batchableHTMLText, htmlText); } this._renderer.renderPipes.batch.addToBatch(batchableHTMLText, instructionSet); } updateRenderable(htmlText) { htmlText = this._getGpuText(htmlText); htmlText._batcher.updateElement(htmlText); } async _updateGpuText(htmlText) { htmlText._didTextUpdate = !1; const batchableHTMLText = this._getGpuText(htmlText); if (!batchableHTMLText.generatingTexture) { var oldTexturePromise = batchableHTMLText.texturePromise; batchableHTMLText.texturePromise = null; batchableHTMLText.generatingTexture = !0; htmlText._resolution = htmlText._autoResolution ? this._renderer.resolution : htmlText.resolution; var texturePromise = this._renderer.htmlText.getTexturePromise(htmlText); oldTexturePromise && (texturePromise = texturePromise.finally(() => { this._renderer.htmlText.decreaseReferenceCount(batchableHTMLText.currentKey); this._renderer.htmlText.returnTexturePromise(oldTexturePromise); })); batchableHTMLText.texturePromise = texturePromise; batchableHTMLText.currentKey = htmlText.styleKey; batchableHTMLText.texture = await texturePromise; if (texturePromise = htmlText.renderGroup || htmlText.parentRenderGroup) { texturePromise.structureDidChange = !0; } batchableHTMLText.generatingTexture = !1; updateTextBounds.updateTextBounds(batchableHTMLText, htmlText); } } _getGpuText(htmlText) { return htmlText._gpuData[this._renderer.uid] || this.initGpuText(htmlText); } initGpuText(htmlText) { const batchableHTMLText = new BatchableHTMLText.BatchableHTMLText(); batchableHTMLText.renderable = htmlText; batchableHTMLText.transform = htmlText.groupTransform; batchableHTMLText.texture = Texture.Texture.EMPTY; batchableHTMLText.bounds = {minX:0, maxX:1, minY:0, maxY:0}; batchableHTMLText.roundPixels = this._renderer._roundPixels | htmlText._roundPixels; htmlText._resolution = htmlText._autoResolution ? this._renderer.resolution : htmlText.resolution; htmlText._gpuData[this._renderer.uid] = batchableHTMLText; this._managedTexts.add(htmlText); return batchableHTMLText; } onTextUnload(text) { if (text = text._gpuData[this._renderer.uid]) { var {htmlText} = this._renderer; null === htmlText.getReferenceCount(text.currentKey) ? htmlText.returnTexturePromise(text.texturePromise) : htmlText.decreaseReferenceCount(text.currentKey); } } destroy() { this._managedTexts.destroy(); this._renderer = null; } } HTMLTextPipe.extension = {type:[global.ExtensionType.WebGLPipes, global.ExtensionType.WebGPUPipes, global.ExtensionType.CanvasPipes], name:"htmlText"}; exports.HTMLTextPipe = HTMLTextPipe; }; //# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$scene$text_html$HTMLTextPipe.js.map