{"version":3,"file":"TiltShiftFilter.mjs","sources":["../../src/tilt-shift/TiltShiftFilter.ts"],"sourcesContent":["import { FilterSystem, TexturePool } from 'pixi.js';\nimport { TiltShiftAxisFilter } from './TiltShiftAxisFilter';\n\nimport type { PointData, RenderSurface, Texture } from 'pixi.js';\n\n/** Options for the TiltShiftFilter constructor. */\nexport interface TiltShiftFilterOptions\n{\n    /** The strength of the blur. */\n    blur?: number;\n    /** The strength of the blur gradient */\n    gradientBlur?: number;\n    /** The position to start the effect at. */\n    start?: PointData;\n    /** The position to end the effect at. */\n    end?: PointData;\n}\n\n/**\n * A TiltShift Filter. Manages the pass of both a TiltShiftXFilter and TiltShiftYFilter.<br>\n * ![original](../screenshots/original.png)![filter](../screenshots/tilt-shift.png)\n *\n * author Vico @vicocotea\n * {@link https://github.com/evanw/glfx.js/blob/master/src/filters/blur/tiltshift.js original filter }\n * by {@link http://madebyevan.com/ Evan Wallace }\n *\n * @class\n * @extends Filter\n */\nexport class TiltShiftFilter extends TiltShiftAxisFilter\n{\n    private _tiltShiftYFilter: TiltShiftAxisFilter;\n\n    /**\n     * @param options - Options for the TiltShiftFilter constructor.\n     */\n    constructor(options?: TiltShiftFilterOptions)\n    {\n        options = { ...TiltShiftAxisFilter.DEFAULT_OPTIONS, ...options };\n\n        super({ ...options, axis: 'horizontal' });\n        this._tiltShiftYFilter = new TiltShiftAxisFilter({ ...options, axis: 'vertical' });\n\n        this.updateDelta();\n\n        Object.assign(this, options);\n    }\n\n    /**\n     * Override existing apply method in `Filter`\n     * @override\n     * @ignore\n     */\n    public override apply(\n        filterManager: FilterSystem,\n        input: Texture,\n        output: RenderSurface,\n        clearMode: boolean,\n    ): void\n    {\n        const renderTarget = TexturePool.getSameSizeTexture(input);\n\n        filterManager.applyFilter(this, input, renderTarget, true);\n        filterManager.applyFilter(this._tiltShiftYFilter, renderTarget, output, clearMode);\n\n        TexturePool.returnTexture(renderTarget);\n    }\n\n    /** @ignore */\n    public override updateDelta(): void\n    {\n        super.updateDelta();\n        this._tiltShiftYFilter.updateDelta();\n    }\n\n    /** The strength of the blur. */\n    get blur(): number { return this.uniforms.uBlur[0]; }\n    set blur(value: number) { this.uniforms.uBlur[0] = this._tiltShiftYFilter.uniforms.uBlur[0] = value; }\n\n    /** The strength of the gradient blur. */\n    get gradientBlur(): number { return this.uniforms.uBlur[1]; }\n    set gradientBlur(value: number) { this.uniforms.uBlur[1] = this._tiltShiftYFilter.uniforms.uBlur[1] = value; }\n\n    /** The position to start the effect at. */\n    get start(): PointData { return this.uniforms.uStart; }\n    set start(value: PointData)\n    {\n        this.uniforms.uStart = this._tiltShiftYFilter.uniforms.uStart = value;\n        this.updateDelta();\n    }\n\n    /** The position to start the effect at on the `x` axis. */\n    get startX(): number { return this.start.x; }\n    set startX(value: number)\n    {\n        this.start.x = value;\n        this.updateDelta();\n    }\n\n    /** The position to start the effect at on the `x` axis. */\n    get startY(): number { return this.start.y; }\n    set startY(value: number)\n    {\n        this.start.y = value;\n        this.updateDelta();\n    }\n\n    /** The position to end the effect at. */\n    get end(): PointData { return this.uniforms.uEnd; }\n    set end(value: PointData)\n    {\n        this.uniforms.uEnd = this._tiltShiftYFilter.uniforms.uEnd = value;\n        this.updateDelta();\n    }\n\n    /** The position to end the effect at on the `x` axis. */\n    get endX(): number { return this.end.x; }\n    set endX(value: number)\n    {\n        this.end.x = value;\n        this.updateDelta();\n    }\n\n    /** The position to end the effect at on the `y` axis. */\n    get endY(): number { return this.end.y; }\n    set endY(value: number)\n    {\n        this.end.y = value;\n        this.updateDelta();\n    }\n}\n\n"],"names":[],"mappings":"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"}