UNPKG

pixi.js

Version:

<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">

82 lines (78 loc) 3.09 kB
'use strict'; var Extensions = require('../../extensions/Extensions.js'); var Texture = require('../../rendering/renderers/shared/texture/Texture.js'); var updateTextBounds = require('../text/utils/updateTextBounds.js'); var BatchableHTMLText = require('./BatchableHTMLText.js'); "use strict"; class HTMLTextPipe { constructor(renderer) { this._renderer = renderer; } validateRenderable(htmlText) { return htmlText._didTextUpdate; } addRenderable(htmlText, instructionSet) { const batchableHTMLText = this._getGpuText(htmlText); if (htmlText._didTextUpdate) { this._updateGpuText(htmlText).catch((e) => { console.error(e); }); htmlText._didTextUpdate = false; updateTextBounds.updateTextBounds(batchableHTMLText, htmlText); } this._renderer.renderPipes.batch.addToBatch(batchableHTMLText, instructionSet); } updateRenderable(htmlText) { const batchableHTMLText = this._getGpuText(htmlText); batchableHTMLText._batcher.updateElement(batchableHTMLText); } async _updateGpuText(htmlText) { htmlText._didTextUpdate = false; const batchableHTMLText = this._getGpuText(htmlText); if (batchableHTMLText.generatingTexture) return; if (batchableHTMLText.texturePromise) { this._renderer.htmlText.returnTexturePromise(batchableHTMLText.texturePromise); batchableHTMLText.texturePromise = null; } batchableHTMLText.generatingTexture = true; htmlText._resolution = htmlText._autoResolution ? this._renderer.resolution : htmlText.resolution; const texturePromise = this._renderer.htmlText.getTexturePromise(htmlText); batchableHTMLText.texturePromise = texturePromise; batchableHTMLText.texture = await texturePromise; const renderGroup = htmlText.renderGroup || htmlText.parentRenderGroup; if (renderGroup) { renderGroup.structureDidChange = true; } batchableHTMLText.generatingTexture = false; updateTextBounds.updateTextBounds(batchableHTMLText, htmlText); } _getGpuText(htmlText) { return htmlText._gpuData[this._renderer.uid] || this.initGpuText(htmlText); } initGpuText(htmlText) { const batchableHTMLText = new BatchableHTMLText.BatchableHTMLText(this._renderer); 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; return batchableHTMLText; } destroy() { this._renderer = null; } } /** @ignore */ HTMLTextPipe.extension = { type: [ Extensions.ExtensionType.WebGLPipes, Extensions.ExtensionType.WebGPUPipes, Extensions.ExtensionType.CanvasPipes ], name: "htmlText" }; exports.HTMLTextPipe = HTMLTextPipe; //# sourceMappingURL=HTMLTextPipe.js.map