@pixi/animate
Version:
PIXI plugin for the PixiAnimate Extension
1 lines • 15.9 kB
Source Map (JSON)
{"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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"}