@shopify/react-native-skia 1.10.0 → 1.10.1
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/commonjs/dom/nodes/datatypes/Gradient.d.ts +1 -0
- package/lib/commonjs/dom/nodes/datatypes/Gradient.js +14 -2
- package/lib/commonjs/dom/nodes/datatypes/Gradient.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Box.js +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Box.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/ColorFilters.js +1 -1
- package/lib/commonjs/sksg/Recorder/commands/ColorFilters.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Drawing.js +4 -4
- package/lib/commonjs/sksg/Recorder/commands/Drawing.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js +1 -1
- package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Paint.d.ts +0 -1
- package/lib/commonjs/sksg/Recorder/commands/Paint.js +2 -14
- package/lib/commonjs/sksg/Recorder/commands/Paint.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Shaders.js +1 -1
- package/lib/commonjs/sksg/Recorder/commands/Shaders.js.map +1 -1
- package/lib/module/dom/nodes/datatypes/Gradient.d.ts +1 -0
- package/lib/module/dom/nodes/datatypes/Gradient.js +12 -1
- package/lib/module/dom/nodes/datatypes/Gradient.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/Box.js +2 -2
- package/lib/module/sksg/Recorder/commands/Box.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/ColorFilters.js +2 -2
- package/lib/module/sksg/Recorder/commands/ColorFilters.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/Drawing.js +5 -5
- package/lib/module/sksg/Recorder/commands/Drawing.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/ImageFilters.js +2 -2
- package/lib/module/sksg/Recorder/commands/ImageFilters.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/Paint.d.ts +0 -1
- package/lib/module/sksg/Recorder/commands/Paint.js +1 -12
- package/lib/module/sksg/Recorder/commands/Paint.js.map +1 -1
- package/lib/module/sksg/Recorder/commands/Shaders.js +2 -2
- package/lib/module/sksg/Recorder/commands/Shaders.js.map +1 -1
- package/lib/typescript/lib/commonjs/dom/nodes/datatypes/Gradient.d.ts +1 -0
- package/lib/typescript/lib/commonjs/sksg/Recorder/commands/Paint.d.ts +0 -1
- package/lib/typescript/lib/module/dom/nodes/datatypes/Gradient.d.ts +1 -0
- package/lib/typescript/lib/module/mock/index.d.ts +1 -0
- package/lib/typescript/lib/module/sksg/Recorder/commands/Paint.d.ts +0 -1
- package/lib/typescript/src/dom/nodes/datatypes/Gradient.d.ts +1 -0
- package/lib/typescript/src/sksg/Recorder/commands/Paint.d.ts +0 -1
- package/package.json +1 -1
- package/src/dom/nodes/datatypes/Gradient.ts +17 -1
- package/src/sksg/Recorder/commands/Box.ts +2 -2
- package/src/sksg/Recorder/commands/ColorFilters.ts +2 -2
- package/src/sksg/Recorder/commands/Drawing.ts +5 -4
- package/src/sksg/Recorder/commands/ImageFilters.ts +2 -2
- package/src/sksg/Recorder/commands/Paint.ts +1 -17
- package/src/sksg/Recorder/commands/Shaders.ts +2 -1
@@ -1,4 +1,4 @@
|
|
1
|
-
import { enumKey, fitRects, getRect, processGradientProps, processTransformProps, rect2rect } from "../../../dom/nodes";
|
1
|
+
import { enumKey, fitRects, getRect, processColor, processGradientProps, processTransformProps, rect2rect } from "../../../dom/nodes";
|
2
2
|
import { NodeType } from "../../../dom/types";
|
3
3
|
import { BlendMode, FilterMode, isCubicSampling, MipmapMode, processUniforms, TileMode } from "../../../skia/types";
|
4
4
|
import { composeDeclarations } from "../../utils";
|
@@ -22,7 +22,7 @@ const declareColorShader = (ctx, props) => {
|
|
22
22
|
const {
|
23
23
|
color
|
24
24
|
} = props;
|
25
|
-
const shader = ctx.Skia.Shader.MakeColor(ctx.Skia
|
25
|
+
const shader = ctx.Skia.Shader.MakeColor(processColor(ctx.Skia, color));
|
26
26
|
ctx.shaders.push(shader);
|
27
27
|
};
|
28
28
|
const declareFractalNoiseShader = (ctx, props) => {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["enumKey","fitRects","getRect","processGradientProps","processTransformProps","rect2rect","NodeType","BlendMode","FilterMode","isCubicSampling","MipmapMode","processUniforms","TileMode","composeDeclarations","CommandType","declareShader","ctx","props","source","uniforms","transform","m3","Skia","Matrix","shader","makeShaderWithChildren","shaders","splice","length","push","declareColorShader","color","Shader","MakeColor","Color","declareFractalNoiseShader","freqX","freqY","octaves","seed","tileWidth","tileHeight","MakeFractalNoise","declareTwoPointConicalGradientShader","startR","endR","start","end","colors","positions","mode","localMatrix","flags","MakeTwoPointConicalGradient","declareRadialGradientShader","c","r","MakeRadialGradient","declareSweepGradientShader","MakeSweepGradient","x","y","declareLinearGradientShader","MakeLinearGradient","declareTurbulenceShader","MakeTurbulence","declareImageShader","fit","image","tx","ty","sampling","imageShaderProps","rct","rects","width","height","sx","sy","src","dst","translate","translateX","translateY","scale","scaleX","scaleY","lm","concat","makeShaderCubic","B","C","_sampling$filter","_sampling$mipmap","filter","Linear","mipmap","None","declareBlend","blend","composer","MakeBlend","bind","isPushShader","command","type","PushShader","isShader","shaderType","pushShader","ImageShader","ColorShader","Turbulence","FractalNoise","LinearGradient","RadialGradient","SweepGradient","TwoPointConicalGradient","Blend","Error"],"sources":["Shaders.ts"],"sourcesContent":["import {\n enumKey,\n fitRects,\n getRect,\n processGradientProps,\n processTransformProps,\n rect2rect,\n} from \"../../../dom/nodes\";\nimport { NodeType } from \"../../../dom/types\";\nimport type {\n BlendProps,\n ColorProps,\n FractalNoiseProps,\n ImageShaderProps,\n LinearGradientProps,\n RadialGradientProps,\n ShaderProps,\n SweepGradientProps,\n TurbulenceProps,\n TwoPointConicalGradientProps,\n} from \"../../../dom/types\";\nimport type { SkShader } from \"../../../skia/types\";\nimport {\n BlendMode,\n FilterMode,\n isCubicSampling,\n MipmapMode,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport { composeDeclarations } from \"../../utils\";\nimport type { Command } from \"../Core\";\nimport { CommandType } from \"../Core\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nconst declareShader = (ctx: DrawingContext, props: ShaderProps) => {\n \"worklet\";\n const { source, uniforms, ...transform } = props;\n const m3 = ctx.Skia.Matrix();\n processTransformProps(m3, transform);\n const shader = source.makeShaderWithChildren(\n processUniforms(source, uniforms),\n ctx.shaders.splice(0, ctx.shaders.length),\n m3\n );\n ctx.shaders.push(shader);\n};\n\nconst declareColorShader = (ctx: DrawingContext, props: ColorProps) => {\n \"worklet\";\n const { color } = props;\n const shader = ctx.Skia.Shader.MakeColor(ctx.Skia.Color(color));\n ctx.shaders.push(shader);\n};\n\nconst declareFractalNoiseShader = (\n ctx: DrawingContext,\n props: FractalNoiseProps\n) => {\n \"worklet\";\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = props;\n const shader = ctx.Skia.Shader.MakeFractalNoise(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n ctx.shaders.push(shader);\n};\n\nconst declareTwoPointConicalGradientShader = (\n ctx: DrawingContext,\n props: TwoPointConicalGradientProps\n) => {\n \"worklet\";\n const { startR, endR, start, end } = props;\n const { colors, positions, mode, localMatrix, flags } = processGradientProps(\n ctx.Skia,\n props\n );\n const shader = ctx.Skia.Shader.MakeTwoPointConicalGradient(\n start,\n startR,\n end,\n endR,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n ctx.shaders.push(shader);\n};\n\nconst declareRadialGradientShader = (\n ctx: DrawingContext,\n props: RadialGradientProps\n) => {\n \"worklet\";\n const { c, r } = props;\n const { colors, positions, mode, localMatrix, flags } = processGradientProps(\n ctx.Skia,\n props\n );\n const shader = ctx.Skia.Shader.MakeRadialGradient(\n c,\n r,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n ctx.shaders.push(shader);\n};\n\nconst declareSweepGradientShader = (\n ctx: DrawingContext,\n props: SweepGradientProps\n) => {\n \"worklet\";\n const { c, start, end } = props;\n const { colors, positions, mode, localMatrix, flags } = processGradientProps(\n ctx.Skia,\n props\n );\n const shader = ctx.Skia.Shader.MakeSweepGradient(\n c.x,\n c.y,\n colors,\n positions,\n mode,\n localMatrix,\n flags,\n start,\n end\n );\n ctx.shaders.push(shader);\n};\n\nconst declareLinearGradientShader = (\n ctx: DrawingContext,\n props: LinearGradientProps\n) => {\n \"worklet\";\n const { start, end } = props;\n const { colors, positions, mode, localMatrix, flags } = processGradientProps(\n ctx.Skia,\n props\n );\n const shader = ctx.Skia.Shader.MakeLinearGradient(\n start,\n end,\n colors,\n positions ?? null,\n mode,\n localMatrix,\n flags\n );\n ctx.shaders.push(shader);\n};\n\nconst declareTurbulenceShader = (\n ctx: DrawingContext,\n props: TurbulenceProps\n) => {\n \"worklet\";\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = props;\n const shader = ctx.Skia.Shader.MakeTurbulence(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n ctx.shaders.push(shader);\n};\n\nconst declareImageShader = (ctx: DrawingContext, props: ImageShaderProps) => {\n \"worklet\";\n const { fit, image, tx, ty, sampling, ...imageShaderProps } = props;\n if (!image) {\n return;\n }\n\n const rct = getRect(ctx.Skia, imageShaderProps);\n const m3 = ctx.Skia.Matrix();\n if (rct) {\n const rects = fitRects(\n fit,\n { x: 0, y: 0, width: image.width(), height: image.height() },\n rct\n );\n const [x, y, sx, sy] = rect2rect(rects.src, rects.dst);\n m3.translate(x.translateX, y.translateY);\n m3.scale(sx.scaleX, sy.scaleY);\n }\n const lm = ctx.Skia.Matrix();\n lm.concat(m3);\n processTransformProps(lm, imageShaderProps);\n let shader: SkShader;\n if (sampling && isCubicSampling(sampling)) {\n shader = image.makeShaderCubic(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n sampling.B,\n sampling.C,\n lm\n );\n } else {\n shader = image.makeShaderCubic(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n sampling?.filter ?? FilterMode.Linear,\n sampling?.mipmap ?? MipmapMode.None,\n lm\n );\n }\n ctx.shaders.push(shader);\n};\n\nconst declareBlend = (ctx: DrawingContext, props: BlendProps) => {\n \"worklet\";\n const blend = BlendMode[enumKey(props.mode as BlendProps[\"mode\"])];\n const shaders = ctx.shaders.splice(0, ctx.shaders.length);\n if (shaders.length > 0) {\n const composer = ctx.Skia.Shader.MakeBlend.bind(ctx.Skia.Shader, blend);\n ctx.shaders.push(composeDeclarations(shaders, composer));\n }\n};\n\nexport const isPushShader = (\n command: Command\n): command is Command<CommandType.PushShader> => {\n \"worklet\";\n return command.type === CommandType.PushShader;\n};\n\ntype Props = {\n [NodeType.Shader]: ShaderProps;\n [NodeType.ImageShader]: ImageShaderProps;\n [NodeType.ColorShader]: ColorProps;\n [NodeType.Turbulence]: TurbulenceProps;\n [NodeType.FractalNoise]: FractalNoiseProps;\n [NodeType.LinearGradient]: LinearGradientProps;\n [NodeType.RadialGradient]: RadialGradientProps;\n [NodeType.SweepGradient]: SweepGradientProps;\n [NodeType.TwoPointConicalGradient]: TwoPointConicalGradientProps;\n [NodeType.Blend]: BlendProps;\n};\n\ninterface PushShader<T extends keyof Props>\n extends Command<CommandType.PushShader> {\n shaderType: T;\n props: Props[T];\n}\n\nconst isShader = <T extends keyof Props>(\n command: Command<CommandType.PushShader>,\n type: T\n): command is PushShader<T> => {\n \"worklet\";\n return command.shaderType === type;\n};\n\nexport const pushShader = (\n ctx: DrawingContext,\n command: Command<CommandType.PushShader>\n) => {\n \"worklet\";\n if (isShader(command, NodeType.Shader)) {\n declareShader(ctx, command.props);\n } else if (isShader(command, NodeType.ImageShader)) {\n declareImageShader(ctx, command.props);\n } else if (isShader(command, NodeType.ColorShader)) {\n declareColorShader(ctx, command.props);\n } else if (isShader(command, NodeType.Turbulence)) {\n declareTurbulenceShader(ctx, command.props);\n } else if (isShader(command, NodeType.FractalNoise)) {\n declareFractalNoiseShader(ctx, command.props);\n } else if (isShader(command, NodeType.LinearGradient)) {\n declareLinearGradientShader(ctx, command.props);\n } else if (isShader(command, NodeType.RadialGradient)) {\n declareRadialGradientShader(ctx, command.props);\n } else if (isShader(command, NodeType.SweepGradient)) {\n declareSweepGradientShader(ctx, command.props);\n } else if (isShader(command, NodeType.TwoPointConicalGradient)) {\n declareTwoPointConicalGradientShader(ctx, command.props);\n } else if (isShader(command, NodeType.Blend)) {\n declareBlend(ctx, command.props);\n } else {\n throw new Error(`Unknown shader type: ${command.shaderType}`);\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
1
|
+
{"version":3,"names":["enumKey","fitRects","getRect","processColor","processGradientProps","processTransformProps","rect2rect","NodeType","BlendMode","FilterMode","isCubicSampling","MipmapMode","processUniforms","TileMode","composeDeclarations","CommandType","declareShader","ctx","props","source","uniforms","transform","m3","Skia","Matrix","shader","makeShaderWithChildren","shaders","splice","length","push","declareColorShader","color","Shader","MakeColor","declareFractalNoiseShader","freqX","freqY","octaves","seed","tileWidth","tileHeight","MakeFractalNoise","declareTwoPointConicalGradientShader","startR","endR","start","end","colors","positions","mode","localMatrix","flags","MakeTwoPointConicalGradient","declareRadialGradientShader","c","r","MakeRadialGradient","declareSweepGradientShader","MakeSweepGradient","x","y","declareLinearGradientShader","MakeLinearGradient","declareTurbulenceShader","MakeTurbulence","declareImageShader","fit","image","tx","ty","sampling","imageShaderProps","rct","rects","width","height","sx","sy","src","dst","translate","translateX","translateY","scale","scaleX","scaleY","lm","concat","makeShaderCubic","B","C","_sampling$filter","_sampling$mipmap","filter","Linear","mipmap","None","declareBlend","blend","composer","MakeBlend","bind","isPushShader","command","type","PushShader","isShader","shaderType","pushShader","ImageShader","ColorShader","Turbulence","FractalNoise","LinearGradient","RadialGradient","SweepGradient","TwoPointConicalGradient","Blend","Error"],"sources":["Shaders.ts"],"sourcesContent":["import {\n enumKey,\n fitRects,\n getRect,\n processColor,\n processGradientProps,\n processTransformProps,\n rect2rect,\n} from \"../../../dom/nodes\";\nimport { NodeType } from \"../../../dom/types\";\nimport type {\n BlendProps,\n ColorProps,\n FractalNoiseProps,\n ImageShaderProps,\n LinearGradientProps,\n RadialGradientProps,\n ShaderProps,\n SweepGradientProps,\n TurbulenceProps,\n TwoPointConicalGradientProps,\n} from \"../../../dom/types\";\nimport type { SkShader } from \"../../../skia/types\";\nimport {\n BlendMode,\n FilterMode,\n isCubicSampling,\n MipmapMode,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport { composeDeclarations } from \"../../utils\";\nimport type { Command } from \"../Core\";\nimport { CommandType } from \"../Core\";\nimport type { DrawingContext } from \"../DrawingContext\";\n\nconst declareShader = (ctx: DrawingContext, props: ShaderProps) => {\n \"worklet\";\n const { source, uniforms, ...transform } = props;\n const m3 = ctx.Skia.Matrix();\n processTransformProps(m3, transform);\n const shader = source.makeShaderWithChildren(\n processUniforms(source, uniforms),\n ctx.shaders.splice(0, ctx.shaders.length),\n m3\n );\n ctx.shaders.push(shader);\n};\n\nconst declareColorShader = (ctx: DrawingContext, props: ColorProps) => {\n \"worklet\";\n const { color } = props;\n const shader = ctx.Skia.Shader.MakeColor(processColor(ctx.Skia, color));\n ctx.shaders.push(shader);\n};\n\nconst declareFractalNoiseShader = (\n ctx: DrawingContext,\n props: FractalNoiseProps\n) => {\n \"worklet\";\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = props;\n const shader = ctx.Skia.Shader.MakeFractalNoise(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n ctx.shaders.push(shader);\n};\n\nconst declareTwoPointConicalGradientShader = (\n ctx: DrawingContext,\n props: TwoPointConicalGradientProps\n) => {\n \"worklet\";\n const { startR, endR, start, end } = props;\n const { colors, positions, mode, localMatrix, flags } = processGradientProps(\n ctx.Skia,\n props\n );\n const shader = ctx.Skia.Shader.MakeTwoPointConicalGradient(\n start,\n startR,\n end,\n endR,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n ctx.shaders.push(shader);\n};\n\nconst declareRadialGradientShader = (\n ctx: DrawingContext,\n props: RadialGradientProps\n) => {\n \"worklet\";\n const { c, r } = props;\n const { colors, positions, mode, localMatrix, flags } = processGradientProps(\n ctx.Skia,\n props\n );\n const shader = ctx.Skia.Shader.MakeRadialGradient(\n c,\n r,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n ctx.shaders.push(shader);\n};\n\nconst declareSweepGradientShader = (\n ctx: DrawingContext,\n props: SweepGradientProps\n) => {\n \"worklet\";\n const { c, start, end } = props;\n const { colors, positions, mode, localMatrix, flags } = processGradientProps(\n ctx.Skia,\n props\n );\n const shader = ctx.Skia.Shader.MakeSweepGradient(\n c.x,\n c.y,\n colors,\n positions,\n mode,\n localMatrix,\n flags,\n start,\n end\n );\n ctx.shaders.push(shader);\n};\n\nconst declareLinearGradientShader = (\n ctx: DrawingContext,\n props: LinearGradientProps\n) => {\n \"worklet\";\n const { start, end } = props;\n const { colors, positions, mode, localMatrix, flags } = processGradientProps(\n ctx.Skia,\n props\n );\n const shader = ctx.Skia.Shader.MakeLinearGradient(\n start,\n end,\n colors,\n positions ?? null,\n mode,\n localMatrix,\n flags\n );\n ctx.shaders.push(shader);\n};\n\nconst declareTurbulenceShader = (\n ctx: DrawingContext,\n props: TurbulenceProps\n) => {\n \"worklet\";\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = props;\n const shader = ctx.Skia.Shader.MakeTurbulence(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n ctx.shaders.push(shader);\n};\n\nconst declareImageShader = (ctx: DrawingContext, props: ImageShaderProps) => {\n \"worklet\";\n const { fit, image, tx, ty, sampling, ...imageShaderProps } = props;\n if (!image) {\n return;\n }\n\n const rct = getRect(ctx.Skia, imageShaderProps);\n const m3 = ctx.Skia.Matrix();\n if (rct) {\n const rects = fitRects(\n fit,\n { x: 0, y: 0, width: image.width(), height: image.height() },\n rct\n );\n const [x, y, sx, sy] = rect2rect(rects.src, rects.dst);\n m3.translate(x.translateX, y.translateY);\n m3.scale(sx.scaleX, sy.scaleY);\n }\n const lm = ctx.Skia.Matrix();\n lm.concat(m3);\n processTransformProps(lm, imageShaderProps);\n let shader: SkShader;\n if (sampling && isCubicSampling(sampling)) {\n shader = image.makeShaderCubic(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n sampling.B,\n sampling.C,\n lm\n );\n } else {\n shader = image.makeShaderCubic(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n sampling?.filter ?? FilterMode.Linear,\n sampling?.mipmap ?? MipmapMode.None,\n lm\n );\n }\n ctx.shaders.push(shader);\n};\n\nconst declareBlend = (ctx: DrawingContext, props: BlendProps) => {\n \"worklet\";\n const blend = BlendMode[enumKey(props.mode as BlendProps[\"mode\"])];\n const shaders = ctx.shaders.splice(0, ctx.shaders.length);\n if (shaders.length > 0) {\n const composer = ctx.Skia.Shader.MakeBlend.bind(ctx.Skia.Shader, blend);\n ctx.shaders.push(composeDeclarations(shaders, composer));\n }\n};\n\nexport const isPushShader = (\n command: Command\n): command is Command<CommandType.PushShader> => {\n \"worklet\";\n return command.type === CommandType.PushShader;\n};\n\ntype Props = {\n [NodeType.Shader]: ShaderProps;\n [NodeType.ImageShader]: ImageShaderProps;\n [NodeType.ColorShader]: ColorProps;\n [NodeType.Turbulence]: TurbulenceProps;\n [NodeType.FractalNoise]: FractalNoiseProps;\n [NodeType.LinearGradient]: LinearGradientProps;\n [NodeType.RadialGradient]: RadialGradientProps;\n [NodeType.SweepGradient]: SweepGradientProps;\n [NodeType.TwoPointConicalGradient]: TwoPointConicalGradientProps;\n [NodeType.Blend]: BlendProps;\n};\n\ninterface PushShader<T extends keyof Props>\n extends Command<CommandType.PushShader> {\n shaderType: T;\n props: Props[T];\n}\n\nconst isShader = <T extends keyof Props>(\n command: Command<CommandType.PushShader>,\n type: T\n): command is PushShader<T> => {\n \"worklet\";\n return command.shaderType === type;\n};\n\nexport const pushShader = (\n ctx: DrawingContext,\n command: Command<CommandType.PushShader>\n) => {\n \"worklet\";\n if (isShader(command, NodeType.Shader)) {\n declareShader(ctx, command.props);\n } else if (isShader(command, NodeType.ImageShader)) {\n declareImageShader(ctx, command.props);\n } else if (isShader(command, NodeType.ColorShader)) {\n declareColorShader(ctx, command.props);\n } else if (isShader(command, NodeType.Turbulence)) {\n declareTurbulenceShader(ctx, command.props);\n } else if (isShader(command, NodeType.FractalNoise)) {\n declareFractalNoiseShader(ctx, command.props);\n } else if (isShader(command, NodeType.LinearGradient)) {\n declareLinearGradientShader(ctx, command.props);\n } else if (isShader(command, NodeType.RadialGradient)) {\n declareRadialGradientShader(ctx, command.props);\n } else if (isShader(command, NodeType.SweepGradient)) {\n declareSweepGradientShader(ctx, command.props);\n } else if (isShader(command, NodeType.TwoPointConicalGradient)) {\n declareTwoPointConicalGradientShader(ctx, command.props);\n } else if (isShader(command, NodeType.Blend)) {\n declareBlend(ctx, command.props);\n } else {\n throw new Error(`Unknown shader type: ${command.shaderType}`);\n }\n};\n"],"mappings":"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","ignoreList":[]}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
export const __esModule: boolean;
|
2
2
|
export function transformOrigin(origin: any, transform: any): any[];
|
3
|
+
export function processColor(Skia: any, color: any): any;
|
3
4
|
export function processGradientProps(Skia: any, { colors, positions, mode, flags, ...transform }: {
|
4
5
|
[x: string]: any;
|
5
6
|
colors: any;
|
@@ -1,5 +1,4 @@
|
|
1
1
|
export const __esModule: boolean;
|
2
|
-
export function processColor(Skia: any, color: any): any;
|
3
2
|
export function setPaintProperties(Skia: any, paint: any, { opacity, color, blendMode, strokeWidth, style, strokeJoin, strokeCap, strokeMiter, antiAlias, dither }: {
|
4
3
|
opacity: any;
|
5
4
|
color: any;
|
@@ -115,6 +115,7 @@ export function Mock(CanvasKit: any): {
|
|
115
115
|
isCircleScalarDef: (def: any) => boolean;
|
116
116
|
processCircle: (def: any) => any;
|
117
117
|
transformOrigin: (origin: any, transform: any) => any[];
|
118
|
+
processColor: (Skia: any, color: any) => any;
|
118
119
|
processGradientProps: (Skia: any, { colors, positions, mode, flags, ...transform }: {
|
119
120
|
[x: string]: any;
|
120
121
|
colors: any;
|
@@ -242,6 +242,7 @@ export declare const transformOrigin: (origin: Vector, transform: Transforms3d)
|
|
242
242
|
rotateY: number;
|
243
243
|
matrix: import("../../../skia/types").Matrix4;
|
244
244
|
}, "matrix">)[];
|
245
|
+
export declare const processColor: (Skia: Skia, color: number | string | Float32Array | number[]) => Float32Array;
|
245
246
|
export declare const processGradientProps: (Skia: Skia, { colors, positions, mode, flags, ...transform }: GradientProps) => {
|
246
247
|
colors: Float32Array[];
|
247
248
|
positions: number[] | null;
|
@@ -1,4 +1,3 @@
|
|
1
1
|
import type { PaintProps } from "../../../dom/types";
|
2
2
|
import type { SkPaint, Skia } from "../../../skia/types";
|
3
|
-
export declare const processColor: (Skia: Skia, color: number | string | Float32Array | number[]) => Float32Array;
|
4
3
|
export declare const setPaintProperties: (Skia: Skia, paint: SkPaint, { opacity, color, blendMode, strokeWidth, style, strokeJoin, strokeCap, strokeMiter, antiAlias, dither, }: PaintProps) => void;
|
package/package.json
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
"setup-skia-web": "./scripts/setup-canvaskit.js"
|
8
8
|
},
|
9
9
|
"title": "React Native Skia",
|
10
|
-
"version": "1.10.
|
10
|
+
"version": "1.10.1",
|
11
11
|
"description": "High-performance React Native Graphics using Skia",
|
12
12
|
"main": "lib/module/index.js",
|
13
13
|
"react-native": "src/index.ts",
|
@@ -16,6 +16,22 @@ export const transformOrigin = (origin: Vector, transform: Transforms3d) => {
|
|
16
16
|
];
|
17
17
|
};
|
18
18
|
|
19
|
+
export const processColor = (
|
20
|
+
Skia: Skia,
|
21
|
+
color: number | string | Float32Array | number[]
|
22
|
+
) => {
|
23
|
+
"worklet";
|
24
|
+
if (typeof color === "string" || typeof color === "number") {
|
25
|
+
return Skia.Color(color);
|
26
|
+
} else if (Array.isArray(color) || color instanceof Float32Array) {
|
27
|
+
return color instanceof Float32Array ? color : new Float32Array(color);
|
28
|
+
} else {
|
29
|
+
throw new Error(
|
30
|
+
`Invalid color type: ${typeof color}. Expected number, string, or array.`
|
31
|
+
);
|
32
|
+
}
|
33
|
+
};
|
34
|
+
|
19
35
|
export const processGradientProps = (
|
20
36
|
Skia: Skia,
|
21
37
|
{ colors, positions, mode, flags, ...transform }: GradientProps
|
@@ -24,7 +40,7 @@ export const processGradientProps = (
|
|
24
40
|
const localMatrix = Skia.Matrix();
|
25
41
|
processTransformProps(localMatrix, transform);
|
26
42
|
return {
|
27
|
-
colors: colors.map((color) => Skia
|
43
|
+
colors: colors.map((color) => processColor(Skia, color)),
|
28
44
|
positions: positions ?? null,
|
29
45
|
mode: TileMode[enumKey(mode ?? "clamp")],
|
30
46
|
flags,
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { deflate, inflate } from "../../../dom/nodes";
|
1
|
+
import { deflate, inflate, processColor } from "../../../dom/nodes";
|
2
2
|
import type { BoxProps, BoxShadowProps } from "../../../dom/types";
|
3
3
|
import { BlurStyle, ClipOp, isRRect } from "../../../skia/types";
|
4
4
|
import type { Command } from "../Core";
|
@@ -31,7 +31,7 @@ export const drawBox = (ctx: DrawingContext, command: BoxCommand) => {
|
|
31
31
|
.map((shadow) => {
|
32
32
|
const { color = "black", blur, spread = 0, dx = 0, dy = 0 } = shadow;
|
33
33
|
const lPaint = Skia.Paint();
|
34
|
-
lPaint.setColor(Skia
|
34
|
+
lPaint.setColor(processColor(Skia, color));
|
35
35
|
lPaint.setAlphaf(paint.getAlphaf() * opacity);
|
36
36
|
lPaint.setMaskFilter(
|
37
37
|
Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { enumKey } from "../../../dom/nodes";
|
1
|
+
import { enumKey, processColor } from "../../../dom/nodes";
|
2
2
|
import type {
|
3
3
|
BlendColorFilterProps,
|
4
4
|
LerpColorFilterProps,
|
@@ -59,7 +59,7 @@ export const pushColorFilter = (
|
|
59
59
|
if (isColorFilter(command, NodeType.BlendColorFilter)) {
|
60
60
|
const { props } = command;
|
61
61
|
const { mode } = props;
|
62
|
-
const color = ctx.Skia
|
62
|
+
const color = processColor(ctx.Skia, props.color);
|
63
63
|
cf = ctx.Skia.ColorFilter.MakeBlend(color, BlendMode[enumKey(mode)]);
|
64
64
|
} else if (isColorFilter(command, NodeType.MatrixColorFilter)) {
|
65
65
|
const { matrix } = command.props;
|
@@ -5,6 +5,7 @@ import {
|
|
5
5
|
inflate,
|
6
6
|
NodeType,
|
7
7
|
processCircle,
|
8
|
+
processColor,
|
8
9
|
processPath,
|
9
10
|
processRect,
|
10
11
|
processRRect,
|
@@ -87,7 +88,7 @@ export const drawBox = (
|
|
87
88
|
.map((shadow) => {
|
88
89
|
const { color = "black", blur, spread = 0, dx = 0, dy = 0 } = shadow;
|
89
90
|
const lPaint = Skia.Paint();
|
90
|
-
lPaint.setColor(Skia
|
91
|
+
lPaint.setColor(processColor(Skia, color));
|
91
92
|
lPaint.setAlphaf(paint.getAlphaf() * opacity);
|
92
93
|
lPaint.setMaskFilter(
|
93
94
|
Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)
|
@@ -105,7 +106,7 @@ export const drawBox = (
|
|
105
106
|
canvas.save();
|
106
107
|
canvas.clipRRect(box, ClipOp.Intersect, false);
|
107
108
|
const lPaint = Skia.Paint();
|
108
|
-
lPaint.setColor(Skia
|
109
|
+
lPaint.setColor(processColor(Skia, color));
|
109
110
|
lPaint.setAlphaf(paint.getAlphaf() * opacity);
|
110
111
|
|
111
112
|
lPaint.setMaskFilter(
|
@@ -170,7 +171,7 @@ export const drawVertices = (ctx: DrawingContext, props: VerticesProps) => {
|
|
170
171
|
vertexMode,
|
171
172
|
props.vertices,
|
172
173
|
textures,
|
173
|
-
colors ? colors.map((c) => ctx.Skia
|
174
|
+
colors ? colors.map((c) => processColor(ctx.Skia, c)) : undefined,
|
174
175
|
indices
|
175
176
|
);
|
176
177
|
const defaultBlendMode = colors ? BlendMode.DstOver : BlendMode.SrcOver;
|
@@ -258,7 +259,7 @@ export const drawPatch = (ctx: DrawingContext, props: PatchProps) => {
|
|
258
259
|
patch[0].c1,
|
259
260
|
];
|
260
261
|
const colors = props.colors
|
261
|
-
? props.colors.map((c) => ctx.Skia
|
262
|
+
? props.colors.map((c) => processColor(ctx.Skia, c))
|
262
263
|
: undefined;
|
263
264
|
ctx.canvas.drawPatch(points, colors, texture, mode, ctx.paint);
|
264
265
|
};
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { enumKey, processRadius } from "../../../dom/nodes";
|
1
|
+
import { enumKey, processColor, processRadius } from "../../../dom/nodes";
|
2
2
|
import type {
|
3
3
|
BlendImageFilterProps,
|
4
4
|
BlurImageFilterProps,
|
@@ -113,7 +113,7 @@ const declareDropShadowImageFilter = (
|
|
113
113
|
) => {
|
114
114
|
"worklet";
|
115
115
|
const { dx, dy, blur, shadowOnly, color: cl, inner } = props;
|
116
|
-
const color = ctx.Skia
|
116
|
+
const color = processColor(ctx.Skia, cl);
|
117
117
|
let factory;
|
118
118
|
if (inner) {
|
119
119
|
factory = MakeInnerShadow.bind(null, ctx.Skia, shadowOnly);
|
@@ -1,4 +1,4 @@
|
|
1
|
-
import { enumKey } from "../../../dom/nodes";
|
1
|
+
import { enumKey, processColor } from "../../../dom/nodes";
|
2
2
|
import type { PaintProps } from "../../../dom/types";
|
3
3
|
import {
|
4
4
|
BlendMode,
|
@@ -8,22 +8,6 @@ import {
|
|
8
8
|
} from "../../../skia/types";
|
9
9
|
import type { SkPaint, Skia } from "../../../skia/types";
|
10
10
|
|
11
|
-
export const processColor = (
|
12
|
-
Skia: Skia,
|
13
|
-
color: number | string | Float32Array | number[]
|
14
|
-
) => {
|
15
|
-
"worklet";
|
16
|
-
if (typeof color === "string" || typeof color === "number") {
|
17
|
-
return Skia.Color(color);
|
18
|
-
} else if (Array.isArray(color) || color instanceof Float32Array) {
|
19
|
-
return color instanceof Float32Array ? color : new Float32Array(color);
|
20
|
-
} else {
|
21
|
-
throw new Error(
|
22
|
-
`Invalid color type: ${typeof color}. Expected number, string, or array.`
|
23
|
-
);
|
24
|
-
}
|
25
|
-
};
|
26
|
-
|
27
11
|
export const setPaintProperties = (
|
28
12
|
Skia: Skia,
|
29
13
|
paint: SkPaint,
|
@@ -2,6 +2,7 @@ import {
|
|
2
2
|
enumKey,
|
3
3
|
fitRects,
|
4
4
|
getRect,
|
5
|
+
processColor,
|
5
6
|
processGradientProps,
|
6
7
|
processTransformProps,
|
7
8
|
rect2rect,
|
@@ -49,7 +50,7 @@ const declareShader = (ctx: DrawingContext, props: ShaderProps) => {
|
|
49
50
|
const declareColorShader = (ctx: DrawingContext, props: ColorProps) => {
|
50
51
|
"worklet";
|
51
52
|
const { color } = props;
|
52
|
-
const shader = ctx.Skia.Shader.MakeColor(ctx.Skia
|
53
|
+
const shader = ctx.Skia.Shader.MakeColor(processColor(ctx.Skia, color));
|
53
54
|
ctx.shaders.push(shader);
|
54
55
|
};
|
55
56
|
|