{"version":3,"file":"crossHatchFilter.cjs","sources":["../../../src/filters/crossHatchFilter.ts"],"sourcesContent":["import { CrossHatchFilter } from 'pixi-filters';\nimport { type CrossHatchFilterConfig, type FilterResult } from './types';\nimport { ShaderResourceManager } from '../managers/ShaderResourceManager';\n\n/**\n * Creates a CrossHatch filter that applies a cross-hatch effect\n *\n * The CrossHatchFilter simulates a traditional drawing technique where shading\n * is created by drawing intersecting sets of parallel lines. This produces an\n * effect similar to pen-and-ink illustrations or sketches.\n * Uses shader pooling for better performance.\n *\n * @param config - Configuration for the CrossHatch filter\n * @returns FilterResult with the filter instance and control functions\n */\nexport function createCrossHatchFilter(config: CrossHatchFilterConfig): FilterResult {\n    // Get shader manager instance\n    const shaderManager = ShaderResourceManager.getInstance();\n\n    // Create a unique key for this filter configuration\n    const shaderKey = `cross-hatch-filter`;\n\n    // Create the filter without options as per documentation\n    const filter = new CrossHatchFilter();\n\n    // Register filter with shader manager\n    try {\n        shaderManager.registerFilter(filter, shaderKey);\n    } catch (error) {\n        console.warn('Error registering cross hatch filter with shader manager:', error);\n    }\n\n    // Track if filter has been activated\n    let isActive = false;\n\n    /**\n     * Update the filter's intensity\n     * Since the documentation doesn't specify configurable properties,\n     * we can only control this filter through standard Filter properties like alpha.\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        // If alpha is available on the filter, use it to control intensity\n        if ('alpha' in filter) {\n            filter.alpha = normalizedIntensity / 10;\n        }\n\n        // Mark as active only if intensity > 0\n        isActive = normalizedIntensity > 0;\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 alpha to config value if provided, otherwise use default (1)\n        if ('alpha' in filter) {\n            filter.alpha = config.alpha !== undefined ? config.alpha : 1;\n        }\n\n        // Reset enabled property to config value if provided, otherwise use default (true)\n        if ('enabled' in filter) {\n            (filter as any).enabled = config.enabled !== undefined ? config.enabled : true;\n        }\n\n        // If intensity was provided in config, use updateIntensity to reset properly\n        if (config.intensity !== undefined) {\n            updateIntensity(config.intensity);\n            isActive = config.intensity > 0;\n        } else {\n            // If no intensity was specified, use default (active if alpha > 0)\n            isActive = config.alpha !== undefined ? config.alpha > 0 : false;\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 cross hatch filter shader:', error);\n        }\n        filter.destroy();\n    };\n\n    return { filter, updateIntensity, reset, dispose };\n}"],"names":["ShaderResourceManager","CrossHatchFilter"],"mappings":";;;;;AAeO,SAAS,uBAAuB,MAA8C,EAAA;AAEjF,EAAM,MAAA,aAAA,GAAgBA,4CAAsB,WAAY,EAAA;AAGxD,EAAA,MAAM,SAAY,GAAA,CAAA,kBAAA,CAAA;AAGlB,EAAM,MAAA,MAAA,GAAS,IAAIC,4BAAiB,EAAA;AAGpC,EAAI,IAAA;AACA,IAAc,aAAA,CAAA,cAAA,CAAe,QAAQ,SAAS,CAAA;AAAA,WACzC,KAAO,EAAA;AACZ,IAAQ,OAAA,CAAA,IAAA,CAAK,6DAA6D,KAAK,CAAA;AAAA;AAanF,EAAM,MAAA,eAAA,GAAkB,CAAC,SAA4B,KAAA;AAEjD,IAAM,MAAA,mBAAA,GAAsB,KAAK,GAAI,CAAA,CAAA,EAAG,KAAK,GAAI,CAAA,EAAA,EAAI,SAAS,CAAC,CAAA;AAG/D,IAAA,IAAI,WAAW,MAAQ,EAAA;AACnB,MAAA,MAAA,CAAO,QAAQ,mBAAsB,GAAA,EAAA;AAAA;AAIR,GACrC;AAGA,EAAA,eAAA,CAAgB,OAAO,SAAS,CAAA;AAKhC,EAAA,MAAM,QAAQ,MAAY;AAEtB,IAAA,IAAI,WAAW,MAAQ,EAAA;AACnB,MAAA,MAAA,CAAO,KAAQ,GAAA,MAAA,CAAO,KAAU,KAAA,MAAA,GAAY,OAAO,KAAQ,GAAA,CAAA;AAAA;AAI/D,IAAA,IAAI,aAAa,MAAQ,EAAA;AACrB,MAAC,OAAe,OAAU,GAAA,MAAA,CAAO,OAAY,KAAA,MAAA,GAAY,OAAO,OAAU,GAAA,IAAA;AAAA;AAI9E,IAAI,IAAA,MAAA,CAAO,cAAc,MAAW,EAAA;AAChC,MAAA,eAAA,CAAgB,OAAO,SAAS,CAAA;AAChC,MAAW,OAAO,SAAY,GAAA,CAAA;AAAA,KAC3B,MAAA;AAEH,MAAW,MAAO,CAAA,KAAA,KAAU,MAAY,GAAA,MAAA,CAAO,QAAQ,CAAI,GAAA,KAAA;AAAA;AAC/D,GACJ;AAKA,EAAA,MAAM,UAAU,MAAY;AACxB,IAAI,IAAA;AACA,MAAc,aAAA,CAAA,aAAA,CAAc,QAAQ,SAAS,CAAA;AAAA,aACxC,KAAO,EAAA;AACZ,MAAQ,OAAA,CAAA,IAAA,CAAK,8CAA8C,KAAK,CAAA;AAAA;AAEpE,IAAA,MAAA,CAAO,OAAQ,EAAA;AAAA,GACnB;AAEA,EAAA,OAAO,EAAE,MAAA,EAAQ,eAAiB,EAAA,KAAA,EAAO,OAAQ,EAAA;AACrD;;;;"}