kinetic-slider
Version:
A WebGL-powered kinetic slider component using PIXI.js
1 lines • 6.95 kB
Source Map (JSON)
{"version":3,"file":"dotFilter.cjs","sources":["../../../src/filters/dotFilter.ts"],"sourcesContent":["import { DotFilter } from 'pixi-filters';\nimport { type DotFilterConfig, type FilterResult } from './types';\nimport { ShaderResourceManager } from '../managers/ShaderResourceManager';\n\n/**\n * Creates a Dot filter that applies a dotscreen effect to an object\n *\n * This filter makes display objects appear to be made out of halftone dots\n * like an old printer or newspaper.\n * Uses shader pooling for better performance.\n *\n * @param config - Configuration for the Dot filter\n * @returns FilterResult with the filter instance and control functions\n */\nexport function createDotFilter(config: DotFilterConfig): FilterResult {\n // Get shader manager instance\n const shaderManager = ShaderResourceManager.getInstance();\n\n // Create options object for the filter\n const options: any = {};\n\n // Apply configuration values if provided, otherwise use defaults\n if (config.angle !== undefined) options.angle = config.angle;\n if (config.scale !== undefined) options.scale = config.scale;\n if (config.grayscale !== undefined) options.grayscale = config.grayscale;\n\n // Create a unique key for this filter configuration\n const grayscaleKey = config.grayscale !== undefined ? config.grayscale.toString() : 'true';\n const shaderKey = `dot-filter-a${options.angle || 5}-s${options.scale || 1}-g${grayscaleKey}`;\n\n // Log what we're creating for debugging\n console.log('Creating DotFilter with options:', options);\n\n // Create the filter with options\n const filter = new DotFilter(options);\n\n // Register filter with shader manager\n try {\n shaderManager.registerFilter(filter, shaderKey);\n } catch (error) {\n console.warn('Error registering dot filter with shader manager:', error);\n }\n\n // Explicitly set grayscale after creation to ensure it takes effect\n if (config.grayscale !== undefined) {\n filter.grayscale = config.grayscale;\n console.log('DotFilter grayscale set to:', filter.grayscale);\n }\n\n /**\n * Update the filter's intensity based on the configuration\n *\n * @param intensity - New intensity value (0-10 scale)\n */\n const updateIntensity = (intensity: number): void => {\n // Normalize intensity to a 0-10 scale\n const normalizedIntensity = Math.max(0, Math.min(10, intensity));\n\n // Determine which property to adjust based on config\n if (config.primaryProperty) {\n switch (config.primaryProperty) {\n case 'angle':\n // Map 0-10 to 1-10 for angle (dot radius)\n filter.angle = 1 + normalizedIntensity;\n break;\n case 'scale':\n // Map 0-10 to 0.5-5 for scale (pattern size)\n filter.scale = 0.5 + (normalizedIntensity / 2);\n break;\n default:\n // Default to adjusting angle\n filter.angle = 1 + normalizedIntensity;\n }\n } else {\n // Default behavior - adjust angle\n filter.angle = 1 + normalizedIntensity;\n }\n\n // IMPORTANT: Re-apply grayscale setting to ensure it doesn't get reset\n if (config.grayscale !== undefined) {\n filter.grayscale = config.grayscale;\n }\n };\n\n // Set initial intensity\n updateIntensity(config.intensity);\n\n /**\n * Reset the filter to initial configuration values or defaults\n */\n const reset = (): void => {\n // Reset angle to config value if provided, otherwise use default\n filter.angle = config.angle !== undefined ? config.angle : 5;\n\n // Reset scale to config value if provided, otherwise use default\n filter.scale = config.scale !== undefined ? config.scale : 1;\n\n // Reset grayscale to config value if provided, otherwise use default\n filter.grayscale = config.grayscale !== undefined ? config.grayscale : true;\n\n // If intensity was provided in config, use updateIntensity to reset properly\n if (config.intensity !== undefined) {\n updateIntensity(config.intensity);\n }\n };\n\n /**\n * Release any WebGL resources used by this filter\n */\n const dispose = (): void => {\n try {\n shaderManager.releaseFilter(filter, shaderKey);\n } catch (error) {\n console.warn('Error releasing dot filter shader:', error);\n }\n filter.destroy();\n };\n\n return { filter, updateIntensity, reset, dispose };\n}"],"names":["ShaderResourceManager","DotFilter"],"mappings":"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"}