Files
il/resources/public/js/cljs-runtime/module$node_modules$pixi_DOT_js$lib$rendering$renderers$canvas$CanvasContextSystem.js
2026-07-01 22:38:29 -06:00

67 lines
4.0 KiB
JavaScript

shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$canvas$CanvasContextSystem = function(global, require, module, exports) {
var Color = require("module$node_modules$pixi_DOT_js$lib$color$Color");
global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions");
var Matrix = require("module$node_modules$pixi_DOT_js$lib$maths$matrix$Matrix"), mapCanvasBlendModesToPixi = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$canvas$utils$mapCanvasBlendModesToPixi");
"use strict";
const tempMatrix = new Matrix.Matrix();
class CanvasContextSystem {
constructor(renderer) {
this.activeResolution = 1;
this.smoothProperty = "imageSmoothingEnabled";
this.blendModes = mapCanvasBlendModesToPixi.mapCanvasBlendModesToPixi();
this._activeBlendMode = "normal";
this._projTransform = null;
this._outerBlend = !1;
this._warnedBlendModes = new Set();
this._renderer = renderer;
}
resolutionChange(resolution) {
this.activeResolution = resolution;
}
init() {
this.activeContext = this.rootContext = this._renderer.canvas.getContext("2d", {alpha:1 > this._renderer.background.alpha});
this.activeResolution = this._renderer.resolution;
if (!this.rootContext.imageSmoothingEnabled) {
const rc = this.rootContext;
rc.webkitImageSmoothingEnabled ? this.smoothProperty = "webkitImageSmoothingEnabled" : rc.mozImageSmoothingEnabled ? this.smoothProperty = "mozImageSmoothingEnabled" : rc.oImageSmoothingEnabled ? this.smoothProperty = "oImageSmoothingEnabled" : rc.msImageSmoothingEnabled && (this.smoothProperty = "msImageSmoothingEnabled");
}
}
setContextTransform(transform, roundPixels, localResolution, skipGlobalTransform) {
let mat = tempMatrix;
mat.copyFrom(skipGlobalTransform ? Matrix.Matrix.IDENTITY : this._renderer.globalUniforms.globalUniformData?.worldTransformMatrix || Matrix.Matrix.IDENTITY);
mat.append(transform);
transform = this._projTransform;
skipGlobalTransform = this.activeResolution;
localResolution = localResolution || skipGlobalTransform;
if (transform) {
const finalMat = Matrix.Matrix.shared;
finalMat.copyFrom(mat);
finalMat.prepend(transform);
mat = finalMat;
}
roundPixels ? this.activeContext.setTransform(mat.a * localResolution, mat.b * localResolution, mat.c * localResolution, mat.d * localResolution, mat.tx * skipGlobalTransform | 0, mat.ty * skipGlobalTransform | 0) : this.activeContext.setTransform(mat.a * localResolution, mat.b * localResolution, mat.c * localResolution, mat.d * localResolution, mat.tx * skipGlobalTransform, mat.ty * skipGlobalTransform);
}
clear(clearColor, alpha) {
const context = this.activeContext, renderer = this._renderer;
context.clearRect(0, 0, renderer.width, renderer.height);
clearColor && (clearColor = Color.Color.shared.setValue(clearColor), context.globalAlpha = alpha ?? clearColor.alpha, context.fillStyle = clearColor.toHex(), context.fillRect(0, 0, renderer.width, renderer.height), context.globalAlpha = 1);
}
setBlendMode(blendMode) {
if (this._activeBlendMode !== blendMode) {
this._activeBlendMode = blendMode;
this._outerBlend = !1;
var mappedBlend = this.blendModes[blendMode];
mappedBlend ? this.activeContext.globalCompositeOperation = mappedBlend : (this._warnedBlendModes.has(blendMode) || (console.warn(`CanvasRenderer: blend mode "${blendMode}" is not supported in Canvas2D; falling back to "source-over".`), this._warnedBlendModes.add(blendMode)), this.activeContext.globalCompositeOperation = "source-over");
}
}
destroy() {
this.activeContext = this.rootContext = null;
this._warnedBlendModes.clear();
}
}
CanvasContextSystem.extension = {type:[global.ExtensionType.CanvasSystem], name:"canvasContext"};
exports.CanvasContextSystem = CanvasContextSystem;
};
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$canvas$CanvasContextSystem.js.map