UNPKG

kinetic-slider

Version:

A WebGL-powered kinetic slider component using PIXI.js

80 lines (76 loc) 2.36 kB
'use strict'; var pixiFilters = require('pixi-filters'); var ShaderResourceManager = require('../managers/ShaderResourceManager.cjs'); function createAdjustmentFilter(config) { const shaderManager = ShaderResourceManager.ShaderResourceManager.getInstance(); const options = { gamma: config.gamma ?? 1, contrast: config.contrast ?? 1, saturation: config.saturation ?? 1, brightness: config.brightness ?? 1, red: config.red ?? 1, green: config.green ?? 1, blue: config.blue ?? 1, alpha: config.alpha ?? 1 }; const shaderKey = `adjustment-filter-${config.primaryProperty || "default"}`; const filter = new pixiFilters.AdjustmentFilter(options); try { shaderManager.registerFilter(filter, shaderKey); } catch (error) { console.warn("Error registering adjustment filter with shader manager:", error); } const updateIntensity = (intensity) => { const normalizedIntensity = Math.max(0, Math.min(10, intensity)); if (config.primaryProperty) { let value; switch (config.primaryProperty) { case "contrast": case "saturation": value = normalizedIntensity / 5; break; case "brightness": value = normalizedIntensity / 5; break; case "gamma": value = normalizedIntensity / 5; break; case "red": case "green": case "blue": value = normalizedIntensity / 5; break; case "alpha": value = normalizedIntensity / 10; break; default: value = normalizedIntensity / 5; } filter[config.primaryProperty] = value; } else { filter.contrast = normalizedIntensity / 5; } }; updateIntensity(config.intensity); const reset = () => { filter.gamma = 1; filter.contrast = 1; filter.saturation = 1; filter.brightness = 1; filter.red = 1; filter.green = 1; filter.blue = 1; filter.alpha = 1; }; const dispose = () => { try { shaderManager.releaseFilter(filter, shaderKey); } catch (error) { console.warn("Error releasing adjustment filter shader:", error); } filter.destroy(); }; return { filter, updateIntensity, reset, dispose }; } exports.createAdjustmentFilter = createAdjustmentFilter; //# sourceMappingURL=adjustmentFilter.cjs.map