Files
nothoughts/node_modules/pixi.js/lib/scene/graphics/shared/fill/FillGradient.mjs.map
2025-08-04 18:57:35 +02:00

1 line
6.9 KiB
Plaintext

{"version":3,"file":"FillGradient.mjs","sources":["../../../../../src/scene/graphics/shared/fill/FillGradient.ts"],"sourcesContent":["import { Color } from '../../../../color/Color';\nimport { DOMAdapter } from '../../../../environment/adapter';\nimport { Matrix } from '../../../../maths/matrix/Matrix';\nimport { ImageSource } from '../../../../rendering/renderers/shared/texture/sources/ImageSource';\nimport { Texture } from '../../../../rendering/renderers/shared/texture/Texture';\nimport { uid } from '../../../../utils/data/uid';\n\nimport type { ColorSource } from '../../../../color/Color';\n\nexport type GradientType = 'linear' | 'radial';\n\n// export type GradientSource =\n// string // CSS gradient string: 'linear-gradient(...)'\n// | IGradientOptions // Gradient options: { x0, y0, x1, y1, ...}\n// | Gradient; // class Gradient itself\n\nexport interface LinearGradientFillStyle\n{\n x0: number;\n y0: number;\n x1: number;\n y1: number;\n colors: number[];\n stops: number[];\n}\n\nexport class FillGradient implements CanvasGradient\n{\n public static defaultTextureSize = 256;\n\n /** unique id for this fill gradient */\n public readonly uid: number = uid('fillGradient');\n public readonly type: GradientType = 'linear';\n\n public x0: number;\n public y0: number;\n public x1: number;\n public y1: number;\n\n public texture: Texture;\n public transform: Matrix;\n public gradientStops: Array<{ offset: number, color: string }> = [];\n\n private _styleKey: string | null = null;\n\n constructor(x0: number, y0: number, x1: number, y1: number)\n {\n this.x0 = x0;\n this.y0 = y0;\n\n this.x1 = x1;\n this.y1 = y1;\n }\n\n public addColorStop(offset: number, color: ColorSource): this\n {\n this.gradientStops.push({ offset, color: Color.shared.setValue(color).toHexa() });\n this._styleKey = null;\n\n return this;\n }\n\n // TODO move to the system!\n public buildLinearGradient(): void\n {\n const defaultSize = FillGradient.defaultTextureSize;\n\n const { gradientStops } = this;\n\n const canvas = DOMAdapter.get().createCanvas();\n\n canvas.width = defaultSize;\n canvas.height = defaultSize;\n\n const ctx = canvas.getContext('2d');\n\n const gradient = ctx.createLinearGradient(0, 0, FillGradient.defaultTextureSize, 1);\n\n for (let i = 0; i < gradientStops.length; i++)\n {\n const stop = gradientStops[i];\n\n gradient.addColorStop(stop.offset, stop.color);\n }\n\n ctx.fillStyle = gradient;\n ctx.fillRect(0, 0, defaultSize, defaultSize);\n\n this.texture = new Texture({\n source: new ImageSource({\n resource: canvas,\n addressModeU: 'clamp-to-edge',\n addressModeV: 'repeat',\n }),\n });\n\n // generate some UVS based on the gradient direction sent\n\n const { x0, y0, x1, y1 } = this;\n\n const m = new Matrix();\n\n // get angle\n const dx = x1 - x0;\n const dy = y1 - y0;\n\n const dist = Math.sqrt((dx * dx) + (dy * dy));\n\n const angle = Math.atan2(dy, dx);\n\n m.translate(-x0, -y0);\n m.scale(1 / defaultSize, 1 / defaultSize);\n m.rotate(-angle);\n m.scale(256 / dist, 1);\n\n this.transform = m;\n this._styleKey = null;\n }\n\n public get styleKey(): string\n {\n if (this._styleKey)\n {\n return this._styleKey;\n }\n\n const stops = this.gradientStops.map((stop) => `${stop.offset}-${stop.color}`).join('-');\n const texture = this.texture.uid;\n const transform = this.transform.toArray().join('-');\n\n return `fill-gradient-${this.uid}-${stops}-${texture}-${transform}-${this.x0}-${this.y0}-${this.x1}-${this.y1}`;\n }\n}\n"],"names":[],"mappings":"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"}