@shopify/react-native-skia 1.9.1 → 1.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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/index.d.ts +1 -1
- package/lib/commonjs/index.js +8 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/renderer/Canvas.d.ts +9 -10
- package/lib/commonjs/renderer/Canvas.js +67 -59
- package/lib/commonjs/renderer/Canvas.js.map +1 -1
- package/lib/commonjs/renderer/CanvasOld.d.ts +11 -0
- package/lib/commonjs/renderer/CanvasOld.js +96 -0
- package/lib/commonjs/renderer/CanvasOld.js.map +1 -0
- package/lib/commonjs/sksg/Container.js +11 -6
- package/lib/commonjs/sksg/Container.js.map +1 -1
- package/lib/commonjs/sksg/HostConfig2.d.ts +19 -0
- package/lib/commonjs/sksg/HostConfig2.js +159 -0
- package/lib/commonjs/sksg/HostConfig2.js.map +1 -0
- package/lib/commonjs/sksg/Recorder/Core.js +1 -0
- package/lib/commonjs/sksg/Recorder/Core.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/Player.js +2 -2
- package/lib/commonjs/sksg/Recorder/Player.js.map +1 -1
- package/lib/commonjs/sksg/Recorder/Recorder.js +0 -1
- package/lib/commonjs/sksg/Recorder/Recorder.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/index.d.ts +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/renderer/Canvas.d.ts +9 -10
- package/lib/module/renderer/Canvas.js +65 -55
- package/lib/module/renderer/Canvas.js.map +1 -1
- package/lib/module/renderer/CanvasOld.d.ts +11 -0
- package/lib/module/renderer/CanvasOld.js +87 -0
- package/lib/module/renderer/CanvasOld.js.map +1 -0
- package/lib/module/sksg/Container.js +11 -6
- package/lib/module/sksg/Container.js.map +1 -1
- package/lib/module/sksg/HostConfig2.d.ts +19 -0
- package/lib/module/sksg/HostConfig2.js +152 -0
- package/lib/module/sksg/HostConfig2.js.map +1 -0
- package/lib/module/sksg/Recorder/Core.js +1 -0
- package/lib/module/sksg/Recorder/Core.js.map +1 -1
- package/lib/module/sksg/Recorder/Player.js +2 -2
- package/lib/module/sksg/Recorder/Player.js.map +1 -1
- package/lib/module/sksg/Recorder/Recorder.js +0 -1
- package/lib/module/sksg/Recorder/Recorder.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/renderer/Canvas.d.ts +2 -2
- package/lib/typescript/lib/commonjs/renderer/CanvasOld.d.ts +3 -0
- package/lib/typescript/lib/commonjs/sksg/HostConfig2.d.ts +44 -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/index.d.ts +1 -1
- package/lib/typescript/lib/module/mock/index.d.ts +1 -0
- package/lib/typescript/lib/module/renderer/Canvas.d.ts +1 -3
- package/lib/typescript/lib/module/renderer/CanvasOld.d.ts +3 -0
- package/lib/typescript/lib/module/sksg/HostConfig2.d.ts +43 -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/index.d.ts +1 -1
- package/lib/typescript/src/renderer/Canvas.d.ts +9 -10
- package/lib/typescript/src/renderer/CanvasOld.d.ts +11 -0
- package/lib/typescript/src/sksg/HostConfig2.d.ts +19 -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/index.ts +1 -1
- package/src/renderer/Canvas.tsx +80 -78
- package/src/renderer/CanvasOld.tsx +126 -0
- package/src/sksg/Container.ts +6 -2
- package/src/sksg/HostConfig2.ts +247 -0
- package/src/sksg/Recorder/Core.ts +1 -0
- package/src/sksg/Recorder/Player.ts +2 -2
- package/src/sksg/Recorder/Recorder.ts +0 -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
- package/lib/commonjs/renderer/Canvas2.d.ts +0 -10
- package/lib/commonjs/renderer/Canvas2.js +0 -104
- package/lib/commonjs/renderer/Canvas2.js.map +0 -1
- package/lib/commonjs/renderer/Canvas2.web.d.ts +0 -3
- package/lib/commonjs/renderer/Canvas2.web.js +0 -9
- package/lib/commonjs/renderer/Canvas2.web.js.map +0 -1
- package/lib/module/renderer/Canvas2.d.ts +0 -10
- package/lib/module/renderer/Canvas2.js +0 -97
- package/lib/module/renderer/Canvas2.js.map +0 -1
- package/lib/module/renderer/Canvas2.web.d.ts +0 -3
- package/lib/module/renderer/Canvas2.web.js +0 -3
- package/lib/module/renderer/Canvas2.web.js.map +0 -1
- package/lib/typescript/lib/commonjs/renderer/Canvas2.d.ts +0 -3
- package/lib/typescript/lib/commonjs/renderer/Canvas2.web.d.ts +0 -2
- package/lib/typescript/lib/module/renderer/Canvas2.d.ts +0 -1
- package/lib/typescript/lib/module/renderer/Canvas2.web.d.ts +0 -1
- package/lib/typescript/src/renderer/Canvas2.d.ts +0 -10
- package/lib/typescript/src/renderer/Canvas2.web.d.ts +0 -3
- package/src/renderer/Canvas2.tsx +0 -128
- package/src/renderer/Canvas2.web.tsx +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["enumKey","BlendMode","PaintStyle","StrokeCap","StrokeJoin","
|
|
1
|
+
{"version":3,"names":["enumKey","processColor","BlendMode","PaintStyle","StrokeCap","StrokeJoin","setPaintProperties","Skia","paint","opacity","color","blendMode","strokeWidth","style","strokeJoin","strokeCap","strokeMiter","antiAlias","dither","undefined","setAlphaf","getAlphaf","currentOpacity","setShader","setColor","setBlendMode","setStrokeWidth","setStyle","setStrokeJoin","setStrokeCap","setStrokeMiter","setAntiAlias","setDither"],"sources":["Paint.ts"],"sourcesContent":["import { enumKey, processColor } from \"../../../dom/nodes\";\nimport type { PaintProps } from \"../../../dom/types\";\nimport {\n BlendMode,\n PaintStyle,\n StrokeCap,\n StrokeJoin,\n} from \"../../../skia/types\";\nimport type { SkPaint, Skia } from \"../../../skia/types\";\n\nexport const setPaintProperties = (\n Skia: Skia,\n paint: SkPaint,\n {\n opacity,\n color,\n blendMode,\n strokeWidth,\n style,\n strokeJoin,\n strokeCap,\n strokeMiter,\n antiAlias,\n dither,\n }: PaintProps\n) => {\n \"worklet\";\n if (opacity !== undefined) {\n paint.setAlphaf(paint.getAlphaf() * opacity);\n }\n if (color !== undefined) {\n const currentOpacity = paint.getAlphaf();\n paint.setShader(null);\n paint.setColor(processColor(Skia, color));\n paint.setAlphaf(currentOpacity * paint.getAlphaf());\n }\n if (blendMode !== undefined) {\n paint.setBlendMode(BlendMode[enumKey(blendMode)]);\n }\n if (strokeWidth !== undefined) {\n paint.setStrokeWidth(strokeWidth);\n }\n if (style !== undefined) {\n paint.setStyle(PaintStyle[enumKey(style)]);\n }\n if (strokeJoin !== undefined) {\n paint.setStrokeJoin(StrokeJoin[enumKey(strokeJoin)]);\n }\n if (strokeCap !== undefined) {\n paint.setStrokeCap(StrokeCap[enumKey(strokeCap)]);\n }\n if (strokeMiter !== undefined) {\n paint.setStrokeMiter(strokeMiter);\n }\n if (antiAlias !== undefined) {\n paint.setAntiAlias(antiAlias);\n }\n if (dither !== undefined) {\n paint.setDither(dither);\n }\n};\n"],"mappings":"AAAA,SAASA,OAAO,EAAEC,YAAY,QAAQ,oBAAoB;AAE1D,SACEC,SAAS,EACTC,UAAU,EACVC,SAAS,EACTC,UAAU,QACL,qBAAqB;AAG5B,OAAO,MAAMC,kBAAkB,GAAGA,CAChCC,IAAU,EACVC,KAAc,EACd;EACEC,OAAO;EACPC,KAAK;EACLC,SAAS;EACTC,WAAW;EACXC,KAAK;EACLC,UAAU;EACVC,SAAS;EACTC,WAAW;EACXC,SAAS;EACTC;AACU,CAAC,KACV;EACH,SAAS;;EACT,IAAIT,OAAO,KAAKU,SAAS,EAAE;IACzBX,KAAK,CAACY,SAAS,CAACZ,KAAK,CAACa,SAAS,CAAC,CAAC,GAAGZ,OAAO,CAAC;EAC9C;EACA,IAAIC,KAAK,KAAKS,SAAS,EAAE;IACvB,MAAMG,cAAc,GAAGd,KAAK,CAACa,SAAS,CAAC,CAAC;IACxCb,KAAK,CAACe,SAAS,CAAC,IAAI,CAAC;IACrBf,KAAK,CAACgB,QAAQ,CAACvB,YAAY,CAACM,IAAI,EAAEG,KAAK,CAAC,CAAC;IACzCF,KAAK,CAACY,SAAS,CAACE,cAAc,GAAGd,KAAK,CAACa,SAAS,CAAC,CAAC,CAAC;EACrD;EACA,IAAIV,SAAS,KAAKQ,SAAS,EAAE;IAC3BX,KAAK,CAACiB,YAAY,CAACvB,SAAS,CAACF,OAAO,CAACW,SAAS,CAAC,CAAC,CAAC;EACnD;EACA,IAAIC,WAAW,KAAKO,SAAS,EAAE;IAC7BX,KAAK,CAACkB,cAAc,CAACd,WAAW,CAAC;EACnC;EACA,IAAIC,KAAK,KAAKM,SAAS,EAAE;IACvBX,KAAK,CAACmB,QAAQ,CAACxB,UAAU,CAACH,OAAO,CAACa,KAAK,CAAC,CAAC,CAAC;EAC5C;EACA,IAAIC,UAAU,KAAKK,SAAS,EAAE;IAC5BX,KAAK,CAACoB,aAAa,CAACvB,UAAU,CAACL,OAAO,CAACc,UAAU,CAAC,CAAC,CAAC;EACtD;EACA,IAAIC,SAAS,KAAKI,SAAS,EAAE;IAC3BX,KAAK,CAACqB,YAAY,CAACzB,SAAS,CAACJ,OAAO,CAACe,SAAS,CAAC,CAAC,CAAC;EACnD;EACA,IAAIC,WAAW,KAAKG,SAAS,EAAE;IAC7BX,KAAK,CAACsB,cAAc,CAACd,WAAW,CAAC;EACnC;EACA,IAAIC,SAAS,KAAKE,SAAS,EAAE;IAC3BX,KAAK,CAACuB,YAAY,CAACd,SAAS,CAAC;EAC/B;EACA,IAAIC,MAAM,KAAKC,SAAS,EAAE;IACxBX,KAAK,CAACwB,SAAS,CAACd,MAAM,CAAC;EACzB;AACF,CAAC","ignoreList":[]}
|
|
@@ -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,3 +1,3 @@
|
|
|
1
1
|
export const __esModule: boolean;
|
|
2
|
-
export const Canvas: any
|
|
3
|
-
|
|
2
|
+
export const Canvas: _react.ForwardRefExoticComponent<_react.RefAttributes<any>>;
|
|
3
|
+
import _react = require("react");
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export const __esModule: boolean;
|
|
2
|
+
export namespace sksgHostConfig {
|
|
3
|
+
let supportsMutation: boolean;
|
|
4
|
+
let isPrimaryRenderer: boolean;
|
|
5
|
+
let supportsPersistence: boolean;
|
|
6
|
+
let supportsHydration: boolean;
|
|
7
|
+
let scheduleTimeout: typeof setTimeout;
|
|
8
|
+
let cancelTimeout: typeof clearTimeout;
|
|
9
|
+
let noTimeout: number;
|
|
10
|
+
function appendChildToContainer(container: any, child: any): void;
|
|
11
|
+
function appendChild(parent: any, child: any): void;
|
|
12
|
+
function getRootHostContext(_rootContainerInstance: any): null;
|
|
13
|
+
function getChildHostContext(_parentHostContext: any, _type: any, _rootContainerInstance: any): null;
|
|
14
|
+
function shouldSetTextContent(_type: any, _props: any): boolean;
|
|
15
|
+
function createTextInstance(_text: any, _rootContainerInstance: any, _hostContext: any, _internalInstanceHandle: any): never;
|
|
16
|
+
function createInstance(type: any, propsWithChildren: any, _container: any, _hostContext: any, _internalInstanceHandle: any): {
|
|
17
|
+
type: any;
|
|
18
|
+
props: any;
|
|
19
|
+
children: never[];
|
|
20
|
+
};
|
|
21
|
+
function appendInitialChild(parentInstance: any, child: any): void;
|
|
22
|
+
function finalizeInitialChildren(parentInstance: any, _type: any, _props: any, _rootContainerInstance: any, _hostContext: any): boolean;
|
|
23
|
+
function commitMount(): void;
|
|
24
|
+
function prepareForCommit(_containerInfo: any): null;
|
|
25
|
+
function resetAfterCommit(container: any): void;
|
|
26
|
+
function getPublicInstance(node: any): any;
|
|
27
|
+
function prepareUpdate(_instance: any, type: any, oldProps: any, newProps: any, rootContainerInstance: any, _hostContext: any): any;
|
|
28
|
+
function commitUpdate(instance: any, _updatePayload: any, type: any, prevProps: any, nextProps: any, _internalHandle: any): void;
|
|
29
|
+
function commitTextUpdate(_textInstance: any, _oldText: any, _newText: any): void;
|
|
30
|
+
function clearContainer(container: any): void;
|
|
31
|
+
function preparePortalMount(): void;
|
|
32
|
+
function removeChild(parent: any, child: any): void;
|
|
33
|
+
function removeChildFromContainer(container: any, child: any): void;
|
|
34
|
+
function insertInContainerBefore(container: any, child: any, before: any): void;
|
|
35
|
+
function insertBefore(parent: any, child: any, before: any): void;
|
|
36
|
+
function getCurrentEventPriority(): number;
|
|
37
|
+
function beforeActiveInstanceBlur(): void;
|
|
38
|
+
function afterActiveInstanceBlur(): void;
|
|
39
|
+
function detachDeletedInstance(): void;
|
|
40
|
+
function getInstanceFromNode(_node: any): null;
|
|
41
|
+
function prepareScopeUpdate(_scopeInstance: any, _instance: any): void;
|
|
42
|
+
function getInstanceFromScope(_scopeInstance: any): null;
|
|
43
|
+
}
|
|
44
|
+
export function debug(...args: any[]): void;
|
|
@@ -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;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { JsiSkImage } from "./skia/web/JsiSkImage";
|
|
2
2
|
export * from "./renderer";
|
|
3
|
+
export * from "./renderer/CanvasOld";
|
|
3
4
|
export * from "./renderer/Canvas";
|
|
4
|
-
export * from "./renderer/Canvas2";
|
|
5
5
|
export * from "./renderer/Offscreen";
|
|
6
6
|
export * from "./views";
|
|
7
7
|
export * from "./skia";
|
|
@@ -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;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export function debug(...args: any[]): void;
|
|
2
|
+
export namespace sksgHostConfig {
|
|
3
|
+
let supportsMutation: boolean;
|
|
4
|
+
let isPrimaryRenderer: boolean;
|
|
5
|
+
let supportsPersistence: boolean;
|
|
6
|
+
let supportsHydration: boolean;
|
|
7
|
+
let scheduleTimeout: typeof setTimeout;
|
|
8
|
+
let cancelTimeout: typeof clearTimeout;
|
|
9
|
+
let noTimeout: number;
|
|
10
|
+
function appendChildToContainer(container: any, child: any): void;
|
|
11
|
+
function appendChild(parent: any, child: any): void;
|
|
12
|
+
function getRootHostContext(_rootContainerInstance: any): null;
|
|
13
|
+
function getChildHostContext(_parentHostContext: any, _type: any, _rootContainerInstance: any): null;
|
|
14
|
+
function shouldSetTextContent(_type: any, _props: any): boolean;
|
|
15
|
+
function createTextInstance(_text: any, _rootContainerInstance: any, _hostContext: any, _internalInstanceHandle: any): never;
|
|
16
|
+
function createInstance(type: any, propsWithChildren: any, _container: any, _hostContext: any, _internalInstanceHandle: any): {
|
|
17
|
+
type: any;
|
|
18
|
+
props: any;
|
|
19
|
+
children: never[];
|
|
20
|
+
};
|
|
21
|
+
function appendInitialChild(parentInstance: any, child: any): void;
|
|
22
|
+
function finalizeInitialChildren(parentInstance: any, _type: any, _props: any, _rootContainerInstance: any, _hostContext: any): boolean;
|
|
23
|
+
function commitMount(): void;
|
|
24
|
+
function prepareForCommit(_containerInfo: any): null;
|
|
25
|
+
function resetAfterCommit(container: any): void;
|
|
26
|
+
function getPublicInstance(node: any): any;
|
|
27
|
+
function prepareUpdate(_instance: any, type: any, oldProps: any, newProps: any, rootContainerInstance: any, _hostContext: any): any;
|
|
28
|
+
function commitUpdate(instance: any, _updatePayload: any, type: any, prevProps: any, nextProps: any, _internalHandle: any): void;
|
|
29
|
+
function commitTextUpdate(_textInstance: any, _oldText: any, _newText: any): void;
|
|
30
|
+
function clearContainer(container: any): void;
|
|
31
|
+
function preparePortalMount(): void;
|
|
32
|
+
function removeChild(parent: any, child: any): void;
|
|
33
|
+
function removeChildFromContainer(container: any, child: any): void;
|
|
34
|
+
function insertInContainerBefore(container: any, child: any, before: any): void;
|
|
35
|
+
function insertBefore(parent: any, child: any, before: any): void;
|
|
36
|
+
function getCurrentEventPriority(): number;
|
|
37
|
+
function beforeActiveInstanceBlur(): void;
|
|
38
|
+
function afterActiveInstanceBlur(): void;
|
|
39
|
+
function detachDeletedInstance(): void;
|
|
40
|
+
function getInstanceFromNode(_node: any): null;
|
|
41
|
+
function prepareScopeUpdate(_scopeInstance: any, _instance: any): void;
|
|
42
|
+
function getInstanceFromScope(_scopeInstance: any): null;
|
|
43
|
+
}
|
|
@@ -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,8 +1,8 @@
|
|
|
1
1
|
import "./skia/NativeSetup";
|
|
2
2
|
export { JsiSkImage } from "./skia/web/JsiSkImage";
|
|
3
3
|
export * from "./renderer";
|
|
4
|
+
export * from "./renderer/CanvasOld";
|
|
4
5
|
export * from "./renderer/Canvas";
|
|
5
|
-
export * from "./renderer/Canvas2";
|
|
6
6
|
export * from "./renderer/Offscreen";
|
|
7
7
|
export * from "./views";
|
|
8
8
|
export * from "./skia";
|
|
@@ -1,11 +1,10 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type {
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
mode?: "default" | "continuous";
|
|
1
|
+
import type { ViewProps } from "react-native";
|
|
2
|
+
import type { SharedValue } from "react-native-reanimated";
|
|
3
|
+
import type { SkSize } from "../skia/types";
|
|
4
|
+
export interface CanvasProps extends ViewProps {
|
|
5
|
+
debug?: boolean;
|
|
6
|
+
opaque?: boolean;
|
|
7
|
+
onSize?: SharedValue<SkSize>;
|
|
8
|
+
mode?: "continuous" | "default";
|
|
10
9
|
}
|
|
11
|
-
export declare const Canvas:
|
|
10
|
+
export declare const Canvas: import("react").ForwardRefExoticComponent<CanvasProps & import("react").RefAttributes<unknown>>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { RefObject, ReactNode, FunctionComponent } from "react";
|
|
3
|
+
import { SkiaDomView } from "../views";
|
|
4
|
+
import type { SkiaBaseViewProps } from "../views";
|
|
5
|
+
export declare const useCanvasRef: () => React.RefObject<SkiaDomView>;
|
|
6
|
+
export interface CanvasOldProps extends SkiaBaseViewProps {
|
|
7
|
+
ref?: RefObject<SkiaDomView>;
|
|
8
|
+
children: ReactNode;
|
|
9
|
+
mode?: "default" | "continuous";
|
|
10
|
+
}
|
|
11
|
+
export declare const CanvasOld: FunctionComponent<CanvasOldProps & React.RefAttributes<SkiaDomView>>;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { HostConfig } from "react-reconciler";
|
|
2
|
+
import type { NodeType } from "../dom/types";
|
|
3
|
+
import type { Container } from "./Container";
|
|
4
|
+
import type { Node } from "./Node";
|
|
5
|
+
export declare const debug: (message?: any, ...optionalParams: any[]) => void;
|
|
6
|
+
type Instance = Node<unknown>;
|
|
7
|
+
type Props = object;
|
|
8
|
+
type TextInstance = Node<unknown>;
|
|
9
|
+
type SuspenseInstance = Instance;
|
|
10
|
+
type HydratableInstance = Instance;
|
|
11
|
+
type PublicInstance = Instance;
|
|
12
|
+
type HostContext = null;
|
|
13
|
+
type UpdatePayload = Container;
|
|
14
|
+
type ChildSet = unknown;
|
|
15
|
+
type TimeoutHandle = NodeJS.Timeout;
|
|
16
|
+
type NoTimeout = -1;
|
|
17
|
+
type SkiaHostConfig = HostConfig<NodeType, Props, Container, Instance, TextInstance, SuspenseInstance, HydratableInstance, PublicInstance, HostContext, UpdatePayload, ChildSet, TimeoutHandle, NoTimeout>;
|
|
18
|
+
export declare const sksgHostConfig: SkiaHostConfig;
|
|
19
|
+
export {};
|
|
@@ -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
|
+
"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,
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "./skia/NativeSetup";
|
|
2
2
|
export { JsiSkImage } from "./skia/web/JsiSkImage";
|
|
3
3
|
export * from "./renderer";
|
|
4
|
+
export * from "./renderer/CanvasOld";
|
|
4
5
|
export * from "./renderer/Canvas";
|
|
5
|
-
export * from "./renderer/Canvas2";
|
|
6
6
|
export * from "./renderer/Offscreen";
|
|
7
7
|
export * from "./views";
|
|
8
8
|
export * from "./skia";
|
package/src/renderer/Canvas.tsx
CHANGED
|
@@ -1,32 +1,24 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
forwardRef,
|
|
3
3
|
useCallback,
|
|
4
|
+
useEffect,
|
|
5
|
+
useImperativeHandle,
|
|
4
6
|
useMemo,
|
|
5
|
-
forwardRef,
|
|
6
7
|
useRef,
|
|
7
8
|
} from "react";
|
|
8
|
-
import type {
|
|
9
|
-
|
|
10
|
-
ReactNode,
|
|
11
|
-
MutableRefObject,
|
|
12
|
-
ForwardedRef,
|
|
13
|
-
FunctionComponent,
|
|
14
|
-
} from "react";
|
|
15
|
-
import type { LayoutChangeEvent } from "react-native";
|
|
9
|
+
import type { LayoutChangeEvent, ViewProps } from "react-native";
|
|
10
|
+
import type { SharedValue } from "react-native-reanimated";
|
|
16
11
|
|
|
17
|
-
import {
|
|
12
|
+
import { SkiaViewNativeId } from "../views/SkiaViewNativeId";
|
|
13
|
+
import SkiaPictureViewNativeComponent from "../specs/SkiaPictureViewNativeComponent";
|
|
14
|
+
import type { SkRect, SkSize } from "../skia/types";
|
|
15
|
+
import { SkiaSGRoot } from "../sksg/Reconciler";
|
|
16
|
+
import { Skia } from "../skia";
|
|
18
17
|
import type { SkiaBaseViewProps } from "../views";
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
export const useCanvasRef = () => useRef<SkiaDomView>(null);
|
|
23
|
-
|
|
24
|
-
export interface CanvasProps extends SkiaBaseViewProps {
|
|
25
|
-
ref?: RefObject<SkiaDomView>;
|
|
26
|
-
children: ReactNode;
|
|
27
|
-
mode?: "default" | "continuous";
|
|
28
|
-
}
|
|
19
|
+
const NativeSkiaPictureView = SkiaPictureViewNativeComponent;
|
|
29
20
|
|
|
21
|
+
// TODO: no need to go through the JS thread for this
|
|
30
22
|
const useOnSizeEvent = (
|
|
31
23
|
resultValue: SkiaBaseViewProps["onSize"],
|
|
32
24
|
onLayout?: (event: LayoutChangeEvent) => void
|
|
@@ -46,39 +38,40 @@ const useOnSizeEvent = (
|
|
|
46
38
|
);
|
|
47
39
|
};
|
|
48
40
|
|
|
49
|
-
export
|
|
41
|
+
export interface CanvasProps extends ViewProps {
|
|
42
|
+
debug?: boolean;
|
|
43
|
+
opaque?: boolean;
|
|
44
|
+
onSize?: SharedValue<SkSize>;
|
|
45
|
+
mode?: "continuous" | "default";
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export const Canvas = forwardRef(
|
|
50
49
|
(
|
|
51
50
|
{
|
|
52
|
-
|
|
53
|
-
style,
|
|
51
|
+
mode,
|
|
54
52
|
debug,
|
|
55
|
-
|
|
56
|
-
|
|
53
|
+
opaque,
|
|
54
|
+
children,
|
|
55
|
+
onSize,
|
|
57
56
|
onLayout: _onLayout,
|
|
58
|
-
...
|
|
59
|
-
},
|
|
60
|
-
|
|
57
|
+
...viewProps
|
|
58
|
+
}: CanvasProps,
|
|
59
|
+
ref
|
|
61
60
|
) => {
|
|
62
|
-
const
|
|
63
|
-
const
|
|
64
|
-
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
}, [
|
|
68
|
-
const getNativeId = useCallback(() => {
|
|
69
|
-
const id = innerRef.current?.nativeId ?? -1;
|
|
70
|
-
return id;
|
|
71
|
-
}, [innerRef]);
|
|
61
|
+
const rafId = useRef<number | null>(null);
|
|
62
|
+
const onLayout = useOnSizeEvent(onSize, _onLayout);
|
|
63
|
+
// Native ID
|
|
64
|
+
const nativeId = useMemo(() => {
|
|
65
|
+
return SkiaViewNativeId.current++;
|
|
66
|
+
}, []);
|
|
72
67
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
[redraw, getNativeId]
|
|
76
|
-
);
|
|
68
|
+
// Root
|
|
69
|
+
const root = useMemo(() => new SkiaSGRoot(Skia, nativeId), [nativeId]);
|
|
77
70
|
|
|
78
|
-
// Render
|
|
71
|
+
// Render effects
|
|
79
72
|
useEffect(() => {
|
|
80
73
|
root.render(children);
|
|
81
|
-
}, [children, root
|
|
74
|
+
}, [children, root]);
|
|
82
75
|
|
|
83
76
|
useEffect(() => {
|
|
84
77
|
return () => {
|
|
@@ -86,41 +79,50 @@ export const Canvas = forwardRef<SkiaDomView, CanvasProps>(
|
|
|
86
79
|
};
|
|
87
80
|
}, [root]);
|
|
88
81
|
|
|
82
|
+
const requestRedraw = useCallback(() => {
|
|
83
|
+
rafId.current = requestAnimationFrame(() => {
|
|
84
|
+
root.render(children);
|
|
85
|
+
if (mode === "continuous") {
|
|
86
|
+
requestRedraw();
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}, [children, mode, root]);
|
|
90
|
+
|
|
91
|
+
useEffect(() => {
|
|
92
|
+
if (mode === "continuous") {
|
|
93
|
+
console.warn("The `mode` property in `Canvas` is deprecated.");
|
|
94
|
+
requestRedraw();
|
|
95
|
+
}
|
|
96
|
+
return () => {
|
|
97
|
+
if (rafId.current !== null) {
|
|
98
|
+
cancelAnimationFrame(rafId.current);
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}, [mode, requestRedraw]);
|
|
102
|
+
// Component methods
|
|
103
|
+
useImperativeHandle(ref, () => ({
|
|
104
|
+
makeImageSnapshot: (rect?: SkRect) => {
|
|
105
|
+
return SkiaViewApi.makeImageSnapshot(nativeId, rect);
|
|
106
|
+
},
|
|
107
|
+
makeImageSnapshotAsync: (rect?: SkRect) => {
|
|
108
|
+
return SkiaViewApi.makeImageSnapshotAsync(nativeId, rect);
|
|
109
|
+
},
|
|
110
|
+
redraw: () => {
|
|
111
|
+
SkiaViewApi.requestRedraw(nativeId);
|
|
112
|
+
},
|
|
113
|
+
getNativeId: () => {
|
|
114
|
+
return nativeId;
|
|
115
|
+
},
|
|
116
|
+
}));
|
|
89
117
|
return (
|
|
90
|
-
<
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
root={root.dom}
|
|
94
|
-
onLayout={onLayout}
|
|
118
|
+
<NativeSkiaPictureView
|
|
119
|
+
collapsable={false}
|
|
120
|
+
nativeID={`${nativeId}`}
|
|
95
121
|
debug={debug}
|
|
96
|
-
|
|
97
|
-
{
|
|
122
|
+
opaque={opaque}
|
|
123
|
+
onLayout={onLayout}
|
|
124
|
+
{...viewProps}
|
|
98
125
|
/>
|
|
99
126
|
);
|
|
100
127
|
}
|
|
101
|
-
)
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Combines a list of refs into a single ref. This can be used to provide
|
|
105
|
-
* both a forwarded ref and an internal ref keeping the same functionality
|
|
106
|
-
* on both of the refs.
|
|
107
|
-
* @param refs Array of refs to combine
|
|
108
|
-
* @returns A single ref that can be used in a ref prop.
|
|
109
|
-
*/
|
|
110
|
-
const useCombinedRefs = <T,>(
|
|
111
|
-
...refs: Array<MutableRefObject<T> | ForwardedRef<T>>
|
|
112
|
-
) => {
|
|
113
|
-
const targetRef = React.useRef<T>(null);
|
|
114
|
-
React.useEffect(() => {
|
|
115
|
-
refs.forEach((ref) => {
|
|
116
|
-
if (ref) {
|
|
117
|
-
if (typeof ref === "function") {
|
|
118
|
-
ref(targetRef.current);
|
|
119
|
-
} else {
|
|
120
|
-
ref.current = targetRef.current;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
}, [refs]);
|
|
125
|
-
return targetRef;
|
|
126
|
-
};
|
|
128
|
+
);
|