pixi.js
Version:
<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">
1 lines • 9.38 kB
Source Map (JSON)
{"version":3,"file":"convertFillInputToFillStyle.mjs","sources":["../../../../../src/scene/graphics/shared/utils/convertFillInputToFillStyle.ts"],"sourcesContent":["import { Color } from '../../../../color/Color';\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\nfunction isTexture(value: unknown): value is Texture\n{\n return value instanceof Texture;\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 Texture\n * @param fill\n * @param value\n * @param defaultStyle\n * @example\n * graphics.fill(new Texture(0xff0000))\n */\nfunction handleTexture(fill: FillStyle, value: Texture, defaultStyle: ConvertedFillStyle): ConvertedFillStyle\n{\n fill.texture = value;\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.buildGradient();\n fill.fill = value;\n fill.color = 0xffffff;\n fill.texture = value.texture;\n fill.matrix = value.transform;\n fill.textureSpace = value.textureSpace;\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 const color = Color.shared.setValue(style.color);\n\n style.alpha *= color.alpha;\n style.color = color.toNumber();\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 (isTexture(value))\n {\n return handleTexture(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, pixelLine, ...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 pixelLine,\n ...fill,\n };\n}\n"],"names":[],"mappings":"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"}