73 lines
3.4 KiB
JavaScript
73 lines
3.4 KiB
JavaScript
shadow$provide.module$node_modules$pixi_DOT_js$lib$scene$text$canvas$CanvasTextPipe = function(global, require, module, exports) {
|
|
global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions");
|
|
var 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"), BatchableText = require("module$node_modules$pixi_DOT_js$lib$scene$text$canvas$BatchableText");
|
|
"use strict";
|
|
class CanvasTextPipe {
|
|
constructor(renderer) {
|
|
this._renderer = renderer;
|
|
renderer.runners.resolutionChange.add(this);
|
|
this._managedTexts = new GCManagedHash.GCManagedHash({renderer, type:"renderable", onUnload:this.onTextUnload.bind(this), name:"canvasText"});
|
|
}
|
|
resolutionChange() {
|
|
for (const key in this._managedTexts.items) {
|
|
const text = this._managedTexts.items[key];
|
|
if (text?._autoResolution) {
|
|
text.onViewUpdate();
|
|
}
|
|
}
|
|
}
|
|
validateRenderable(text) {
|
|
return this._getGpuText(text).currentKey !== text.styleKey ? !0 : text._didTextUpdate;
|
|
}
|
|
addRenderable(text, instructionSet) {
|
|
const batchableText = this._getGpuText(text);
|
|
if (text._didTextUpdate) {
|
|
const resolution = text._autoResolution ? this._renderer.resolution : text.resolution;
|
|
batchableText.currentKey === text.styleKey && text._resolution === resolution || this._updateGpuText(text);
|
|
text._didTextUpdate = !1;
|
|
updateTextBounds.updateTextBounds(batchableText, text);
|
|
}
|
|
this._renderer.renderPipes.batch.addToBatch(batchableText, instructionSet);
|
|
}
|
|
updateRenderable(text) {
|
|
text = this._getGpuText(text);
|
|
text._batcher.updateElement(text);
|
|
}
|
|
_updateGpuText(text) {
|
|
const batchableText = this._getGpuText(text);
|
|
batchableText.texture && this._renderer.canvasText.decreaseReferenceCount(batchableText.currentKey);
|
|
text._resolution = text._autoResolution ? this._renderer.resolution : text.resolution;
|
|
batchableText.texture = this._renderer.canvasText.getManagedTexture(text);
|
|
batchableText.currentKey = text.styleKey;
|
|
}
|
|
_getGpuText(text) {
|
|
return text._gpuData[this._renderer.uid] || this.initGpuText(text);
|
|
}
|
|
initGpuText(text) {
|
|
const batchableText = new BatchableText.BatchableText();
|
|
batchableText.currentKey = "--";
|
|
batchableText.renderable = text;
|
|
batchableText.transform = text.groupTransform;
|
|
batchableText.bounds = {minX:0, maxX:1, minY:0, maxY:0};
|
|
batchableText.roundPixels = this._renderer._roundPixels | text._roundPixels;
|
|
text._gpuData[this._renderer.uid] = batchableText;
|
|
this._managedTexts.add(text);
|
|
return batchableText;
|
|
}
|
|
onTextUnload(text) {
|
|
if (text = text._gpuData[this._renderer.uid]) {
|
|
var {canvasText} = this._renderer;
|
|
0 < canvasText.getReferenceCount(text.currentKey) ? canvasText.decreaseReferenceCount(text.currentKey) : text.texture && canvasText.returnTexture(text.texture);
|
|
}
|
|
}
|
|
destroy() {
|
|
this._managedTexts.destroy();
|
|
this._renderer = null;
|
|
}
|
|
}
|
|
CanvasTextPipe.extension = {type:[global.ExtensionType.WebGLPipes, global.ExtensionType.WebGPUPipes, global.ExtensionType.CanvasPipes], name:"text"};
|
|
exports.CanvasTextPipe = CanvasTextPipe;
|
|
};
|
|
|
|
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$scene$text$canvas$CanvasTextPipe.js.map
|