shadow$provide.module$node_modules$pixi_DOT_js$lib$scene$text$shared$AbstractTextSystem = function(global, require, module, exports) { var TexturePool = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$TexturePool"), TextureStyle = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$TextureStyle"), deprecation = require("module$node_modules$pixi_DOT_js$lib$utils$logging$deprecation"), CanvasTextGenerator = require("module$node_modules$pixi_DOT_js$lib$scene$text$canvas$CanvasTextGenerator"), TextStyle = require("module$node_modules$pixi_DOT_js$lib$scene$text$TextStyle"), getPo2TextureFromSource = require("module$node_modules$pixi_DOT_js$lib$scene$text$utils$getPo2TextureFromSource"); "use strict"; class AbstractTextSystem { constructor(renderer, retainCanvasContext) { this._activeTextures = {}; this._renderer = renderer; this._retainCanvasContext = retainCanvasContext; } getTexture(options, _resolution, _style, _textKey) { "string" === typeof options && (deprecation.deprecation("8.0.0", "CanvasTextSystem.getTexture: Use object TextOptions instead of separate arguments"), options = {text:options, style:_style, resolution:_resolution}); options.style instanceof TextStyle.TextStyle || (options.style = new TextStyle.TextStyle(options.style)); options.textureStyle instanceof TextureStyle.TextureStyle || (options.textureStyle = new TextureStyle.TextureStyle(options.textureStyle)); "string" !== typeof options.text && (options.text = options.text.toString()); const {text, style, textureStyle, autoGenerateMipmaps} = options; _resolution = options.resolution ?? this._renderer.resolution; const {frame, canvasAndContext} = CanvasTextGenerator.CanvasTextGenerator.getCanvasAndContext({text, style, resolution:_resolution}); options = getPo2TextureFromSource.getPo2TextureFromSource(canvasAndContext.canvas, frame.width, frame.height, _resolution, autoGenerateMipmaps); textureStyle && (options.source.style = textureStyle); style.trim && (frame.pad(style.padding), options.frame.copyFrom(frame), options.frame.scale(1 / _resolution), options.updateUvs()); if (style.filters) { return _resolution = this._applyFilters(options, style.filters), this.returnTexture(options), CanvasTextGenerator.CanvasTextGenerator.returnCanvasAndContext(canvasAndContext), _resolution; } this._renderer.texture.initSource(options._source); this._retainCanvasContext || CanvasTextGenerator.CanvasTextGenerator.returnCanvasAndContext(canvasAndContext); return options; } returnTexture(texture) { const source = texture.source, resource = source.resource; if (this._retainCanvasContext && resource?.getContext) { const context = resource.getContext("2d"); context && CanvasTextGenerator.CanvasTextGenerator.returnCanvasAndContext({canvas:resource, context}); } source.resource = null; source.uploadMethodId = "unknown"; source.alphaMode = "no-premultiply-alpha"; TexturePool.TexturePool.returnTexture(texture, !0); } renderTextToCanvas() { deprecation.deprecation("8.10.0", "CanvasTextSystem.renderTextToCanvas: no longer supported, use CanvasTextSystem.getTexture instead"); } getManagedTexture(text) { text._resolution = text._autoResolution ? this._renderer.resolution : text.resolution; const textKey = text.styleKey; if (this._activeTextures[textKey]) { return this._increaseReferenceCount(textKey), this._activeTextures[textKey].texture; } text = this.getTexture({text:text.text, style:text.style, resolution:text._resolution, textureStyle:text.textureStyle, autoGenerateMipmaps:text.autoGenerateMipmaps}); this._activeTextures[textKey] = {texture:text, usageCount:1}; return text; } decreaseReferenceCount(textKey) { const activeTexture = this._activeTextures[textKey]; activeTexture && (activeTexture.usageCount--, 0 === activeTexture.usageCount && (this.returnTexture(activeTexture.texture), this._activeTextures[textKey] = null)); } getReferenceCount(textKey) { return this._activeTextures[textKey]?.usageCount ?? 0; } _increaseReferenceCount(textKey) { this._activeTextures[textKey].usageCount++; } _applyFilters(texture, filters) { const currentRenderTarget = this._renderer.renderTarget.renderTarget; texture = this._renderer.filter.generateFilteredTexture({texture, filters}); this._renderer.renderTarget.bind(currentRenderTarget, !1); return texture; } destroy() { this._renderer = null; for (const key in this._activeTextures) { this._activeTextures[key] && this.returnTexture(this._activeTextures[key].texture); } this._activeTextures = null; } } exports.AbstractTextSystem = AbstractTextSystem; }; //# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$scene$text$shared$AbstractTextSystem.js.map