{"version":3,"file":"Graphics.mjs","sources":["../../src/animate/Graphics.ts"],"sourcesContent":["import { ColorMatrixFilter } from '@pixi/filter-color-matrix';\nimport { Graphics, GraphicsGeometry, ILineStyleOptions } from '@pixi/graphics';\nimport { Sprite } from '@pixi/sprite';\nimport { utils } from './utils';\n\nexport type DrawCommands = (string | number)[];\n\nexport class AnimateGraphics extends Graphics\n{\n    constructor(geometry?: GraphicsGeometry)\n    {\n        super(geometry);\n\n        // overwrite with a cleaner version, so fewer function calls are involved\n        this.s = super.lineStyle;\n    }\n\n    // **************************\n    //     Graphics methods\n    // **************************\n\n    /**\n     * Execute a series of commands, this is the name of the short function\n     * followed by the parameters -, e.g., `[\"f\", \"#ff0000\", \"r\", 0, 0, 100, 200]`\n     * @param commands - The commands and parameters - to draw\n     * @return This instance for chaining.\n     */\n    public drawCommands(commands: DrawCommands): this\n    {\n        let currentCommand: string; const params = [];\n        let i = 0;\n\n        while (i <= commands.length)\n        {\n            const item = commands[i++];\n\n            if (item === undefined || (this as any)[item])\n            {\n                if (currentCommand)\n                {\n                    (this as any)[currentCommand].apply(this, params);\n                    params.length = 0;\n                }\n                currentCommand = item as string;\n            }\n            else\n            {\n                params.push(item);\n            }\n        }\n\n        return this;\n    }\n    /**\n     * Shortcut for `drawCommands`.\n     */\n    public d = this.drawCommands;\n\n    /**\n     * Shortcut for `closePath`.\n     **/\n    public cp = super.closePath;\n\n    /**\n     * Shortcut for `beginHole`\n     **/\n    public bh = super.beginHole;\n\n    /**\n     * Shortcut for `endHole`\n     **/\n    public eh = super.endHole;\n\n    /**\n     * Shortcut for `moveTo`.\n     **/\n    public m = super.moveTo;\n\n    /**\n     * Shortcut for `lineTo`.\n     **/\n    public l = super.lineTo;\n\n    /**\n     * Shortcut for `quadraticCurveTo`.\n     **/\n    public q = super.quadraticCurveTo;\n\n    /**\n     * Shortcut for `bezierCurveTo`.\n     **/\n    public b = super.bezierCurveTo;\n\n    /**\n     * Shortcut for `beginFill`.\n     **/\n    public f = super.beginFill;\n\n    /**\n     * Shortcut for `lineStyle`.\n     **/\n    public s(width: number, color?: number, alpha?: number, alignment?: number, native?: boolean): this;\n    public s(options?: ILineStyleOptions): this;\n    public s(...args: any[]): this\n    {\n        return super.lineStyle(...args);\n    }\n\n    /**\n     * Shortcut for `drawRect`.\n     **/\n    public dr = super.drawRect;\n\n    /**\n     * Shortcut for `drawRoundedRect`.\n     **/\n    public rr = super.drawRoundedRect;\n\n    /**\n     * Shortcut for `drawRoundedRect`.\n     **/\n    public rc = super.drawRoundedRect;\n\n    /**\n     * Shortcut for `drawCircle`.\n     **/\n    public dc = super.drawCircle;\n\n    /**\n     * Shortcut for `arc`.\n     **/\n    public ar = super.arc;\n\n    /**\n     * Shortcut for `arcTo`.\n     **/\n    public at = super.arcTo;\n\n    /**\n     * Shortcut for `drawEllipse`.\n     */\n    public de = super.drawEllipse;\n\n    /**\n     * Placeholder method for a linear gradient fill. Pixi does not support linear gradient fills,\n     * so we just pick the first color in colorArray\n     * @param colorArray - An array of CSS compatible color values @see `f`\n     * @return The Graphics instance the method is called on (useful for chaining calls.)\n     **/\n    public lf(colorArray: number[]): this\n    {\n        // @if DEBUG\n        console.warn('Linear gradient fills are not supported');\n        // @endif\n\n        return this.f(colorArray[0]) as this;\n    }\n\n    /**\n     * Placeholder method for a radial gradient fill. Pixi does not support radial gradient fills,\n     * so we just pick the first color in colorArray\n     * @param colorArray - An array of CSS compatible color values @see `f`\n     * @return The Graphics instance the method is called on (useful for chaining calls.)\n     **/\n    public rf(colorArray: number[]): this\n    {\n        // @if DEBUG\n        console.warn('Radial gradient fills are not supported');\n        // @endif\n\n        return this.f(colorArray[0]) as this;\n    }\n\n    /**\n     * Placeholder method for a `beginBitmapFill`. Pixi does not support bitmap fills.\n     * @return The Graphics instance the method is called on (useful for chaining calls.)\n     **/\n    public bf(): this\n    {\n        // @if DEBUG\n        console.warn('Bitmap fills are not supported');\n        // @endif\n\n        return this.f(0x0) as this;\n    }\n\n    /**\n     * Placeholder method for a `setStrokeDash`. Pixi does not support dashed strokes.\n     * @return The Graphics instance the method is called on (useful for chaining calls.)\n     **/\n    public sd(): this\n    {\n        // @if DEBUG\n        console.warn('Dashed strokes are not supported');\n        // @endif\n\n        return this;\n    }\n\n    /**\n     * Placeholder method for a `beginBitmapStroke`. Pixi does not support bitmap strokes.\n     * @return The Graphics instance the method is called on (useful for chaining calls.)\n     **/\n    public bs(): this\n    {\n        // @if DEBUG\n        console.warn('Bitmap strokes are not supported');\n        // @endif\n\n        return this;\n    }\n\n    /**\n     * Placeholder method for a `beginLinearGradientStroke`. Pixi does not support gradient strokes.\n     * @return The Graphics instance the method is called on (useful for chaining calls.)\n     **/\n    public ls(): this\n    {\n        // @if DEBUG\n        console.warn('Linear gradient strokes are not supported');\n        // @endif\n\n        return this;\n    }\n\n    /**\n     * Placeholder method for a `beginRadialGradientStroke`. Pixi does not support gradient strokes.\n     * @return The Graphics instance the method is called on (useful for chaining calls.)\n     **/\n    public rs(): this\n    {\n        // @if DEBUG\n        console.warn('Radial gradient strokes are not supported');\n        // @endif\n\n        return this;\n    }\n\n    // **************************\n    //     DisplayObject methods\n    // **************************\n\n    /**\n     * Function to set if this is renderable or not. Useful for setting masks.\n     * @param renderable - Make renderable. Defaults to false.\n     * @return This instance, for chaining.\n     */\n    public setRenderable(renderable?: boolean): this\n    {\n        this.renderable = !!renderable;\n\n        return this;\n    }\n    /**\n     * Shortcut for `setRenderable`.\n     */\n    public re = this.setRenderable;\n\n    /**\n     * Shortcut for `setTransform`.\n     */\n    public t = super.setTransform;\n\n    /**\n     * Setter for mask to be able to chain.\n     * @param mask - The mask shape to use\n     * @return Instance for chaining\n     */\n    public setMask(mask: Graphics | Sprite): this\n    {\n        // According to PIXI, only Graphics and Sprites can\n        // be used as mask, let's ignore everything else, like other\n        // movieclips and displayobjects/containers\n        if (mask)\n        {\n            if (!(mask instanceof Graphics) && !(mask instanceof Sprite))\n            {\n                if (typeof console !== 'undefined' && console.warn)\n                {\n                    console.warn('Warning: Masks can only be PIXI.Graphics or PIXI.Sprite objects.');\n                }\n\n                return this;\n            }\n        }\n        this.mask = mask;\n\n        return this;\n    }\n    /**\n     * Shortcut for `setMask`.\n     */\n    public ma = this.setMask;\n\n    /**\n     * Chainable setter for alpha\n     * @param alpha - The alpha amount to use, from 0 to 1\n     * @return Instance for chaining\n     */\n    public setAlpha(alpha: number): this\n    {\n        this.alpha = alpha;\n\n        return this;\n    }\n    /**\n     * Shortcut for `setAlpha`.\n     */\n    public a = this.setAlpha;\n\n    /**\n     * Set the tint values by color.\n     * @param tint - The color value to tint\n     * @return Object for chaining\n     */\n    public setTint(tint: string | number): this\n    {\n        if (typeof tint === 'string')\n        {\n            tint = utils.hexToUint(tint);\n        }\n        // this.tint = tint\n        // return this;\n        // TODO: Replace with DisplayObject.tint setter\n        // once the functionality is added to Pixi.js, for\n        // now we'll use the slower ColorMatrixFilter to handle\n        // the color transformation\n        const r = (tint >> 16) & 0xFF;\n        const g = (tint >> 8) & 0xFF;\n        const b = tint & 0xFF;\n\n        return this.setColorTransform(r / 255, 0, g / 255, 0, b / 255, 0);\n    }\n    /**\n     * Shortcut for `setTint`.\n     */\n    public i = this.setTint;\n\n    /**\n     * Set additive and multiply color, tinting\n     * @param r - The multiply red value\n     * @param rA - The additive red value\n     * @param g - The multiply green value\n     * @param gA - The additive green value\n     * @param b - The multiply blue value\n     * @param bA - The additive blue value\n     * @return Object for chaining\n     */\n    public setColorTransform(r: number, rA: number, g: number, gA: number, b: number, bA: number): this\n    {\n        const filter = this.colorTransformFilter;\n\n        filter.matrix[0] = r;\n        filter.matrix[4] = rA;\n        filter.matrix[6] = g;\n        filter.matrix[9] = gA;\n        filter.matrix[12] = b;\n        filter.matrix[14] = bA;\n        this.filters = [filter];\n\n        return this;\n    }\n    /**\n     * Shortcut for `setColor`.\n     */\n    // method instead of direct reference to allow override in v1 shim\n    public c(r: number, rA: number, g: number, gA: number, b: number, bA: number): this\n    {\n        return this.setColorTransform(r, rA, g, gA, b, bA);\n    }\n    // public c = this.setColorTransform;\n\n    protected _colorTransformFilter: ColorMatrixFilter;\n    /**\n     * The current default color transforming filter\n     */\n    public set colorTransformFilter(filter: ColorMatrixFilter)\n    {\n        this._colorTransformFilter = filter;\n    }\n    public get colorTransformFilter(): ColorMatrixFilter\n    {\n        return this._colorTransformFilter || new ColorMatrixFilter();\n    }\n}\n"],"names":[],"mappings":"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"}