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">

80 lines (77 loc) 2.98 kB
import { ExtensionType } from '../../extensions/Extensions.mjs'; import { Texture } from '../../rendering/renderers/shared/texture/Texture.mjs'; import { updateTextBounds } from '../text/utils/updateTextBounds.mjs'; import { BatchableHTMLText } from './BatchableHTMLText.mjs'; "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(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(batchableHTMLText, htmlText); } _getGpuText(htmlText) { return htmlText._gpuData[this._renderer.uid] || this.initGpuText(htmlText); } initGpuText(htmlText) { const batchableHTMLText = new BatchableHTMLText(this._renderer); batchableHTMLText.renderable = htmlText; batchableHTMLText.transform = htmlText.groupTransform; batchableHTMLText.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: [ ExtensionType.WebGLPipes, ExtensionType.WebGPUPipes, ExtensionType.CanvasPipes ], name: "htmlText" }; export { HTMLTextPipe }; //# sourceMappingURL=HTMLTextPipe.mjs.map