@shopify/react-native-skia 2.11.0 → 2.11.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.
Files changed (73) hide show
  1. package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +0 -10
  2. package/android/src/main/java/com/shopify/reactnative/skia/ViewScreenshotService.java +9 -12
  3. package/apple/RNSkApplePlatformContext.h +0 -3
  4. package/apple/RNSkApplePlatformContext.mm +0 -11
  5. package/cpp/api/JsiSkApi.h +0 -6
  6. package/cpp/api/JsiSkFont.h +2 -8
  7. package/cpp/api/JsiSkMatrix.h +4 -2
  8. package/cpp/api/recorder/Convertor.h +5 -2
  9. package/cpp/api/recorder/Drawings.h +13 -3
  10. package/cpp/api/recorder/ImageFilters.h +15 -1
  11. package/cpp/api/recorder/Paint.h +5 -2
  12. package/cpp/rnskia/RNSkPlatformContext.h +0 -3
  13. package/lib/commonjs/renderer/components/Mask.js +3 -9
  14. package/lib/commonjs/renderer/components/Mask.js.map +1 -1
  15. package/lib/commonjs/skia/types/Matrix4.js +7 -2
  16. package/lib/commonjs/skia/types/Matrix4.js.map +1 -1
  17. package/lib/commonjs/skia/types/Skia.d.ts +1 -6
  18. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  19. package/lib/commonjs/skia/web/JsiSkia.js +0 -3
  20. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  21. package/lib/commonjs/sksg/Recorder/DrawingContext.d.ts +1 -0
  22. package/lib/commonjs/sksg/Recorder/DrawingContext.js +10 -0
  23. package/lib/commonjs/sksg/Recorder/DrawingContext.js.map +1 -1
  24. package/lib/commonjs/sksg/Recorder/Player.js +1 -1
  25. package/lib/commonjs/sksg/Recorder/Player.js.map +1 -1
  26. package/lib/commonjs/sksg/Recorder/Visitor.js +6 -1
  27. package/lib/commonjs/sksg/Recorder/Visitor.js.map +1 -1
  28. package/lib/commonjs/sksg/Recorder/commands/Drawing.js +10 -8
  29. package/lib/commonjs/sksg/Recorder/commands/Drawing.js.map +1 -1
  30. package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js +15 -1
  31. package/lib/commonjs/sksg/Recorder/commands/ImageFilters.js.map +1 -1
  32. package/lib/commonjs/sksg/Recorder/commands/Shaders.js +1 -1
  33. package/lib/commonjs/sksg/Recorder/commands/Shaders.js.map +1 -1
  34. package/lib/module/renderer/components/Mask.js +3 -9
  35. package/lib/module/renderer/components/Mask.js.map +1 -1
  36. package/lib/module/skia/types/Matrix4.js +7 -2
  37. package/lib/module/skia/types/Matrix4.js.map +1 -1
  38. package/lib/module/skia/types/Skia.d.ts +1 -6
  39. package/lib/module/skia/types/Skia.js.map +1 -1
  40. package/lib/module/skia/web/JsiSkia.js +0 -3
  41. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  42. package/lib/module/sksg/Recorder/DrawingContext.d.ts +1 -0
  43. package/lib/module/sksg/Recorder/DrawingContext.js +10 -0
  44. package/lib/module/sksg/Recorder/DrawingContext.js.map +1 -1
  45. package/lib/module/sksg/Recorder/Player.js +1 -1
  46. package/lib/module/sksg/Recorder/Player.js.map +1 -1
  47. package/lib/module/sksg/Recorder/Visitor.js +6 -1
  48. package/lib/module/sksg/Recorder/Visitor.js.map +1 -1
  49. package/lib/module/sksg/Recorder/commands/Drawing.js +10 -8
  50. package/lib/module/sksg/Recorder/commands/Drawing.js.map +1 -1
  51. package/lib/module/sksg/Recorder/commands/ImageFilters.js +15 -1
  52. package/lib/module/sksg/Recorder/commands/ImageFilters.js.map +1 -1
  53. package/lib/module/sksg/Recorder/commands/Shaders.js +1 -1
  54. package/lib/module/sksg/Recorder/commands/Shaders.js.map +1 -1
  55. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +0 -1
  56. package/lib/typescript/lib/commonjs/sksg/Recorder/DrawingContext.d.ts +1 -0
  57. package/lib/typescript/lib/module/skia/Skia.web.d.ts +0 -1
  58. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +0 -1
  59. package/lib/typescript/lib/module/sksg/Recorder/DrawingContext.d.ts +1 -0
  60. package/lib/typescript/src/skia/types/Skia.d.ts +1 -6
  61. package/lib/typescript/src/sksg/Recorder/DrawingContext.d.ts +1 -0
  62. package/package.json +1 -1
  63. package/src/renderer/components/Mask.tsx +10 -3
  64. package/src/skia/types/Matrix4.ts +6 -2
  65. package/src/skia/types/Skia.ts +1 -7
  66. package/src/skia/web/JsiSkia.ts +0 -4
  67. package/src/sksg/Recorder/DrawingContext.ts +10 -0
  68. package/src/sksg/Recorder/Player.ts +1 -1
  69. package/src/sksg/Recorder/Visitor.ts +9 -6
  70. package/src/sksg/Recorder/commands/Drawing.ts +10 -8
  71. package/src/sksg/Recorder/commands/ImageFilters.ts +20 -1
  72. package/src/sksg/Recorder/commands/Shaders.ts +1 -1
  73. package/cpp/api/JsiSkiaContext.h +0 -94
@@ -1 +1 @@
1
- {"version":3,"names":["_nodes","require","_types","_types2","_utils","_Core","MorphologyOperator","exports","Black","Float32Array","of","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","BlendMode","Dst","sourceAlpha","SrcIn","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","TileMode","Decal","f4","MakeCompose","SrcOver","declareBlurImageFilter","ctx","props","mode","blur","sigma","processRadius","imgf","x","y","enumKey","imageFilters","push","declareMorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","declareOffsetImageFilter","declareDropShadowImageFilter","cl","inner","processColor","factory","bind","MakeDropShadowOnly","MakeDropShadow","declareBlendImageFilter","blend","splice","length","composer","composeDeclarations","declareDisplacementMapImageFilter","channelX","channelY","scale","shader","shaders","pop","Error","map","MakeShader","MakeDisplacementMap","ColorChannel","declareRuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","processUniforms","MakeRuntimeShader","declareImageFilter","filter","composeImageFilters","outer","setBlurMaskFilter","style","respectCTM","mf","MaskFilter","BlurStyle","paint","setMaskFilter","isPushImageFilter","command","type","CommandType","PushImageFilter","isImageFilter","imageFilterType","pushImageFilter","NodeType","BlurImageFilter","MorphologyImageFilter","BlendImageFilter","DisplacementMapImageFilter","DropShadowImageFilter","OffsetImageFilter","RuntimeShaderImageFilter"],"sources":["ImageFilters.ts"],"sourcesContent":["import { enumKey, processColor, processRadius } from \"../../../dom/nodes\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n BlurMaskFilterProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n ImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../../dom/types\";\nimport { NodeType } from \"../../../dom/types\";\nimport type { SkColor, SkImageFilter, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n BlurStyle,\n ColorChannel,\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\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nconst Black = Float32Array.of(0, 0, 0, 1);\n\nconst MakeInnerShadow = (\n Skia: Skia,\n shadowOnly: boolean | undefined,\n dx: number,\n dy: number,\n sigmaX: number,\n sigmaY: number,\n color: SkColor,\n input: SkImageFilter | null\n) => {\n \"worklet\";\n const sourceGraphic = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.Dst),\n null\n );\n const sourceAlpha = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.SrcIn),\n null\n );\n const f1 = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(color, BlendMode.SrcOut),\n null\n );\n const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);\n const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, TileMode.Decal, f2);\n const f4 = Skia.ImageFilter.MakeBlend(BlendMode.SrcIn, sourceAlpha, f3);\n if (shadowOnly) {\n return f4;\n }\n return Skia.ImageFilter.MakeCompose(\n input,\n Skia.ImageFilter.MakeBlend(BlendMode.SrcOver, sourceGraphic, f4)\n );\n};\n\nconst declareBlurImageFilter = (\n ctx: DrawingContext,\n props: BlurImageFilterProps\n) => {\n \"worklet\";\n const { mode, blur } = props;\n const sigma = processRadius(ctx.Skia, blur);\n const imgf = ctx.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n null\n );\n ctx.imageFilters.push(imgf);\n};\n\nconst declareMorphologyImageFilter = (\n ctx: DrawingContext,\n props: MorphologyImageFilterProps\n) => {\n \"worklet\";\n const { operator } = props;\n const r = processRadius(ctx.Skia, props.radius);\n let imgf;\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n imgf = ctx.Skia.ImageFilter.MakeErode(r.x, r.y, null);\n } else {\n imgf = ctx.Skia.ImageFilter.MakeDilate(r.x, r.y, null);\n }\n ctx.imageFilters.push(imgf);\n};\n\nconst declareOffsetImageFilter = (\n ctx: DrawingContext,\n props: OffsetImageFilterProps\n) => {\n \"worklet\";\n const { x, y } = props;\n const imgf = ctx.Skia.ImageFilter.MakeOffset(x, y, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareDropShadowImageFilter = (\n ctx: DrawingContext,\n props: DropShadowImageFilterProps\n) => {\n \"worklet\";\n const { dx, dy, blur, shadowOnly, color: cl, inner } = props;\n const color = processColor(ctx.Skia, cl);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, ctx.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? ctx.Skia.ImageFilter.MakeDropShadowOnly.bind(ctx.Skia.ImageFilter)\n : ctx.Skia.ImageFilter.MakeDropShadow.bind(ctx.Skia.ImageFilter);\n }\n const imgf = factory(dx, dy, blur, blur, color, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareBlendImageFilter = (\n ctx: DrawingContext,\n props: BlendImageFilterProps\n) => {\n \"worklet\";\n const blend = BlendMode[enumKey(props.mode)];\n // Blend ImageFilters\n const imageFilters = ctx.imageFilters.splice(0, ctx.imageFilters.length);\n const composer = ctx.Skia.ImageFilter.MakeBlend.bind(\n ctx.Skia.ImageFilter,\n blend\n );\n ctx.imageFilters.push(composeDeclarations(imageFilters, composer));\n};\n\nconst declareDisplacementMapImageFilter = (\n ctx: DrawingContext,\n props: DisplacementMapImageFilterProps\n) => {\n \"worklet\";\n const { channelX, channelY, scale } = props;\n const shader = ctx.shaders.pop();\n if (!shader) {\n throw new Error(\"DisplacementMap expects a shader as child\");\n }\n const map = ctx.Skia.ImageFilter.MakeShader(shader);\n const imgf = ctx.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n map,\n null\n );\n ctx.imageFilters.push(imgf);\n};\n\nconst declareRuntimeShaderImageFilter = (\n ctx: DrawingContext,\n props: RuntimeShaderImageFilterProps\n) => {\n \"worklet\";\n const { source, uniforms } = props;\n const rtb = ctx.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const imgf = ctx.Skia.ImageFilter.MakeRuntimeShader(rtb, null, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareImageFilter = (ctx: DrawingContext, props: ImageFilterProps) => {\n \"worklet\";\n const { filter } = props;\n ctx.imageFilters.push(filter);\n};\n\nexport const composeImageFilters = (ctx: DrawingContext) => {\n \"worklet\";\n if (ctx.imageFilters.length > 1) {\n const outer = ctx.imageFilters.pop()!;\n const inner = ctx.imageFilters.pop()!;\n ctx.imageFilters.push(ctx.Skia.ImageFilter.MakeCompose(outer, inner));\n }\n};\n\nexport const setBlurMaskFilter = (\n ctx: DrawingContext,\n props: BlurMaskFilterProps\n) => {\n \"worklet\";\n const { blur, style, respectCTM } = props;\n const mf = ctx.Skia.MaskFilter.MakeBlur(\n BlurStyle[enumKey(style)],\n blur,\n respectCTM\n );\n ctx.paint.setMaskFilter(mf);\n};\n\nexport const isPushImageFilter = (\n command: Command\n): command is Command<CommandType.PushImageFilter> => {\n \"worklet\";\n return command.type === CommandType.PushImageFilter;\n};\n\ntype Props = {\n [NodeType.ImageFilter]: ImageFilterProps;\n [NodeType.OffsetImageFilter]: OffsetImageFilterProps;\n [NodeType.DisplacementMapImageFilter]: DisplacementMapImageFilterProps;\n [NodeType.BlurImageFilter]: BlurImageFilterProps;\n [NodeType.DropShadowImageFilter]: DropShadowImageFilterProps;\n [NodeType.MorphologyImageFilter]: MorphologyImageFilterProps;\n [NodeType.BlendImageFilter]: BlendImageFilterProps;\n [NodeType.RuntimeShaderImageFilter]: RuntimeShaderImageFilterProps;\n};\n\ninterface PushImageFilter<\n T extends keyof Props,\n> extends Command<CommandType.PushImageFilter> {\n imageFilterType: T;\n props: Props[T];\n}\n\nconst isImageFilter = <T extends keyof Props>(\n command: Command<CommandType.PushImageFilter>,\n type: T\n): command is PushImageFilter<T> => {\n \"worklet\";\n return command.imageFilterType === type;\n};\n\nexport const pushImageFilter = (\n ctx: DrawingContext,\n command: Command<CommandType.PushImageFilter>\n) => {\n \"worklet\";\n if (isImageFilter(command, NodeType.ImageFilter)) {\n declareImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.BlurImageFilter)) {\n declareBlurImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.MorphologyImageFilter)) {\n declareMorphologyImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.BlendImageFilter)) {\n declareBlendImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.DisplacementMapImageFilter)) {\n declareDisplacementMapImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.DropShadowImageFilter)) {\n declareDropShadowImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.OffsetImageFilter)) {\n declareOffsetImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.RuntimeShaderImageFilter)) {\n declareRuntimeShaderImageFilter(ctx, command.props);\n } else {\n throw new Error(\"Invalid image filter type: \" + command.imageFilterType);\n }\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_nodes","require","_types","_types2","_utils","_Core","MorphologyOperator","exports","Black","Float32Array","of","AlphaSaturate","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","BlendMode","Dst","sourceAlpha","SrcIn","coverage","MakeMatrix","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","TileMode","Decal","f4","MakeCompose","SrcOver","declareBlurImageFilter","ctx","props","mode","blur","sigma","processRadius","imgf","x","y","enumKey","imageFilters","push","declareMorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","declareOffsetImageFilter","declareDropShadowImageFilter","cl","inner","processColor","factory","bind","MakeDropShadowOnly","MakeDropShadow","declareBlendImageFilter","blend","splice","length","composer","composeDeclarations","declareDisplacementMapImageFilter","channelX","channelY","scale","shader","shaders","pop","Error","map","MakeShader","MakeDisplacementMap","ColorChannel","declareRuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","processUniforms","MakeRuntimeShader","declareImageFilter","filter","composeImageFilters","outer","setBlurMaskFilter","style","respectCTM","mf","MaskFilter","BlurStyle","paint","setMaskFilter","isPushImageFilter","command","type","CommandType","PushImageFilter","isImageFilter","imageFilterType","pushImageFilter","NodeType","BlurImageFilter","MorphologyImageFilter","BlendImageFilter","DisplacementMapImageFilter","DropShadowImageFilter","OffsetImageFilter","RuntimeShaderImageFilter"],"sources":["ImageFilters.ts"],"sourcesContent":["import { enumKey, processColor, processRadius } from \"../../../dom/nodes\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n BlurMaskFilterProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n ImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../../dom/types\";\nimport { NodeType } from \"../../../dom/types\";\nimport type { SkColor, SkImageFilter, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n BlurStyle,\n ColorChannel,\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\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nconst Black = Float32Array.of(0, 0, 0, 1);\n\n// Turns the source graphic into a hard silhouette: alpha is multiplied by 255\n// and clamped, so any pixel the shape covers at all becomes fully opaque, and\n// the colour channels are dropped. 255 is the saturation point of an 8-bit\n// alpha channel, so one unit of coverage is enough to reach 1.\nconst AlphaSaturate = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0,\n];\n\nconst MakeInnerShadow = (\n Skia: Skia,\n shadowOnly: boolean | undefined,\n dx: number,\n dy: number,\n sigmaX: number,\n sigmaY: number,\n color: SkColor,\n input: SkImageFilter | null\n) => {\n \"worklet\";\n const sourceGraphic = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.Dst),\n null\n );\n const sourceAlpha = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(Black, BlendMode.SrcIn),\n null\n );\n // The shadow is generated outside the shape and then clipped back into it, so\n // \"outside\" has to be the complement of the shape's silhouette. Taking SrcOut\n // against the source graphic itself makes it the complement of the source's\n // *alpha*: inside a translucent shape 1 - alpha is non-zero, so the shadow is\n // generated across the whole interior and tints it, no matter how small the\n // blur and the offset are (issue #2990). Saturating alpha first keeps the\n // shadow tied to the shape's outline instead of to its opacity.\n const coverage = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeMatrix(AlphaSaturate),\n null\n );\n const f1 = Skia.ImageFilter.MakeColorFilter(\n Skia.ColorFilter.MakeBlend(color, BlendMode.SrcOut),\n coverage\n );\n const f2 = Skia.ImageFilter.MakeOffset(dx, dy, f1);\n const f3 = Skia.ImageFilter.MakeBlur(sigmaX, sigmaY, TileMode.Decal, f2);\n const f4 = Skia.ImageFilter.MakeBlend(BlendMode.SrcIn, sourceAlpha, f3);\n if (shadowOnly) {\n return f4;\n }\n return Skia.ImageFilter.MakeCompose(\n input,\n Skia.ImageFilter.MakeBlend(BlendMode.SrcOver, sourceGraphic, f4)\n );\n};\n\nconst declareBlurImageFilter = (\n ctx: DrawingContext,\n props: BlurImageFilterProps\n) => {\n \"worklet\";\n const { mode, blur } = props;\n const sigma = processRadius(ctx.Skia, blur);\n const imgf = ctx.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n null\n );\n ctx.imageFilters.push(imgf);\n};\n\nconst declareMorphologyImageFilter = (\n ctx: DrawingContext,\n props: MorphologyImageFilterProps\n) => {\n \"worklet\";\n const { operator } = props;\n const r = processRadius(ctx.Skia, props.radius);\n let imgf;\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n imgf = ctx.Skia.ImageFilter.MakeErode(r.x, r.y, null);\n } else {\n imgf = ctx.Skia.ImageFilter.MakeDilate(r.x, r.y, null);\n }\n ctx.imageFilters.push(imgf);\n};\n\nconst declareOffsetImageFilter = (\n ctx: DrawingContext,\n props: OffsetImageFilterProps\n) => {\n \"worklet\";\n const { x, y } = props;\n const imgf = ctx.Skia.ImageFilter.MakeOffset(x, y, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareDropShadowImageFilter = (\n ctx: DrawingContext,\n props: DropShadowImageFilterProps\n) => {\n \"worklet\";\n const { dx, dy, blur, shadowOnly, color: cl, inner } = props;\n const color = processColor(ctx.Skia, cl);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, ctx.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? ctx.Skia.ImageFilter.MakeDropShadowOnly.bind(ctx.Skia.ImageFilter)\n : ctx.Skia.ImageFilter.MakeDropShadow.bind(ctx.Skia.ImageFilter);\n }\n const imgf = factory(dx, dy, blur, blur, color, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareBlendImageFilter = (\n ctx: DrawingContext,\n props: BlendImageFilterProps\n) => {\n \"worklet\";\n const blend = BlendMode[enumKey(props.mode)];\n // Blend ImageFilters\n const imageFilters = ctx.imageFilters.splice(0, ctx.imageFilters.length);\n const composer = ctx.Skia.ImageFilter.MakeBlend.bind(\n ctx.Skia.ImageFilter,\n blend\n );\n ctx.imageFilters.push(composeDeclarations(imageFilters, composer));\n};\n\nconst declareDisplacementMapImageFilter = (\n ctx: DrawingContext,\n props: DisplacementMapImageFilterProps\n) => {\n \"worklet\";\n const { channelX, channelY, scale } = props;\n const shader = ctx.shaders.pop();\n if (!shader) {\n throw new Error(\"DisplacementMap expects a shader as child\");\n }\n const map = ctx.Skia.ImageFilter.MakeShader(shader);\n const imgf = ctx.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n map,\n null\n );\n ctx.imageFilters.push(imgf);\n};\n\nconst declareRuntimeShaderImageFilter = (\n ctx: DrawingContext,\n props: RuntimeShaderImageFilterProps\n) => {\n \"worklet\";\n const { source, uniforms } = props;\n const rtb = ctx.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const imgf = ctx.Skia.ImageFilter.MakeRuntimeShader(rtb, null, null);\n ctx.imageFilters.push(imgf);\n};\n\nconst declareImageFilter = (ctx: DrawingContext, props: ImageFilterProps) => {\n \"worklet\";\n const { filter } = props;\n ctx.imageFilters.push(filter);\n};\n\nexport const composeImageFilters = (ctx: DrawingContext) => {\n \"worklet\";\n if (ctx.imageFilters.length > 1) {\n const outer = ctx.imageFilters.pop()!;\n const inner = ctx.imageFilters.pop()!;\n ctx.imageFilters.push(ctx.Skia.ImageFilter.MakeCompose(outer, inner));\n }\n};\n\nexport const setBlurMaskFilter = (\n ctx: DrawingContext,\n props: BlurMaskFilterProps\n) => {\n \"worklet\";\n const { blur, style, respectCTM } = props;\n const mf = ctx.Skia.MaskFilter.MakeBlur(\n BlurStyle[enumKey(style)],\n blur,\n respectCTM\n );\n ctx.paint.setMaskFilter(mf);\n};\n\nexport const isPushImageFilter = (\n command: Command\n): command is Command<CommandType.PushImageFilter> => {\n \"worklet\";\n return command.type === CommandType.PushImageFilter;\n};\n\ntype Props = {\n [NodeType.ImageFilter]: ImageFilterProps;\n [NodeType.OffsetImageFilter]: OffsetImageFilterProps;\n [NodeType.DisplacementMapImageFilter]: DisplacementMapImageFilterProps;\n [NodeType.BlurImageFilter]: BlurImageFilterProps;\n [NodeType.DropShadowImageFilter]: DropShadowImageFilterProps;\n [NodeType.MorphologyImageFilter]: MorphologyImageFilterProps;\n [NodeType.BlendImageFilter]: BlendImageFilterProps;\n [NodeType.RuntimeShaderImageFilter]: RuntimeShaderImageFilterProps;\n};\n\ninterface PushImageFilter<\n T extends keyof Props,\n> extends Command<CommandType.PushImageFilter> {\n imageFilterType: T;\n props: Props[T];\n}\n\nconst isImageFilter = <T extends keyof Props>(\n command: Command<CommandType.PushImageFilter>,\n type: T\n): command is PushImageFilter<T> => {\n \"worklet\";\n return command.imageFilterType === type;\n};\n\nexport const pushImageFilter = (\n ctx: DrawingContext,\n command: Command<CommandType.PushImageFilter>\n) => {\n \"worklet\";\n if (isImageFilter(command, NodeType.ImageFilter)) {\n declareImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.BlurImageFilter)) {\n declareBlurImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.MorphologyImageFilter)) {\n declareMorphologyImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.BlendImageFilter)) {\n declareBlendImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.DisplacementMapImageFilter)) {\n declareDisplacementMapImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.DropShadowImageFilter)) {\n declareDropShadowImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.OffsetImageFilter)) {\n declareOffsetImageFilter(ctx, command.props);\n } else if (isImageFilter(command, NodeType.RuntimeShaderImageFilter)) {\n declareRuntimeShaderImageFilter(ctx, command.props);\n } else {\n throw new Error(\"Invalid image filter type: \" + command.imageFilterType);\n }\n};\n"],"mappings":"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","ignoreList":[]}
@@ -165,7 +165,7 @@ const declareImageShader = (ctx, props) => {
165
165
  shader = ctx.track(image.makeShaderCubic(_types2.TileMode[(0, _nodes.enumKey)(tx)], _types2.TileMode[(0, _nodes.enumKey)(ty)], sampling.B, sampling.C, lm));
166
166
  } else {
167
167
  var _sampling$filter, _sampling$mipmap;
168
- shader = ctx.track(image.makeShaderCubic(_types2.TileMode[(0, _nodes.enumKey)(tx)], _types2.TileMode[(0, _nodes.enumKey)(ty)], (_sampling$filter = sampling === null || sampling === void 0 ? void 0 : sampling.filter) !== null && _sampling$filter !== void 0 ? _sampling$filter : _types2.FilterMode.Linear, (_sampling$mipmap = sampling === null || sampling === void 0 ? void 0 : sampling.mipmap) !== null && _sampling$mipmap !== void 0 ? _sampling$mipmap : _types2.MipmapMode.None, lm));
168
+ shader = ctx.track(image.makeShaderOptions(_types2.TileMode[(0, _nodes.enumKey)(tx)], _types2.TileMode[(0, _nodes.enumKey)(ty)], (_sampling$filter = sampling === null || sampling === void 0 ? void 0 : sampling.filter) !== null && _sampling$filter !== void 0 ? _sampling$filter : _types2.FilterMode.Linear, (_sampling$mipmap = sampling === null || sampling === void 0 ? void 0 : sampling.mipmap) !== null && _sampling$mipmap !== void 0 ? _sampling$mipmap : _types2.MipmapMode.None, lm));
169
169
  }
170
170
  ctx.shaders.push(shader);
171
171
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_nodes","require","_types","_types2","_utils","_Core","declareShader","ctx","props","children","source","uniforms","transform","m3","Skia","Matrix","processTransformProps","shader","track","makeShaderWithChildren","processUniforms","shaders","splice","push","declareColorShader","color","Shader","MakeColor","processColor","declareFractalNoiseShader","freqX","freqY","octaves","seed","tileWidth","tileHeight","MakeFractalNoise","declareTwoPointConicalGradientShader","startR","endR","start","end","colors","positions","mode","localMatrix","flags","processGradientProps","MakeTwoPointConicalGradient","declareRadialGradientShader","c","r","MakeRadialGradient","declareSweepGradientShader","MakeSweepGradient","x","y","declareLinearGradientShader","MakeLinearGradient","declareTurbulenceShader","MakeTurbulence","declareImageShader","fit","image","tx","ty","sampling","imageShaderProps","rct","getRect","rects","fitRects","width","height","sx","sy","rect2rect","src","dst","translate","translateX","translateY","scale","scaleX","scaleY","lm","concat","isCubicSampling","makeShaderCubic","TileMode","enumKey","B","C","_sampling$filter","_sampling$mipmap","filter","FilterMode","Linear","mipmap","MipmapMode","None","declareBlend","blend","BlendMode","length","composer","MakeBlend","bind","composeDeclarations","isPushShader","command","type","CommandType","PushShader","exports","isShader","shaderType","pushShader","NodeType","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 = (\n ctx: DrawingContext,\n props: ShaderProps,\n children: number\n) => {\n \"worklet\";\n const { source, uniforms, ...transform } = props;\n const m3 = ctx.Skia.Matrix();\n processTransformProps(m3, transform);\n const shader = ctx.track(\n source.makeShaderWithChildren(\n processUniforms(source, uniforms),\n ctx.shaders.splice(0, children),\n m3\n )\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 = ctx.track(\n image.makeShaderCubic(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n sampling.B,\n sampling.C,\n lm\n )\n );\n } else {\n shader = ctx.track(\n 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 }\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<\n T extends keyof Props,\n> extends Command<CommandType.PushShader> {\n shaderType: T;\n props: Props[T];\n children: number;\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, command.children);\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":["_nodes","require","_types","_types2","_utils","_Core","declareShader","ctx","props","children","source","uniforms","transform","m3","Skia","Matrix","processTransformProps","shader","track","makeShaderWithChildren","processUniforms","shaders","splice","push","declareColorShader","color","Shader","MakeColor","processColor","declareFractalNoiseShader","freqX","freqY","octaves","seed","tileWidth","tileHeight","MakeFractalNoise","declareTwoPointConicalGradientShader","startR","endR","start","end","colors","positions","mode","localMatrix","flags","processGradientProps","MakeTwoPointConicalGradient","declareRadialGradientShader","c","r","MakeRadialGradient","declareSweepGradientShader","MakeSweepGradient","x","y","declareLinearGradientShader","MakeLinearGradient","declareTurbulenceShader","MakeTurbulence","declareImageShader","fit","image","tx","ty","sampling","imageShaderProps","rct","getRect","rects","fitRects","width","height","sx","sy","rect2rect","src","dst","translate","translateX","translateY","scale","scaleX","scaleY","lm","concat","isCubicSampling","makeShaderCubic","TileMode","enumKey","B","C","_sampling$filter","_sampling$mipmap","makeShaderOptions","filter","FilterMode","Linear","mipmap","MipmapMode","None","declareBlend","blend","BlendMode","length","composer","MakeBlend","bind","composeDeclarations","isPushShader","command","type","CommandType","PushShader","exports","isShader","shaderType","pushShader","NodeType","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 = (\n ctx: DrawingContext,\n props: ShaderProps,\n children: number\n) => {\n \"worklet\";\n const { source, uniforms, ...transform } = props;\n const m3 = ctx.Skia.Matrix();\n processTransformProps(m3, transform);\n const shader = ctx.track(\n source.makeShaderWithChildren(\n processUniforms(source, uniforms),\n ctx.shaders.splice(0, children),\n m3\n )\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 = ctx.track(\n image.makeShaderCubic(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n sampling.B,\n sampling.C,\n lm\n )\n );\n } else {\n shader = ctx.track(\n image.makeShaderOptions(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n sampling?.filter ?? FilterMode.Linear,\n sampling?.mipmap ?? MipmapMode.None,\n lm\n )\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<\n T extends keyof Props,\n> extends Command<CommandType.PushShader> {\n shaderType: T;\n props: Props[T];\n children: number;\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, command.children);\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":[]}
@@ -10,16 +10,10 @@ export const Mask = ({
10
10
  }) => {
11
11
  return /*#__PURE__*/React.createElement(Group, {
12
12
  layer: true
13
- }, /*#__PURE__*/React.createElement(Group, {
13
+ }, children, /*#__PURE__*/React.createElement(Group, {
14
14
  layer: /*#__PURE__*/React.createElement(Paint, {
15
- blendMode: "src"
15
+ blendMode: clip ? "dstIn" : "dstATop"
16
16
  }, mode === "luminance" && /*#__PURE__*/React.createElement(LumaColorFilter, null))
17
- }, mask, clip && /*#__PURE__*/React.createElement(Group, {
18
- layer: /*#__PURE__*/React.createElement(Paint, {
19
- blendMode: "dstIn"
20
- })
21
- }, children)), /*#__PURE__*/React.createElement(Group, {
22
- blendMode: "srcIn"
23
- }, children));
17
+ }, mask));
24
18
  };
25
19
  //# sourceMappingURL=Mask.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["React","Group","LumaColorFilter","Paint","Mask","children","mask","mode","clip","createElement","layer","blendMode"],"sources":["Mask.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport React from \"react\";\n\nimport { Group } from \"./Group\";\nimport { LumaColorFilter } from \"./colorFilters/LumaColorFilter\";\nimport { Paint } from \"./Paint\";\n\ninterface MaskProps {\n mode?: \"luminance\" | \"alpha\";\n clip?: boolean;\n mask: ReactNode | ReactNode[];\n children: ReactNode | ReactNode[];\n}\n\nexport const Mask = ({\n children,\n mask,\n mode = \"alpha\",\n clip = true,\n}: MaskProps) => {\n return (\n <Group layer>\n <Group\n layer={\n <Paint blendMode=\"src\">\n {mode === \"luminance\" && <LumaColorFilter />}\n </Paint>\n }\n >\n {mask}\n {clip && <Group layer={<Paint blendMode=\"dstIn\" />}>{children}</Group>}\n </Group>\n <Group blendMode=\"srcIn\">{children}</Group>\n </Group>\n );\n};\n"],"mappings":"AACA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,KAAK,QAAQ,SAAS;AAC/B,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,KAAK,QAAQ,SAAS;AAS/B,OAAO,MAAMC,IAAI,GAAGA,CAAC;EACnBC,QAAQ;EACRC,IAAI;EACJC,IAAI,GAAG,OAAO;EACdC,IAAI,GAAG;AACE,CAAC,KAAK;EACf,oBACER,KAAA,CAAAS,aAAA,CAACR,KAAK;IAACS,KAAK;EAAA,gBACVV,KAAA,CAAAS,aAAA,CAACR,KAAK;IACJS,KAAK,eACHV,KAAA,CAAAS,aAAA,CAACN,KAAK;MAACQ,SAAS,EAAC;IAAK,GACnBJ,IAAI,KAAK,WAAW,iBAAIP,KAAA,CAAAS,aAAA,CAACP,eAAe,MAAE,CACtC;EACR,GAEAI,IAAI,EACJE,IAAI,iBAAIR,KAAA,CAAAS,aAAA,CAACR,KAAK;IAACS,KAAK,eAAEV,KAAA,CAAAS,aAAA,CAACN,KAAK;MAACQ,SAAS,EAAC;IAAO,CAAE;EAAE,GAAEN,QAAgB,CAChE,CAAC,eACRL,KAAA,CAAAS,aAAA,CAACR,KAAK;IAACU,SAAS,EAAC;EAAO,GAAEN,QAAgB,CACrC,CAAC;AAEZ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["React","Group","LumaColorFilter","Paint","Mask","children","mask","mode","clip","createElement","layer","blendMode"],"sources":["Mask.tsx"],"sourcesContent":["import type { ReactNode } from \"react\";\nimport React from \"react\";\n\nimport { Group } from \"./Group\";\nimport { LumaColorFilter } from \"./colorFilters/LumaColorFilter\";\nimport { Paint } from \"./Paint\";\n\ninterface MaskProps {\n mode?: \"luminance\" | \"alpha\";\n clip?: boolean;\n mask: ReactNode | ReactNode[];\n children: ReactNode | ReactNode[];\n}\n\nexport const Mask = ({\n children,\n mask,\n mode = \"alpha\",\n clip = true,\n}: MaskProps) => {\n return (\n <Group layer>\n {children}\n {/* The children composite against each other in the layer above; the\n mask is then applied once, when its own layer is restored. A blend\n mode attached to a <Group> without a layer would instead be applied\n per draw call, compositing every child after the first against the\n previous child rather than against the mask (issue #3254).\n dstIn keeps the children where the mask is opaque and erases them\n where it is transparent. Without clip, dstATop additionally keeps\n the mask artwork itself wherever the children leave it uncovered. */}\n <Group\n layer={\n <Paint blendMode={clip ? \"dstIn\" : \"dstATop\"}>\n {mode === \"luminance\" && <LumaColorFilter />}\n </Paint>\n }\n >\n {mask}\n </Group>\n </Group>\n );\n};\n"],"mappings":"AACA,OAAOA,KAAK,MAAM,OAAO;AAEzB,SAASC,KAAK,QAAQ,SAAS;AAC/B,SAASC,eAAe,QAAQ,gCAAgC;AAChE,SAASC,KAAK,QAAQ,SAAS;AAS/B,OAAO,MAAMC,IAAI,GAAGA,CAAC;EACnBC,QAAQ;EACRC,IAAI;EACJC,IAAI,GAAG,OAAO;EACdC,IAAI,GAAG;AACE,CAAC,KAAK;EACf,oBACER,KAAA,CAAAS,aAAA,CAACR,KAAK;IAACS,KAAK;EAAA,GACTL,QAAQ,eASTL,KAAA,CAAAS,aAAA,CAACR,KAAK;IACJS,KAAK,eACHV,KAAA,CAAAS,aAAA,CAACN,KAAK;MAACQ,SAAS,EAAEH,IAAI,GAAG,OAAO,GAAG;IAAU,GAC1CD,IAAI,KAAK,WAAW,iBAAIP,KAAA,CAAAS,aAAA,CAACP,eAAe,MAAE,CACtC;EACR,GAEAI,IACI,CACF,CAAC;AAEZ,CAAC","ignoreList":[]}
@@ -86,12 +86,17 @@ export const multiply4 = (a, b) => {
86
86
  }
87
87
  return result;
88
88
  };
89
- const skewY = angle => {
89
+
90
+ // These matrices are row-major, so the shear factor of skewX - which offsets x
91
+ // in proportion to y - belongs in row 0, column 1, and skewY's in row 1,
92
+ // column 0. React Native's MatrixMath stores the same transforms column-major,
93
+ // and porting its indices verbatim is what swapped the two axes here.
94
+ const skewX = angle => {
90
95
  "worklet";
91
96
 
92
97
  return [1, Math.tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
93
98
  };
94
- const skewX = angle => {
99
+ const skewY = angle => {
95
100
  "worklet";
96
101
 
97
102
  return [1, 0, 0, 0, Math.tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];
@@ -1 +1 @@
1
- {"version":3,"names":["exhaustiveCheck","a","Error","Matrix4","translate","x","y","z","perspective","p","normalizeVec","vec","length","Math","sqrt","rotatedUnitSinCos","axisVec","sinAngle","cosAngle","c","s","t","matrixVecMul4","m","v","mapPoint3d","r","multiply4","b","result","Array","fill","i","j","skewY","angle","tan","skewX","toMatrix3","rotate","axis","value","sin","cos","pivot","scale","sx","sy","sz","m4","rotateAxis","rotateZ","rotateX","rotateY","processTransform3d","transforms","reduce","acc","val","key","Object","keys","transform","convertToColumnMajor","rowMajorMatrix","colMajorMatrix","size","row","col","convertToColumnMajor3","convertToAffineMatrix","d","tx","ty","det3x3","a00","a01","a02","a10","a11","a12","a20","a21","a22","invert4","a03","a13","a23","a30","a31","a32","a33","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","det","abs","invDet","vecSub","vecCross","lookat","eyeVec","centerVec","upVec","f","u","uf","perspectiveMatrix","near","far","dInv","halfAngle","cot","setupCamera","area","zscale","cam","camera","eye","coa","up","center","viewScale","viewport"],"sources":["Matrix4.ts"],"sourcesContent":["type Point = { x: number; y: number };\ntype Vec2 = readonly [number, number];\nexport type Vec3 = readonly [number, number, number];\nexport type Vec4 = readonly [number, number, number, number];\n\nexport type Matrix3 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\nexport type Matrix4 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\ntype Transform3dName =\n | \"translateX\"\n | \"translateY\"\n | \"translateZ\"\n | \"translate\"\n | \"scale\"\n | \"scaleX\"\n | \"scaleY\"\n | \"skewX\"\n | \"skewY\"\n | \"rotateZ\"\n | \"rotate\"\n | \"perspective\"\n | \"rotateX\"\n | \"rotateY\"\n | \"matrix\";\n\ntype Transformations = {\n [Name in Transform3dName]: Name extends \"matrix\"\n ? Matrix4\n : Name extends \"translate\"\n ? Vec3 | Vec2\n : number;\n};\n\ntype Transform3d =\n | Pick<Transformations, \"translateX\">\n | Pick<Transformations, \"translateY\">\n | Pick<Transformations, \"translateZ\">\n | Pick<Transformations, \"translate\">\n | Pick<Transformations, \"scale\">\n | Pick<Transformations, \"scaleX\">\n | Pick<Transformations, \"scaleY\">\n | Pick<Transformations, \"skewX\">\n | Pick<Transformations, \"skewY\">\n | Pick<Transformations, \"perspective\">\n | Pick<Transformations, \"rotateX\">\n | Pick<Transformations, \"rotateY\">\n | Pick<Transformations, \"rotateZ\">\n | Pick<Transformations, \"rotate\">\n | Pick<Transformations, \"matrix\">;\n\nexport type Transforms3d = Transform3d[];\n\nconst exhaustiveCheck = (a: never): never => {\n \"worklet\";\n throw new Error(`Unexhaustive handling for ${a}`);\n};\n\n/**\n * @worklet\n */\nexport const Matrix4 = (): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const translate = (x: number, y: number, z = 0): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const perspective = (p: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1 / p, 1];\n};\n\nconst normalizeVec = (vec: Vec3): Vec3 => {\n \"worklet\";\n const [x, y, z] = vec;\n const length = Math.sqrt(x * x + y * y + z * z);\n // Check for zero length to avoid division by zero\n if (length === 0) {\n return [0, 0, 0];\n }\n return [x / length, y / length, z / length];\n};\n\nconst rotatedUnitSinCos = (\n axisVec: Vec3,\n sinAngle: number,\n cosAngle: number\n): Matrix4 => {\n \"worklet\";\n const x = axisVec[0];\n const y = axisVec[1];\n const z = axisVec[2];\n const c = cosAngle;\n const s = sinAngle;\n const t = 1 - c;\n return [\n t * x * x + c,\n t * x * y - s * z,\n t * x * z + s * y,\n 0,\n t * x * y + s * z,\n t * y * y + c,\n t * y * z - s * x,\n 0,\n t * x * z - s * y,\n t * y * z + s * x,\n t * z * z + c,\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n};\n\n/**\n * @worklet\n */\nexport const matrixVecMul4 = (m: Matrix4, v: Vec4): Vec4 => {\n \"worklet\";\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * v[3],\n m[4] * v[0] + m[5] * v[1] + m[6] * v[2] + m[7] * v[3],\n m[8] * v[0] + m[9] * v[1] + m[10] * v[2] + m[11] * v[3],\n m[12] * v[0] + m[13] * v[1] + m[14] * v[2] + m[15] * v[3],\n ];\n};\n\n/**\n * @worklet\n */\nexport const mapPoint3d = (m: Matrix4, v: Vec3) => {\n \"worklet\";\n const r = matrixVecMul4(m, [...v, 1]);\n return [r[0] / r[3], r[1] / r[3], r[2] / r[3]] as const;\n};\n\n/**\n * @worklet\n */\nexport const multiply4 = (a: Matrix4, b: Matrix4): Matrix4 => {\n \"worklet\";\n const result = new Array(16).fill(0);\n for (let i = 0; i < 4; i++) {\n for (let j = 0; j < 4; j++) {\n result[i * 4 + j] =\n a[i * 4] * b[j] +\n a[i * 4 + 1] * b[j + 4] +\n a[i * 4 + 2] * b[j + 8] +\n a[i * 4 + 3] * b[j + 12];\n }\n }\n return result as unknown as Matrix4;\n};\n\nconst skewY = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, Math.tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\nconst skewX = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, Math.tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const toMatrix3 = (m: Matrix4) => {\n \"worklet\";\n return [m[0], m[1], m[3], m[4], m[5], m[7], m[12], m[13], m[15]];\n};\n\nconst rotate = (axis: Vec3, value: number) => {\n \"worklet\";\n return rotatedUnitSinCos(\n normalizeVec(axis),\n Math.sin(value),\n Math.cos(value)\n );\n};\n\n/**\n * @worklet\n */\nexport const pivot = (m: Matrix4, p: Point) => {\n \"worklet\";\n return multiply4(translate(p.x, p.y), multiply4(m, translate(-p.x, -p.y)));\n};\n\n/**\n * @worklet\n */\nexport const scale = (sx: number, sy: number, sz = 1, p?: Point): Matrix4 => {\n \"worklet\";\n const m4: Matrix4 = [sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1];\n if (p) {\n return pivot(m4, p);\n }\n return m4;\n};\n\nconst rotateAxis = (axis: Vec3, angle: number, p?: Point) => {\n \"worklet\";\n const result = rotate(axis, angle);\n if (p) {\n return pivot(result, p);\n }\n return result;\n};\n\n/**\n * @worklet\n */\nexport const rotateZ = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 0, 1], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateX = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([1, 0, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateY = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 1, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const processTransform3d = (transforms: Transforms3d) => {\n \"worklet\";\n return transforms.reduce((acc, val) => {\n const key = Object.keys(val)[0] as Transform3dName;\n const transform = val as Pick<Transformations, typeof key>;\n if (key === \"translateX\") {\n const value = transform[key];\n return multiply4(acc, translate(value, 0, 0));\n }\n if (key === \"translate\") {\n const [x, y, z = 0] = transform[key];\n return multiply4(acc, translate(x, y, z));\n }\n if (key === \"translateY\") {\n const value = transform[key];\n return multiply4(acc, translate(0, value, 0));\n }\n if (key === \"translateZ\") {\n const value = transform[key];\n return multiply4(acc, translate(0, 0, value));\n }\n if (key === \"scale\") {\n const value = transform[key];\n return multiply4(acc, scale(value, value, 1));\n }\n if (key === \"scaleX\") {\n const value = transform[key];\n return multiply4(acc, scale(value, 1, 1));\n }\n if (key === \"scaleY\") {\n const value = transform[key];\n return multiply4(acc, scale(1, value, 1));\n }\n if (key === \"skewX\") {\n const value = transform[key];\n return multiply4(acc, skewX(value));\n }\n if (key === \"skewY\") {\n const value = transform[key];\n return multiply4(acc, skewY(value));\n }\n if (key === \"rotateX\") {\n const value = transform[key];\n return multiply4(acc, rotate([1, 0, 0], value));\n }\n if (key === \"rotateY\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 1, 0], value));\n }\n if (key === \"perspective\") {\n const value = transform[key];\n return multiply4(acc, perspective(value));\n }\n if (key === \"rotate\" || key === \"rotateZ\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 0, 1], value));\n }\n if (key === \"matrix\") {\n const value = transform[key];\n return multiply4(acc, value);\n }\n return exhaustiveCheck(key);\n }, Matrix4());\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor = (rowMajorMatrix: Matrix4) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(16);\n const size = 4;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix as unknown as Matrix4;\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor3 = (rowMajorMatrix: Matrix3 | number[]) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(9);\n const size = 3;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix as unknown as Matrix3;\n};\n\n/**\n * @worklet\n */\nexport const convertToAffineMatrix = (m4: Matrix4) => {\n \"worklet\";\n // Extracting the relevant components from the 4x4 matrix\n const a = m4[0]; // Scale X\n const b = m4[1]; // Skew Y\n const c = m4[4]; // Skew X\n const d = m4[5]; // Scale Y\n const tx = m4[12]; // Translate X\n const ty = m4[13]; // Translate Y\n\n // Returning the 6-element affine transformation matrix\n return [a, b, c, d, tx, ty];\n};\n\n/**\n * Calculates the determinant of a 3x3 matrix\n * @worklet\n */\nconst det3x3 = (\n a00: number,\n a01: number,\n a02: number,\n a10: number,\n a11: number,\n a12: number,\n a20: number,\n a21: number,\n a22: number\n): number => {\n \"worklet\";\n return (\n a00 * (a11 * a22 - a12 * a21) +\n a01 * (a12 * a20 - a10 * a22) +\n a02 * (a10 * a21 - a11 * a20)\n );\n};\n\n/**\n * Inverts a 4x4 matrix\n * @worklet\n * @returns The inverted matrix, or the identity matrix if the input is not invertible\n */\nexport const invert4 = (m: Matrix4): Matrix4 => {\n \"worklet\";\n\n const a00 = m[0],\n a01 = m[1],\n a02 = m[2],\n a03 = m[3];\n const a10 = m[4],\n a11 = m[5],\n a12 = m[6],\n a13 = m[7];\n const a20 = m[8],\n a21 = m[9],\n a22 = m[10],\n a23 = m[11];\n const a30 = m[12],\n a31 = m[13],\n a32 = m[14],\n a33 = m[15];\n\n // Calculate cofactors\n const b00 = det3x3(a11, a12, a13, a21, a22, a23, a31, a32, a33);\n const b01 = -det3x3(a10, a12, a13, a20, a22, a23, a30, a32, a33);\n const b02 = det3x3(a10, a11, a13, a20, a21, a23, a30, a31, a33);\n const b03 = -det3x3(a10, a11, a12, a20, a21, a22, a30, a31, a32);\n\n const b10 = -det3x3(a01, a02, a03, a21, a22, a23, a31, a32, a33);\n const b11 = det3x3(a00, a02, a03, a20, a22, a23, a30, a32, a33);\n const b12 = -det3x3(a00, a01, a03, a20, a21, a23, a30, a31, a33);\n const b13 = det3x3(a00, a01, a02, a20, a21, a22, a30, a31, a32);\n\n const b20 = det3x3(a01, a02, a03, a11, a12, a13, a31, a32, a33);\n const b21 = -det3x3(a00, a02, a03, a10, a12, a13, a30, a32, a33);\n const b22 = det3x3(a00, a01, a03, a10, a11, a13, a30, a31, a33);\n const b23 = -det3x3(a00, a01, a02, a10, a11, a12, a30, a31, a32);\n\n const b30 = -det3x3(a01, a02, a03, a11, a12, a13, a21, a22, a23);\n const b31 = det3x3(a00, a02, a03, a10, a12, a13, a20, a22, a23);\n const b32 = -det3x3(a00, a01, a03, a10, a11, a13, a20, a21, a23);\n const b33 = det3x3(a00, a01, a02, a10, a11, a12, a20, a21, a22);\n\n // Calculate determinant\n const det = a00 * b00 + a01 * b01 + a02 * b02 + a03 * b03;\n\n // Check if matrix is invertible\n if (Math.abs(det) < 1e-8) {\n // Return identity matrix if not invertible\n return Matrix4();\n }\n\n const invDet = 1.0 / det;\n\n // Calculate inverse matrix\n return [\n b00 * invDet,\n b10 * invDet,\n b20 * invDet,\n b30 * invDet,\n b01 * invDet,\n b11 * invDet,\n b21 * invDet,\n b31 * invDet,\n b02 * invDet,\n b12 * invDet,\n b22 * invDet,\n b32 * invDet,\n b03 * invDet,\n b13 * invDet,\n b23 * invDet,\n b33 * invDet,\n ] as Matrix4;\n};\n\nconst vecSub = (a: Vec3, b: Vec3): Vec3 => {\n \"worklet\";\n return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];\n};\n\nconst vecCross = (a: Vec3, b: Vec3): Vec3 => {\n \"worklet\";\n return [\n a[1] * b[2] - a[2] * b[1],\n a[2] * b[0] - a[0] * b[2],\n a[0] * b[1] - a[1] * b[0],\n ];\n};\n\nconst lookat = (eyeVec: Vec3, centerVec: Vec3, upVec: Vec3): Matrix4 => {\n \"worklet\";\n const f = normalizeVec(vecSub(centerVec, eyeVec));\n const u = normalizeVec(upVec);\n const s = normalizeVec(vecCross(f, u));\n const uf = vecCross(s, f);\n\n // Build the look-at matrix directly\n const m: Matrix4 = [\n s[0],\n uf[0],\n -f[0],\n eyeVec[0],\n s[1],\n uf[1],\n -f[1],\n eyeVec[1],\n s[2],\n uf[2],\n -f[2],\n eyeVec[2],\n 0,\n 0,\n 0,\n 1,\n ];\n\n return invert4(m);\n};\n\nconst perspectiveMatrix = (\n near: number,\n far: number,\n angle: number\n): Matrix4 => {\n \"worklet\";\n const dInv = 1 / (far - near);\n const halfAngle = angle / 2;\n const cot = Math.cos(halfAngle) / Math.sin(halfAngle);\n return [\n cot,\n 0,\n 0,\n 0,\n 0,\n cot,\n 0,\n 0,\n 0,\n 0,\n (far + near) * dInv,\n 2 * far * near * dInv,\n 0,\n 0,\n -1,\n 1,\n ];\n};\n\nexport interface CameraConfig {\n eye: Vec3;\n coa: Vec3;\n up: Vec3;\n near: number;\n far: number;\n angle: number;\n}\n\nexport const setupCamera = (\n area: Vec4,\n zscale: number,\n cam: CameraConfig\n): Matrix4 => {\n \"worklet\";\n const camera = lookat(cam.eye, cam.coa, cam.up);\n const p = perspectiveMatrix(cam.near, cam.far, cam.angle);\n const center: Vec3 = [(area[0] + area[2]) / 2, (area[1] + area[3]) / 2, 0];\n const viewScale: Vec3 = [\n (area[2] - area[0]) / 2,\n (area[3] - area[1]) / 2,\n zscale,\n ];\n const viewport = multiply4(\n translate(center[0], center[1], center[2]),\n scale(viewScale[0], viewScale[1], viewScale[2])\n );\n return multiply4(\n multiply4(viewport, p),\n multiply4(camera, invert4(viewport))\n );\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["exhaustiveCheck","a","Error","Matrix4","translate","x","y","z","perspective","p","normalizeVec","vec","length","Math","sqrt","rotatedUnitSinCos","axisVec","sinAngle","cosAngle","c","s","t","matrixVecMul4","m","v","mapPoint3d","r","multiply4","b","result","Array","fill","i","j","skewX","angle","tan","skewY","toMatrix3","rotate","axis","value","sin","cos","pivot","scale","sx","sy","sz","m4","rotateAxis","rotateZ","rotateX","rotateY","processTransform3d","transforms","reduce","acc","val","key","Object","keys","transform","convertToColumnMajor","rowMajorMatrix","colMajorMatrix","size","row","col","convertToColumnMajor3","convertToAffineMatrix","d","tx","ty","det3x3","a00","a01","a02","a10","a11","a12","a20","a21","a22","invert4","a03","a13","a23","a30","a31","a32","a33","b00","b01","b02","b03","b10","b11","b12","b13","b20","b21","b22","b23","b30","b31","b32","b33","det","abs","invDet","vecSub","vecCross","lookat","eyeVec","centerVec","upVec","f","u","uf","perspectiveMatrix","near","far","dInv","halfAngle","cot","setupCamera","area","zscale","cam","camera","eye","coa","up","center","viewScale","viewport"],"sources":["Matrix4.ts"],"sourcesContent":["type Point = { x: number; y: number };\ntype Vec2 = readonly [number, number];\nexport type Vec3 = readonly [number, number, number];\nexport type Vec4 = readonly [number, number, number, number];\n\nexport type Matrix3 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\nexport type Matrix4 = readonly [\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n number,\n];\n\ntype Transform3dName =\n | \"translateX\"\n | \"translateY\"\n | \"translateZ\"\n | \"translate\"\n | \"scale\"\n | \"scaleX\"\n | \"scaleY\"\n | \"skewX\"\n | \"skewY\"\n | \"rotateZ\"\n | \"rotate\"\n | \"perspective\"\n | \"rotateX\"\n | \"rotateY\"\n | \"matrix\";\n\ntype Transformations = {\n [Name in Transform3dName]: Name extends \"matrix\"\n ? Matrix4\n : Name extends \"translate\"\n ? Vec3 | Vec2\n : number;\n};\n\ntype Transform3d =\n | Pick<Transformations, \"translateX\">\n | Pick<Transformations, \"translateY\">\n | Pick<Transformations, \"translateZ\">\n | Pick<Transformations, \"translate\">\n | Pick<Transformations, \"scale\">\n | Pick<Transformations, \"scaleX\">\n | Pick<Transformations, \"scaleY\">\n | Pick<Transformations, \"skewX\">\n | Pick<Transformations, \"skewY\">\n | Pick<Transformations, \"perspective\">\n | Pick<Transformations, \"rotateX\">\n | Pick<Transformations, \"rotateY\">\n | Pick<Transformations, \"rotateZ\">\n | Pick<Transformations, \"rotate\">\n | Pick<Transformations, \"matrix\">;\n\nexport type Transforms3d = Transform3d[];\n\nconst exhaustiveCheck = (a: never): never => {\n \"worklet\";\n throw new Error(`Unexhaustive handling for ${a}`);\n};\n\n/**\n * @worklet\n */\nexport const Matrix4 = (): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const translate = (x: number, y: number, z = 0): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, x, 0, 1, 0, y, 0, 0, 1, z, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const perspective = (p: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, -1 / p, 1];\n};\n\nconst normalizeVec = (vec: Vec3): Vec3 => {\n \"worklet\";\n const [x, y, z] = vec;\n const length = Math.sqrt(x * x + y * y + z * z);\n // Check for zero length to avoid division by zero\n if (length === 0) {\n return [0, 0, 0];\n }\n return [x / length, y / length, z / length];\n};\n\nconst rotatedUnitSinCos = (\n axisVec: Vec3,\n sinAngle: number,\n cosAngle: number\n): Matrix4 => {\n \"worklet\";\n const x = axisVec[0];\n const y = axisVec[1];\n const z = axisVec[2];\n const c = cosAngle;\n const s = sinAngle;\n const t = 1 - c;\n return [\n t * x * x + c,\n t * x * y - s * z,\n t * x * z + s * y,\n 0,\n t * x * y + s * z,\n t * y * y + c,\n t * y * z - s * x,\n 0,\n t * x * z - s * y,\n t * y * z + s * x,\n t * z * z + c,\n 0,\n 0,\n 0,\n 0,\n 1,\n ];\n};\n\n/**\n * @worklet\n */\nexport const matrixVecMul4 = (m: Matrix4, v: Vec4): Vec4 => {\n \"worklet\";\n return [\n m[0] * v[0] + m[1] * v[1] + m[2] * v[2] + m[3] * v[3],\n m[4] * v[0] + m[5] * v[1] + m[6] * v[2] + m[7] * v[3],\n m[8] * v[0] + m[9] * v[1] + m[10] * v[2] + m[11] * v[3],\n m[12] * v[0] + m[13] * v[1] + m[14] * v[2] + m[15] * v[3],\n ];\n};\n\n/**\n * @worklet\n */\nexport const mapPoint3d = (m: Matrix4, v: Vec3) => {\n \"worklet\";\n const r = matrixVecMul4(m, [...v, 1]);\n return [r[0] / r[3], r[1] / r[3], r[2] / r[3]] as const;\n};\n\n/**\n * @worklet\n */\nexport const multiply4 = (a: Matrix4, b: Matrix4): Matrix4 => {\n \"worklet\";\n const result = new Array(16).fill(0);\n for (let i = 0; i < 4; i++) {\n for (let j = 0; j < 4; j++) {\n result[i * 4 + j] =\n a[i * 4] * b[j] +\n a[i * 4 + 1] * b[j + 4] +\n a[i * 4 + 2] * b[j + 8] +\n a[i * 4 + 3] * b[j + 12];\n }\n }\n return result as unknown as Matrix4;\n};\n\n// These matrices are row-major, so the shear factor of skewX - which offsets x\n// in proportion to y - belongs in row 0, column 1, and skewY's in row 1,\n// column 0. React Native's MatrixMath stores the same transforms column-major,\n// and porting its indices verbatim is what swapped the two axes here.\nconst skewX = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, Math.tan(angle), 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\nconst skewY = (angle: number): Matrix4 => {\n \"worklet\";\n return [1, 0, 0, 0, Math.tan(angle), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1];\n};\n\n/**\n * @worklet\n */\nexport const toMatrix3 = (m: Matrix4) => {\n \"worklet\";\n return [m[0], m[1], m[3], m[4], m[5], m[7], m[12], m[13], m[15]];\n};\n\nconst rotate = (axis: Vec3, value: number) => {\n \"worklet\";\n return rotatedUnitSinCos(\n normalizeVec(axis),\n Math.sin(value),\n Math.cos(value)\n );\n};\n\n/**\n * @worklet\n */\nexport const pivot = (m: Matrix4, p: Point) => {\n \"worklet\";\n return multiply4(translate(p.x, p.y), multiply4(m, translate(-p.x, -p.y)));\n};\n\n/**\n * @worklet\n */\nexport const scale = (sx: number, sy: number, sz = 1, p?: Point): Matrix4 => {\n \"worklet\";\n const m4: Matrix4 = [sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1];\n if (p) {\n return pivot(m4, p);\n }\n return m4;\n};\n\nconst rotateAxis = (axis: Vec3, angle: number, p?: Point) => {\n \"worklet\";\n const result = rotate(axis, angle);\n if (p) {\n return pivot(result, p);\n }\n return result;\n};\n\n/**\n * @worklet\n */\nexport const rotateZ = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 0, 1], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateX = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([1, 0, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const rotateY = (value: number, p?: Point) => {\n \"worklet\";\n return rotateAxis([0, 1, 0], value, p);\n};\n\n/**\n * @worklet\n */\nexport const processTransform3d = (transforms: Transforms3d) => {\n \"worklet\";\n return transforms.reduce((acc, val) => {\n const key = Object.keys(val)[0] as Transform3dName;\n const transform = val as Pick<Transformations, typeof key>;\n if (key === \"translateX\") {\n const value = transform[key];\n return multiply4(acc, translate(value, 0, 0));\n }\n if (key === \"translate\") {\n const [x, y, z = 0] = transform[key];\n return multiply4(acc, translate(x, y, z));\n }\n if (key === \"translateY\") {\n const value = transform[key];\n return multiply4(acc, translate(0, value, 0));\n }\n if (key === \"translateZ\") {\n const value = transform[key];\n return multiply4(acc, translate(0, 0, value));\n }\n if (key === \"scale\") {\n const value = transform[key];\n return multiply4(acc, scale(value, value, 1));\n }\n if (key === \"scaleX\") {\n const value = transform[key];\n return multiply4(acc, scale(value, 1, 1));\n }\n if (key === \"scaleY\") {\n const value = transform[key];\n return multiply4(acc, scale(1, value, 1));\n }\n if (key === \"skewX\") {\n const value = transform[key];\n return multiply4(acc, skewX(value));\n }\n if (key === \"skewY\") {\n const value = transform[key];\n return multiply4(acc, skewY(value));\n }\n if (key === \"rotateX\") {\n const value = transform[key];\n return multiply4(acc, rotate([1, 0, 0], value));\n }\n if (key === \"rotateY\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 1, 0], value));\n }\n if (key === \"perspective\") {\n const value = transform[key];\n return multiply4(acc, perspective(value));\n }\n if (key === \"rotate\" || key === \"rotateZ\") {\n const value = transform[key];\n return multiply4(acc, rotate([0, 0, 1], value));\n }\n if (key === \"matrix\") {\n const value = transform[key];\n return multiply4(acc, value);\n }\n return exhaustiveCheck(key);\n }, Matrix4());\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor = (rowMajorMatrix: Matrix4) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(16);\n const size = 4;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix as unknown as Matrix4;\n};\n\n/**\n * @worklet\n */\nexport const convertToColumnMajor3 = (rowMajorMatrix: Matrix3 | number[]) => {\n \"worklet\";\n\n const colMajorMatrix = new Array<number>(9);\n const size = 3;\n for (let row = 0; row < size; row++) {\n for (let col = 0; col < size; col++) {\n colMajorMatrix[col * size + row] = rowMajorMatrix[row * size + col];\n }\n }\n return colMajorMatrix as unknown as Matrix3;\n};\n\n/**\n * @worklet\n */\nexport const convertToAffineMatrix = (m4: Matrix4) => {\n \"worklet\";\n // Extracting the relevant components from the 4x4 matrix\n const a = m4[0]; // Scale X\n const b = m4[1]; // Skew Y\n const c = m4[4]; // Skew X\n const d = m4[5]; // Scale Y\n const tx = m4[12]; // Translate X\n const ty = m4[13]; // Translate Y\n\n // Returning the 6-element affine transformation matrix\n return [a, b, c, d, tx, ty];\n};\n\n/**\n * Calculates the determinant of a 3x3 matrix\n * @worklet\n */\nconst det3x3 = (\n a00: number,\n a01: number,\n a02: number,\n a10: number,\n a11: number,\n a12: number,\n a20: number,\n a21: number,\n a22: number\n): number => {\n \"worklet\";\n return (\n a00 * (a11 * a22 - a12 * a21) +\n a01 * (a12 * a20 - a10 * a22) +\n a02 * (a10 * a21 - a11 * a20)\n );\n};\n\n/**\n * Inverts a 4x4 matrix\n * @worklet\n * @returns The inverted matrix, or the identity matrix if the input is not invertible\n */\nexport const invert4 = (m: Matrix4): Matrix4 => {\n \"worklet\";\n\n const a00 = m[0],\n a01 = m[1],\n a02 = m[2],\n a03 = m[3];\n const a10 = m[4],\n a11 = m[5],\n a12 = m[6],\n a13 = m[7];\n const a20 = m[8],\n a21 = m[9],\n a22 = m[10],\n a23 = m[11];\n const a30 = m[12],\n a31 = m[13],\n a32 = m[14],\n a33 = m[15];\n\n // Calculate cofactors\n const b00 = det3x3(a11, a12, a13, a21, a22, a23, a31, a32, a33);\n const b01 = -det3x3(a10, a12, a13, a20, a22, a23, a30, a32, a33);\n const b02 = det3x3(a10, a11, a13, a20, a21, a23, a30, a31, a33);\n const b03 = -det3x3(a10, a11, a12, a20, a21, a22, a30, a31, a32);\n\n const b10 = -det3x3(a01, a02, a03, a21, a22, a23, a31, a32, a33);\n const b11 = det3x3(a00, a02, a03, a20, a22, a23, a30, a32, a33);\n const b12 = -det3x3(a00, a01, a03, a20, a21, a23, a30, a31, a33);\n const b13 = det3x3(a00, a01, a02, a20, a21, a22, a30, a31, a32);\n\n const b20 = det3x3(a01, a02, a03, a11, a12, a13, a31, a32, a33);\n const b21 = -det3x3(a00, a02, a03, a10, a12, a13, a30, a32, a33);\n const b22 = det3x3(a00, a01, a03, a10, a11, a13, a30, a31, a33);\n const b23 = -det3x3(a00, a01, a02, a10, a11, a12, a30, a31, a32);\n\n const b30 = -det3x3(a01, a02, a03, a11, a12, a13, a21, a22, a23);\n const b31 = det3x3(a00, a02, a03, a10, a12, a13, a20, a22, a23);\n const b32 = -det3x3(a00, a01, a03, a10, a11, a13, a20, a21, a23);\n const b33 = det3x3(a00, a01, a02, a10, a11, a12, a20, a21, a22);\n\n // Calculate determinant\n const det = a00 * b00 + a01 * b01 + a02 * b02 + a03 * b03;\n\n // Check if matrix is invertible\n if (Math.abs(det) < 1e-8) {\n // Return identity matrix if not invertible\n return Matrix4();\n }\n\n const invDet = 1.0 / det;\n\n // Calculate inverse matrix\n return [\n b00 * invDet,\n b10 * invDet,\n b20 * invDet,\n b30 * invDet,\n b01 * invDet,\n b11 * invDet,\n b21 * invDet,\n b31 * invDet,\n b02 * invDet,\n b12 * invDet,\n b22 * invDet,\n b32 * invDet,\n b03 * invDet,\n b13 * invDet,\n b23 * invDet,\n b33 * invDet,\n ] as Matrix4;\n};\n\nconst vecSub = (a: Vec3, b: Vec3): Vec3 => {\n \"worklet\";\n return [a[0] - b[0], a[1] - b[1], a[2] - b[2]];\n};\n\nconst vecCross = (a: Vec3, b: Vec3): Vec3 => {\n \"worklet\";\n return [\n a[1] * b[2] - a[2] * b[1],\n a[2] * b[0] - a[0] * b[2],\n a[0] * b[1] - a[1] * b[0],\n ];\n};\n\nconst lookat = (eyeVec: Vec3, centerVec: Vec3, upVec: Vec3): Matrix4 => {\n \"worklet\";\n const f = normalizeVec(vecSub(centerVec, eyeVec));\n const u = normalizeVec(upVec);\n const s = normalizeVec(vecCross(f, u));\n const uf = vecCross(s, f);\n\n // Build the look-at matrix directly\n const m: Matrix4 = [\n s[0],\n uf[0],\n -f[0],\n eyeVec[0],\n s[1],\n uf[1],\n -f[1],\n eyeVec[1],\n s[2],\n uf[2],\n -f[2],\n eyeVec[2],\n 0,\n 0,\n 0,\n 1,\n ];\n\n return invert4(m);\n};\n\nconst perspectiveMatrix = (\n near: number,\n far: number,\n angle: number\n): Matrix4 => {\n \"worklet\";\n const dInv = 1 / (far - near);\n const halfAngle = angle / 2;\n const cot = Math.cos(halfAngle) / Math.sin(halfAngle);\n return [\n cot,\n 0,\n 0,\n 0,\n 0,\n cot,\n 0,\n 0,\n 0,\n 0,\n (far + near) * dInv,\n 2 * far * near * dInv,\n 0,\n 0,\n -1,\n 1,\n ];\n};\n\nexport interface CameraConfig {\n eye: Vec3;\n coa: Vec3;\n up: Vec3;\n near: number;\n far: number;\n angle: number;\n}\n\nexport const setupCamera = (\n area: Vec4,\n zscale: number,\n cam: CameraConfig\n): Matrix4 => {\n \"worklet\";\n const camera = lookat(cam.eye, cam.coa, cam.up);\n const p = perspectiveMatrix(cam.near, cam.far, cam.angle);\n const center: Vec3 = [(area[0] + area[2]) / 2, (area[1] + area[3]) / 2, 0];\n const viewScale: Vec3 = [\n (area[2] - area[0]) / 2,\n (area[3] - area[1]) / 2,\n zscale,\n ];\n const viewport = multiply4(\n translate(center[0], center[1], center[2]),\n scale(viewScale[0], viewScale[1], viewScale[2])\n );\n return multiply4(\n multiply4(viewport, p),\n multiply4(camera, invert4(viewport))\n );\n};\n"],"mappings":"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","ignoreList":[]}
@@ -17,7 +17,7 @@ import type { SkVertices, VertexMode } from "./Vertices/Vertices";
17
17
  import type { DataFactory } from "./Data";
18
18
  import type { SVGFactory } from "./SVG";
19
19
  import type { TextBlobFactory } from "./TextBlob";
20
- import type { SkSurface, SurfaceFactory } from "./Surface";
20
+ import type { SurfaceFactory } from "./Surface";
21
21
  import type { SkRSXform } from "./RSXform";
22
22
  import type { SkPath } from "./Path/Path";
23
23
  import type { SkContourMeasureIter } from "./ContourMeasure";
@@ -30,10 +30,6 @@ import type { Video } from "./Video";
30
30
  import type { NativeBufferFactory } from "./NativeBuffer";
31
31
  import type { JsiRecorder } from "./Recorder";
32
32
  import type { SkottieFactory } from "./Skottie";
33
- export interface SkiaContext {
34
- getSurface(): SkSurface;
35
- present(): void;
36
- }
37
33
  /**
38
34
  * Declares the interface for the native Skia API
39
35
  */
@@ -82,7 +78,6 @@ export interface Skia {
82
78
  ParagraphBuilder: ParagraphBuilderFactory;
83
79
  Skottie: SkottieFactory;
84
80
  Video: (url: string) => Promise<Video> | Video;
85
- Context(surface: bigint, width: number, height: number): SkiaContext;
86
81
  NativeBuffer: NativeBufferFactory;
87
82
  Recorder(): JsiRecorder;
88
83
  /**
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["Skia.ts"],"sourcesContent":["import type { ImageFilterFactory } from \"./ImageFilter\";\nimport type { PathFactory, PathBuilderFactory } from \"./Path\";\nimport type { ColorFilterFactory } from \"./ColorFilter\";\nimport type { SkFont, FontMgrFactory } from \"./Font\";\nimport type { SkTypeface, TypefaceFactory } from \"./Typeface\";\nimport type { ImageFactory } from \"./Image\";\nimport type { MaskFilterFactory } from \"./MaskFilter\";\nimport type { SkPaint } from \"./Paint\";\nimport type { SkHostRect, SkRect } from \"./Rect\";\nimport type { SkRRect } from \"./RRect\";\nimport type {\n RuntimeEffectFactory,\n SkRuntimeEffect,\n SkRuntimeShaderBuilder,\n} from \"./RuntimeEffect\";\nimport type { ShaderFactory } from \"./Shader\";\nimport type { SkMatrix } from \"./Matrix\";\nimport type { PathEffectFactory } from \"./PathEffect\";\nimport type { SkPoint } from \"./Point\";\nimport type { SkVertices, VertexMode } from \"./Vertices/Vertices\";\nimport type { DataFactory } from \"./Data\";\nimport type { SVGFactory } from \"./SVG\";\nimport type { TextBlobFactory } from \"./TextBlob\";\nimport type { SkSurface, SurfaceFactory } from \"./Surface\";\nimport type { SkRSXform } from \"./RSXform\";\nimport type { SkPath } from \"./Path/Path\";\nimport type { SkContourMeasureIter } from \"./ContourMeasure\";\nimport type { PictureFactory, SkPictureRecorder } from \"./Picture\";\nimport type { Color, SkColor } from \"./Color\";\nimport type { TypefaceFontProviderFactory } from \"./Paragraph/TypefaceFontProviderFactory\";\nimport type { AnimatedImageFactory } from \"./AnimatedImage\";\nimport type { ParagraphBuilderFactory } from \"./Paragraph/ParagraphBuilder\";\nimport type { Video } from \"./Video\";\nimport type { NativeBufferFactory } from \"./NativeBuffer\";\nimport type { JsiRecorder } from \"./Recorder\";\nimport type { SkottieFactory } from \"./Skottie\";\n\nexport interface SkiaContext {\n getSurface(): SkSurface;\n present(): void;\n}\n\n/**\n * Declares the interface for the native Skia API\n */\nexport interface Skia {\n Point: (x: number, y: number) => SkPoint;\n XYWHRect: (x: number, y: number, width: number, height: number) => SkHostRect;\n RuntimeShaderBuilder: (rt: SkRuntimeEffect) => SkRuntimeShaderBuilder;\n RRectXY: (rect: SkRect, rx: number, ry: number) => SkRRect;\n RSXform: (scos: number, ssin: number, tx: number, ty: number) => SkRSXform;\n RSXformFromRadians: (\n scale: number,\n radians: number,\n tx: number,\n ty: number,\n px: number,\n py: number\n ) => SkRSXform;\n Color: (color: Color) => SkColor;\n ContourMeasureIter: (\n path: SkPath,\n forceClosed: boolean,\n resScale: number\n ) => SkContourMeasureIter;\n Paint: () => SkPaint;\n PictureRecorder: () => SkPictureRecorder;\n Picture: PictureFactory;\n Path: PathFactory;\n PathBuilder: PathBuilderFactory;\n Matrix: (matrix?: readonly number[]) => SkMatrix;\n ColorFilter: ColorFilterFactory;\n Font: (typeface?: SkTypeface, size?: number) => SkFont;\n Typeface: TypefaceFactory;\n TypefaceFontProvider: TypefaceFontProviderFactory;\n FontMgr: FontMgrFactory;\n MaskFilter: MaskFilterFactory;\n RuntimeEffect: RuntimeEffectFactory;\n ImageFilter: ImageFilterFactory;\n Shader: ShaderFactory;\n PathEffect: PathEffectFactory;\n /**\n * Returns an Vertices based on the given positions and optional parameters.\n * See SkVertices.h (especially the Builder) for more details.\n * @param mode\n * @param positions\n * @param textureCoordinates\n * @param colors - either a list of int colors or a flattened color array.\n * @param indices\n * @param isVolatile\n */\n MakeVertices(\n mode: VertexMode,\n positions: SkPoint[],\n textureCoordinates?: SkPoint[] | null,\n colors?: SkColor[],\n indices?: number[] | null,\n isVolatile?: boolean\n ): SkVertices;\n Data: DataFactory;\n Image: ImageFactory;\n AnimatedImage: AnimatedImageFactory;\n SVG: SVGFactory;\n TextBlob: TextBlobFactory;\n Surface: SurfaceFactory;\n ParagraphBuilder: ParagraphBuilderFactory;\n Skottie: SkottieFactory;\n Video: (url: string) => Promise<Video> | Video;\n Context(surface: bigint, width: number, height: number): SkiaContext;\n NativeBuffer: NativeBufferFactory;\n Recorder(): JsiRecorder;\n /**\n * Raw WGPUDevice pointer of Skia's Graphite device, as a BigInt. Pass it to\n * react-native-webgpu's importDevice() to get a GPUDevice sharing Skia's\n * device (zero-copy interop). Only available on Graphite builds; throws\n * otherwise.\n */\n getNativeDevice(): bigint;\n}\n"],"mappings":"","ignoreList":[]}
1
+ {"version":3,"names":[],"sources":["Skia.ts"],"sourcesContent":["import type { ImageFilterFactory } from \"./ImageFilter\";\nimport type { PathFactory, PathBuilderFactory } from \"./Path\";\nimport type { ColorFilterFactory } from \"./ColorFilter\";\nimport type { SkFont, FontMgrFactory } from \"./Font\";\nimport type { SkTypeface, TypefaceFactory } from \"./Typeface\";\nimport type { ImageFactory } from \"./Image\";\nimport type { MaskFilterFactory } from \"./MaskFilter\";\nimport type { SkPaint } from \"./Paint\";\nimport type { SkHostRect, SkRect } from \"./Rect\";\nimport type { SkRRect } from \"./RRect\";\nimport type {\n RuntimeEffectFactory,\n SkRuntimeEffect,\n SkRuntimeShaderBuilder,\n} from \"./RuntimeEffect\";\nimport type { ShaderFactory } from \"./Shader\";\nimport type { SkMatrix } from \"./Matrix\";\nimport type { PathEffectFactory } from \"./PathEffect\";\nimport type { SkPoint } from \"./Point\";\nimport type { SkVertices, VertexMode } from \"./Vertices/Vertices\";\nimport type { DataFactory } from \"./Data\";\nimport type { SVGFactory } from \"./SVG\";\nimport type { TextBlobFactory } from \"./TextBlob\";\nimport type { SurfaceFactory } from \"./Surface\";\nimport type { SkRSXform } from \"./RSXform\";\nimport type { SkPath } from \"./Path/Path\";\nimport type { SkContourMeasureIter } from \"./ContourMeasure\";\nimport type { PictureFactory, SkPictureRecorder } from \"./Picture\";\nimport type { Color, SkColor } from \"./Color\";\nimport type { TypefaceFontProviderFactory } from \"./Paragraph/TypefaceFontProviderFactory\";\nimport type { AnimatedImageFactory } from \"./AnimatedImage\";\nimport type { ParagraphBuilderFactory } from \"./Paragraph/ParagraphBuilder\";\nimport type { Video } from \"./Video\";\nimport type { NativeBufferFactory } from \"./NativeBuffer\";\nimport type { JsiRecorder } from \"./Recorder\";\nimport type { SkottieFactory } from \"./Skottie\";\n\n/**\n * Declares the interface for the native Skia API\n */\nexport interface Skia {\n Point: (x: number, y: number) => SkPoint;\n XYWHRect: (x: number, y: number, width: number, height: number) => SkHostRect;\n RuntimeShaderBuilder: (rt: SkRuntimeEffect) => SkRuntimeShaderBuilder;\n RRectXY: (rect: SkRect, rx: number, ry: number) => SkRRect;\n RSXform: (scos: number, ssin: number, tx: number, ty: number) => SkRSXform;\n RSXformFromRadians: (\n scale: number,\n radians: number,\n tx: number,\n ty: number,\n px: number,\n py: number\n ) => SkRSXform;\n Color: (color: Color) => SkColor;\n ContourMeasureIter: (\n path: SkPath,\n forceClosed: boolean,\n resScale: number\n ) => SkContourMeasureIter;\n Paint: () => SkPaint;\n PictureRecorder: () => SkPictureRecorder;\n Picture: PictureFactory;\n Path: PathFactory;\n PathBuilder: PathBuilderFactory;\n Matrix: (matrix?: readonly number[]) => SkMatrix;\n ColorFilter: ColorFilterFactory;\n Font: (typeface?: SkTypeface, size?: number) => SkFont;\n Typeface: TypefaceFactory;\n TypefaceFontProvider: TypefaceFontProviderFactory;\n FontMgr: FontMgrFactory;\n MaskFilter: MaskFilterFactory;\n RuntimeEffect: RuntimeEffectFactory;\n ImageFilter: ImageFilterFactory;\n Shader: ShaderFactory;\n PathEffect: PathEffectFactory;\n /**\n * Returns an Vertices based on the given positions and optional parameters.\n * See SkVertices.h (especially the Builder) for more details.\n * @param mode\n * @param positions\n * @param textureCoordinates\n * @param colors - either a list of int colors or a flattened color array.\n * @param indices\n * @param isVolatile\n */\n MakeVertices(\n mode: VertexMode,\n positions: SkPoint[],\n textureCoordinates?: SkPoint[] | null,\n colors?: SkColor[],\n indices?: number[] | null,\n isVolatile?: boolean\n ): SkVertices;\n Data: DataFactory;\n Image: ImageFactory;\n AnimatedImage: AnimatedImageFactory;\n SVG: SVGFactory;\n TextBlob: TextBlobFactory;\n Surface: SurfaceFactory;\n ParagraphBuilder: ParagraphBuilderFactory;\n Skottie: SkottieFactory;\n Video: (url: string) => Promise<Video> | Video;\n NativeBuffer: NativeBufferFactory;\n Recorder(): JsiRecorder;\n /**\n * Raw WGPUDevice pointer of Skia's Graphite device, as a BigInt. Pass it to\n * react-native-webgpu's importDevice() to get a GPUDevice sharing Skia's\n * device (zero-copy interop). Only available on Graphite builds; throws\n * otherwise.\n */\n getNativeDevice(): bigint;\n}\n"],"mappings":"","ignoreList":[]}
@@ -87,9 +87,6 @@ export const JsiSkApi = CanvasKit => ({
87
87
  NativeBuffer: new JsiSkNativeBufferFactory(CanvasKit),
88
88
  Skottie: new JsiSkottieFactory(CanvasKit),
89
89
  Video: createVideo.bind(null, CanvasKit),
90
- Context: (_surface, _width, _height) => {
91
- return throwNotImplementedOnRNWeb();
92
- },
93
90
  Recorder: () => {
94
91
  return throwNotImplementedOnRNWeb();
95
92
  },
@@ -1 +1 @@
1
- {"version":3,"names":["JsiSkPoint","JsiSkPaint","JsiSkRect","Color","JsiSkSurfaceFactory","JsiSkRRect","JsiSkRSXform","JsiSkContourMeasureIter","JsiSkPictureRecorder","JsiSkPictureFactory","JsiSkPathFactory","JsiSkPathBuilderFactory","JsiSkMatrix","JsiSkColorFilterFactory","JsiSkTypefaceFactory","JsiSkMaskFilterFactory","JsiSkRuntimeEffectFactory","JsiSkImageFilterFactory","JsiSkShaderFactory","JsiSkPathEffectFactory","JsiSkDataFactory","JsiSkImageFactory","JsiSkSVGFactory","JsiSkTextBlobFactory","JsiSkFont","MakeVertices","JsiSkPath","JsiSkTypeface","JsiSkTypefaceFontProviderFactory","JsiSkFontMgrFactory","JsiSkAnimatedImageFactory","JsiSkParagraphBuilderFactory","JsiSkNativeBufferFactory","createVideo","throwNotImplementedOnRNWeb","JsiSkottieFactory","JsiSkApi","CanvasKit","Point","x","y","Float32Array","of","RuntimeShaderBuilder","_","RRectXY","rect","rx","ry","RSXform","scos","ssin","tx","ty","RSXformFromRadians","scale","r","px","py","s","Math","sin","c","cos","ContourMeasureIter","path","forceClosed","resScale","p","pathFromValue","iter","delete","Paint","paint","setAntiAlias","PictureRecorder","Picture","Path","PathBuilder","Matrix","matrix","identity","ColorFilter","Font","typeface","size","undefined","fromValue","Typeface","MaskFilter","RuntimeEffect","ImageFilter","Shader","PathEffect","bind","Data","Image","AnimatedImage","SVG","TextBlob","XYWHRect","width","height","Surface","TypefaceFontProvider","FontMgr","ParagraphBuilder","NativeBuffer","Skottie","Video","Context","_surface","_width","_height","Recorder","getNativeDevice"],"sources":["JsiSkia.ts"],"sourcesContent":["import type { CanvasKit } from \"canvaskit-wasm\";\n\nimport type {\n JsiRecorder,\n SkContourMeasureIter,\n Skia,\n SkiaContext,\n SkPath,\n SkRect,\n SkRuntimeEffect,\n SkRuntimeShaderBuilder,\n SkTypeface,\n} from \"../types\";\n\nimport { JsiSkPoint } from \"./JsiSkPoint\";\nimport { JsiSkPaint } from \"./JsiSkPaint\";\nimport { JsiSkRect } from \"./JsiSkRect\";\nimport { Color } from \"./JsiSkColor\";\nimport { JsiSkSurfaceFactory } from \"./JsiSkSurfaceFactory\";\nimport { JsiSkRRect } from \"./JsiSkRRect\";\nimport { JsiSkRSXform } from \"./JsiSkRSXform\";\nimport { JsiSkContourMeasureIter } from \"./JsiSkContourMeasureIter\";\nimport { JsiSkPictureRecorder } from \"./JsiSkPictureRecorder\";\nimport { JsiSkPictureFactory } from \"./JsiSkPictureFactory\";\nimport { JsiSkPathFactory } from \"./JsiSkPathFactory\";\nimport { JsiSkPathBuilderFactory } from \"./JsiSkPathBuilderFactory\";\nimport { JsiSkMatrix } from \"./JsiSkMatrix\";\nimport { JsiSkColorFilterFactory } from \"./JsiSkColorFilterFactory\";\nimport { JsiSkTypefaceFactory } from \"./JsiSkTypefaceFactory\";\nimport { JsiSkMaskFilterFactory } from \"./JsiSkMaskFilterFactory\";\nimport { JsiSkRuntimeEffectFactory } from \"./JsiSkRuntimeEffectFactory\";\nimport { JsiSkImageFilterFactory } from \"./JsiSkImageFilterFactory\";\nimport { JsiSkShaderFactory } from \"./JsiSkShaderFactory\";\nimport { JsiSkPathEffectFactory } from \"./JsiSkPathEffectFactory\";\nimport { JsiSkDataFactory } from \"./JsiSkDataFactory\";\nimport { JsiSkImageFactory } from \"./JsiSkImageFactory\";\nimport { JsiSkSVGFactory } from \"./JsiSkSVGFactory\";\nimport { JsiSkTextBlobFactory } from \"./JsiSkTextBlobFactory\";\nimport { JsiSkFont } from \"./JsiSkFont\";\nimport { MakeVertices } from \"./JsiSkVerticesFactory\";\nimport { JsiSkPath } from \"./JsiSkPath\";\nimport { JsiSkTypeface } from \"./JsiSkTypeface\";\nimport { JsiSkTypefaceFontProviderFactory } from \"./JsiSkTypefaceFontProviderFactory\";\nimport { JsiSkFontMgrFactory } from \"./JsiSkFontMgrFactory\";\nimport { JsiSkAnimatedImageFactory } from \"./JsiSkAnimatedImageFactory\";\nimport { JsiSkParagraphBuilderFactory } from \"./JsiSkParagraphBuilderFactory\";\nimport { JsiSkNativeBufferFactory } from \"./JsiSkNativeBufferFactory\";\nimport { createVideo } from \"./JsiVideo\";\nimport { throwNotImplementedOnRNWeb } from \"./Host\";\nimport { JsiSkottieFactory } from \"./JsiSkottieFactory\";\n\nexport const JsiSkApi = (CanvasKit: CanvasKit): Skia => ({\n Point: (x: number, y: number) =>\n new JsiSkPoint(CanvasKit, Float32Array.of(x, y)),\n RuntimeShaderBuilder: (_: SkRuntimeEffect) => {\n return throwNotImplementedOnRNWeb<SkRuntimeShaderBuilder>();\n },\n RRectXY: (rect: SkRect, rx: number, ry: number) =>\n new JsiSkRRect(CanvasKit, rect, rx, ry),\n RSXform: (scos: number, ssin: number, tx: number, ty: number) =>\n new JsiSkRSXform(CanvasKit, Float32Array.of(scos, ssin, tx, ty)),\n RSXformFromRadians: (\n scale: number,\n r: number,\n tx: number,\n ty: number,\n px: number,\n py: number\n ) => {\n const s = Math.sin(r) * scale;\n const c = Math.cos(r) * scale;\n return new JsiSkRSXform(\n CanvasKit,\n Float32Array.of(c, s, tx - c * px + s * py, ty - s * px - c * py)\n );\n },\n Color,\n ContourMeasureIter: (\n path: SkPath,\n forceClosed: boolean,\n resScale: number\n ): SkContourMeasureIter =>\n (() => {\n const p = JsiSkPath.pathFromValue(path);\n const iter = new JsiSkContourMeasureIter(\n CanvasKit,\n new CanvasKit.ContourMeasureIter(p, forceClosed, resScale)\n );\n p.delete();\n return iter;\n })(),\n Paint: () => {\n const paint = new JsiSkPaint(CanvasKit, new CanvasKit.Paint());\n paint.setAntiAlias(true);\n return paint;\n },\n PictureRecorder: () =>\n new JsiSkPictureRecorder(CanvasKit, new CanvasKit.PictureRecorder()),\n Picture: new JsiSkPictureFactory(CanvasKit),\n Path: new JsiSkPathFactory(CanvasKit),\n PathBuilder: new JsiSkPathBuilderFactory(CanvasKit),\n Matrix: (matrix?: readonly number[]) =>\n new JsiSkMatrix(\n CanvasKit,\n matrix\n ? Float32Array.of(...matrix)\n : Float32Array.of(...CanvasKit.Matrix.identity())\n ),\n ColorFilter: new JsiSkColorFilterFactory(CanvasKit),\n Font: (typeface?: SkTypeface, size?: number) =>\n new JsiSkFont(\n CanvasKit,\n new CanvasKit.Font(\n typeface === undefined ? null : JsiSkTypeface.fromValue(typeface),\n size\n )\n ),\n Typeface: new JsiSkTypefaceFactory(CanvasKit),\n MaskFilter: new JsiSkMaskFilterFactory(CanvasKit),\n RuntimeEffect: new JsiSkRuntimeEffectFactory(CanvasKit),\n ImageFilter: new JsiSkImageFilterFactory(CanvasKit),\n Shader: new JsiSkShaderFactory(CanvasKit),\n PathEffect: new JsiSkPathEffectFactory(CanvasKit),\n MakeVertices: MakeVertices.bind(null, CanvasKit),\n Data: new JsiSkDataFactory(CanvasKit),\n Image: new JsiSkImageFactory(CanvasKit),\n AnimatedImage: new JsiSkAnimatedImageFactory(CanvasKit),\n SVG: new JsiSkSVGFactory(CanvasKit),\n TextBlob: new JsiSkTextBlobFactory(CanvasKit),\n XYWHRect: (x: number, y: number, width: number, height: number) => {\n return new JsiSkRect(CanvasKit, CanvasKit.XYWHRect(x, y, width, height));\n },\n Surface: new JsiSkSurfaceFactory(CanvasKit),\n TypefaceFontProvider: new JsiSkTypefaceFontProviderFactory(CanvasKit),\n FontMgr: new JsiSkFontMgrFactory(CanvasKit),\n ParagraphBuilder: new JsiSkParagraphBuilderFactory(CanvasKit),\n NativeBuffer: new JsiSkNativeBufferFactory(CanvasKit),\n Skottie: new JsiSkottieFactory(CanvasKit),\n Video: createVideo.bind(null, CanvasKit),\n Context: (_surface: bigint, _width: number, _height: number) => {\n return throwNotImplementedOnRNWeb<SkiaContext>();\n },\n Recorder: () => {\n return throwNotImplementedOnRNWeb<JsiRecorder>();\n },\n getNativeDevice: () => {\n return throwNotImplementedOnRNWeb<bigint>();\n },\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["JsiSkPoint","JsiSkPaint","JsiSkRect","Color","JsiSkSurfaceFactory","JsiSkRRect","JsiSkRSXform","JsiSkContourMeasureIter","JsiSkPictureRecorder","JsiSkPictureFactory","JsiSkPathFactory","JsiSkPathBuilderFactory","JsiSkMatrix","JsiSkColorFilterFactory","JsiSkTypefaceFactory","JsiSkMaskFilterFactory","JsiSkRuntimeEffectFactory","JsiSkImageFilterFactory","JsiSkShaderFactory","JsiSkPathEffectFactory","JsiSkDataFactory","JsiSkImageFactory","JsiSkSVGFactory","JsiSkTextBlobFactory","JsiSkFont","MakeVertices","JsiSkPath","JsiSkTypeface","JsiSkTypefaceFontProviderFactory","JsiSkFontMgrFactory","JsiSkAnimatedImageFactory","JsiSkParagraphBuilderFactory","JsiSkNativeBufferFactory","createVideo","throwNotImplementedOnRNWeb","JsiSkottieFactory","JsiSkApi","CanvasKit","Point","x","y","Float32Array","of","RuntimeShaderBuilder","_","RRectXY","rect","rx","ry","RSXform","scos","ssin","tx","ty","RSXformFromRadians","scale","r","px","py","s","Math","sin","c","cos","ContourMeasureIter","path","forceClosed","resScale","p","pathFromValue","iter","delete","Paint","paint","setAntiAlias","PictureRecorder","Picture","Path","PathBuilder","Matrix","matrix","identity","ColorFilter","Font","typeface","size","undefined","fromValue","Typeface","MaskFilter","RuntimeEffect","ImageFilter","Shader","PathEffect","bind","Data","Image","AnimatedImage","SVG","TextBlob","XYWHRect","width","height","Surface","TypefaceFontProvider","FontMgr","ParagraphBuilder","NativeBuffer","Skottie","Video","Recorder","getNativeDevice"],"sources":["JsiSkia.ts"],"sourcesContent":["import type { CanvasKit } from \"canvaskit-wasm\";\n\nimport type {\n JsiRecorder,\n SkContourMeasureIter,\n Skia,\n SkPath,\n SkRect,\n SkRuntimeEffect,\n SkRuntimeShaderBuilder,\n SkTypeface,\n} from \"../types\";\n\nimport { JsiSkPoint } from \"./JsiSkPoint\";\nimport { JsiSkPaint } from \"./JsiSkPaint\";\nimport { JsiSkRect } from \"./JsiSkRect\";\nimport { Color } from \"./JsiSkColor\";\nimport { JsiSkSurfaceFactory } from \"./JsiSkSurfaceFactory\";\nimport { JsiSkRRect } from \"./JsiSkRRect\";\nimport { JsiSkRSXform } from \"./JsiSkRSXform\";\nimport { JsiSkContourMeasureIter } from \"./JsiSkContourMeasureIter\";\nimport { JsiSkPictureRecorder } from \"./JsiSkPictureRecorder\";\nimport { JsiSkPictureFactory } from \"./JsiSkPictureFactory\";\nimport { JsiSkPathFactory } from \"./JsiSkPathFactory\";\nimport { JsiSkPathBuilderFactory } from \"./JsiSkPathBuilderFactory\";\nimport { JsiSkMatrix } from \"./JsiSkMatrix\";\nimport { JsiSkColorFilterFactory } from \"./JsiSkColorFilterFactory\";\nimport { JsiSkTypefaceFactory } from \"./JsiSkTypefaceFactory\";\nimport { JsiSkMaskFilterFactory } from \"./JsiSkMaskFilterFactory\";\nimport { JsiSkRuntimeEffectFactory } from \"./JsiSkRuntimeEffectFactory\";\nimport { JsiSkImageFilterFactory } from \"./JsiSkImageFilterFactory\";\nimport { JsiSkShaderFactory } from \"./JsiSkShaderFactory\";\nimport { JsiSkPathEffectFactory } from \"./JsiSkPathEffectFactory\";\nimport { JsiSkDataFactory } from \"./JsiSkDataFactory\";\nimport { JsiSkImageFactory } from \"./JsiSkImageFactory\";\nimport { JsiSkSVGFactory } from \"./JsiSkSVGFactory\";\nimport { JsiSkTextBlobFactory } from \"./JsiSkTextBlobFactory\";\nimport { JsiSkFont } from \"./JsiSkFont\";\nimport { MakeVertices } from \"./JsiSkVerticesFactory\";\nimport { JsiSkPath } from \"./JsiSkPath\";\nimport { JsiSkTypeface } from \"./JsiSkTypeface\";\nimport { JsiSkTypefaceFontProviderFactory } from \"./JsiSkTypefaceFontProviderFactory\";\nimport { JsiSkFontMgrFactory } from \"./JsiSkFontMgrFactory\";\nimport { JsiSkAnimatedImageFactory } from \"./JsiSkAnimatedImageFactory\";\nimport { JsiSkParagraphBuilderFactory } from \"./JsiSkParagraphBuilderFactory\";\nimport { JsiSkNativeBufferFactory } from \"./JsiSkNativeBufferFactory\";\nimport { createVideo } from \"./JsiVideo\";\nimport { throwNotImplementedOnRNWeb } from \"./Host\";\nimport { JsiSkottieFactory } from \"./JsiSkottieFactory\";\n\nexport const JsiSkApi = (CanvasKit: CanvasKit): Skia => ({\n Point: (x: number, y: number) =>\n new JsiSkPoint(CanvasKit, Float32Array.of(x, y)),\n RuntimeShaderBuilder: (_: SkRuntimeEffect) => {\n return throwNotImplementedOnRNWeb<SkRuntimeShaderBuilder>();\n },\n RRectXY: (rect: SkRect, rx: number, ry: number) =>\n new JsiSkRRect(CanvasKit, rect, rx, ry),\n RSXform: (scos: number, ssin: number, tx: number, ty: number) =>\n new JsiSkRSXform(CanvasKit, Float32Array.of(scos, ssin, tx, ty)),\n RSXformFromRadians: (\n scale: number,\n r: number,\n tx: number,\n ty: number,\n px: number,\n py: number\n ) => {\n const s = Math.sin(r) * scale;\n const c = Math.cos(r) * scale;\n return new JsiSkRSXform(\n CanvasKit,\n Float32Array.of(c, s, tx - c * px + s * py, ty - s * px - c * py)\n );\n },\n Color,\n ContourMeasureIter: (\n path: SkPath,\n forceClosed: boolean,\n resScale: number\n ): SkContourMeasureIter =>\n (() => {\n const p = JsiSkPath.pathFromValue(path);\n const iter = new JsiSkContourMeasureIter(\n CanvasKit,\n new CanvasKit.ContourMeasureIter(p, forceClosed, resScale)\n );\n p.delete();\n return iter;\n })(),\n Paint: () => {\n const paint = new JsiSkPaint(CanvasKit, new CanvasKit.Paint());\n paint.setAntiAlias(true);\n return paint;\n },\n PictureRecorder: () =>\n new JsiSkPictureRecorder(CanvasKit, new CanvasKit.PictureRecorder()),\n Picture: new JsiSkPictureFactory(CanvasKit),\n Path: new JsiSkPathFactory(CanvasKit),\n PathBuilder: new JsiSkPathBuilderFactory(CanvasKit),\n Matrix: (matrix?: readonly number[]) =>\n new JsiSkMatrix(\n CanvasKit,\n matrix\n ? Float32Array.of(...matrix)\n : Float32Array.of(...CanvasKit.Matrix.identity())\n ),\n ColorFilter: new JsiSkColorFilterFactory(CanvasKit),\n Font: (typeface?: SkTypeface, size?: number) =>\n new JsiSkFont(\n CanvasKit,\n new CanvasKit.Font(\n typeface === undefined ? null : JsiSkTypeface.fromValue(typeface),\n size\n )\n ),\n Typeface: new JsiSkTypefaceFactory(CanvasKit),\n MaskFilter: new JsiSkMaskFilterFactory(CanvasKit),\n RuntimeEffect: new JsiSkRuntimeEffectFactory(CanvasKit),\n ImageFilter: new JsiSkImageFilterFactory(CanvasKit),\n Shader: new JsiSkShaderFactory(CanvasKit),\n PathEffect: new JsiSkPathEffectFactory(CanvasKit),\n MakeVertices: MakeVertices.bind(null, CanvasKit),\n Data: new JsiSkDataFactory(CanvasKit),\n Image: new JsiSkImageFactory(CanvasKit),\n AnimatedImage: new JsiSkAnimatedImageFactory(CanvasKit),\n SVG: new JsiSkSVGFactory(CanvasKit),\n TextBlob: new JsiSkTextBlobFactory(CanvasKit),\n XYWHRect: (x: number, y: number, width: number, height: number) => {\n return new JsiSkRect(CanvasKit, CanvasKit.XYWHRect(x, y, width, height));\n },\n Surface: new JsiSkSurfaceFactory(CanvasKit),\n TypefaceFontProvider: new JsiSkTypefaceFontProviderFactory(CanvasKit),\n FontMgr: new JsiSkFontMgrFactory(CanvasKit),\n ParagraphBuilder: new JsiSkParagraphBuilderFactory(CanvasKit),\n NativeBuffer: new JsiSkNativeBufferFactory(CanvasKit),\n Skottie: new JsiSkottieFactory(CanvasKit),\n Video: createVideo.bind(null, CanvasKit),\n Recorder: () => {\n return throwNotImplementedOnRNWeb<JsiRecorder>();\n },\n getNativeDevice: () => {\n return throwNotImplementedOnRNWeb<bigint>();\n },\n});\n"],"mappings":"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","ignoreList":[]}
@@ -12,6 +12,7 @@ export declare const createDrawingContext: (Skia: Skia, paintPool: SkPaint[], ca
12
12
  paintDeclarations: SkPaint[];
13
13
  paintPool: SkPaint[];
14
14
  savePaint: () => void;
15
+ pushPaint: (paint: SkPaint) => void;
15
16
  saveBackdropFilter: () => void;
16
17
  readonly paint: SkPaint;
17
18
  restorePaint: () => SkPaint | undefined;
@@ -42,6 +42,15 @@ export const createDrawingContext = (Skia, paintPool, canvas) => {
42
42
  opacities.push(opacities[opacities.length - 1]);
43
43
  nextPaintIndex++;
44
44
  };
45
+
46
+ // Pushes an externally owned paint (the `paint` prop) onto the stack. It must
47
+ // push an opacity alongside it: restorePaint() pops both, so pushing only the
48
+ // paint would underflow the opacity stack and leak the enclosing group's
49
+ // opacity onto everything drawn afterwards.
50
+ const pushPaint = paint => {
51
+ paints.push(paint);
52
+ opacities.push(opacities[opacities.length - 1]);
53
+ };
45
54
  const getOpacity = () => {
46
55
  return opacities[opacities.length - 1];
47
56
  };
@@ -113,6 +122,7 @@ export const createDrawingContext = (Skia, paintPool, canvas) => {
113
122
  paintPool,
114
123
  // Public methods
115
124
  savePaint,
125
+ pushPaint,
116
126
  saveBackdropFilter,
117
127
  get paint() {
118
128
  return paints[paints.length - 1];