@tsparticles/plugin-canvas-mask
Version:
tsParticles canvas mask plugin
51 lines (50 loc) • 1.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.CanvasMaskInstance = void 0;
const utils_js_1 = require("./utils.js");
const engine_1 = require("@tsparticles/engine");
class CanvasMaskInstance {
constructor(container) {
this._container = container;
}
async init() {
const container = this._container, options = container.actualOptions.canvasMask;
if (!options?.enable) {
return;
}
let pixelData = {
pixels: [],
height: 0,
width: 0,
};
const offset = options.pixels.offset;
if (options.image) {
const url = options.image.src;
if (!url) {
return;
}
pixelData = await (0, utils_js_1.getImageData)(url, offset);
}
else if (options.text) {
const textOptions = options.text;
const data = (0, utils_js_1.getTextData)(textOptions, offset);
if ((0, engine_1.isNull)(data)) {
return;
}
pixelData = data;
}
else if (options.element ?? options.selector) {
const canvas = options.element ?? (options.selector && document.querySelector(options.selector));
if (!canvas) {
return;
}
const context = canvas.getContext("2d");
if (!context) {
return;
}
pixelData = (0, utils_js_1.getCanvasImageData)(context, canvas, offset);
}
(0, utils_js_1.addParticlesFromCanvasPixels)(container, pixelData, options.position, options.scale, options.override, options.pixels.filter);
}
}
exports.CanvasMaskInstance = CanvasMaskInstance;