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

1 line
9.6 KiB
Plaintext

{"version":3,"file":"convertFillInputToFillStyle.mjs","sources":["../../../../../src/scene/graphics/shared/utils/convertFillInputToFillStyle.ts"],"sourcesContent":["import { Color } from '../../../../color/Color';\nimport { Matrix } from '../../../../maths/matrix/Matrix';\nimport { Texture } from '../../../../rendering/renderers/shared/texture/Texture';\nimport { FillGradient } from '../fill/FillGradient';\nimport { FillPattern } from '../fill/FillPattern';\n\nimport type { ColorSource } from '../../../../color/Color';\nimport type {\n ConvertedFillStyle,\n ConvertedStrokeStyle,\n FillInput,\n FillStyle,\n StrokeInput,\n} from '../FillTypes';\n\nfunction isColorLike(value: unknown): value is ColorSource\n{\n return Color.isColorLike(value as ColorSource);\n}\n\nfunction isFillPattern(value: unknown): value is FillPattern\n{\n return value instanceof FillPattern;\n}\n\nfunction isFillGradient(value: unknown): value is FillGradient\n{\n return value instanceof FillGradient;\n}\n\n/**\n * Handles the case where the value is a ColorLike\n * @param fill\n * @param value\n * @param defaultStyle\n * @example\n * graphics.fill(0xff0000)\n * graphics.fill(new Color(0xff0000))\n * graphics.fill({ r: 255, g: 0, b: 0 })\n */\nfunction handleColorLike(\n fill: FillStyle,\n value: ColorSource,\n defaultStyle: ConvertedFillStyle\n): ConvertedFillStyle\n{\n const temp = Color.shared.setValue(value ?? 0);\n\n fill.color = temp.toNumber();\n fill.alpha = temp.alpha === 1 ? defaultStyle.alpha : temp.alpha;\n fill.texture = Texture.WHITE;\n\n return { ...defaultStyle, ...fill } as ConvertedFillStyle;\n}\n\n/**\n * Handles the case where the value is a FillPattern\n * @param fill\n * @param value\n * @param defaultStyle\n * @example\n * graphics.fill(new FillPattern(0xff0000))\n */\nfunction handleFillPattern(\n fill: FillStyle,\n value: FillPattern,\n defaultStyle: ConvertedFillStyle\n): ConvertedFillStyle\n{\n fill.fill = value;\n fill.color = 0xffffff;\n fill.texture = value.texture;\n fill.matrix = value.transform;\n\n return { ...defaultStyle, ...fill } as ConvertedFillStyle;\n}\n\n/**\n * Handles the case where the value is a FillGradient\n * @param fill\n * @param value\n * @param defaultStyle\n * @example\n * graphics.fill(new FillGradient(0, 0, 200, 0))\n */\nfunction handleFillGradient(\n fill: FillStyle,\n value: FillGradient,\n defaultStyle: ConvertedFillStyle\n): ConvertedFillStyle\n{\n value.buildLinearGradient();\n fill.fill = value;\n fill.color = 0xffffff;\n fill.texture = value.texture;\n fill.matrix = value.transform;\n\n return { ...defaultStyle, ...fill } as ConvertedFillStyle;\n}\n\n/**\n * Handles the case where the value is not a direct Pixi Color, PatternFill, or GradientFill but instead\n * an object with potentially `color`\n * @example\n * {\n * color: new Color(0xff0000)\n * alpha: 0.5,\n * texture?: null,\n * matrix?: null,\n * }\n * @param value\n * @param defaultStyle\n */\nfunction handleFillObject(value: FillStyle, defaultStyle: ConvertedFillStyle): ConvertedFillStyle\n{\n const style = { ...defaultStyle, ...(value as FillStyle) };\n\n if (style.texture)\n {\n if (style.texture !== Texture.WHITE)\n {\n const m = style.matrix?.invert() || new Matrix();\n\n m.translate(style.texture.frame.x, style.texture.frame.y);\n m.scale(1 / style.texture.source.width, 1 / style.texture.source.height);\n\n style.matrix = m;\n }\n\n const sourceStyle = style.texture.source.style;\n\n if (sourceStyle.addressMode === 'clamp-to-edge')\n {\n sourceStyle.addressMode = 'repeat';\n sourceStyle.update();\n }\n }\n\n const color = Color.shared.setValue(style.color);\n\n style.alpha *= color.alpha;\n style.color = color.toNumber();\n style.matrix = style.matrix ? style.matrix.clone() : null; // todo: lets optimise this!\n\n return style as ConvertedFillStyle;\n}\n\n/**\n * Converts a value to a fill style, we do this as PixiJS has a number of ways to define a fill style\n * They can be a direct color, a texture, a gradient, or an object with these values in them\n * This function will take any of these input types and convert them into a single object\n * that PixiJS can understand and use internally.\n * @param value - The value to convert to a fill style\n * @param defaultStyle - The default fill style to use\n * @private\n */\nexport function toFillStyle<T extends FillInput>(\n value: T,\n defaultStyle: ConvertedFillStyle\n): ConvertedFillStyle\n{\n if (value === undefined || value === null)\n {\n return null;\n }\n\n const fill: ConvertedFillStyle = {} as ConvertedFillStyle;\n const objectStyle = value as FillStyle;\n\n if (isColorLike(value))\n {\n return handleColorLike(fill, value, defaultStyle);\n }\n else if (isFillPattern(value))\n {\n return handleFillPattern(fill, value, defaultStyle);\n }\n else if (isFillGradient(value))\n {\n return handleFillGradient(fill, value, defaultStyle);\n }\n else if (objectStyle.fill && isFillPattern(objectStyle.fill))\n {\n return handleFillPattern(objectStyle, objectStyle.fill, defaultStyle);\n }\n else if (objectStyle.fill && isFillGradient(objectStyle.fill))\n {\n return handleFillGradient(objectStyle, objectStyle.fill, defaultStyle);\n }\n\n return handleFillObject(objectStyle, defaultStyle);\n}\n\n/**\n * Converts a value to a stroke style, similar to `toFillStyle` but for strokes\n * @param value - The value to convert to a stroke style\n * @param defaultStyle - The default stroke style to use\n * @private\n */\nexport function toStrokeStyle(value: StrokeInput, defaultStyle: ConvertedStrokeStyle): ConvertedStrokeStyle\n{\n const { width, alignment, miterLimit, cap, join, ...rest } = defaultStyle;\n const fill = toFillStyle(value, rest);\n\n if (!fill)\n {\n return null;\n }\n\n return {\n width,\n alignment,\n miterLimit,\n cap,\n join,\n ...fill,\n };\n}\n"],"names":[],"mappings":"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"}