@tsparticles/plugin-canvas-mask
Version:
tsParticles canvas mask plugin
61 lines (60 loc) • 2.36 kB
JavaScript
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "./utils.js", "@tsparticles/engine"], factory);
}
})(function (require, exports) {
"use strict";
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;
});