UNPKG

kinetic-slider

Version:

A WebGL-powered kinetic slider component using PIXI.js

65 lines (61 loc) 2.48 kB
'use strict'; var pixiFilters = require('pixi-filters'); var ShaderResourceManager = require('../managers/ShaderResourceManager.cjs'); function createOutlineFilter(config) { const shaderManager = ShaderResourceManager.ShaderResourceManager.getInstance(); const options = {}; if (config.thickness !== void 0) options.thickness = config.thickness; if (config.color !== void 0) options.color = config.color; if (config.quality !== void 0) options.quality = config.quality; if (config.alpha !== void 0) options.alpha = config.alpha; if (config.knockout !== void 0) options.knockout = config.knockout; const qualityStr = (options.quality || 0.1).toString(); const knockoutStr = options.knockout ? "ko" : "noko"; const colorHex = (options.color || 0).toString(16); const shaderKey = `outline-filter-${qualityStr}-${knockoutStr}-${colorHex}`; const filter = new pixiFilters.OutlineFilter(options); try { shaderManager.registerFilter(filter, shaderKey); } catch (error) { console.warn("Error registering outline filter with shader manager:", error); } const updateIntensity = (intensity) => { const normalizedIntensity = Math.max(0, Math.min(10, intensity)); if (config.primaryProperty) { switch (config.primaryProperty) { case "thickness": filter.thickness = normalizedIntensity * 2; break; case "alpha": filter.alpha = normalizedIntensity / 10; break; case "quality": filter.quality = normalizedIntensity / 10; break; default: filter.thickness = normalizedIntensity * 2; } } else { filter.thickness = normalizedIntensity * 2; } }; updateIntensity(config.intensity); const reset = () => { filter.thickness = config.thickness !== void 0 ? config.thickness : 1; filter.color = config.color !== void 0 ? config.color : 0; filter.quality = config.quality !== void 0 ? config.quality : 0.1; filter.alpha = config.alpha !== void 0 ? config.alpha : 1; filter.knockout = config.knockout !== void 0 ? config.knockout : false; }; const dispose = () => { try { shaderManager.releaseFilter(filter, shaderKey); } catch (error) { console.warn("Error releasing outline filter shader:", error); } filter.destroy(); }; return { filter, updateIntensity, reset, dispose }; } exports.createOutlineFilter = createOutlineFilter; //# sourceMappingURL=outlineFilter.cjs.map