@shopify/react-native-skia 0.1.163 → 0.1.164

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 (113) hide show
  1. package/cpp/api/JsiSkPaint.h +6 -0
  2. package/cpp/jsi/JsiHostObject.h +25 -25
  3. package/cpp/rnskia/dom/base/DrawingContext.cpp +24 -9
  4. package/cpp/rnskia/dom/base/DrawingContext.h +3 -2
  5. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +12 -2
  6. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +4 -4
  7. package/cpp/rnskia/dom/base/JsiDomNode.h +68 -10
  8. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +26 -61
  9. package/cpp/rnskia/dom/base/NodeProp.h +2 -1
  10. package/cpp/rnskia/dom/base/NodePropsContainer.h +10 -0
  11. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +1 -2
  12. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +3 -6
  13. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +2 -4
  14. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +1 -2
  15. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +2 -3
  16. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +4 -8
  17. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +1 -2
  18. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +2 -7
  19. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +4 -8
  20. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +19 -37
  21. package/cpp/rnskia/dom/nodes/JsiImageNode.h +1 -1
  22. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +2 -4
  23. package/cpp/rnskia/dom/nodes/JsiLineNode.h +2 -7
  24. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +1 -3
  25. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +2 -3
  26. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +4 -8
  27. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +14 -28
  28. package/cpp/rnskia/dom/nodes/JsiPathNode.h +6 -16
  29. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +1 -2
  30. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +2 -5
  31. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +1 -2
  32. package/cpp/rnskia/dom/nodes/JsiRectNode.h +1 -2
  33. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +37 -69
  34. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +3 -6
  35. package/cpp/rnskia/dom/nodes/JsiTextNode.h +4 -8
  36. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +1 -2
  37. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +2 -4
  38. package/cpp/rnskia/dom/props/PaintProps.h +1 -2
  39. package/cpp/rnskia/dom/props/TransformProp.h +0 -2
  40. package/cpp/utils/RNSkLog.h +1 -1
  41. package/lib/commonjs/dom/nodes/RenderNode.js +12 -16
  42. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  43. package/lib/commonjs/dom/nodes/datatypes/index.js +0 -13
  44. package/lib/commonjs/dom/nodes/datatypes/index.js.map +1 -1
  45. package/lib/commonjs/dom/nodes/drawings/Box.js +6 -6
  46. package/lib/commonjs/dom/nodes/drawings/Box.js.map +1 -1
  47. package/lib/commonjs/dom/nodes/drawings/PatchNode.js +3 -7
  48. package/lib/commonjs/dom/nodes/drawings/PatchNode.js.map +1 -1
  49. package/lib/commonjs/dom/nodes/drawings/VerticesNode.js +1 -1
  50. package/lib/commonjs/dom/nodes/drawings/VerticesNode.js.map +1 -1
  51. package/lib/commonjs/dom/nodes/paint/ColorFilters.js +1 -3
  52. package/lib/commonjs/dom/nodes/paint/ColorFilters.js.map +1 -1
  53. package/lib/commonjs/dom/nodes/paint/ImageFilters.js +1 -1
  54. package/lib/commonjs/dom/nodes/paint/ImageFilters.js.map +1 -1
  55. package/lib/commonjs/dom/nodes/paint/Shaders.js +1 -3
  56. package/lib/commonjs/dom/nodes/paint/Shaders.js.map +1 -1
  57. package/lib/commonjs/dom/types/DrawingContext.js.map +1 -1
  58. package/lib/commonjs/renderer/DrawingContext.js.map +1 -1
  59. package/lib/commonjs/skia/types/Paint/Paint.js.map +1 -1
  60. package/lib/commonjs/skia/web/JsiSkPaint.js +4 -0
  61. package/lib/commonjs/skia/web/JsiSkPaint.js.map +1 -1
  62. package/lib/commonjs/web/LoadSkiaWeb.js +1 -1
  63. package/lib/commonjs/web/LoadSkiaWeb.js.map +1 -1
  64. package/lib/module/dom/nodes/RenderNode.js +12 -16
  65. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  66. package/lib/module/dom/nodes/datatypes/index.js +0 -1
  67. package/lib/module/dom/nodes/datatypes/index.js.map +1 -1
  68. package/lib/module/dom/nodes/drawings/Box.js +6 -5
  69. package/lib/module/dom/nodes/drawings/Box.js.map +1 -1
  70. package/lib/module/dom/nodes/drawings/PatchNode.js +4 -8
  71. package/lib/module/dom/nodes/drawings/PatchNode.js.map +1 -1
  72. package/lib/module/dom/nodes/drawings/VerticesNode.js +2 -2
  73. package/lib/module/dom/nodes/drawings/VerticesNode.js.map +1 -1
  74. package/lib/module/dom/nodes/paint/ColorFilters.js +1 -2
  75. package/lib/module/dom/nodes/paint/ColorFilters.js.map +1 -1
  76. package/lib/module/dom/nodes/paint/ImageFilters.js +2 -2
  77. package/lib/module/dom/nodes/paint/ImageFilters.js.map +1 -1
  78. package/lib/module/dom/nodes/paint/Shaders.js +1 -2
  79. package/lib/module/dom/nodes/paint/Shaders.js.map +1 -1
  80. package/lib/module/dom/types/DrawingContext.js.map +1 -1
  81. package/lib/module/renderer/DrawingContext.js.map +1 -1
  82. package/lib/module/skia/types/Paint/Paint.js.map +1 -1
  83. package/lib/module/skia/web/JsiSkPaint.js +4 -0
  84. package/lib/module/skia/web/JsiSkPaint.js.map +1 -1
  85. package/lib/module/web/LoadSkiaWeb.js +1 -1
  86. package/lib/module/web/LoadSkiaWeb.js.map +1 -1
  87. package/lib/typescript/src/dom/nodes/datatypes/index.d.ts +0 -1
  88. package/lib/typescript/src/dom/nodes/drawings/Box.d.ts +1 -1
  89. package/lib/typescript/src/dom/nodes/drawings/PatchNode.d.ts +1 -1
  90. package/lib/typescript/src/dom/types/DrawingContext.d.ts +0 -1
  91. package/lib/typescript/src/renderer/DrawingContext.d.ts +3 -5
  92. package/lib/typescript/src/skia/types/Paint/Paint.d.ts +4 -0
  93. package/lib/typescript/src/skia/web/JsiSkPaint.d.ts +1 -0
  94. package/package.json +1 -1
  95. package/src/dom/nodes/RenderNode.ts +11 -21
  96. package/src/dom/nodes/datatypes/index.ts +0 -1
  97. package/src/dom/nodes/drawings/Box.ts +7 -4
  98. package/src/dom/nodes/drawings/PatchNode.ts +4 -18
  99. package/src/dom/nodes/drawings/VerticesNode.ts +2 -2
  100. package/src/dom/nodes/paint/ColorFilters.ts +1 -2
  101. package/src/dom/nodes/paint/ImageFilters.ts +2 -2
  102. package/src/dom/nodes/paint/Shaders.ts +1 -2
  103. package/src/dom/types/DrawingContext.ts +0 -1
  104. package/src/renderer/DrawingContext.ts +5 -5
  105. package/src/skia/types/Paint/Paint.ts +5 -0
  106. package/src/skia/web/JsiSkPaint.ts +4 -0
  107. package/src/web/LoadSkiaWeb.tsx +1 -1
  108. package/lib/commonjs/dom/nodes/datatypes/Color.js +0 -27
  109. package/lib/commonjs/dom/nodes/datatypes/Color.js.map +0 -1
  110. package/lib/module/dom/nodes/datatypes/Color.js +0 -11
  111. package/lib/module/dom/nodes/datatypes/Color.js.map +0 -1
  112. package/lib/typescript/src/dom/nodes/datatypes/Color.d.ts +0 -7
  113. package/src/dom/nodes/datatypes/Color.ts +0 -15
@@ -1 +1 @@
1
- {"version":3,"names":["BlendMode","JsiDeclarationNode","DeclarationType","NodeType","processColor","enumKey","ColorFilterDeclaration","constructor","ctx","type","props","ColorFilter","addChild","child","Error","insertChildBefore","before","compose","filter","children","_children","length","Skia","MakeCompose","reduce","acc","materialize","MatrixColorFilterNode","MatrixColorFilter","matrix","cf","MakeMatrix","BlendColorFilterNode","BlendColorFilter","mode","color","MakeBlend","LinearToSRGBGammaColorFilterNode","LinearToSRGBGammaColorFilter","MakeLinearToSRGBGamma","SRGBToLinearGammaColorFilterNode","SRGBToLinearGammaColorFilter","MakeSRGBToLinearGamma","LumaColorFilterNode","LumaColorFilter","MakeLumaColorFilter","LerpColorFilterNode","LerpColorFilter","t","first","second","MakeLerp"],"sources":["ColorFilters.ts"],"sourcesContent":["import { BlendMode } from \"../../../skia/types\";\nimport type { SkColorFilter } from \"../../../skia/types\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\nimport type {\n BlendColorFilterProps,\n MatrixColorFilterProps,\n Node,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport { processColor } from \"../datatypes\";\nimport { enumKey } from \"../datatypes/Enum\";\nimport type { LerpColorFilterProps } from \"../../types/ColorFilters\";\n\nexport abstract class ColorFilterDeclaration<\n P,\n Nullable extends null | never = never\n> extends JsiDeclarationNode<P, SkColorFilter, Nullable> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.ColorFilter, type, props);\n }\n\n addChild(child: Node<unknown>) {\n if (!(child instanceof ColorFilterDeclaration)) {\n throw new Error(`Cannot add child of type ${child.type} to ${this.type}`);\n }\n super.addChild(child);\n }\n\n insertChildBefore(child: Node<unknown>, before: Node<unknown>): void {\n if (!(child instanceof ColorFilterDeclaration)) {\n throw new Error(`Cannot add child of type ${child.type} to ${this.type}`);\n }\n super.insertChildBefore(child, before);\n }\n\n compose(filter: SkColorFilter) {\n const children = this._children as ColorFilterDeclaration<unknown>[];\n if (this._children.length === 0) {\n return filter;\n } else {\n return this.Skia.ColorFilter.MakeCompose(\n filter,\n children.reduce<SkColorFilter | null>((acc, child) => {\n if (acc === null) {\n return child.materialize();\n }\n return this.Skia.ColorFilter.MakeCompose(acc, child.materialize());\n }, null) as SkColorFilter\n );\n }\n }\n}\n\nexport class MatrixColorFilterNode extends ColorFilterDeclaration<MatrixColorFilterProps> {\n constructor(ctx: NodeContext, props: MatrixColorFilterProps) {\n super(ctx, NodeType.MatrixColorFilter, props);\n }\n\n materialize() {\n const { matrix } = this.props;\n const cf = this.Skia.ColorFilter.MakeMatrix(matrix);\n return this.compose(cf);\n }\n}\n\nexport class BlendColorFilterNode extends ColorFilterDeclaration<BlendColorFilterProps> {\n constructor(ctx: NodeContext, props: BlendColorFilterProps) {\n super(ctx, NodeType.BlendColorFilter, props);\n }\n\n materialize() {\n const { mode } = this.props;\n const color = processColor(this.Skia, this.props.color, 1);\n const cf = this.Skia.ColorFilter.MakeBlend(color, BlendMode[enumKey(mode)]);\n return this.compose(cf);\n }\n}\n\nexport class LinearToSRGBGammaColorFilterNode extends ColorFilterDeclaration<null> {\n constructor(ctx: NodeContext) {\n super(ctx, NodeType.LinearToSRGBGammaColorFilter, null);\n }\n\n materialize() {\n const cf = this.Skia.ColorFilter.MakeLinearToSRGBGamma();\n return this.compose(cf);\n }\n}\n\nexport class SRGBToLinearGammaColorFilterNode extends ColorFilterDeclaration<null> {\n constructor(ctx: NodeContext) {\n super(ctx, NodeType.SRGBToLinearGammaColorFilter, null);\n }\n\n materialize() {\n const cf = this.Skia.ColorFilter.MakeSRGBToLinearGamma();\n return this.compose(cf);\n }\n}\n\nexport class LumaColorFilterNode extends ColorFilterDeclaration<null> {\n constructor(ctx: NodeContext) {\n super(ctx, NodeType.LumaColorFilter, null);\n }\n\n materialize() {\n const cf = this.Skia.ColorFilter.MakeLumaColorFilter();\n return this.compose(cf);\n }\n}\n\nexport class LerpColorFilterNode extends ColorFilterDeclaration<LerpColorFilterProps> {\n constructor(ctx: NodeContext, props: LerpColorFilterProps) {\n super(ctx, NodeType.LerpColorFilter, props);\n }\n\n materialize() {\n const { t } = this.props;\n const [first, second] = this.children() as JsiDeclarationNode<\n unknown,\n SkColorFilter\n >[];\n return this.Skia.ColorFilter.MakeLerp(\n t,\n first.materialize(),\n second.materialize()\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["BlendMode","JsiDeclarationNode","DeclarationType","NodeType","enumKey","ColorFilterDeclaration","constructor","ctx","type","props","ColorFilter","addChild","child","Error","insertChildBefore","before","compose","filter","children","_children","length","Skia","MakeCompose","reduce","acc","materialize","MatrixColorFilterNode","MatrixColorFilter","matrix","cf","MakeMatrix","BlendColorFilterNode","BlendColorFilter","mode","color","Color","MakeBlend","LinearToSRGBGammaColorFilterNode","LinearToSRGBGammaColorFilter","MakeLinearToSRGBGamma","SRGBToLinearGammaColorFilterNode","SRGBToLinearGammaColorFilter","MakeSRGBToLinearGamma","LumaColorFilterNode","LumaColorFilter","MakeLumaColorFilter","LerpColorFilterNode","LerpColorFilter","t","first","second","MakeLerp"],"sources":["ColorFilters.ts"],"sourcesContent":["import { BlendMode } from \"../../../skia/types\";\nimport type { SkColorFilter } from \"../../../skia/types\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\nimport type {\n BlendColorFilterProps,\n MatrixColorFilterProps,\n Node,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport { enumKey } from \"../datatypes/Enum\";\nimport type { LerpColorFilterProps } from \"../../types/ColorFilters\";\n\nexport abstract class ColorFilterDeclaration<\n P,\n Nullable extends null | never = never\n> extends JsiDeclarationNode<P, SkColorFilter, Nullable> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.ColorFilter, type, props);\n }\n\n addChild(child: Node<unknown>) {\n if (!(child instanceof ColorFilterDeclaration)) {\n throw new Error(`Cannot add child of type ${child.type} to ${this.type}`);\n }\n super.addChild(child);\n }\n\n insertChildBefore(child: Node<unknown>, before: Node<unknown>): void {\n if (!(child instanceof ColorFilterDeclaration)) {\n throw new Error(`Cannot add child of type ${child.type} to ${this.type}`);\n }\n super.insertChildBefore(child, before);\n }\n\n compose(filter: SkColorFilter) {\n const children = this._children as ColorFilterDeclaration<unknown>[];\n if (this._children.length === 0) {\n return filter;\n } else {\n return this.Skia.ColorFilter.MakeCompose(\n filter,\n children.reduce<SkColorFilter | null>((acc, child) => {\n if (acc === null) {\n return child.materialize();\n }\n return this.Skia.ColorFilter.MakeCompose(acc, child.materialize());\n }, null) as SkColorFilter\n );\n }\n }\n}\n\nexport class MatrixColorFilterNode extends ColorFilterDeclaration<MatrixColorFilterProps> {\n constructor(ctx: NodeContext, props: MatrixColorFilterProps) {\n super(ctx, NodeType.MatrixColorFilter, props);\n }\n\n materialize() {\n const { matrix } = this.props;\n const cf = this.Skia.ColorFilter.MakeMatrix(matrix);\n return this.compose(cf);\n }\n}\n\nexport class BlendColorFilterNode extends ColorFilterDeclaration<BlendColorFilterProps> {\n constructor(ctx: NodeContext, props: BlendColorFilterProps) {\n super(ctx, NodeType.BlendColorFilter, props);\n }\n\n materialize() {\n const { mode } = this.props;\n const color = this.Skia.Color(this.props.color);\n const cf = this.Skia.ColorFilter.MakeBlend(color, BlendMode[enumKey(mode)]);\n return this.compose(cf);\n }\n}\n\nexport class LinearToSRGBGammaColorFilterNode extends ColorFilterDeclaration<null> {\n constructor(ctx: NodeContext) {\n super(ctx, NodeType.LinearToSRGBGammaColorFilter, null);\n }\n\n materialize() {\n const cf = this.Skia.ColorFilter.MakeLinearToSRGBGamma();\n return this.compose(cf);\n }\n}\n\nexport class SRGBToLinearGammaColorFilterNode extends ColorFilterDeclaration<null> {\n constructor(ctx: NodeContext) {\n super(ctx, NodeType.SRGBToLinearGammaColorFilter, null);\n }\n\n materialize() {\n const cf = this.Skia.ColorFilter.MakeSRGBToLinearGamma();\n return this.compose(cf);\n }\n}\n\nexport class LumaColorFilterNode extends ColorFilterDeclaration<null> {\n constructor(ctx: NodeContext) {\n super(ctx, NodeType.LumaColorFilter, null);\n }\n\n materialize() {\n const cf = this.Skia.ColorFilter.MakeLumaColorFilter();\n return this.compose(cf);\n }\n}\n\nexport class LerpColorFilterNode extends ColorFilterDeclaration<LerpColorFilterProps> {\n constructor(ctx: NodeContext, props: LerpColorFilterProps) {\n super(ctx, NodeType.LerpColorFilter, props);\n }\n\n materialize() {\n const { t } = this.props;\n const [first, second] = this.children() as JsiDeclarationNode<\n unknown,\n SkColorFilter\n >[];\n return this.Skia.ColorFilter.MakeLerp(\n t,\n first.materialize(),\n second.materialize()\n );\n }\n}\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { BlendMode, ColorChannel, processUniforms, TileMode } from "../../../skia/types";
2
2
  import { DeclarationType, NodeType } from "../../types";
3
- import { processRadius, enumKey, processColor } from "../datatypes";
3
+ import { processRadius, enumKey } from "../datatypes";
4
4
  import { JsiDeclarationNode } from "../Node";
5
5
  const Black = Float32Array.of(0, 0, 0, 1);
6
6
 
@@ -111,7 +111,7 @@ export class DropShadowImageFilterNode extends ImageFilterDeclaration {
111
111
  color: cl,
112
112
  inner
113
113
  } = this.props;
114
- const color = processColor(this.Skia, cl, 1);
114
+ const color = this.Skia.Color(cl);
115
115
  const input = this.getOptionalChildInstance(0);
116
116
  let factory;
117
117
 
@@ -1 +1 @@
1
- {"version":3,"names":["BlendMode","ColorChannel","processUniforms","TileMode","DeclarationType","NodeType","processRadius","enumKey","processColor","JsiDeclarationNode","Black","Float32Array","of","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","Dst","sourceAlpha","SrcIn","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","Decal","f4","MakeCompose","SrcOver","ImageFilterDeclaration","constructor","ctx","type","props","getOptionalChildInstance","index","child","_children","getMandatoryChildInstance","isImageFilter","materialize","isShader","MakeShader","declarationType","Error","OffsetImageFilterNode","OffsetImageFilter","x","y","DisplacementMapImageFilterNode","DisplacementMapImageFilter","channelX","channelY","scale","MakeDisplacementMap","BlurImageFilterNode","BlurImageFilter","mode","blur","sigma","DropShadowImageFilterNode","cl","inner","factory","bind","MakeDropShadowOnly","MakeDropShadow","MorphologyOperator","MorphologyImageFilterNode","MorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","BlendImageFilterNode","BlendImageFilter","a","b","RuntimeShaderImageFilterNode","RuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","MakeRuntimeShader"],"sources":["ImageFilters.ts"],"sourcesContent":["import type { SkImageFilter, SkColor, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n ColorChannel,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport { processRadius, enumKey, processColor } from \"../datatypes\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\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 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\nexport abstract class ImageFilterDeclaration<\n P,\n Nullable extends null | never = never\n> extends JsiDeclarationNode<P, SkImageFilter, Nullable> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.ImageFilter, type, props);\n }\n\n getOptionalChildInstance(index: number) {\n const child = this._children[index];\n if (!child) {\n return null;\n }\n return this.getMandatoryChildInstance(index);\n }\n\n getMandatoryChildInstance(index: number) {\n const child = this._children[index];\n if (child instanceof JsiDeclarationNode) {\n if (child.isImageFilter()) {\n return child.materialize();\n } else if (child.isShader()) {\n return this.Skia.ImageFilter.MakeShader(child.materialize(), null);\n } else if (child.declarationType === DeclarationType.ColorFilter) {\n return this.Skia.ImageFilter.MakeColorFilter(child.materialize(), null);\n } else {\n throw new Error(`Found invalid child ${child.type} in ${this.type}`);\n }\n } else {\n throw new Error(`Found invalid child ${child.type} in ${this.type}`);\n }\n }\n}\n\nexport class OffsetImageFilterNode extends ImageFilterDeclaration<OffsetImageFilterProps> {\n constructor(ctx: NodeContext, props: OffsetImageFilterProps) {\n super(ctx, NodeType.OffsetImageFilter, props);\n }\n\n materialize() {\n const { x, y } = this.props;\n return this.Skia.ImageFilter.MakeOffset(\n x,\n y,\n this.getOptionalChildInstance(0)\n );\n }\n}\n\nexport class DisplacementMapImageFilterNode extends ImageFilterDeclaration<DisplacementMapImageFilterProps> {\n constructor(ctx: NodeContext, props: DisplacementMapImageFilterProps) {\n super(ctx, NodeType.DisplacementMapImageFilter, props);\n }\n\n materialize() {\n const { channelX, channelY, scale } = this.props;\n return this.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n this.getMandatoryChildInstance(0),\n this.getOptionalChildInstance(1)\n );\n }\n}\n\nexport class BlurImageFilterNode extends ImageFilterDeclaration<BlurImageFilterProps> {\n constructor(ctx: NodeContext, props: BlurImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n materialize() {\n const { mode, blur } = this.props;\n const sigma = processRadius(this.Skia, blur);\n return this.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n this.getOptionalChildInstance(0)\n );\n }\n}\n\nexport class DropShadowImageFilterNode extends ImageFilterDeclaration<DropShadowImageFilterProps> {\n constructor(ctx: NodeContext, props: DropShadowImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n materialize() {\n const { dx, dy, blur, shadowOnly, color: cl, inner } = this.props;\n const color = processColor(this.Skia, cl, 1);\n const input = this.getOptionalChildInstance(0);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, this.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? this.Skia.ImageFilter.MakeDropShadowOnly.bind(this.Skia.ImageFilter)\n : this.Skia.ImageFilter.MakeDropShadow.bind(this.Skia.ImageFilter);\n }\n return factory(dx, dy, blur, blur, color, input);\n }\n}\n\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nexport class MorphologyImageFilterNode extends ImageFilterDeclaration<MorphologyImageFilterProps> {\n constructor(ctx: NodeContext, props: MorphologyImageFilterProps) {\n super(ctx, NodeType.MorphologyImageFilter, props);\n }\n\n materialize() {\n const { operator } = this.props;\n const r = processRadius(this.Skia, this.props.radius);\n const input = this.getOptionalChildInstance(0);\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n return this.Skia.ImageFilter.MakeErode(r.x, r.y, input);\n }\n return this.Skia.ImageFilter.MakeDilate(r.x, r.y, input);\n }\n}\n\nexport class BlendImageFilterNode extends ImageFilterDeclaration<BlendImageFilterProps> {\n constructor(ctx: NodeContext, props: BlendImageFilterProps) {\n super(ctx, NodeType.BlendImageFilter, props);\n }\n\n materialize() {\n const { mode } = this.props;\n const a = this.getMandatoryChildInstance(0);\n const b = this.getMandatoryChildInstance(1);\n return this.Skia.ImageFilter.MakeBlend(mode, a, b);\n }\n}\n\nexport class RuntimeShaderImageFilterNode extends ImageFilterDeclaration<RuntimeShaderImageFilterProps> {\n constructor(ctx: NodeContext, props: RuntimeShaderImageFilterProps) {\n super(ctx, NodeType.RuntimeShaderImageFilter, props);\n }\n\n materialize() {\n const { source, uniforms } = this.props;\n const rtb = this.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const input = this.getOptionalChildInstance(0);\n return this.Skia.ImageFilter.MakeRuntimeShader(rtb, null, input);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["BlendMode","ColorChannel","processUniforms","TileMode","DeclarationType","NodeType","processRadius","enumKey","JsiDeclarationNode","Black","Float32Array","of","MakeInnerShadow","Skia","shadowOnly","dx","dy","sigmaX","sigmaY","color","input","sourceGraphic","ImageFilter","MakeColorFilter","ColorFilter","MakeBlend","Dst","sourceAlpha","SrcIn","f1","SrcOut","f2","MakeOffset","f3","MakeBlur","Decal","f4","MakeCompose","SrcOver","ImageFilterDeclaration","constructor","ctx","type","props","getOptionalChildInstance","index","child","_children","getMandatoryChildInstance","isImageFilter","materialize","isShader","MakeShader","declarationType","Error","OffsetImageFilterNode","OffsetImageFilter","x","y","DisplacementMapImageFilterNode","DisplacementMapImageFilter","channelX","channelY","scale","MakeDisplacementMap","BlurImageFilterNode","BlurImageFilter","mode","blur","sigma","DropShadowImageFilterNode","cl","inner","Color","factory","bind","MakeDropShadowOnly","MakeDropShadow","MorphologyOperator","MorphologyImageFilterNode","MorphologyImageFilter","operator","r","radius","Erode","MakeErode","MakeDilate","BlendImageFilterNode","BlendImageFilter","a","b","RuntimeShaderImageFilterNode","RuntimeShaderImageFilter","source","uniforms","rtb","RuntimeShaderBuilder","MakeRuntimeShader"],"sources":["ImageFilters.ts"],"sourcesContent":["import type { SkImageFilter, SkColor, Skia } from \"../../../skia/types\";\nimport {\n BlendMode,\n ColorChannel,\n processUniforms,\n TileMode,\n} from \"../../../skia/types\";\nimport type {\n BlendImageFilterProps,\n BlurImageFilterProps,\n DisplacementMapImageFilterProps,\n DropShadowImageFilterProps,\n MorphologyImageFilterProps,\n OffsetImageFilterProps,\n RuntimeShaderImageFilterProps,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport { processRadius, enumKey } from \"../datatypes\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\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 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\nexport abstract class ImageFilterDeclaration<\n P,\n Nullable extends null | never = never\n> extends JsiDeclarationNode<P, SkImageFilter, Nullable> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.ImageFilter, type, props);\n }\n\n getOptionalChildInstance(index: number) {\n const child = this._children[index];\n if (!child) {\n return null;\n }\n return this.getMandatoryChildInstance(index);\n }\n\n getMandatoryChildInstance(index: number) {\n const child = this._children[index];\n if (child instanceof JsiDeclarationNode) {\n if (child.isImageFilter()) {\n return child.materialize();\n } else if (child.isShader()) {\n return this.Skia.ImageFilter.MakeShader(child.materialize(), null);\n } else if (child.declarationType === DeclarationType.ColorFilter) {\n return this.Skia.ImageFilter.MakeColorFilter(child.materialize(), null);\n } else {\n throw new Error(`Found invalid child ${child.type} in ${this.type}`);\n }\n } else {\n throw new Error(`Found invalid child ${child.type} in ${this.type}`);\n }\n }\n}\n\nexport class OffsetImageFilterNode extends ImageFilterDeclaration<OffsetImageFilterProps> {\n constructor(ctx: NodeContext, props: OffsetImageFilterProps) {\n super(ctx, NodeType.OffsetImageFilter, props);\n }\n\n materialize() {\n const { x, y } = this.props;\n return this.Skia.ImageFilter.MakeOffset(\n x,\n y,\n this.getOptionalChildInstance(0)\n );\n }\n}\n\nexport class DisplacementMapImageFilterNode extends ImageFilterDeclaration<DisplacementMapImageFilterProps> {\n constructor(ctx: NodeContext, props: DisplacementMapImageFilterProps) {\n super(ctx, NodeType.DisplacementMapImageFilter, props);\n }\n\n materialize() {\n const { channelX, channelY, scale } = this.props;\n return this.Skia.ImageFilter.MakeDisplacementMap(\n ColorChannel[enumKey(channelX)],\n ColorChannel[enumKey(channelY)],\n scale,\n this.getMandatoryChildInstance(0),\n this.getOptionalChildInstance(1)\n );\n }\n}\n\nexport class BlurImageFilterNode extends ImageFilterDeclaration<BlurImageFilterProps> {\n constructor(ctx: NodeContext, props: BlurImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n materialize() {\n const { mode, blur } = this.props;\n const sigma = processRadius(this.Skia, blur);\n return this.Skia.ImageFilter.MakeBlur(\n sigma.x,\n sigma.y,\n TileMode[enumKey(mode)],\n this.getOptionalChildInstance(0)\n );\n }\n}\n\nexport class DropShadowImageFilterNode extends ImageFilterDeclaration<DropShadowImageFilterProps> {\n constructor(ctx: NodeContext, props: DropShadowImageFilterProps) {\n super(ctx, NodeType.BlurImageFilter, props);\n }\n\n materialize() {\n const { dx, dy, blur, shadowOnly, color: cl, inner } = this.props;\n const color = this.Skia.Color(cl);\n const input = this.getOptionalChildInstance(0);\n let factory;\n if (inner) {\n factory = MakeInnerShadow.bind(null, this.Skia, shadowOnly);\n } else {\n factory = shadowOnly\n ? this.Skia.ImageFilter.MakeDropShadowOnly.bind(this.Skia.ImageFilter)\n : this.Skia.ImageFilter.MakeDropShadow.bind(this.Skia.ImageFilter);\n }\n return factory(dx, dy, blur, blur, color, input);\n }\n}\n\nexport enum MorphologyOperator {\n Erode,\n Dilate,\n}\n\nexport class MorphologyImageFilterNode extends ImageFilterDeclaration<MorphologyImageFilterProps> {\n constructor(ctx: NodeContext, props: MorphologyImageFilterProps) {\n super(ctx, NodeType.MorphologyImageFilter, props);\n }\n\n materialize() {\n const { operator } = this.props;\n const r = processRadius(this.Skia, this.props.radius);\n const input = this.getOptionalChildInstance(0);\n if (MorphologyOperator[enumKey(operator)] === MorphologyOperator.Erode) {\n return this.Skia.ImageFilter.MakeErode(r.x, r.y, input);\n }\n return this.Skia.ImageFilter.MakeDilate(r.x, r.y, input);\n }\n}\n\nexport class BlendImageFilterNode extends ImageFilterDeclaration<BlendImageFilterProps> {\n constructor(ctx: NodeContext, props: BlendImageFilterProps) {\n super(ctx, NodeType.BlendImageFilter, props);\n }\n\n materialize() {\n const { mode } = this.props;\n const a = this.getMandatoryChildInstance(0);\n const b = this.getMandatoryChildInstance(1);\n return this.Skia.ImageFilter.MakeBlend(mode, a, b);\n }\n}\n\nexport class RuntimeShaderImageFilterNode extends ImageFilterDeclaration<RuntimeShaderImageFilterProps> {\n constructor(ctx: NodeContext, props: RuntimeShaderImageFilterProps) {\n super(ctx, NodeType.RuntimeShaderImageFilter, props);\n }\n\n materialize() {\n const { source, uniforms } = this.props;\n const rtb = this.Skia.RuntimeShaderBuilder(source);\n if (uniforms) {\n processUniforms(source, uniforms, rtb);\n }\n const input = this.getOptionalChildInstance(0);\n return this.Skia.ImageFilter.MakeRuntimeShader(rtb, null, input);\n }\n}\n"],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  import { processUniforms, FilterMode, MipmapMode, TileMode } from "../../../skia/types";
2
2
  import { JsiDeclarationNode } from "../Node";
3
3
  import { DeclarationType, NodeType } from "../../types";
4
- import { processColor } from "../datatypes/Color";
5
4
  import { enumKey, fitRects, getRect, processGradientProps, processTransformProps, rect2rect } from "../datatypes";
6
5
  export class ShaderDeclaration extends JsiDeclarationNode {
7
6
  constructor(ctx, type, props) {
@@ -71,7 +70,7 @@ export class ColorNode extends ShaderDeclaration {
71
70
  const {
72
71
  color
73
72
  } = this.props;
74
- return this.Skia.Shader.MakeColor(processColor(this.Skia, color, 1));
73
+ return this.Skia.Shader.MakeColor(this.Skia.Color(color));
75
74
  }
76
75
 
77
76
  }
@@ -1 +1 @@
1
- {"version":3,"names":["processUniforms","FilterMode","MipmapMode","TileMode","JsiDeclarationNode","DeclarationType","NodeType","processColor","enumKey","fitRects","getRect","processGradientProps","processTransformProps","rect2rect","ShaderDeclaration","constructor","ctx","type","props","Shader","ShaderNode","materialize","source","uniforms","transform","m3","Skia","Matrix","makeShaderWithChildren","children","filter","child","isShader","map","ImageShaderNode","ImageShader","fit","image","tx","ty","fm","mm","imageShaderProps","rct","rects","x","y","width","height","src","dst","lm","makeShaderOptions","ColorNode","ColorShader","color","MakeColor","TurbulenceNode","Turbulence","freqX","freqY","octaves","seed","tileWidth","tileHeight","MakeTurbulence","FractalNoiseNode","FractalNoise","MakeFractalNoise","LinearGradientNode","LinearGradient","start","end","colors","positions","mode","localMatrix","flags","MakeLinearGradient","RadialGradientNode","RadialGradient","c","r","MakeRadialGradient","SweepGradientNode","SweepGradient","MakeSweepGradient","TwoPointConicalGradientNode","TwoPointConicalGradient","startR","endR","MakeTwoPointConicalGradient"],"sources":["Shaders.ts"],"sourcesContent":["import {\n processUniforms,\n FilterMode,\n MipmapMode,\n TileMode,\n} from \"../../../skia/types\";\nimport type { SkShader } from \"../../../skia/types\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\nimport type {\n ColorProps,\n FractalNoiseProps,\n ImageShaderProps,\n LinearGradientProps,\n RadialGradientProps,\n ShaderProps,\n SweepGradientProps,\n TurbulenceProps,\n TwoPointConicalGradientProps,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport { processColor } from \"../datatypes/Color\";\nimport {\n enumKey,\n fitRects,\n getRect,\n processGradientProps,\n processTransformProps,\n rect2rect,\n} from \"../datatypes\";\n\nexport abstract class ShaderDeclaration<P> extends JsiDeclarationNode<\n P,\n SkShader\n> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.Shader, type, props);\n }\n}\n\nexport class ShaderNode extends ShaderDeclaration<ShaderProps> {\n constructor(ctx: NodeContext, props: ShaderProps) {\n super(ctx, NodeType.Shader, props);\n }\n\n materialize() {\n const { source, uniforms, ...transform } = this.props;\n const m3 = this.Skia.Matrix();\n processTransformProps(m3, transform);\n return source.makeShaderWithChildren(\n processUniforms(source, uniforms),\n this.children()\n .filter(\n (child): child is JsiDeclarationNode<unknown, SkShader> =>\n child instanceof JsiDeclarationNode && child.isShader()\n )\n .map((child) => child.materialize()),\n m3\n );\n }\n}\n\nexport class ImageShaderNode extends ShaderDeclaration<ImageShaderProps> {\n constructor(ctx: NodeContext, props: ImageShaderProps) {\n super(ctx, NodeType.ImageShader, props);\n }\n\n materialize() {\n const { fit, image, tx, ty, fm, mm, ...imageShaderProps } = this.props;\n const rct = getRect(this.Skia, imageShaderProps);\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 m3 = rect2rect(rects.src, rects.dst);\n imageShaderProps.transform = [\n ...(imageShaderProps.transform ?? []),\n ...m3,\n ];\n }\n const lm = this.Skia.Matrix();\n processTransformProps(lm, imageShaderProps);\n return image.makeShaderOptions(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n FilterMode[enumKey(fm)],\n MipmapMode[enumKey(mm)],\n lm\n );\n }\n}\n\nexport class ColorNode extends ShaderDeclaration<ColorProps> {\n constructor(ctx: NodeContext, props: ColorProps) {\n super(ctx, NodeType.ColorShader, props);\n }\n\n materialize() {\n const { color } = this.props;\n return this.Skia.Shader.MakeColor(processColor(this.Skia, color, 1));\n }\n}\n\nexport class TurbulenceNode extends ShaderDeclaration<TurbulenceProps> {\n constructor(ctx: NodeContext, props: TurbulenceProps) {\n super(ctx, NodeType.Turbulence, props);\n }\n\n materialize() {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n return this.Skia.Shader.MakeTurbulence(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n }\n}\n\nexport class FractalNoiseNode extends ShaderDeclaration<FractalNoiseProps> {\n constructor(ctx: NodeContext, props: FractalNoiseProps) {\n super(ctx, NodeType.FractalNoise, props);\n }\n\n materialize() {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n return this.Skia.Shader.MakeFractalNoise(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n }\n}\n\nexport class LinearGradientNode extends ShaderDeclaration<LinearGradientProps> {\n constructor(ctx: NodeContext, props: LinearGradientProps) {\n super(ctx, NodeType.LinearGradient, props);\n }\n\n materialize() {\n const { start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeLinearGradient(\n start,\n end,\n colors,\n positions ?? null,\n mode,\n localMatrix,\n flags\n );\n }\n}\n\nexport class RadialGradientNode extends ShaderDeclaration<RadialGradientProps> {\n constructor(ctx: NodeContext, props: RadialGradientProps) {\n super(ctx, NodeType.RadialGradient, props);\n }\n\n materialize() {\n const { c, r } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeRadialGradient(\n c,\n r,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n }\n}\n\nexport class SweepGradientNode extends ShaderDeclaration<SweepGradientProps> {\n constructor(ctx: NodeContext, props: SweepGradientProps) {\n super(ctx, NodeType.SweepGradient, props);\n }\n\n materialize() {\n const { c, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.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 }\n}\n\nexport class TwoPointConicalGradientNode extends ShaderDeclaration<TwoPointConicalGradientProps> {\n constructor(ctx: NodeContext, props: TwoPointConicalGradientProps) {\n super(ctx, NodeType.TwoPointConicalGradient, props);\n }\n\n materialize() {\n const { startR, endR, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeTwoPointConicalGradient(\n start,\n startR,\n end,\n endR,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["processUniforms","FilterMode","MipmapMode","TileMode","JsiDeclarationNode","DeclarationType","NodeType","enumKey","fitRects","getRect","processGradientProps","processTransformProps","rect2rect","ShaderDeclaration","constructor","ctx","type","props","Shader","ShaderNode","materialize","source","uniforms","transform","m3","Skia","Matrix","makeShaderWithChildren","children","filter","child","isShader","map","ImageShaderNode","ImageShader","fit","image","tx","ty","fm","mm","imageShaderProps","rct","rects","x","y","width","height","src","dst","lm","makeShaderOptions","ColorNode","ColorShader","color","MakeColor","Color","TurbulenceNode","Turbulence","freqX","freqY","octaves","seed","tileWidth","tileHeight","MakeTurbulence","FractalNoiseNode","FractalNoise","MakeFractalNoise","LinearGradientNode","LinearGradient","start","end","colors","positions","mode","localMatrix","flags","MakeLinearGradient","RadialGradientNode","RadialGradient","c","r","MakeRadialGradient","SweepGradientNode","SweepGradient","MakeSweepGradient","TwoPointConicalGradientNode","TwoPointConicalGradient","startR","endR","MakeTwoPointConicalGradient"],"sources":["Shaders.ts"],"sourcesContent":["import {\n processUniforms,\n FilterMode,\n MipmapMode,\n TileMode,\n} from \"../../../skia/types\";\nimport type { SkShader } from \"../../../skia/types\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\nimport type {\n ColorProps,\n FractalNoiseProps,\n ImageShaderProps,\n LinearGradientProps,\n RadialGradientProps,\n ShaderProps,\n SweepGradientProps,\n TurbulenceProps,\n TwoPointConicalGradientProps,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport {\n enumKey,\n fitRects,\n getRect,\n processGradientProps,\n processTransformProps,\n rect2rect,\n} from \"../datatypes\";\n\nexport abstract class ShaderDeclaration<P> extends JsiDeclarationNode<\n P,\n SkShader\n> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.Shader, type, props);\n }\n}\n\nexport class ShaderNode extends ShaderDeclaration<ShaderProps> {\n constructor(ctx: NodeContext, props: ShaderProps) {\n super(ctx, NodeType.Shader, props);\n }\n\n materialize() {\n const { source, uniforms, ...transform } = this.props;\n const m3 = this.Skia.Matrix();\n processTransformProps(m3, transform);\n return source.makeShaderWithChildren(\n processUniforms(source, uniforms),\n this.children()\n .filter(\n (child): child is JsiDeclarationNode<unknown, SkShader> =>\n child instanceof JsiDeclarationNode && child.isShader()\n )\n .map((child) => child.materialize()),\n m3\n );\n }\n}\n\nexport class ImageShaderNode extends ShaderDeclaration<ImageShaderProps> {\n constructor(ctx: NodeContext, props: ImageShaderProps) {\n super(ctx, NodeType.ImageShader, props);\n }\n\n materialize() {\n const { fit, image, tx, ty, fm, mm, ...imageShaderProps } = this.props;\n const rct = getRect(this.Skia, imageShaderProps);\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 m3 = rect2rect(rects.src, rects.dst);\n imageShaderProps.transform = [\n ...(imageShaderProps.transform ?? []),\n ...m3,\n ];\n }\n const lm = this.Skia.Matrix();\n processTransformProps(lm, imageShaderProps);\n return image.makeShaderOptions(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n FilterMode[enumKey(fm)],\n MipmapMode[enumKey(mm)],\n lm\n );\n }\n}\n\nexport class ColorNode extends ShaderDeclaration<ColorProps> {\n constructor(ctx: NodeContext, props: ColorProps) {\n super(ctx, NodeType.ColorShader, props);\n }\n\n materialize() {\n const { color } = this.props;\n return this.Skia.Shader.MakeColor(this.Skia.Color(color));\n }\n}\n\nexport class TurbulenceNode extends ShaderDeclaration<TurbulenceProps> {\n constructor(ctx: NodeContext, props: TurbulenceProps) {\n super(ctx, NodeType.Turbulence, props);\n }\n\n materialize() {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n return this.Skia.Shader.MakeTurbulence(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n }\n}\n\nexport class FractalNoiseNode extends ShaderDeclaration<FractalNoiseProps> {\n constructor(ctx: NodeContext, props: FractalNoiseProps) {\n super(ctx, NodeType.FractalNoise, props);\n }\n\n materialize() {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n return this.Skia.Shader.MakeFractalNoise(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n }\n}\n\nexport class LinearGradientNode extends ShaderDeclaration<LinearGradientProps> {\n constructor(ctx: NodeContext, props: LinearGradientProps) {\n super(ctx, NodeType.LinearGradient, props);\n }\n\n materialize() {\n const { start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeLinearGradient(\n start,\n end,\n colors,\n positions ?? null,\n mode,\n localMatrix,\n flags\n );\n }\n}\n\nexport class RadialGradientNode extends ShaderDeclaration<RadialGradientProps> {\n constructor(ctx: NodeContext, props: RadialGradientProps) {\n super(ctx, NodeType.RadialGradient, props);\n }\n\n materialize() {\n const { c, r } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeRadialGradient(\n c,\n r,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n }\n}\n\nexport class SweepGradientNode extends ShaderDeclaration<SweepGradientProps> {\n constructor(ctx: NodeContext, props: SweepGradientProps) {\n super(ctx, NodeType.SweepGradient, props);\n }\n\n materialize() {\n const { c, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.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 }\n}\n\nexport class TwoPointConicalGradientNode extends ShaderDeclaration<TwoPointConicalGradientProps> {\n constructor(ctx: NodeContext, props: TwoPointConicalGradientProps) {\n super(ctx, NodeType.TwoPointConicalGradient, props);\n }\n\n materialize() {\n const { startR, endR, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeTwoPointConicalGradient(\n start,\n startR,\n end,\n endR,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["DrawingContext.ts"],"sourcesContent":["import type { SkCanvas, SkPaint } from \"../../skia/types\";\n\nexport interface DrawingContext {\n canvas: SkCanvas;\n paint: SkPaint;\n opacity: number;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["DrawingContext.ts"],"sourcesContent":["import type { SkCanvas, SkPaint } from \"../../skia/types\";\n\nexport interface DrawingContext {\n canvas: SkCanvas;\n paint: SkPaint;\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["DrawingContext.ts"],"sourcesContent":["import type { RefObject } from \"react\";\n\nimport type { DrawingInfo, SkiaView } from \"../views\";\nimport type { SkCanvas, SkPaint, Skia, Vector } from \"../skia/types\";\n\nexport interface DrawingContext extends Omit<DrawingInfo, \"touches\"> {\n canvas: SkCanvas;\n paint: SkPaint;\n opacity: number;\n center: Vector;\n ref: RefObject<SkiaView>;\n Skia: Skia;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["DrawingContext.ts"],"sourcesContent":["import type { RefObject } from \"react\";\n\nimport type { DrawingInfo, SkiaView } from \"../views\";\nimport type { Skia, Vector } from \"../skia/types\";\nimport type { DrawingContext as DOMDrawingContext } from \"../dom/types\";\n\nexport interface DrawingContext\n extends Omit<DrawingInfo, \"touches\">,\n DOMDrawingContext {\n center: Vector;\n ref: RefObject<SkiaView>;\n Skia: Skia;\n}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"names":["PaintStyle","StrokeCap","StrokeJoin","isPaint","obj","__typename__"],"sources":["Paint.ts"],"sourcesContent":["import type { SkImageFilter } from \"../ImageFilter\";\nimport type { SkMaskFilter } from \"../MaskFilter\";\nimport type { SkColorFilter } from \"../ColorFilter\";\nimport type { SkColor } from \"../Color\";\nimport type { SkPathEffect } from \"../PathEffect\";\nimport type { SkJSIInstance } from \"../JsiInstance\";\nimport type { SkShader } from \"../Shader\";\n\nimport type { BlendMode } from \"./BlendMode\";\n\nexport enum PaintStyle {\n Fill,\n Stroke,\n}\n\nexport enum StrokeCap {\n Butt,\n Round,\n Square,\n}\n\nexport enum StrokeJoin {\n Miter,\n Round,\n Bevel,\n}\n\nexport const isPaint = (obj: SkJSIInstance<string> | null): obj is SkPaint =>\n obj !== null && obj.__typename__ === \"Paint\";\n\nexport interface SkPaint extends SkJSIInstance<\"Paint\"> {\n /**\n * Returns a copy of this paint.\n */\n copy(): SkPaint;\n\n /**\n * Sets all SkPaint contents to their initial values. This is equivalent to replacing\n SkPaint with the result of SkPaint().\n */\n reset(): void;\n\n /**\n * Retrieves the alpha and RGB unpremultiplied. RGB are extended sRGB values\n * (sRGB gamut, and encoded with the sRGB transfer function).\n */\n getColor(): SkColor;\n\n /**\n * Returns the geometry drawn at the beginning and end of strokes.\n */\n getStrokeCap(): StrokeCap;\n\n /**\n * Returns the geometry drawn at the corners of strokes.\n */\n getStrokeJoin(): StrokeJoin;\n\n /**\n * Returns the limit at which a sharp corner is drawn beveled.\n */\n getStrokeMiter(): number;\n\n /**\n * Returns the thickness of the pen used to outline the shape.\n */\n getStrokeWidth(): number;\n\n /**\n * Replaces alpha, leaving RGBA unchanged. 0 means fully transparent, 1.0 means opaque.\n * @param alpha\n */\n setAlphaf(alpha: number): void;\n\n /**\n * Requests, but does not require, that edge pixels draw opaque or with\n * partial transparency.\n * @param aa\n */\n setAntiAlias: (aa: boolean) => void;\n\n /**\n * Sets the blend mode that is, the mode used to combine source color\n * with destination color.\n * @param mode\n */\n setBlendMode: (blendMode: BlendMode) => void;\n\n /**\n * Sets alpha and RGB used when stroking and filling. The color is a 32-bit\n * value, unpremultiplied, packing 8-bit components for alpha, red, blue,\n * and green.\n *\n * @param color unpremultiplied ARGB\n *\n * example: https://fiddle.skia.org/c/@Paint_setColor\n */\n setColor(color: SkColor): void;\n\n /**\n * Sets the current color filter, replacing the existing one if there was one.\n * @param filter\n */\n setColorFilter(filter: SkColorFilter | null): void;\n\n /**\n * Sets the current image filter, replacing the existing one if there was one.\n * @param filter\n */\n setImageFilter(filter: SkImageFilter | null): void;\n\n /**\n * Sets the current mask filter, replacing the existing one if there was one.\n * @param filter\n */\n setMaskFilter(filter: SkMaskFilter | null): void;\n\n /**\n * Sets the current path effect, replacing the existing one if there was one.\n * @param effect\n */\n setPathEffect(effect: SkPathEffect | null): void;\n\n /**\n * Sets the current shader, replacing the existing one if there was one.\n * @param shader\n */\n setShader(shader: SkShader | null): void;\n\n /**\n * Sets the geometry drawn at the beginning and end of strokes.\n * @param cap\n */\n setStrokeCap(cap: StrokeCap): void;\n\n /**\n * Sets the geometry drawn at the corners of strokes.\n * @param join\n */\n setStrokeJoin(join: StrokeJoin): void;\n\n /**\n * Sets the limit at which a sharp corner is drawn beveled.\n * @param limit\n */\n setStrokeMiter(limit: number): void;\n\n /**\n * Sets the thickness of the pen used to outline the shape.\n * @param width\n */\n setStrokeWidth(width: number): void;\n\n /**\n * Sets whether the geometry is filled or stroked.\n * @param style\n */\n setStyle(style: PaintStyle): void;\n}\n"],"mappings":"AAUA,WAAYA,UAAZ;;WAAYA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;GAAAA,U,KAAAA,U;;AAKZ,WAAYC,SAAZ;;WAAYA,S;EAAAA,S,CAAAA,S;EAAAA,S,CAAAA,S;EAAAA,S,CAAAA,S;GAAAA,S,KAAAA,S;;AAMZ,WAAYC,UAAZ;;WAAYA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;GAAAA,U,KAAAA,U;;AAMZ,OAAO,MAAMC,OAAO,GAAIC,GAAD,IACrBA,GAAG,KAAK,IAAR,IAAgBA,GAAG,CAACC,YAAJ,KAAqB,OADhC"}
1
+ {"version":3,"names":["PaintStyle","StrokeCap","StrokeJoin","isPaint","obj","__typename__"],"sources":["Paint.ts"],"sourcesContent":["import type { SkImageFilter } from \"../ImageFilter\";\nimport type { SkMaskFilter } from \"../MaskFilter\";\nimport type { SkColorFilter } from \"../ColorFilter\";\nimport type { SkColor } from \"../Color\";\nimport type { SkPathEffect } from \"../PathEffect\";\nimport type { SkJSIInstance } from \"../JsiInstance\";\nimport type { SkShader } from \"../Shader\";\n\nimport type { BlendMode } from \"./BlendMode\";\n\nexport enum PaintStyle {\n Fill,\n Stroke,\n}\n\nexport enum StrokeCap {\n Butt,\n Round,\n Square,\n}\n\nexport enum StrokeJoin {\n Miter,\n Round,\n Bevel,\n}\n\nexport const isPaint = (obj: SkJSIInstance<string> | null): obj is SkPaint =>\n obj !== null && obj.__typename__ === \"Paint\";\n\nexport interface SkPaint extends SkJSIInstance<\"Paint\"> {\n /**\n * Retrieves alpha from the color used when stroking and filling.\n */\n getAlphaf(): number;\n\n /**\n * Returns a copy of this paint.\n */\n copy(): SkPaint;\n\n /**\n * Sets all SkPaint contents to their initial values. This is equivalent to replacing\n SkPaint with the result of SkPaint().\n */\n reset(): void;\n\n /**\n * Retrieves the alpha and RGB unpremultiplied. RGB are extended sRGB values\n * (sRGB gamut, and encoded with the sRGB transfer function).\n */\n getColor(): SkColor;\n\n /**\n * Returns the geometry drawn at the beginning and end of strokes.\n */\n getStrokeCap(): StrokeCap;\n\n /**\n * Returns the geometry drawn at the corners of strokes.\n */\n getStrokeJoin(): StrokeJoin;\n\n /**\n * Returns the limit at which a sharp corner is drawn beveled.\n */\n getStrokeMiter(): number;\n\n /**\n * Returns the thickness of the pen used to outline the shape.\n */\n getStrokeWidth(): number;\n\n /**\n * Replaces alpha, leaving RGBA unchanged. 0 means fully transparent, 1.0 means opaque.\n * @param alpha\n */\n setAlphaf(alpha: number): void;\n\n /**\n * Requests, but does not require, that edge pixels draw opaque or with\n * partial transparency.\n * @param aa\n */\n setAntiAlias: (aa: boolean) => void;\n\n /**\n * Sets the blend mode that is, the mode used to combine source color\n * with destination color.\n * @param mode\n */\n setBlendMode: (blendMode: BlendMode) => void;\n\n /**\n * Sets alpha and RGB used when stroking and filling. The color is a 32-bit\n * value, unpremultiplied, packing 8-bit components for alpha, red, blue,\n * and green.\n *\n * @param color unpremultiplied ARGB\n *\n * example: https://fiddle.skia.org/c/@Paint_setColor\n */\n setColor(color: SkColor): void;\n\n /**\n * Sets the current color filter, replacing the existing one if there was one.\n * @param filter\n */\n setColorFilter(filter: SkColorFilter | null): void;\n\n /**\n * Sets the current image filter, replacing the existing one if there was one.\n * @param filter\n */\n setImageFilter(filter: SkImageFilter | null): void;\n\n /**\n * Sets the current mask filter, replacing the existing one if there was one.\n * @param filter\n */\n setMaskFilter(filter: SkMaskFilter | null): void;\n\n /**\n * Sets the current path effect, replacing the existing one if there was one.\n * @param effect\n */\n setPathEffect(effect: SkPathEffect | null): void;\n\n /**\n * Sets the current shader, replacing the existing one if there was one.\n * @param shader\n */\n setShader(shader: SkShader | null): void;\n\n /**\n * Sets the geometry drawn at the beginning and end of strokes.\n * @param cap\n */\n setStrokeCap(cap: StrokeCap): void;\n\n /**\n * Sets the geometry drawn at the corners of strokes.\n * @param join\n */\n setStrokeJoin(join: StrokeJoin): void;\n\n /**\n * Sets the limit at which a sharp corner is drawn beveled.\n * @param limit\n */\n setStrokeMiter(limit: number): void;\n\n /**\n * Sets the thickness of the pen used to outline the shape.\n * @param width\n */\n setStrokeWidth(width: number): void;\n\n /**\n * Sets whether the geometry is filled or stroked.\n * @param style\n */\n setStyle(style: PaintStyle): void;\n}\n"],"mappings":"AAUA,WAAYA,UAAZ;;WAAYA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;GAAAA,U,KAAAA,U;;AAKZ,WAAYC,SAAZ;;WAAYA,S;EAAAA,S,CAAAA,S;EAAAA,S,CAAAA,S;EAAAA,S,CAAAA,S;GAAAA,S,KAAAA,S;;AAMZ,WAAYC,UAAZ;;WAAYA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;EAAAA,U,CAAAA,U;GAAAA,U,KAAAA,U;;AAMZ,OAAO,MAAMC,OAAO,GAAIC,GAAD,IACrBA,GAAG,KAAK,IAAR,IAAgBA,GAAG,CAACC,YAAJ,KAAqB,OADhC"}
@@ -17,6 +17,10 @@ export class JsiSkPaint extends HostObject {
17
17
  this.ref = new this.CanvasKit.Paint();
18
18
  }
19
19
 
20
+ getAlphaf() {
21
+ return this.getColor()[3];
22
+ }
23
+
20
24
  getColor() {
21
25
  return this.ref.getColor();
22
26
  }
@@ -1 +1 @@
1
- {"version":3,"names":["HostObject","ckEnum","JsiSkColorFilter","JsiSkImageFilter","JsiSkMaskFilter","JsiSkPathEffect","JsiSkShader","JsiSkPaint","constructor","CanvasKit","ref","copy","reset","Paint","getColor","getStrokeCap","value","getStrokeJoin","getStrokeMiter","getStrokeWidth","setAlphaf","alpha","setAntiAlias","aa","setBlendMode","blendMode","setColor","color","setColorFilter","filter","fromValue","setImageFilter","setMaskFilter","setPathEffect","effect","setShader","shader","setStrokeCap","cap","setStrokeJoin","join","setStrokeMiter","limit","setStrokeWidth","width","setStyle","style"],"sources":["JsiSkPaint.ts"],"sourcesContent":["import type { CanvasKit, Paint } from \"canvaskit-wasm\";\n\nimport type {\n StrokeJoin,\n BlendMode,\n SkColor,\n SkColorFilter,\n SkImageFilter,\n SkPaint,\n SkShader,\n StrokeCap,\n PaintStyle,\n SkMaskFilter,\n SkPathEffect,\n} from \"../types\";\n\nimport { HostObject, ckEnum } from \"./Host\";\nimport { JsiSkColorFilter } from \"./JsiSkColorFilter\";\nimport { JsiSkImageFilter } from \"./JsiSkImageFilter\";\nimport { JsiSkMaskFilter } from \"./JsiSkMaskFilter\";\nimport { JsiSkPathEffect } from \"./JsiSkPathEffect\";\nimport { JsiSkShader } from \"./JsiSkShader\";\n\nexport class JsiSkPaint extends HostObject<Paint, \"Paint\"> implements SkPaint {\n constructor(CanvasKit: CanvasKit, ref: Paint) {\n super(CanvasKit, ref, \"Paint\");\n }\n\n copy() {\n return new JsiSkPaint(this.CanvasKit, this.ref.copy());\n }\n\n reset() {\n this.ref = new this.CanvasKit.Paint();\n }\n\n getColor() {\n return this.ref.getColor();\n }\n\n getStrokeCap() {\n return this.ref.getStrokeCap().value;\n }\n\n getStrokeJoin() {\n return this.ref.getStrokeJoin().value;\n }\n\n getStrokeMiter() {\n return this.ref.getStrokeMiter();\n }\n\n getStrokeWidth() {\n return this.ref.getStrokeWidth();\n }\n\n setAlphaf(alpha: number) {\n this.ref.setAlphaf(alpha);\n }\n\n setAntiAlias(aa: boolean) {\n this.ref.setAntiAlias(aa);\n }\n\n setBlendMode(blendMode: BlendMode) {\n this.ref.setBlendMode(ckEnum(blendMode));\n }\n\n setColor(color: SkColor) {\n this.ref.setColor(color);\n }\n\n setColorFilter(filter: SkColorFilter | null) {\n this.ref.setColorFilter(filter ? JsiSkColorFilter.fromValue(filter) : null);\n }\n\n setImageFilter(filter: SkImageFilter | null) {\n this.ref.setImageFilter(filter ? JsiSkImageFilter.fromValue(filter) : null);\n }\n\n setMaskFilter(filter: SkMaskFilter | null) {\n this.ref.setMaskFilter(filter ? JsiSkMaskFilter.fromValue(filter) : null);\n }\n\n setPathEffect(effect: SkPathEffect | null) {\n this.ref.setPathEffect(effect ? JsiSkPathEffect.fromValue(effect) : null);\n }\n\n setShader(shader: SkShader | null) {\n this.ref.setShader(shader ? JsiSkShader.fromValue(shader) : null);\n }\n\n setStrokeCap(cap: StrokeCap) {\n this.ref.setStrokeCap(ckEnum(cap));\n }\n\n setStrokeJoin(join: StrokeJoin) {\n this.ref.setStrokeJoin(ckEnum(join));\n }\n\n setStrokeMiter(limit: number) {\n this.ref.setStrokeMiter(limit);\n }\n\n setStrokeWidth(width: number) {\n this.ref.setStrokeWidth(width);\n }\n\n setStyle(style: PaintStyle) {\n this.ref.setStyle({ value: style });\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["HostObject","ckEnum","JsiSkColorFilter","JsiSkImageFilter","JsiSkMaskFilter","JsiSkPathEffect","JsiSkShader","JsiSkPaint","constructor","CanvasKit","ref","copy","reset","Paint","getAlphaf","getColor","getStrokeCap","value","getStrokeJoin","getStrokeMiter","getStrokeWidth","setAlphaf","alpha","setAntiAlias","aa","setBlendMode","blendMode","setColor","color","setColorFilter","filter","fromValue","setImageFilter","setMaskFilter","setPathEffect","effect","setShader","shader","setStrokeCap","cap","setStrokeJoin","join","setStrokeMiter","limit","setStrokeWidth","width","setStyle","style"],"sources":["JsiSkPaint.ts"],"sourcesContent":["import type { CanvasKit, Paint } from \"canvaskit-wasm\";\n\nimport type {\n StrokeJoin,\n BlendMode,\n SkColor,\n SkColorFilter,\n SkImageFilter,\n SkPaint,\n SkShader,\n StrokeCap,\n PaintStyle,\n SkMaskFilter,\n SkPathEffect,\n} from \"../types\";\n\nimport { HostObject, ckEnum } from \"./Host\";\nimport { JsiSkColorFilter } from \"./JsiSkColorFilter\";\nimport { JsiSkImageFilter } from \"./JsiSkImageFilter\";\nimport { JsiSkMaskFilter } from \"./JsiSkMaskFilter\";\nimport { JsiSkPathEffect } from \"./JsiSkPathEffect\";\nimport { JsiSkShader } from \"./JsiSkShader\";\n\nexport class JsiSkPaint extends HostObject<Paint, \"Paint\"> implements SkPaint {\n constructor(CanvasKit: CanvasKit, ref: Paint) {\n super(CanvasKit, ref, \"Paint\");\n }\n\n copy() {\n return new JsiSkPaint(this.CanvasKit, this.ref.copy());\n }\n\n reset() {\n this.ref = new this.CanvasKit.Paint();\n }\n\n getAlphaf() {\n return this.getColor()[3];\n }\n\n getColor() {\n return this.ref.getColor();\n }\n\n getStrokeCap() {\n return this.ref.getStrokeCap().value;\n }\n\n getStrokeJoin() {\n return this.ref.getStrokeJoin().value;\n }\n\n getStrokeMiter() {\n return this.ref.getStrokeMiter();\n }\n\n getStrokeWidth() {\n return this.ref.getStrokeWidth();\n }\n\n setAlphaf(alpha: number) {\n this.ref.setAlphaf(alpha);\n }\n\n setAntiAlias(aa: boolean) {\n this.ref.setAntiAlias(aa);\n }\n\n setBlendMode(blendMode: BlendMode) {\n this.ref.setBlendMode(ckEnum(blendMode));\n }\n\n setColor(color: SkColor) {\n this.ref.setColor(color);\n }\n\n setColorFilter(filter: SkColorFilter | null) {\n this.ref.setColorFilter(filter ? JsiSkColorFilter.fromValue(filter) : null);\n }\n\n setImageFilter(filter: SkImageFilter | null) {\n this.ref.setImageFilter(filter ? JsiSkImageFilter.fromValue(filter) : null);\n }\n\n setMaskFilter(filter: SkMaskFilter | null) {\n this.ref.setMaskFilter(filter ? JsiSkMaskFilter.fromValue(filter) : null);\n }\n\n setPathEffect(effect: SkPathEffect | null) {\n this.ref.setPathEffect(effect ? JsiSkPathEffect.fromValue(effect) : null);\n }\n\n setShader(shader: SkShader | null) {\n this.ref.setShader(shader ? JsiSkShader.fromValue(shader) : null);\n }\n\n setStrokeCap(cap: StrokeCap) {\n this.ref.setStrokeCap(ckEnum(cap));\n }\n\n setStrokeJoin(join: StrokeJoin) {\n this.ref.setStrokeJoin(ckEnum(join));\n }\n\n setStrokeMiter(limit: number) {\n this.ref.setStrokeMiter(limit);\n }\n\n setStrokeWidth(width: number) {\n this.ref.setStrokeWidth(width);\n }\n\n setStyle(style: PaintStyle) {\n this.ref.setStyle({ value: style });\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2
- // @ts-expect-error
2
+ // @ts-ignore
3
3
  import CanvasKitInit from "canvaskit-wasm/bin/full/canvaskit";
4
4
  export const LoadSkiaWeb = async opts => {
5
5
  if (global.CanvasKit !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"names":["CanvasKitInit","LoadSkiaWeb","opts","global","CanvasKit","undefined","LoadSkia"],"sources":["LoadSkiaWeb.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-expect-error\nimport CanvasKitInit from \"canvaskit-wasm/bin/full/canvaskit\";\nimport type {\n CanvasKit as CanvasKitType,\n CanvasKitInitOptions,\n} from \"canvaskit-wasm\";\n\ndeclare global {\n var CanvasKit: CanvasKitType;\n}\n\nexport const LoadSkiaWeb = async (opts?: CanvasKitInitOptions) => {\n if (global.CanvasKit !== undefined) {\n return;\n }\n const CanvasKit = await CanvasKitInit(opts);\n // The CanvasKit API is stored on the global object and used\n // to create the JsiSKApi in the Skia.web.ts file.\n global.CanvasKit = CanvasKit;\n};\n\n// We keep this function for backward compatibility\nexport const LoadSkia = LoadSkiaWeb;\n"],"mappings":"AAAA;AACA;AACA,OAAOA,aAAP,MAA0B,mCAA1B;AAUA,OAAO,MAAMC,WAAW,GAAG,MAAOC,IAAP,IAAuC;EAChE,IAAIC,MAAM,CAACC,SAAP,KAAqBC,SAAzB,EAAoC;IAClC;EACD;;EACD,MAAMD,SAAS,GAAG,MAAMJ,aAAa,CAACE,IAAD,CAArC,CAJgE,CAKhE;EACA;;EACAC,MAAM,CAACC,SAAP,GAAmBA,SAAnB;AACD,CARM,C,CAUP;;AACA,OAAO,MAAME,QAAQ,GAAGL,WAAjB"}
1
+ {"version":3,"names":["CanvasKitInit","LoadSkiaWeb","opts","global","CanvasKit","undefined","LoadSkia"],"sources":["LoadSkiaWeb.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nimport CanvasKitInit from \"canvaskit-wasm/bin/full/canvaskit\";\nimport type {\n CanvasKit as CanvasKitType,\n CanvasKitInitOptions,\n} from \"canvaskit-wasm\";\n\ndeclare global {\n var CanvasKit: CanvasKitType;\n}\n\nexport const LoadSkiaWeb = async (opts?: CanvasKitInitOptions) => {\n if (global.CanvasKit !== undefined) {\n return;\n }\n const CanvasKit = await CanvasKitInit(opts);\n // The CanvasKit API is stored on the global object and used\n // to create the JsiSKApi in the Skia.web.ts file.\n global.CanvasKit = CanvasKit;\n};\n\n// We keep this function for backward compatibility\nexport const LoadSkia = LoadSkiaWeb;\n"],"mappings":"AAAA;AACA;AACA,OAAOA,aAAP,MAA0B,mCAA1B;AAUA,OAAO,MAAMC,WAAW,GAAG,MAAOC,IAAP,IAAuC;EAChE,IAAIC,MAAM,CAACC,SAAP,KAAqBC,SAAzB,EAAoC;IAClC;EACD;;EACD,MAAMD,SAAS,GAAG,MAAMJ,aAAa,CAACE,IAAD,CAArC,CAJgE,CAKhE;EACA;;EACAC,MAAM,CAACC,SAAP,GAAmBA,SAAnB;AACD,CARM,C,CAUP;;AACA,OAAO,MAAME,QAAQ,GAAGL,WAAjB"}
@@ -1,7 +1,6 @@
1
1
  export * from "./Enum";
2
2
  export * from "./Path";
3
3
  export * from "./Fitting";
4
- export * from "./Color";
5
4
  export * from "./Rect";
6
5
  export * from "./Radius";
7
6
  export * from "./Circle";
@@ -9,5 +9,5 @@ export declare class BoxShadowNode extends JsiDeclarationNode<BoxShadowProps, Bo
9
9
  }
10
10
  export declare class BoxNode extends JsiRenderNode<BoxProps> {
11
11
  constructor(ctx: NodeContext, props: BoxProps);
12
- renderNode({ canvas, paint, opacity }: DrawingContext): void;
12
+ renderNode({ canvas, paint }: DrawingContext): void;
13
13
  }
@@ -14,5 +14,5 @@ export declare class PatchNode extends JsiDrawingNode<PatchProps, {
14
14
  points: SkPoint[];
15
15
  colors: Float32Array[] | undefined;
16
16
  };
17
- draw({ canvas, paint, opacity }: DrawingContext): void;
17
+ draw({ canvas, paint }: DrawingContext): void;
18
18
  }
@@ -2,5 +2,4 @@ import type { SkCanvas, SkPaint } from "../../skia/types";
2
2
  export interface DrawingContext {
3
3
  canvas: SkCanvas;
4
4
  paint: SkPaint;
5
- opacity: number;
6
5
  }
@@ -1,10 +1,8 @@
1
1
  import type { RefObject } from "react";
2
2
  import type { DrawingInfo, SkiaView } from "../views";
3
- import type { SkCanvas, SkPaint, Skia, Vector } from "../skia/types";
4
- export interface DrawingContext extends Omit<DrawingInfo, "touches"> {
5
- canvas: SkCanvas;
6
- paint: SkPaint;
7
- opacity: number;
3
+ import type { Skia, Vector } from "../skia/types";
4
+ import type { DrawingContext as DOMDrawingContext } from "../dom/types";
5
+ export interface DrawingContext extends Omit<DrawingInfo, "touches">, DOMDrawingContext {
8
6
  center: Vector;
9
7
  ref: RefObject<SkiaView>;
10
8
  Skia: Skia;
@@ -22,6 +22,10 @@ export declare enum StrokeJoin {
22
22
  }
23
23
  export declare const isPaint: (obj: SkJSIInstance<string> | null) => obj is SkPaint;
24
24
  export interface SkPaint extends SkJSIInstance<"Paint"> {
25
+ /**
26
+ * Retrieves alpha from the color used when stroking and filling.
27
+ */
28
+ getAlphaf(): number;
25
29
  /**
26
30
  * Returns a copy of this paint.
27
31
  */
@@ -5,6 +5,7 @@ export declare class JsiSkPaint extends HostObject<Paint, "Paint"> implements Sk
5
5
  constructor(CanvasKit: CanvasKit, ref: Paint);
6
6
  copy(): JsiSkPaint;
7
7
  reset(): void;
8
+ getAlphaf(): number;
8
9
  getColor(): Float32Array;
9
10
  getStrokeCap(): number;
10
11
  getStrokeJoin(): number;
package/package.json CHANGED
@@ -7,7 +7,7 @@
7
7
  "setup-skia-web": "./scripts/setup-canvaskit.js"
8
8
  },
9
9
  "title": "React Native Skia",
10
- "version": "0.1.163",
10
+ "version": "0.1.164",
11
11
  "description": "High-performance React Native Graphics using Skia",
12
12
  "main": "lib/module/index.js",
13
13
  "files": [
@@ -141,7 +141,7 @@ export abstract class JsiRenderNode<P extends GroupProps>
141
141
  opacity !== undefined ||
142
142
  antiAlias !== undefined
143
143
  ) {
144
- ctx = {};
144
+ ctx = { opacity: 1 };
145
145
  if (color !== undefined) {
146
146
  ctx.color = this.Skia.Color(color);
147
147
  }
@@ -208,24 +208,19 @@ export abstract class JsiRenderNode<P extends GroupProps>
208
208
  const { invertClip, layer, matrix, transform } = this.props;
209
209
  const { canvas } = parentCtx;
210
210
 
211
- const opacity =
212
- this.props.opacity !== undefined
213
- ? parentCtx.opacity * this.props.opacity
214
- : parentCtx.opacity;
215
-
216
211
  if (
217
212
  this.paintCache === null ||
218
213
  this.paintCache.parent !== parentCtx.paint
219
214
  ) {
220
215
  const paintCtx = this.getPaintCtx();
221
216
  const child = paintCtx
222
- ? concatPaint(parentCtx.paint, paintCtx, parentCtx.opacity)
217
+ ? concatPaint(parentCtx.paint.copy(), paintCtx)
223
218
  : parentCtx.paint;
224
219
  this.paintCache = { parent: parentCtx.paint, child };
225
220
  }
226
221
  const paint = this.paintCache.child;
227
222
  // TODO: can we only recreate a new context here if needed?
228
- const ctx = { ...parentCtx, opacity, paint };
223
+ const ctx = { ...parentCtx, paint };
229
224
  const hasTransform = matrix !== undefined || transform !== undefined;
230
225
  const hasClip =
231
226
  this.clipRect !== undefined ||
@@ -267,7 +262,7 @@ export abstract class JsiRenderNode<P extends GroupProps>
267
262
  }
268
263
 
269
264
  const concatPaint = (
270
- parent: SkPaint,
265
+ paint: SkPaint,
271
266
  {
272
267
  color,
273
268
  strokeWidth,
@@ -278,23 +273,21 @@ const concatPaint = (
278
273
  imageFilter,
279
274
  maskFilter,
280
275
  pathEffect,
281
- opacity: alpha,
276
+ opacity,
282
277
  strokeCap,
283
278
  strokeJoin,
284
279
  strokeMiter,
285
280
  style,
286
- }: PaintContext,
287
- opacity: number
281
+ }: PaintContext
288
282
  ) => {
289
- const paint = parent.copy();
283
+ if (opacity !== undefined) {
284
+ paint.setAlphaf(paint.getAlphaf() * opacity);
285
+ }
290
286
  if (color !== undefined) {
287
+ const currentOpacity = paint.getAlphaf();
291
288
  paint.setShader(null);
292
- color[3] *= opacity;
293
289
  paint.setColor(color);
294
- } else {
295
- const cl = paint.getColor();
296
- cl[3] = opacity;
297
- paint.setColor(cl);
290
+ paint.setAlphaf(currentOpacity * paint.getAlphaf());
298
291
  }
299
292
  if (strokeWidth !== undefined) {
300
293
  paint.setStrokeWidth(strokeWidth);
@@ -320,9 +313,6 @@ const concatPaint = (
320
313
  if (pathEffect !== undefined) {
321
314
  paint.setPathEffect(pathEffect);
322
315
  }
323
- if (alpha !== undefined) {
324
- paint.setAlphaf(alpha * opacity);
325
- }
326
316
  if (strokeCap !== undefined) {
327
317
  paint.setStrokeCap(strokeCap);
328
318
  }
@@ -1,7 +1,6 @@
1
1
  export * from "./Enum";
2
2
  export * from "./Path";
3
3
  export * from "./Fitting";
4
- export * from "./Color";
5
4
  export * from "./Rect";
6
5
  export * from "./Radius";
7
6
  export * from "./Circle";
@@ -5,7 +5,6 @@ import { DeclarationType, NodeType } from "../../types";
5
5
  import type { BoxShadowProps, BoxProps } from "../../types/Drawings";
6
6
  import type { NodeContext } from "../Node";
7
7
  import { JsiDeclarationNode } from "../Node";
8
- import { processColor } from "../datatypes";
9
8
  import { JsiRenderNode } from "../RenderNode";
10
9
 
11
10
  const inflate = (
@@ -54,8 +53,9 @@ export class BoxNode extends JsiRenderNode<BoxProps> {
54
53
  super(ctx, NodeType.Box, props);
55
54
  }
56
55
 
57
- renderNode({ canvas, paint, opacity }: DrawingContext) {
56
+ renderNode({ canvas, paint }: DrawingContext) {
58
57
  const { box: defaultBox } = this.props;
58
+ const opacity = paint.getAlphaf();
59
59
  const box = isRRect(defaultBox)
60
60
  ? defaultBox
61
61
  : this.Skia.RRectXY(defaultBox, 0, 0);
@@ -72,7 +72,8 @@ export class BoxNode extends JsiRenderNode<BoxProps> {
72
72
  .map((shadow) => {
73
73
  const { color = "black", blur, spread = 0, dx = 0, dy = 0 } = shadow;
74
74
  const lPaint = this.Skia.Paint();
75
- lPaint.setColor(processColor(this.Skia, color, opacity));
75
+ lPaint.setColor(this.Skia.Color(color));
76
+ lPaint.setAlphaf(paint.getAlphaf() * opacity);
76
77
  lPaint.setMaskFilter(
77
78
  this.Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)
78
79
  );
@@ -92,7 +93,9 @@ export class BoxNode extends JsiRenderNode<BoxProps> {
92
93
  canvas.save();
93
94
  canvas.clipRRect(box, ClipOp.Intersect, false);
94
95
  const lPaint = this.Skia.Paint();
95
- lPaint.setColor(processColor(this.Skia, color, opacity));
96
+ lPaint.setColor(this.Skia.Color(color));
97
+ lPaint.setAlphaf(paint.getAlphaf() * opacity);
98
+
96
99
  lPaint.setMaskFilter(
97
100
  this.Skia.MaskFilter.MakeBlur(BlurStyle.Normal, blur, true)
98
101
  );
@@ -2,7 +2,7 @@ import type { SkColor, SkPoint } from "../../../skia/types";
2
2
  import { BlendMode } from "../../../skia/types";
3
3
  import type { DrawingContext, PatchProps } from "../../types";
4
4
  import { NodeType } from "../../types";
5
- import { ALPHA, enumKey, processColor } from "../datatypes";
5
+ import { enumKey } from "../datatypes";
6
6
  import { JsiDrawingNode } from "../DrawingNode";
7
7
  import type { NodeContext } from "../Node";
8
8
 
@@ -39,30 +39,16 @@ export class PatchNode extends JsiDrawingNode<
39
39
  patch[3].c2,
40
40
  patch[0].c1,
41
41
  ],
42
- colors: colors
43
- ? colors.map((c) => processColor(this.Skia, c, 1))
44
- : undefined,
42
+ colors: colors ? colors.map((c) => this.Skia.Color(c)) : undefined,
45
43
  };
46
44
  }
47
45
 
48
- draw({ canvas, paint, opacity }: DrawingContext) {
46
+ draw({ canvas, paint }: DrawingContext) {
49
47
  if (!this.derived) {
50
48
  throw new Error("PatchNode: derived props not set");
51
49
  }
52
50
  const { texture } = this.props;
53
51
  const { colors, points, mode } = this.derived;
54
- canvas.drawPatch(
55
- points,
56
- opacity === 1
57
- ? colors
58
- : colors &&
59
- colors.map((c) => {
60
- c[ALPHA] = c[ALPHA] * opacity;
61
- return c;
62
- }),
63
- texture,
64
- mode,
65
- paint
66
- );
52
+ canvas.drawPatch(points, colors, texture, mode, paint);
67
53
  }
68
54
  }
@@ -2,7 +2,7 @@ import type { SkVertices } from "../../../skia/types";
2
2
  import { VertexMode, BlendMode } from "../../../skia/types";
3
3
  import type { DrawingContext, VerticesProps } from "../../types";
4
4
  import { NodeType } from "../../types";
5
- import { enumKey, processColor } from "../datatypes";
5
+ import { enumKey } from "../datatypes";
6
6
  import { JsiDrawingNode } from "../DrawingNode";
7
7
  import type { NodeContext } from "../Node";
8
8
 
@@ -18,7 +18,7 @@ export class VerticesNode extends JsiDrawingNode<VerticesProps, SkVertices> {
18
18
  vertexMode,
19
19
  vertices,
20
20
  textures,
21
- colors ? colors.map((c) => processColor(this.Skia, c, 1)) : undefined,
21
+ colors ? colors.map((c) => this.Skia.Color(c)) : undefined,
22
22
  indices
23
23
  );
24
24
  }
@@ -8,7 +8,6 @@ import type {
8
8
  Node,
9
9
  } from "../../types";
10
10
  import { DeclarationType, NodeType } from "../../types";
11
- import { processColor } from "../datatypes";
12
11
  import { enumKey } from "../datatypes/Enum";
13
12
  import type { LerpColorFilterProps } from "../../types/ColorFilters";
14
13
 
@@ -71,7 +70,7 @@ export class BlendColorFilterNode extends ColorFilterDeclaration<BlendColorFilte
71
70
 
72
71
  materialize() {
73
72
  const { mode } = this.props;
74
- const color = processColor(this.Skia, this.props.color, 1);
73
+ const color = this.Skia.Color(this.props.color);
75
74
  const cf = this.Skia.ColorFilter.MakeBlend(color, BlendMode[enumKey(mode)]);
76
75
  return this.compose(cf);
77
76
  }