@shopify/react-native-skia 0.1.185 → 0.1.187

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 (151) hide show
  1. package/android/build.gradle +2 -1
  2. package/android/cpp/jni/JniPlatformContext.cpp +92 -3
  3. package/android/cpp/jni/include/JniPlatformContext.h +4 -0
  4. package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +8 -0
  5. package/android/src/main/java/com/shopify/reactnative/skia/PlatformContext.java +17 -1
  6. package/android/src/main/java/com/shopify/reactnative/skia/ViewScreenshotService.java +180 -0
  7. package/cpp/api/JsiSkFont.h +1 -1
  8. package/cpp/api/JsiSkHostObjects.h +1 -1
  9. package/cpp/api/JsiSkImage.h +1 -1
  10. package/cpp/api/JsiSkImageFactory.h +29 -0
  11. package/cpp/api/JsiSkPaint.h +7 -7
  12. package/cpp/api/JsiSkPathFactory.h +1 -1
  13. package/cpp/api/JsiSkPicture.h +2 -2
  14. package/cpp/api/JsiSkRuntimeEffect.h +3 -3
  15. package/cpp/api/JsiSkSVG.h +12 -2
  16. package/cpp/api/JsiSkShader.h +1 -1
  17. package/cpp/api/JsiSkSurface.h +3 -3
  18. package/cpp/api/JsiSkSurfaceFactory.h +1 -1
  19. package/cpp/api/JsiSkTypeface.h +1 -1
  20. package/cpp/rnskia/RNSkAnimation.h +3 -3
  21. package/cpp/rnskia/RNSkDomView.h +9 -9
  22. package/cpp/rnskia/RNSkInfoParameter.h +2 -2
  23. package/cpp/rnskia/RNSkJsView.h +8 -8
  24. package/cpp/rnskia/RNSkJsiViewApi.h +5 -5
  25. package/cpp/rnskia/RNSkPictureView.h +8 -8
  26. package/cpp/rnskia/RNSkPlatformContext.h +32 -3
  27. package/cpp/rnskia/RNSkValueApi.h +5 -5
  28. package/cpp/rnskia/RNSkView.h +6 -6
  29. package/cpp/rnskia/dom/base/ConcatablePaint.h +6 -6
  30. package/cpp/rnskia/dom/base/Declaration.h +1 -1
  31. package/cpp/rnskia/dom/base/DeclarationContext.h +7 -7
  32. package/cpp/rnskia/dom/base/DrawingContext.h +3 -3
  33. package/cpp/rnskia/dom/base/NodePropsContainer.h +1 -1
  34. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +1 -1
  35. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +1 -1
  36. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +8 -7
  37. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +1 -1
  38. package/cpp/rnskia/dom/nodes/JsiImageNode.h +5 -2
  39. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +9 -9
  40. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +1 -1
  41. package/cpp/rnskia/dom/nodes/JsiPathNode.h +1 -1
  42. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +1 -1
  43. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +7 -3
  44. package/cpp/rnskia/dom/nodes/JsiTextNode.h +5 -4
  45. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +3 -1
  46. package/cpp/rnskia/dom/props/BlendModeProp.h +1 -1
  47. package/cpp/rnskia/dom/props/CircleProp.h +1 -1
  48. package/cpp/rnskia/dom/props/ClipProp.h +1 -1
  49. package/cpp/rnskia/dom/props/FontProp.h +15 -10
  50. package/cpp/rnskia/dom/props/ImageProps.h +30 -16
  51. package/cpp/rnskia/dom/props/PaintProps.h +1 -1
  52. package/cpp/rnskia/dom/props/PathProp.h +1 -1
  53. package/cpp/rnskia/dom/props/PointProp.h +1 -1
  54. package/cpp/rnskia/dom/props/PointsProp.h +1 -1
  55. package/cpp/rnskia/dom/props/RRectProp.h +2 -2
  56. package/cpp/rnskia/dom/props/RadiusProp.h +1 -1
  57. package/cpp/rnskia/dom/props/RectProp.h +1 -1
  58. package/cpp/rnskia/dom/props/StrokeProps.h +1 -1
  59. package/cpp/rnskia/dom/props/SvgProp.h +18 -12
  60. package/cpp/rnskia/dom/props/TextBlobProp.h +60 -57
  61. package/cpp/rnskia/dom/props/TileModeProp.h +1 -1
  62. package/cpp/rnskia/dom/props/UniformsProp.h +1 -1
  63. package/cpp/rnskia/dom/props/VertexModeProp.h +1 -1
  64. package/cpp/rnskia/dom/props/VerticesProps.h +1 -1
  65. package/cpp/rnskia/values/RNSkClockValue.h +2 -2
  66. package/cpp/rnskia/values/RNSkComputedValue.h +1 -1
  67. package/cpp/rnskia/values/RNSkReadonlyValue.h +3 -3
  68. package/cpp/rnskia/values/RNSkValue.h +4 -4
  69. package/cpp/utils/RNSkMeasureTime.h +1 -1
  70. package/cpp/utils/RNSkTimingInfo.h +1 -1
  71. package/globalJestSetup.js +6 -0
  72. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +16 -13
  73. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.mm +8 -0
  74. package/ios/RNSkia-iOS/SkiaManager.mm +20 -1
  75. package/ios/RNSkia-iOS/ViewScreenshotService.h +21 -0
  76. package/ios/RNSkia-iOS/ViewScreenshotService.mm +79 -0
  77. package/jestSetup.js +2 -3
  78. package/lib/commonjs/dom/nodes/drawings/ImageNode.js +22 -1
  79. package/lib/commonjs/dom/nodes/drawings/ImageNode.js.map +1 -1
  80. package/lib/commonjs/dom/nodes/drawings/ImageSVG.js +5 -0
  81. package/lib/commonjs/dom/nodes/drawings/ImageSVG.js.map +1 -1
  82. package/lib/commonjs/dom/nodes/drawings/Text.d.ts +2 -2
  83. package/lib/commonjs/dom/nodes/drawings/Text.js +13 -2
  84. package/lib/commonjs/dom/nodes/drawings/Text.js.map +1 -1
  85. package/lib/commonjs/dom/nodes/paint/Shaders.js +5 -0
  86. package/lib/commonjs/dom/nodes/paint/Shaders.js.map +1 -1
  87. package/lib/commonjs/dom/types/Drawings.d.ts +5 -5
  88. package/lib/commonjs/dom/types/Drawings.js.map +1 -1
  89. package/lib/commonjs/dom/types/Shaders.d.ts +1 -1
  90. package/lib/commonjs/dom/types/Shaders.js.map +1 -1
  91. package/lib/commonjs/mock/index.d.ts +2 -15
  92. package/lib/commonjs/mock/index.js +37 -110
  93. package/lib/commonjs/mock/index.js.map +1 -1
  94. package/lib/commonjs/skia/core/Image.d.ts +14 -2
  95. package/lib/commonjs/skia/core/Image.js +37 -1
  96. package/lib/commonjs/skia/core/Image.js.map +1 -1
  97. package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +7 -0
  98. package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
  99. package/lib/commonjs/skia/types/SVG/SVG.d.ts +4 -1
  100. package/lib/commonjs/skia/types/SVG/SVG.js.map +1 -1
  101. package/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -1
  102. package/lib/commonjs/skia/web/JsiSkImageFactory.js +7 -0
  103. package/lib/commonjs/skia/web/JsiSkImageFactory.js.map +1 -1
  104. package/lib/module/dom/nodes/drawings/ImageNode.js +22 -1
  105. package/lib/module/dom/nodes/drawings/ImageNode.js.map +1 -1
  106. package/lib/module/dom/nodes/drawings/ImageSVG.js +5 -0
  107. package/lib/module/dom/nodes/drawings/ImageSVG.js.map +1 -1
  108. package/lib/module/dom/nodes/drawings/Text.d.ts +2 -2
  109. package/lib/module/dom/nodes/drawings/Text.js +13 -2
  110. package/lib/module/dom/nodes/drawings/Text.js.map +1 -1
  111. package/lib/module/dom/nodes/paint/Shaders.js +5 -0
  112. package/lib/module/dom/nodes/paint/Shaders.js.map +1 -1
  113. package/lib/module/dom/types/Drawings.d.ts +5 -5
  114. package/lib/module/dom/types/Drawings.js.map +1 -1
  115. package/lib/module/dom/types/Shaders.d.ts +1 -1
  116. package/lib/module/dom/types/Shaders.js.map +1 -1
  117. package/lib/module/mock/index.d.ts +2 -15
  118. package/lib/module/mock/index.js +33 -95
  119. package/lib/module/mock/index.js.map +1 -1
  120. package/lib/module/skia/core/Image.d.ts +14 -2
  121. package/lib/module/skia/core/Image.js +32 -0
  122. package/lib/module/skia/core/Image.js.map +1 -1
  123. package/lib/module/skia/types/Image/ImageFactory.d.ts +7 -0
  124. package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
  125. package/lib/module/skia/types/SVG/SVG.d.ts +4 -1
  126. package/lib/module/skia/types/SVG/SVG.js.map +1 -1
  127. package/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -1
  128. package/lib/module/skia/web/JsiSkImageFactory.js +7 -0
  129. package/lib/module/skia/web/JsiSkImageFactory.js.map +1 -1
  130. package/lib/typescript/globalJestSetup.d.ts +2 -0
  131. package/lib/typescript/src/dom/nodes/drawings/Text.d.ts +2 -2
  132. package/lib/typescript/src/dom/types/Drawings.d.ts +5 -5
  133. package/lib/typescript/src/dom/types/Shaders.d.ts +1 -1
  134. package/lib/typescript/src/mock/index.d.ts +2 -15
  135. package/lib/typescript/src/skia/core/Image.d.ts +14 -2
  136. package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +7 -0
  137. package/lib/typescript/src/skia/types/SVG/SVG.d.ts +4 -1
  138. package/lib/typescript/src/skia/web/JsiSkImageFactory.d.ts +2 -1
  139. package/package.json +3 -2
  140. package/scripts/install-npm.js +3 -2
  141. package/src/dom/nodes/drawings/ImageNode.ts +9 -1
  142. package/src/dom/nodes/drawings/ImageSVG.ts +3 -0
  143. package/src/dom/nodes/drawings/Text.ts +13 -3
  144. package/src/dom/nodes/paint/Shaders.ts +4 -0
  145. package/src/dom/types/Drawings.ts +5 -5
  146. package/src/dom/types/Shaders.ts +1 -1
  147. package/src/mock/index.ts +35 -98
  148. package/src/skia/core/Image.ts +43 -1
  149. package/src/skia/types/Image/ImageFactory.ts +8 -0
  150. package/src/skia/types/SVG/SVG.ts +4 -1
  151. package/src/skia/web/JsiSkImageFactory.ts +8 -1
@@ -16,6 +16,13 @@ class JsiSkImageFactory extends _Host.Host {
16
16
  super(CanvasKit);
17
17
  }
18
18
 
19
+ MakeImageFromViewTag(viewTag) {
20
+ const view = viewTag; // TODO: Implement screenshot from view in React JS
21
+
22
+ console.log(view);
23
+ return Promise.resolve(null);
24
+ }
25
+
19
26
  MakeImageFromEncoded(encoded) {
20
27
  const image = this.CanvasKit.MakeImageFromEncoded(_JsiSkData.JsiSkData.fromValue(encoded));
21
28
 
@@ -1 +1 @@
1
- {"version":3,"names":["JsiSkImageFactory","Host","constructor","CanvasKit","MakeImageFromEncoded","encoded","image","JsiSkData","fromValue","JsiSkImage","MakeImage","info","data","bytesPerRow","alphaType","ckEnum","colorSpace","ColorSpace","SRGB","colorType","height","width"],"sources":["JsiSkImageFactory.ts"],"sourcesContent":["import type { CanvasKit } from \"canvaskit-wasm\";\n\nimport type { SkData, ImageInfo } from \"../types\";\nimport type { ImageFactory } from \"../types/Image/ImageFactory\";\n\nimport { Host, ckEnum } from \"./Host\";\nimport { JsiSkImage } from \"./JsiSkImage\";\nimport { JsiSkData } from \"./JsiSkData\";\n\nexport class JsiSkImageFactory extends Host implements ImageFactory {\n constructor(CanvasKit: CanvasKit) {\n super(CanvasKit);\n }\n\n MakeImageFromEncoded(encoded: SkData) {\n const image = this.CanvasKit.MakeImageFromEncoded(\n JsiSkData.fromValue(encoded)\n );\n if (image === null) {\n return null;\n }\n return new JsiSkImage(this.CanvasKit, image);\n }\n\n MakeImage(info: ImageInfo, data: SkData, bytesPerRow: number) {\n // see toSkImageInfo() from canvaskit\n const image = this.CanvasKit.MakeImage(\n {\n alphaType: ckEnum(info.alphaType),\n colorSpace: this.CanvasKit.ColorSpace.SRGB,\n colorType: ckEnum(info.colorType),\n height: info.height,\n width: info.width,\n },\n JsiSkData.fromValue(data),\n bytesPerRow\n );\n if (image === null) {\n return null;\n }\n return new JsiSkImage(this.CanvasKit, image);\n }\n}\n"],"mappings":";;;;;;;AAKA;;AACA;;AACA;;AAEO,MAAMA,iBAAN,SAAgCC,UAAhC,CAA6D;EAClEC,WAAW,CAACC,SAAD,EAAuB;IAChC,MAAMA,SAAN;EACD;;EAEDC,oBAAoB,CAACC,OAAD,EAAkB;IACpC,MAAMC,KAAK,GAAG,KAAKH,SAAL,CAAeC,oBAAf,CACZG,oBAAA,CAAUC,SAAV,CAAoBH,OAApB,CADY,CAAd;;IAGA,IAAIC,KAAK,KAAK,IAAd,EAAoB;MAClB,OAAO,IAAP;IACD;;IACD,OAAO,IAAIG,sBAAJ,CAAe,KAAKN,SAApB,EAA+BG,KAA/B,CAAP;EACD;;EAEDI,SAAS,CAACC,IAAD,EAAkBC,IAAlB,EAAgCC,WAAhC,EAAqD;IAC5D;IACA,MAAMP,KAAK,GAAG,KAAKH,SAAL,CAAeO,SAAf,CACZ;MACEI,SAAS,EAAE,IAAAC,YAAA,EAAOJ,IAAI,CAACG,SAAZ,CADb;MAEEE,UAAU,EAAE,KAAKb,SAAL,CAAec,UAAf,CAA0BC,IAFxC;MAGEC,SAAS,EAAE,IAAAJ,YAAA,EAAOJ,IAAI,CAACQ,SAAZ,CAHb;MAIEC,MAAM,EAAET,IAAI,CAACS,MAJf;MAKEC,KAAK,EAAEV,IAAI,CAACU;IALd,CADY,EAQZd,oBAAA,CAAUC,SAAV,CAAoBI,IAApB,CARY,EASZC,WATY,CAAd;;IAWA,IAAIP,KAAK,KAAK,IAAd,EAAoB;MAClB,OAAO,IAAP;IACD;;IACD,OAAO,IAAIG,sBAAJ,CAAe,KAAKN,SAApB,EAA+BG,KAA/B,CAAP;EACD;;AAhCiE"}
1
+ {"version":3,"names":["JsiSkImageFactory","Host","constructor","CanvasKit","MakeImageFromViewTag","viewTag","view","console","log","Promise","resolve","MakeImageFromEncoded","encoded","image","JsiSkData","fromValue","JsiSkImage","MakeImage","info","data","bytesPerRow","alphaType","ckEnum","colorSpace","ColorSpace","SRGB","colorType","height","width"],"sources":["JsiSkImageFactory.ts"],"sourcesContent":["import type { CanvasKit } from \"canvaskit-wasm\";\n\nimport type { SkData, ImageInfo, SkImage } from \"../types\";\nimport type { ImageFactory } from \"../types/Image/ImageFactory\";\n\nimport { Host, ckEnum } from \"./Host\";\nimport { JsiSkImage } from \"./JsiSkImage\";\nimport { JsiSkData } from \"./JsiSkData\";\n\nexport class JsiSkImageFactory extends Host implements ImageFactory {\n constructor(CanvasKit: CanvasKit) {\n super(CanvasKit);\n }\n\n MakeImageFromViewTag(viewTag: number): Promise<SkImage | null> {\n const view = viewTag as unknown as HTMLElement;\n // TODO: Implement screenshot from view in React JS\n console.log(view);\n return Promise.resolve(null);\n }\n\n MakeImageFromEncoded(encoded: SkData) {\n const image = this.CanvasKit.MakeImageFromEncoded(\n JsiSkData.fromValue(encoded)\n );\n if (image === null) {\n return null;\n }\n return new JsiSkImage(this.CanvasKit, image);\n }\n\n MakeImage(info: ImageInfo, data: SkData, bytesPerRow: number) {\n // see toSkImageInfo() from canvaskit\n const image = this.CanvasKit.MakeImage(\n {\n alphaType: ckEnum(info.alphaType),\n colorSpace: this.CanvasKit.ColorSpace.SRGB,\n colorType: ckEnum(info.colorType),\n height: info.height,\n width: info.width,\n },\n JsiSkData.fromValue(data),\n bytesPerRow\n );\n if (image === null) {\n return null;\n }\n return new JsiSkImage(this.CanvasKit, image);\n }\n}\n"],"mappings":";;;;;;;AAKA;;AACA;;AACA;;AAEO,MAAMA,iBAAN,SAAgCC,UAAhC,CAA6D;EAClEC,WAAW,CAACC,SAAD,EAAuB;IAChC,MAAMA,SAAN;EACD;;EAEDC,oBAAoB,CAACC,OAAD,EAA2C;IAC7D,MAAMC,IAAI,GAAGD,OAAb,CAD6D,CAE7D;;IACAE,OAAO,CAACC,GAAR,CAAYF,IAAZ;IACA,OAAOG,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAAP;EACD;;EAEDC,oBAAoB,CAACC,OAAD,EAAkB;IACpC,MAAMC,KAAK,GAAG,KAAKV,SAAL,CAAeQ,oBAAf,CACZG,oBAAA,CAAUC,SAAV,CAAoBH,OAApB,CADY,CAAd;;IAGA,IAAIC,KAAK,KAAK,IAAd,EAAoB;MAClB,OAAO,IAAP;IACD;;IACD,OAAO,IAAIG,sBAAJ,CAAe,KAAKb,SAApB,EAA+BU,KAA/B,CAAP;EACD;;EAEDI,SAAS,CAACC,IAAD,EAAkBC,IAAlB,EAAgCC,WAAhC,EAAqD;IAC5D;IACA,MAAMP,KAAK,GAAG,KAAKV,SAAL,CAAec,SAAf,CACZ;MACEI,SAAS,EAAE,IAAAC,YAAA,EAAOJ,IAAI,CAACG,SAAZ,CADb;MAEEE,UAAU,EAAE,KAAKpB,SAAL,CAAeqB,UAAf,CAA0BC,IAFxC;MAGEC,SAAS,EAAE,IAAAJ,YAAA,EAAOJ,IAAI,CAACQ,SAAZ,CAHb;MAIEC,MAAM,EAAET,IAAI,CAACS,MAJf;MAKEC,KAAK,EAAEV,IAAI,CAACU;IALd,CADY,EAQZd,oBAAA,CAAUC,SAAV,CAAoBI,IAApB,CARY,EASZC,WATY,CAAd;;IAWA,IAAIP,KAAK,KAAK,IAAd,EAAoB;MAClB,OAAO,IAAP;IACD;;IACD,OAAO,IAAIG,sBAAJ,CAAe,KAAKb,SAApB,EAA+BU,KAA/B,CAAP;EACD;;AAvCiE"}
@@ -12,6 +12,24 @@ export class ImageNode extends JsiDrawingNode {
12
12
  const {
13
13
  image
14
14
  } = this.props;
15
+
16
+ if (!image) {
17
+ return {
18
+ src: {
19
+ x: 0,
20
+ y: 0,
21
+ width: 0,
22
+ height: 0
23
+ },
24
+ dst: {
25
+ x: 0,
26
+ y: 0,
27
+ width: 0,
28
+ height: 0
29
+ }
30
+ };
31
+ }
32
+
15
33
  const fit = (_this$props$fit = this.props.fit) !== null && _this$props$fit !== void 0 ? _this$props$fit : "contain";
16
34
  const rect = processRect(this.Skia, this.props);
17
35
  const {
@@ -46,7 +64,10 @@ export class ImageNode extends JsiDrawingNode {
46
64
  src,
47
65
  dst
48
66
  } = this.derived;
49
- canvas.drawImageRect(image, src, dst, paint);
67
+
68
+ if (image) {
69
+ canvas.drawImageRect(image, src, dst, paint);
70
+ }
50
71
  }
51
72
 
52
73
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NodeType","fitRects","processRect","JsiDrawingNode","ImageNode","constructor","ctx","props","Image","deriveProps","image","fit","rect","Skia","src","dst","x","y","width","height","draw","canvas","paint","derived","Error","drawImageRect"],"sources":["ImageNode.ts"],"sourcesContent":["import type { SkRect } from \"../../../skia/types\";\nimport type { DrawingContext, ImageProps } from \"../../types\";\nimport { NodeType } from \"../../types\";\nimport { fitRects, processRect } from \"../datatypes\";\nimport { JsiDrawingNode } from \"../DrawingNode\";\nimport type { NodeContext } from \"../Node\";\n\nexport class ImageNode extends JsiDrawingNode<\n ImageProps,\n { src: SkRect; dst: SkRect }\n> {\n constructor(ctx: NodeContext, props: ImageProps) {\n super(ctx, NodeType.Image, props);\n }\n\n deriveProps() {\n const { image } = this.props;\n const fit = this.props.fit ?? \"contain\";\n const rect = processRect(this.Skia, this.props);\n const { src, dst } = fitRects(\n fit,\n {\n x: 0,\n y: 0,\n width: image.width(),\n height: image.height(),\n },\n rect\n );\n return { src, dst };\n }\n\n draw({ canvas, paint }: DrawingContext) {\n const { image } = this.props;\n if (!this.derived) {\n throw new Error(\"ImageNode: src and dst are undefined\");\n }\n const { src, dst } = this.derived;\n canvas.drawImageRect(image, src, dst, paint);\n }\n}\n"],"mappings":"AAEA,SAASA,QAAT,QAAyB,aAAzB;AACA,SAASC,QAAT,EAAmBC,WAAnB,QAAsC,cAAtC;AACA,SAASC,cAAT,QAA+B,gBAA/B;AAGA,OAAO,MAAMC,SAAN,SAAwBD,cAAxB,CAGL;EACAE,WAAW,CAACC,GAAD,EAAmBC,KAAnB,EAAsC;IAC/C,MAAMD,GAAN,EAAWN,QAAQ,CAACQ,KAApB,EAA2BD,KAA3B;EACD;;EAEDE,WAAW,GAAG;IAAA;;IACZ,MAAM;MAAEC;IAAF,IAAY,KAAKH,KAAvB;IACA,MAAMI,GAAG,sBAAG,KAAKJ,KAAL,CAAWI,GAAd,6DAAqB,SAA9B;IACA,MAAMC,IAAI,GAAGV,WAAW,CAAC,KAAKW,IAAN,EAAY,KAAKN,KAAjB,CAAxB;IACA,MAAM;MAAEO,GAAF;MAAOC;IAAP,IAAed,QAAQ,CAC3BU,GAD2B,EAE3B;MACEK,CAAC,EAAE,CADL;MAEEC,CAAC,EAAE,CAFL;MAGEC,KAAK,EAAER,KAAK,CAACQ,KAAN,EAHT;MAIEC,MAAM,EAAET,KAAK,CAACS,MAAN;IAJV,CAF2B,EAQ3BP,IAR2B,CAA7B;IAUA,OAAO;MAAEE,GAAF;MAAOC;IAAP,CAAP;EACD;;EAEDK,IAAI,OAAoC;IAAA,IAAnC;MAAEC,MAAF;MAAUC;IAAV,CAAmC;IACtC,MAAM;MAAEZ;IAAF,IAAY,KAAKH,KAAvB;;IACA,IAAI,CAAC,KAAKgB,OAAV,EAAmB;MACjB,MAAM,IAAIC,KAAJ,CAAU,sCAAV,CAAN;IACD;;IACD,MAAM;MAAEV,GAAF;MAAOC;IAAP,IAAe,KAAKQ,OAA1B;IACAF,MAAM,CAACI,aAAP,CAAqBf,KAArB,EAA4BI,GAA5B,EAAiCC,GAAjC,EAAsCO,KAAtC;EACD;;AA7BD"}
1
+ {"version":3,"names":["NodeType","fitRects","processRect","JsiDrawingNode","ImageNode","constructor","ctx","props","Image","deriveProps","image","src","x","y","width","height","dst","fit","rect","Skia","draw","canvas","paint","derived","Error","drawImageRect"],"sources":["ImageNode.ts"],"sourcesContent":["import type { SkRect } from \"../../../skia/types\";\nimport type { DrawingContext, ImageProps } from \"../../types\";\nimport { NodeType } from \"../../types\";\nimport { fitRects, processRect } from \"../datatypes\";\nimport { JsiDrawingNode } from \"../DrawingNode\";\nimport type { NodeContext } from \"../Node\";\n\nexport class ImageNode extends JsiDrawingNode<\n ImageProps,\n { src: SkRect; dst: SkRect }\n> {\n constructor(ctx: NodeContext, props: ImageProps) {\n super(ctx, NodeType.Image, props);\n }\n\n deriveProps() {\n const { image } = this.props;\n if (!image) {\n return {\n src: { x: 0, y: 0, width: 0, height: 0 },\n dst: { x: 0, y: 0, width: 0, height: 0 },\n };\n }\n const fit = this.props.fit ?? \"contain\";\n const rect = processRect(this.Skia, this.props);\n const { src, dst } = fitRects(\n fit,\n {\n x: 0,\n y: 0,\n width: image.width(),\n height: image.height(),\n },\n rect\n );\n return { src, dst };\n }\n\n draw({ canvas, paint }: DrawingContext) {\n const { image } = this.props;\n if (!this.derived) {\n throw new Error(\"ImageNode: src and dst are undefined\");\n }\n const { src, dst } = this.derived;\n if (image) {\n canvas.drawImageRect(image, src, dst, paint);\n }\n }\n}\n"],"mappings":"AAEA,SAASA,QAAT,QAAyB,aAAzB;AACA,SAASC,QAAT,EAAmBC,WAAnB,QAAsC,cAAtC;AACA,SAASC,cAAT,QAA+B,gBAA/B;AAGA,OAAO,MAAMC,SAAN,SAAwBD,cAAxB,CAGL;EACAE,WAAW,CAACC,GAAD,EAAmBC,KAAnB,EAAsC;IAC/C,MAAMD,GAAN,EAAWN,QAAQ,CAACQ,KAApB,EAA2BD,KAA3B;EACD;;EAEDE,WAAW,GAAG;IAAA;;IACZ,MAAM;MAAEC;IAAF,IAAY,KAAKH,KAAvB;;IACA,IAAI,CAACG,KAAL,EAAY;MACV,OAAO;QACLC,GAAG,EAAE;UAAEC,CAAC,EAAE,CAAL;UAAQC,CAAC,EAAE,CAAX;UAAcC,KAAK,EAAE,CAArB;UAAwBC,MAAM,EAAE;QAAhC,CADA;QAELC,GAAG,EAAE;UAAEJ,CAAC,EAAE,CAAL;UAAQC,CAAC,EAAE,CAAX;UAAcC,KAAK,EAAE,CAArB;UAAwBC,MAAM,EAAE;QAAhC;MAFA,CAAP;IAID;;IACD,MAAME,GAAG,sBAAG,KAAKV,KAAL,CAAWU,GAAd,6DAAqB,SAA9B;IACA,MAAMC,IAAI,GAAGhB,WAAW,CAAC,KAAKiB,IAAN,EAAY,KAAKZ,KAAjB,CAAxB;IACA,MAAM;MAAEI,GAAF;MAAOK;IAAP,IAAef,QAAQ,CAC3BgB,GAD2B,EAE3B;MACEL,CAAC,EAAE,CADL;MAEEC,CAAC,EAAE,CAFL;MAGEC,KAAK,EAAEJ,KAAK,CAACI,KAAN,EAHT;MAIEC,MAAM,EAAEL,KAAK,CAACK,MAAN;IAJV,CAF2B,EAQ3BG,IAR2B,CAA7B;IAUA,OAAO;MAAEP,GAAF;MAAOK;IAAP,CAAP;EACD;;EAEDI,IAAI,OAAoC;IAAA,IAAnC;MAAEC,MAAF;MAAUC;IAAV,CAAmC;IACtC,MAAM;MAAEZ;IAAF,IAAY,KAAKH,KAAvB;;IACA,IAAI,CAAC,KAAKgB,OAAV,EAAmB;MACjB,MAAM,IAAIC,KAAJ,CAAU,sCAAV,CAAN;IACD;;IACD,MAAM;MAAEb,GAAF;MAAOK;IAAP,IAAe,KAAKO,OAA1B;;IACA,IAAIb,KAAJ,EAAW;MACTW,MAAM,CAACI,aAAP,CAAqBf,KAArB,EAA4BC,GAA5B,EAAiCK,GAAjC,EAAsCM,KAAtC;IACD;EACF;;AArCD"}
@@ -17,6 +17,11 @@ export class ImageSVGNode extends JsiDrawingNode {
17
17
  const {
18
18
  svg
19
19
  } = this.props;
20
+
21
+ if (!svg) {
22
+ return;
23
+ }
24
+
20
25
  const {
21
26
  x,
22
27
  y,
@@ -1 +1 @@
1
- {"version":3,"names":["NodeType","processRect","JsiDrawingNode","ImageSVGNode","constructor","ctx","props","ImageSVG","deriveProps","draw","canvas","svg","x","y","width","height","Skia","save","translate","drawSvg","restore"],"sources":["ImageSVG.ts"],"sourcesContent":["import type { DrawingContext, ImageSVGProps } from \"../../types\";\nimport { NodeType } from \"../../types\";\nimport { processRect } from \"../datatypes\";\nimport { JsiDrawingNode } from \"../DrawingNode\";\nimport type { NodeContext } from \"../Node\";\n\nexport class ImageSVGNode extends JsiDrawingNode<ImageSVGProps, null> {\n constructor(ctx: NodeContext, props: ImageSVGProps) {\n super(ctx, NodeType.ImageSVG, props);\n }\n\n deriveProps() {\n return null;\n }\n\n draw({ canvas }: DrawingContext) {\n const { svg } = this.props;\n const { x, y, width, height } = processRect(this.Skia, this.props);\n canvas.save();\n canvas.translate(x, y);\n canvas.drawSvg(svg, width, height);\n canvas.restore();\n }\n}\n"],"mappings":"AACA,SAASA,QAAT,QAAyB,aAAzB;AACA,SAASC,WAAT,QAA4B,cAA5B;AACA,SAASC,cAAT,QAA+B,gBAA/B;AAGA,OAAO,MAAMC,YAAN,SAA2BD,cAA3B,CAA+D;EACpEE,WAAW,CAACC,GAAD,EAAmBC,KAAnB,EAAyC;IAClD,MAAMD,GAAN,EAAWL,QAAQ,CAACO,QAApB,EAA8BD,KAA9B;EACD;;EAEDE,WAAW,GAAG;IACZ,OAAO,IAAP;EACD;;EAEDC,IAAI,OAA6B;IAAA,IAA5B;MAAEC;IAAF,CAA4B;IAC/B,MAAM;MAAEC;IAAF,IAAU,KAAKL,KAArB;IACA,MAAM;MAAEM,CAAF;MAAKC,CAAL;MAAQC,KAAR;MAAeC;IAAf,IAA0Bd,WAAW,CAAC,KAAKe,IAAN,EAAY,KAAKV,KAAjB,CAA3C;IACAI,MAAM,CAACO,IAAP;IACAP,MAAM,CAACQ,SAAP,CAAiBN,CAAjB,EAAoBC,CAApB;IACAH,MAAM,CAACS,OAAP,CAAeR,GAAf,EAAoBG,KAApB,EAA2BC,MAA3B;IACAL,MAAM,CAACU,OAAP;EACD;;AAhBmE"}
1
+ {"version":3,"names":["NodeType","processRect","JsiDrawingNode","ImageSVGNode","constructor","ctx","props","ImageSVG","deriveProps","draw","canvas","svg","x","y","width","height","Skia","save","translate","drawSvg","restore"],"sources":["ImageSVG.ts"],"sourcesContent":["import type { DrawingContext, ImageSVGProps } from \"../../types\";\nimport { NodeType } from \"../../types\";\nimport { processRect } from \"../datatypes\";\nimport { JsiDrawingNode } from \"../DrawingNode\";\nimport type { NodeContext } from \"../Node\";\n\nexport class ImageSVGNode extends JsiDrawingNode<ImageSVGProps, null> {\n constructor(ctx: NodeContext, props: ImageSVGProps) {\n super(ctx, NodeType.ImageSVG, props);\n }\n\n deriveProps() {\n return null;\n }\n\n draw({ canvas }: DrawingContext) {\n const { svg } = this.props;\n if (!svg) {\n return;\n }\n const { x, y, width, height } = processRect(this.Skia, this.props);\n canvas.save();\n canvas.translate(x, y);\n canvas.drawSvg(svg, width, height);\n canvas.restore();\n }\n}\n"],"mappings":"AACA,SAASA,QAAT,QAAyB,aAAzB;AACA,SAASC,WAAT,QAA4B,cAA5B;AACA,SAASC,cAAT,QAA+B,gBAA/B;AAGA,OAAO,MAAMC,YAAN,SAA2BD,cAA3B,CAA+D;EACpEE,WAAW,CAACC,GAAD,EAAmBC,KAAnB,EAAyC;IAClD,MAAMD,GAAN,EAAWL,QAAQ,CAACO,QAApB,EAA8BD,KAA9B;EACD;;EAEDE,WAAW,GAAG;IACZ,OAAO,IAAP;EACD;;EAEDC,IAAI,OAA6B;IAAA,IAA5B;MAAEC;IAAF,CAA4B;IAC/B,MAAM;MAAEC;IAAF,IAAU,KAAKL,KAArB;;IACA,IAAI,CAACK,GAAL,EAAU;MACR;IACD;;IACD,MAAM;MAAEC,CAAF;MAAKC,CAAL;MAAQC,KAAR;MAAeC;IAAf,IAA0Bd,WAAW,CAAC,KAAKe,IAAN,EAAY,KAAKV,KAAjB,CAA3C;IACAI,MAAM,CAACO,IAAP;IACAP,MAAM,CAACQ,SAAP,CAAiBN,CAAjB,EAAoBC,CAApB;IACAH,MAAM,CAACS,OAAP,CAAeR,GAAf,EAAoBG,KAApB,EAA2BC,MAA3B;IACAL,MAAM,CAACU,OAAP;EACD;;AAnBmE"}
@@ -8,9 +8,9 @@ export declare class TextNode extends JsiDrawingNode<TextProps, null> {
8
8
  protected deriveProps(): null;
9
9
  draw({ canvas, paint }: DrawingContext): void;
10
10
  }
11
- export declare class TextPathNode extends JsiDrawingNode<TextPathProps, SkTextBlob> {
11
+ export declare class TextPathNode extends JsiDrawingNode<TextPathProps, SkTextBlob | null> {
12
12
  constructor(ctx: NodeContext, props: TextPathProps);
13
- deriveProps(): SkTextBlob;
13
+ deriveProps(): SkTextBlob | null;
14
14
  draw({ canvas, paint }: DrawingContext): void;
15
15
  }
16
16
  export declare class TextBlobNode extends JsiDrawingNode<TextBlobProps, null> {
@@ -21,7 +21,10 @@ export class TextNode extends JsiDrawingNode {
21
21
  y,
22
22
  font
23
23
  } = this.props;
24
- canvas.drawText(text, x, y, paint, font);
24
+
25
+ if (font) {
26
+ canvas.drawText(text, x, y, paint, font);
27
+ }
25
28
  }
26
29
 
27
30
  }
@@ -36,6 +39,11 @@ export class TextPathNode extends JsiDrawingNode {
36
39
  font,
37
40
  initialOffset
38
41
  } = this.props;
42
+
43
+ if (!font) {
44
+ return null;
45
+ }
46
+
39
47
  let {
40
48
  text
41
49
  } = this.props;
@@ -152,7 +160,10 @@ export class GlyphsNode extends JsiDrawingNode {
152
160
  y,
153
161
  font
154
162
  } = this.props;
155
- canvas.drawGlyphs(glyphs, positions, x, y, font, paint);
163
+
164
+ if (font) {
165
+ canvas.drawGlyphs(glyphs, positions, x, y, font, paint);
166
+ }
156
167
  }
157
168
 
158
169
  }
@@ -1 +1 @@
1
- {"version":3,"names":["NodeType","processPath","JsiDrawingNode","TextNode","constructor","ctx","props","Text","deriveProps","draw","canvas","paint","text","x","y","font","drawText","TextPathNode","TextPath","path","Skia","initialOffset","ids","getGlyphIDs","widths","getGlyphWidths","rsx","meas","ContourMeasureIter","cont","next","dist","i","length","width","substring","p","t","getPosTan","adjustedX","adjustedY","push","RSXform","TextBlob","MakeFromRSXform","derived","Error","drawTextBlob","TextBlobNode","blob","GlyphsNode","Glyphs","glyphs","reduce","acc","glyph","id","pos","positions","drawGlyphs"],"sources":["Text.ts"],"sourcesContent":["import type { SkRSXform, SkTextBlob, SkPoint } from \"../../../skia/types\";\nimport type {\n DrawingContext,\n TextBlobProps,\n TextPathProps,\n TextProps,\n} from \"../../types\";\nimport { NodeType } from \"../../types\";\nimport { processPath } from \"../datatypes\";\nimport type { GlyphsProps } from \"../../types/Drawings\";\nimport { JsiDrawingNode } from \"../DrawingNode\";\nimport type { NodeContext } from \"../Node\";\n\nexport class TextNode extends JsiDrawingNode<TextProps, null> {\n constructor(ctx: NodeContext, props: TextProps) {\n super(ctx, NodeType.Text, props);\n }\n\n protected deriveProps() {\n return null;\n }\n\n draw({ canvas, paint }: DrawingContext) {\n const { text, x, y, font } = this.props;\n canvas.drawText(text, x, y, paint, font);\n }\n}\n\nexport class TextPathNode extends JsiDrawingNode<TextPathProps, SkTextBlob> {\n constructor(ctx: NodeContext, props: TextPathProps) {\n super(ctx, NodeType.TextPath, props);\n }\n\n deriveProps() {\n const path = processPath(this.Skia, this.props.path);\n const { font, initialOffset } = this.props;\n let { text } = this.props;\n const ids = font.getGlyphIDs(text);\n const widths = font.getGlyphWidths(ids);\n const rsx: SkRSXform[] = [];\n const meas = this.Skia.ContourMeasureIter(path, false, 1);\n let cont = meas.next();\n let dist = initialOffset;\n for (let i = 0; i < text.length && cont; i++) {\n const width = widths[i];\n dist += width / 2;\n if (dist > cont.length()) {\n // jump to next contour\n cont = meas.next();\n if (!cont) {\n // We have come to the end of the path - terminate the string\n // right here.\n text = text.substring(0, i);\n break;\n }\n dist = width / 2;\n }\n // Gives us the (x, y) coordinates as well as the cos/sin of the tangent\n // line at that position.\n const [p, t] = cont.getPosTan(dist);\n const adjustedX = p.x - (width / 2) * t.x;\n const adjustedY = p.y - (width / 2) * t.y;\n rsx.push(this.Skia.RSXform(t.x, t.y, adjustedX, adjustedY));\n dist += width / 2;\n }\n return this.Skia.TextBlob.MakeFromRSXform(text, rsx, font);\n }\n\n draw({ canvas, paint }: DrawingContext) {\n if (!this.derived) {\n throw new Error(\"TextPathNode: blob is null\");\n }\n canvas.drawTextBlob(this.derived, 0, 0, paint);\n }\n}\n\nexport class TextBlobNode extends JsiDrawingNode<TextBlobProps, null> {\n constructor(ctx: NodeContext, props: TextBlobProps) {\n super(ctx, NodeType.TextBlob, props);\n }\n\n protected deriveProps() {\n return null;\n }\n\n draw({ canvas, paint }: DrawingContext) {\n const { blob, x, y } = this.props;\n canvas.drawTextBlob(blob, x, y, paint);\n }\n}\n\ninterface ProcessedGlyphs {\n glyphs: number[];\n positions: SkPoint[];\n}\n\nexport class GlyphsNode extends JsiDrawingNode<GlyphsProps, ProcessedGlyphs> {\n constructor(ctx: NodeContext, props: GlyphsProps) {\n super(ctx, NodeType.Glyphs, props);\n }\n\n deriveProps() {\n return this.props.glyphs.reduce<ProcessedGlyphs>(\n (acc, glyph) => {\n const { id, pos } = glyph;\n acc.glyphs.push(id);\n acc.positions.push(pos);\n return acc;\n },\n { glyphs: [], positions: [] }\n );\n }\n\n draw({ canvas, paint }: DrawingContext) {\n if (!this.derived) {\n throw new Error(\"GlyphsNode: processedGlyphs is null\");\n }\n const { glyphs, positions } = this.derived;\n const { x, y, font } = this.props;\n canvas.drawGlyphs(glyphs, positions, x, y, font, paint);\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["NodeType","processPath","JsiDrawingNode","TextNode","constructor","ctx","props","Text","deriveProps","draw","canvas","paint","text","x","y","font","drawText","TextPathNode","TextPath","path","Skia","initialOffset","ids","getGlyphIDs","widths","getGlyphWidths","rsx","meas","ContourMeasureIter","cont","next","dist","i","length","width","substring","p","t","getPosTan","adjustedX","adjustedY","push","RSXform","TextBlob","MakeFromRSXform","derived","Error","drawTextBlob","TextBlobNode","blob","GlyphsNode","Glyphs","glyphs","reduce","acc","glyph","id","pos","positions","drawGlyphs"],"sources":["Text.ts"],"sourcesContent":["import type { SkRSXform, SkTextBlob, SkPoint } from \"../../../skia/types\";\nimport type {\n DrawingContext,\n TextBlobProps,\n TextPathProps,\n TextProps,\n} from \"../../types\";\nimport { NodeType } from \"../../types\";\nimport { processPath } from \"../datatypes\";\nimport type { GlyphsProps } from \"../../types/Drawings\";\nimport { JsiDrawingNode } from \"../DrawingNode\";\nimport type { NodeContext } from \"../Node\";\n\nexport class TextNode extends JsiDrawingNode<TextProps, null> {\n constructor(ctx: NodeContext, props: TextProps) {\n super(ctx, NodeType.Text, props);\n }\n\n protected deriveProps() {\n return null;\n }\n\n draw({ canvas, paint }: DrawingContext) {\n const { text, x, y, font } = this.props;\n if (font) {\n canvas.drawText(text, x, y, paint, font);\n }\n }\n}\n\nexport class TextPathNode extends JsiDrawingNode<\n TextPathProps,\n SkTextBlob | null\n> {\n constructor(ctx: NodeContext, props: TextPathProps) {\n super(ctx, NodeType.TextPath, props);\n }\n\n deriveProps() {\n const path = processPath(this.Skia, this.props.path);\n const { font, initialOffset } = this.props;\n if (!font) {\n return null;\n }\n let { text } = this.props;\n const ids = font.getGlyphIDs(text);\n const widths = font.getGlyphWidths(ids);\n const rsx: SkRSXform[] = [];\n const meas = this.Skia.ContourMeasureIter(path, false, 1);\n let cont = meas.next();\n let dist = initialOffset;\n for (let i = 0; i < text.length && cont; i++) {\n const width = widths[i];\n dist += width / 2;\n if (dist > cont.length()) {\n // jump to next contour\n cont = meas.next();\n if (!cont) {\n // We have come to the end of the path - terminate the string\n // right here.\n text = text.substring(0, i);\n break;\n }\n dist = width / 2;\n }\n // Gives us the (x, y) coordinates as well as the cos/sin of the tangent\n // line at that position.\n const [p, t] = cont.getPosTan(dist);\n const adjustedX = p.x - (width / 2) * t.x;\n const adjustedY = p.y - (width / 2) * t.y;\n rsx.push(this.Skia.RSXform(t.x, t.y, adjustedX, adjustedY));\n dist += width / 2;\n }\n return this.Skia.TextBlob.MakeFromRSXform(text, rsx, font);\n }\n\n draw({ canvas, paint }: DrawingContext) {\n if (!this.derived) {\n throw new Error(\"TextPathNode: blob is null\");\n }\n canvas.drawTextBlob(this.derived, 0, 0, paint);\n }\n}\n\nexport class TextBlobNode extends JsiDrawingNode<TextBlobProps, null> {\n constructor(ctx: NodeContext, props: TextBlobProps) {\n super(ctx, NodeType.TextBlob, props);\n }\n\n protected deriveProps() {\n return null;\n }\n\n draw({ canvas, paint }: DrawingContext) {\n const { blob, x, y } = this.props;\n canvas.drawTextBlob(blob, x, y, paint);\n }\n}\n\ninterface ProcessedGlyphs {\n glyphs: number[];\n positions: SkPoint[];\n}\n\nexport class GlyphsNode extends JsiDrawingNode<GlyphsProps, ProcessedGlyphs> {\n constructor(ctx: NodeContext, props: GlyphsProps) {\n super(ctx, NodeType.Glyphs, props);\n }\n\n deriveProps() {\n return this.props.glyphs.reduce<ProcessedGlyphs>(\n (acc, glyph) => {\n const { id, pos } = glyph;\n acc.glyphs.push(id);\n acc.positions.push(pos);\n return acc;\n },\n { glyphs: [], positions: [] }\n );\n }\n\n draw({ canvas, paint }: DrawingContext) {\n if (!this.derived) {\n throw new Error(\"GlyphsNode: processedGlyphs is null\");\n }\n const { glyphs, positions } = this.derived;\n const { x, y, font } = this.props;\n if (font) {\n canvas.drawGlyphs(glyphs, positions, x, y, font, paint);\n }\n }\n}\n"],"mappings":"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"}
@@ -42,6 +42,11 @@ export class ImageShaderNode extends ShaderDeclaration {
42
42
  mm,
43
43
  ...imageShaderProps
44
44
  } = this.props;
45
+
46
+ if (!image) {
47
+ return;
48
+ }
49
+
45
50
  const rct = getRect(this.Skia, imageShaderProps);
46
51
  const m3 = this.Skia.Matrix();
47
52
 
@@ -1 +1 @@
1
- {"version":3,"names":["processUniforms","FilterMode","MipmapMode","TileMode","JsiDeclarationNode","DeclarationType","NodeType","enumKey","fitRects","getRect","processGradientProps","processTransformProps","rect2rect","ShaderDeclaration","constructor","ctx","type","props","Shader","ShaderNode","decorate","decorateChildren","source","uniforms","transform","m3","Skia","Matrix","shader","makeShaderWithChildren","shaders","popAll","push","ImageShaderNode","ImageShader","fit","image","tx","ty","fm","mm","imageShaderProps","rct","rects","x","y","width","height","sx","sy","src","dst","translate","translateX","translateY","scale","scaleX","scaleY","lm","concat","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 { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\nimport type {\n ColorProps,\n DeclarationContext,\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<P> {\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 decorate(ctx: DeclarationContext) {\n this.decorateChildren(ctx);\n const { source, uniforms, ...transform } = this.props;\n const m3 = this.Skia.Matrix();\n processTransformProps(m3, transform);\n const shader = source.makeShaderWithChildren(\n processUniforms(source, uniforms),\n ctx.shaders.popAll(),\n m3\n );\n ctx.shaders.push(shader);\n }\n}\n\nexport class ImageShaderNode extends ShaderDeclaration<ImageShaderProps> {\n constructor(ctx: NodeContext, props: ImageShaderProps) {\n super(ctx, NodeType.ImageShader, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { fit, image, tx, ty, fm, mm, ...imageShaderProps } = this.props;\n const rct = getRect(this.Skia, imageShaderProps);\n const m3 = this.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 = this.Skia.Matrix();\n lm.concat(m3);\n processTransformProps(lm, imageShaderProps);\n const shader = image.makeShaderOptions(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n FilterMode[enumKey(fm)],\n MipmapMode[enumKey(mm)],\n lm\n );\n ctx.shaders.push(shader);\n }\n}\n\nexport class ColorNode extends ShaderDeclaration<ColorProps> {\n constructor(ctx: NodeContext, props: ColorProps) {\n super(ctx, NodeType.ColorShader, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { color } = this.props;\n const shader = this.Skia.Shader.MakeColor(this.Skia.Color(color));\n ctx.shaders.push(shader);\n }\n}\n\nexport class TurbulenceNode extends ShaderDeclaration<TurbulenceProps> {\n constructor(ctx: NodeContext, props: TurbulenceProps) {\n super(ctx, NodeType.Turbulence, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n const shader = this.Skia.Shader.MakeTurbulence(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n ctx.shaders.push(shader);\n }\n}\n\nexport class FractalNoiseNode extends ShaderDeclaration<FractalNoiseProps> {\n constructor(ctx: NodeContext, props: FractalNoiseProps) {\n super(ctx, NodeType.FractalNoise, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n const shader = this.Skia.Shader.MakeFractalNoise(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n ctx.shaders.push(shader);\n }\n}\n\nexport class LinearGradientNode extends ShaderDeclaration<LinearGradientProps> {\n constructor(ctx: NodeContext, props: LinearGradientProps) {\n super(ctx, NodeType.LinearGradient, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n const shader = this.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}\n\nexport class RadialGradientNode extends ShaderDeclaration<RadialGradientProps> {\n constructor(ctx: NodeContext, props: RadialGradientProps) {\n super(ctx, NodeType.RadialGradient, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { c, r } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n const shader = this.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}\n\nexport class SweepGradientNode extends ShaderDeclaration<SweepGradientProps> {\n constructor(ctx: NodeContext, props: SweepGradientProps) {\n super(ctx, NodeType.SweepGradient, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { c, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n const shader = 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 ctx.shaders.push(shader);\n }\n}\n\nexport class TwoPointConicalGradientNode extends ShaderDeclaration<TwoPointConicalGradientProps> {\n constructor(ctx: NodeContext, props: TwoPointConicalGradientProps) {\n super(ctx, NodeType.TwoPointConicalGradient, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { startR, endR, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n const shader = this.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}\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","decorate","decorateChildren","source","uniforms","transform","m3","Skia","Matrix","shader","makeShaderWithChildren","shaders","popAll","push","ImageShaderNode","ImageShader","fit","image","tx","ty","fm","mm","imageShaderProps","rct","rects","x","y","width","height","sx","sy","src","dst","translate","translateX","translateY","scale","scaleX","scaleY","lm","concat","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 { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\nimport type {\n ColorProps,\n DeclarationContext,\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<P> {\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 decorate(ctx: DeclarationContext) {\n this.decorateChildren(ctx);\n const { source, uniforms, ...transform } = this.props;\n const m3 = this.Skia.Matrix();\n processTransformProps(m3, transform);\n const shader = source.makeShaderWithChildren(\n processUniforms(source, uniforms),\n ctx.shaders.popAll(),\n m3\n );\n ctx.shaders.push(shader);\n }\n}\n\nexport class ImageShaderNode extends ShaderDeclaration<ImageShaderProps> {\n constructor(ctx: NodeContext, props: ImageShaderProps) {\n super(ctx, NodeType.ImageShader, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { fit, image, tx, ty, fm, mm, ...imageShaderProps } = this.props;\n if (!image) {\n return;\n }\n\n const rct = getRect(this.Skia, imageShaderProps);\n const m3 = this.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 = this.Skia.Matrix();\n lm.concat(m3);\n processTransformProps(lm, imageShaderProps);\n const shader = image.makeShaderOptions(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n FilterMode[enumKey(fm)],\n MipmapMode[enumKey(mm)],\n lm\n );\n ctx.shaders.push(shader);\n }\n}\n\nexport class ColorNode extends ShaderDeclaration<ColorProps> {\n constructor(ctx: NodeContext, props: ColorProps) {\n super(ctx, NodeType.ColorShader, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { color } = this.props;\n const shader = this.Skia.Shader.MakeColor(this.Skia.Color(color));\n ctx.shaders.push(shader);\n }\n}\n\nexport class TurbulenceNode extends ShaderDeclaration<TurbulenceProps> {\n constructor(ctx: NodeContext, props: TurbulenceProps) {\n super(ctx, NodeType.Turbulence, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n const shader = this.Skia.Shader.MakeTurbulence(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n ctx.shaders.push(shader);\n }\n}\n\nexport class FractalNoiseNode extends ShaderDeclaration<FractalNoiseProps> {\n constructor(ctx: NodeContext, props: FractalNoiseProps) {\n super(ctx, NodeType.FractalNoise, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n const shader = this.Skia.Shader.MakeFractalNoise(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n ctx.shaders.push(shader);\n }\n}\n\nexport class LinearGradientNode extends ShaderDeclaration<LinearGradientProps> {\n constructor(ctx: NodeContext, props: LinearGradientProps) {\n super(ctx, NodeType.LinearGradient, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n const shader = this.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}\n\nexport class RadialGradientNode extends ShaderDeclaration<RadialGradientProps> {\n constructor(ctx: NodeContext, props: RadialGradientProps) {\n super(ctx, NodeType.RadialGradient, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { c, r } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n const shader = this.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}\n\nexport class SweepGradientNode extends ShaderDeclaration<SweepGradientProps> {\n constructor(ctx: NodeContext, props: SweepGradientProps) {\n super(ctx, NodeType.SweepGradient, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { c, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n const shader = 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 ctx.shaders.push(shader);\n }\n}\n\nexport class TwoPointConicalGradientNode extends ShaderDeclaration<TwoPointConicalGradientProps> {\n constructor(ctx: NodeContext, props: TwoPointConicalGradientProps) {\n super(ctx, NodeType.TwoPointConicalGradient, props);\n }\n\n decorate(ctx: DeclarationContext) {\n const { startR, endR, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n const shader = this.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}\n"],"mappings":"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"}
@@ -6,7 +6,7 @@ export interface DrawingNodeProps extends GroupProps {
6
6
  }
7
7
  export declare type ImageProps = DrawingNodeProps & RectDef & {
8
8
  fit?: Fit;
9
- image: SkImage;
9
+ image: SkImage | null;
10
10
  };
11
11
  export declare type CircleProps = CircleDef & DrawingNodeProps;
12
12
  export interface PathProps extends DrawingNodeProps {
@@ -51,7 +51,7 @@ export interface VerticesProps extends DrawingNodeProps {
51
51
  indices?: number[];
52
52
  }
53
53
  export declare type ImageSVGProps = RectDef & {
54
- svg: SkSVG;
54
+ svg: SkSVG | null;
55
55
  } & DrawingNodeProps;
56
56
  export interface PictureProps extends DrawingNodeProps {
57
57
  picture: SkPicture;
@@ -65,13 +65,13 @@ export interface DiffRectProps extends DrawingNodeProps {
65
65
  outer: SkRRect;
66
66
  }
67
67
  export interface TextProps extends DrawingNodeProps {
68
- font: SkFont;
68
+ font: SkFont | null;
69
69
  text: string;
70
70
  x: number;
71
71
  y: number;
72
72
  }
73
73
  export interface TextPathProps extends DrawingNodeProps {
74
- font: SkFont;
74
+ font: SkFont | null;
75
75
  text: string;
76
76
  path: PathDef;
77
77
  initialOffset: number;
@@ -86,7 +86,7 @@ export interface Glyph {
86
86
  pos: SkPoint;
87
87
  }
88
88
  export interface GlyphsProps extends DrawingNodeProps {
89
- font: SkFont;
89
+ font: SkFont | null;
90
90
  x: number;
91
91
  y: number;
92
92
  glyphs: Glyph[];
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["Drawings.ts"],"sourcesContent":["import type {\n FillType,\n SkImage,\n StrokeOpts,\n Vector,\n Color,\n SkPoint,\n BlendMode,\n PointMode,\n VertexMode,\n SkFont,\n SkRRect,\n SkTextBlob,\n SkPicture,\n SkSVG,\n SkPaint,\n SkRect,\n} from \"../../skia/types\";\n\nimport type {\n CircleDef,\n Fit,\n GroupProps,\n PathDef,\n RectDef,\n RRectDef,\n SkEnum,\n} from \"./Common\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\nexport interface DrawingNodeProps extends GroupProps {\n paint?: SkPaint;\n}\n\nexport type ImageProps = DrawingNodeProps &\n RectDef & {\n fit?: Fit;\n image: SkImage;\n };\n\nexport type CircleProps = CircleDef & DrawingNodeProps;\n\nexport interface PathProps extends DrawingNodeProps {\n path: PathDef;\n start: number;\n end: number;\n stroke?: StrokeOpts;\n fillType?: SkEnum<typeof FillType>;\n}\n\nexport interface CustomDrawingNodeProps extends DrawingNodeProps {\n drawing: (ctx: DrawingContext) => void;\n}\n\nexport interface LineProps extends DrawingNodeProps {\n p1: Vector;\n p2: Vector;\n}\n\nexport type OvalProps = RectDef & DrawingNodeProps;\n\nexport type RectProps = RectDef & DrawingNodeProps;\n\nexport type RoundedRectProps = RRectDef & DrawingNodeProps;\n\nexport interface CubicBezierHandle {\n pos: Vector;\n c1: Vector;\n c2: Vector;\n}\n\nexport interface PatchProps extends DrawingNodeProps {\n colors?: Color[];\n patch: [\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle\n ];\n texture?: readonly [SkPoint, SkPoint, SkPoint, SkPoint];\n blendMode?: SkEnum<typeof BlendMode>;\n}\n\nexport interface VerticesProps extends DrawingNodeProps {\n colors?: string[];\n vertices: SkPoint[];\n textures?: SkPoint[];\n mode: SkEnum<typeof VertexMode>;\n blendMode?: SkEnum<typeof BlendMode>;\n indices?: number[];\n}\n\nexport type ImageSVGProps = RectDef & {\n svg: SkSVG;\n} & DrawingNodeProps;\n\nexport interface PictureProps extends DrawingNodeProps {\n picture: SkPicture;\n}\n\nexport interface PointsProps extends DrawingNodeProps {\n points: SkPoint[];\n mode: SkEnum<typeof PointMode>;\n}\n\nexport interface DiffRectProps extends DrawingNodeProps {\n inner: SkRRect;\n outer: SkRRect;\n}\n\nexport interface TextProps extends DrawingNodeProps {\n font: SkFont;\n text: string;\n x: number;\n y: number;\n}\n\nexport interface TextPathProps extends DrawingNodeProps {\n font: SkFont;\n text: string;\n path: PathDef;\n initialOffset: number;\n}\n\nexport interface TextBlobProps extends DrawingNodeProps {\n blob: SkTextBlob;\n x: number;\n y: number;\n}\n\nexport interface Glyph {\n id: number;\n pos: SkPoint;\n}\n\nexport interface GlyphsProps extends DrawingNodeProps {\n font: SkFont;\n x: number;\n y: number;\n glyphs: Glyph[];\n}\n\nexport interface BoxProps extends DrawingNodeProps {\n box: SkRRect | SkRect;\n}\n\nexport interface BoxShadowProps {\n dx?: number;\n dy?: number;\n spread?: number;\n blur: number;\n color?: Color;\n inner?: boolean;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["Drawings.ts"],"sourcesContent":["import type {\n FillType,\n SkImage,\n StrokeOpts,\n Vector,\n Color,\n SkPoint,\n BlendMode,\n PointMode,\n VertexMode,\n SkFont,\n SkRRect,\n SkTextBlob,\n SkPicture,\n SkSVG,\n SkPaint,\n SkRect,\n} from \"../../skia/types\";\n\nimport type {\n CircleDef,\n Fit,\n GroupProps,\n PathDef,\n RectDef,\n RRectDef,\n SkEnum,\n} from \"./Common\";\nimport type { DrawingContext } from \"./DrawingContext\";\n\nexport interface DrawingNodeProps extends GroupProps {\n paint?: SkPaint;\n}\n\nexport type ImageProps = DrawingNodeProps &\n RectDef & {\n fit?: Fit;\n image: SkImage | null;\n };\n\nexport type CircleProps = CircleDef & DrawingNodeProps;\n\nexport interface PathProps extends DrawingNodeProps {\n path: PathDef;\n start: number;\n end: number;\n stroke?: StrokeOpts;\n fillType?: SkEnum<typeof FillType>;\n}\n\nexport interface CustomDrawingNodeProps extends DrawingNodeProps {\n drawing: (ctx: DrawingContext) => void;\n}\n\nexport interface LineProps extends DrawingNodeProps {\n p1: Vector;\n p2: Vector;\n}\n\nexport type OvalProps = RectDef & DrawingNodeProps;\n\nexport type RectProps = RectDef & DrawingNodeProps;\n\nexport type RoundedRectProps = RRectDef & DrawingNodeProps;\n\nexport interface CubicBezierHandle {\n pos: Vector;\n c1: Vector;\n c2: Vector;\n}\n\nexport interface PatchProps extends DrawingNodeProps {\n colors?: Color[];\n patch: [\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle,\n CubicBezierHandle\n ];\n texture?: readonly [SkPoint, SkPoint, SkPoint, SkPoint];\n blendMode?: SkEnum<typeof BlendMode>;\n}\n\nexport interface VerticesProps extends DrawingNodeProps {\n colors?: string[];\n vertices: SkPoint[];\n textures?: SkPoint[];\n mode: SkEnum<typeof VertexMode>;\n blendMode?: SkEnum<typeof BlendMode>;\n indices?: number[];\n}\n\nexport type ImageSVGProps = RectDef & {\n svg: SkSVG | null;\n} & DrawingNodeProps;\n\nexport interface PictureProps extends DrawingNodeProps {\n picture: SkPicture;\n}\n\nexport interface PointsProps extends DrawingNodeProps {\n points: SkPoint[];\n mode: SkEnum<typeof PointMode>;\n}\n\nexport interface DiffRectProps extends DrawingNodeProps {\n inner: SkRRect;\n outer: SkRRect;\n}\n\nexport interface TextProps extends DrawingNodeProps {\n font: SkFont | null;\n text: string;\n x: number;\n y: number;\n}\n\nexport interface TextPathProps extends DrawingNodeProps {\n font: SkFont | null;\n text: string;\n path: PathDef;\n initialOffset: number;\n}\n\nexport interface TextBlobProps extends DrawingNodeProps {\n blob: SkTextBlob;\n x: number;\n y: number;\n}\n\nexport interface Glyph {\n id: number;\n pos: SkPoint;\n}\n\nexport interface GlyphsProps extends DrawingNodeProps {\n font: SkFont | null;\n x: number;\n y: number;\n glyphs: Glyph[];\n}\n\nexport interface BoxProps extends DrawingNodeProps {\n box: SkRRect | SkRect;\n}\n\nexport interface BoxShadowProps {\n dx?: number;\n dy?: number;\n spread?: number;\n blur: number;\n color?: Color;\n inner?: boolean;\n}\n"],"mappings":""}
@@ -11,7 +11,7 @@ export interface ImageShaderProps extends TransformProps, Partial<RectCtor> {
11
11
  mm: SkEnum<typeof MipmapMode>;
12
12
  fit: Fit;
13
13
  rect?: SkRect;
14
- image: SkImage;
14
+ image: SkImage | null;
15
15
  }
16
16
  export interface ColorProps {
17
17
  color: Color;
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["Shaders.ts"],"sourcesContent":["import type {\n Color,\n FilterMode,\n MipmapMode,\n SkImage,\n SkRect,\n SkRuntimeEffect,\n TileMode,\n Uniforms,\n Vector,\n} from \"../../skia/types\";\n\nimport type {\n SkEnum,\n TransformProps,\n ChildrenProps,\n RectCtor,\n Fit,\n} from \"./Common\";\n\nexport interface ShaderProps extends TransformProps, ChildrenProps {\n source: SkRuntimeEffect;\n uniforms: Uniforms;\n}\n\nexport interface ImageShaderProps extends TransformProps, Partial<RectCtor> {\n tx: SkEnum<typeof TileMode>;\n ty: SkEnum<typeof TileMode>;\n fm: SkEnum<typeof FilterMode>;\n mm: SkEnum<typeof MipmapMode>;\n fit: Fit;\n rect?: SkRect;\n image: SkImage;\n}\n\nexport interface ColorProps {\n color: Color;\n}\n\nexport interface TurbulenceProps {\n freqX: number;\n freqY: number;\n octaves: number;\n seed: number;\n tileWidth: number;\n tileHeight: number;\n}\n\nexport interface FractalNoiseProps {\n freqX: number;\n freqY: number;\n octaves: number;\n seed: number;\n tileWidth: number;\n tileHeight: number;\n}\n\nexport interface GradientProps extends TransformProps {\n colors: Color[];\n positions?: number[];\n mode?: SkEnum<typeof TileMode>;\n flags?: number;\n}\n\nexport interface LinearGradientProps extends GradientProps {\n start: Vector;\n end: Vector;\n}\n\nexport interface RadialGradientProps extends GradientProps {\n c: Vector;\n r: number;\n}\n\nexport interface SweepGradientProps extends GradientProps {\n c: Vector;\n start?: number;\n end?: number;\n}\n\nexport interface TwoPointConicalGradientProps extends GradientProps {\n start: Vector;\n startR: number;\n end: Vector;\n endR: number;\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["Shaders.ts"],"sourcesContent":["import type {\n Color,\n FilterMode,\n MipmapMode,\n SkImage,\n SkRect,\n SkRuntimeEffect,\n TileMode,\n Uniforms,\n Vector,\n} from \"../../skia/types\";\n\nimport type {\n SkEnum,\n TransformProps,\n ChildrenProps,\n RectCtor,\n Fit,\n} from \"./Common\";\n\nexport interface ShaderProps extends TransformProps, ChildrenProps {\n source: SkRuntimeEffect;\n uniforms: Uniforms;\n}\n\nexport interface ImageShaderProps extends TransformProps, Partial<RectCtor> {\n tx: SkEnum<typeof TileMode>;\n ty: SkEnum<typeof TileMode>;\n fm: SkEnum<typeof FilterMode>;\n mm: SkEnum<typeof MipmapMode>;\n fit: Fit;\n rect?: SkRect;\n image: SkImage | null;\n}\n\nexport interface ColorProps {\n color: Color;\n}\n\nexport interface TurbulenceProps {\n freqX: number;\n freqY: number;\n octaves: number;\n seed: number;\n tileWidth: number;\n tileHeight: number;\n}\n\nexport interface FractalNoiseProps {\n freqX: number;\n freqY: number;\n octaves: number;\n seed: number;\n tileWidth: number;\n tileHeight: number;\n}\n\nexport interface GradientProps extends TransformProps {\n colors: Color[];\n positions?: number[];\n mode?: SkEnum<typeof TileMode>;\n flags?: number;\n}\n\nexport interface LinearGradientProps extends GradientProps {\n start: Vector;\n end: Vector;\n}\n\nexport interface RadialGradientProps extends GradientProps {\n c: Vector;\n r: number;\n}\n\nexport interface SweepGradientProps extends GradientProps {\n c: Vector;\n start?: number;\n end?: number;\n}\n\nexport interface TwoPointConicalGradientProps extends GradientProps {\n start: Vector;\n startR: number;\n end: Vector;\n endR: number;\n}\n"],"mappings":""}
@@ -1,15 +1,2 @@
1
- import type { Skia as SkiaApi } from "../skia/types";
2
- import type * as SkiaExports from "../skia";
3
- import type * as ValueExports from "../values";
4
- import type * as AnimationExports from "../animation";
5
- import { ShaderLib } from "../renderer/components/shaders/ShaderLib";
6
- export declare const Skia: SkiaApi;
7
- export declare const vec: (x?: number, y?: number) => {
8
- x: number;
9
- y: number;
10
- };
11
- export declare const Mock: typeof SkiaExports & typeof ValueExports & typeof AnimationExports & {
12
- createDrawing: () => any;
13
- createDeclaration: () => any;
14
- ShaderLib: typeof ShaderLib;
15
- };
1
+ import type { CanvasKit } from "canvaskit-wasm";
2
+ export declare const Mock: (CanvasKit: CanvasKit) => any;
@@ -1,102 +1,40 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import * as Values from "../values/web";
3
- import * as ValuesHooks from "../values/hooks";
4
- import { Selector } from "../values/selector";
5
- import * as BaseSkia from "../skia/types";
6
- import * as timingFunctions from "../animation/timing";
7
- import * as springFunctions from "../animation/spring";
8
- import * as decayFunctions from "../animation/decay";
9
- import * as interpolateFn from "../animation/functions/interpolate";
10
- import * as interpolatePathFn from "../animation/functions/interpolatePaths";
11
- import * as interpolateVectorFn from "../animation/functions/interpolateVector";
12
- import { ShaderLib } from "../renderer/components/shaders/ShaderLib";
1
+ import { JsiSkApi } from "../skia/web";
2
+ import { ValueApi } from "../values/web"; // eslint-disable-next-line @typescript-eslint/no-explicit-any
13
3
 
14
- class Stub {
15
- constructor() {
16
- return new Proxy(() => {}, {
17
- get: () => new Stub(),
18
- apply: () => new Stub(),
19
- set: () => true
20
- });
21
- }
4
+ const Noop = () => undefined;
22
5
 
23
- }
24
-
25
- const Noop = () => {};
26
-
27
- export const Skia = new Stub();
28
- export const vec = (x, y) => {
29
- var _ref;
6
+ const NoopValue = () => ({
7
+ current: 0
8
+ });
30
9
 
10
+ export const Mock = CanvasKit => {
11
+ global.SkiaApi = JsiSkApi(CanvasKit);
12
+ global.SkiaValueApi = ValueApi;
13
+ const Skia = global.SkiaApi;
31
14
  return {
32
- x: x !== null && x !== void 0 ? x : 0,
33
- y: (_ref = y !== null && y !== void 0 ? y : x) !== null && _ref !== void 0 ? _ref : 0
15
+ Skia,
16
+ ...require("../renderer/components"),
17
+ ...require("../skia"),
18
+ ...require("../values"),
19
+ ...require("../animation"),
20
+ ...require("../dom/types"),
21
+ ...require("../dom/nodes"),
22
+ // We could use the real Canvas if we mock the SkiaView component for node
23
+ Canvas: Noop,
24
+ useValue: NoopValue,
25
+ useComputedValue: NoopValue,
26
+ useTouchHandler: Noop,
27
+ useTiming: NoopValue,
28
+ useLoop: NoopValue,
29
+ useSpring: NoopValue,
30
+ useClockValue: NoopValue,
31
+ useValueEffect: Noop,
32
+ useRawData: Noop,
33
+ useData: Noop,
34
+ useFont: () => Skia.Font(undefined, 0),
35
+ useTypeface: () => null,
36
+ useImage: () => null,
37
+ useSVG: () => null
34
38
  };
35
39
  };
36
- export const Mock = {
37
- // SkiaExports
38
- // 1. Skia API. BaseSkia contains the enums, and functions like isPaint etc
39
- Skia,
40
- ...BaseSkia,
41
- // 2. Hooks
42
- useRawData: Noop,
43
- useData: Noop,
44
- useFont: Noop,
45
- useTypeface: Noop,
46
- useImage: Noop,
47
- useSVG: Noop,
48
- createPicture: Noop,
49
- // 3. Point/Rect/Transform utilities
50
- vec,
51
- rect: (x, y, width, height) => ({
52
- x,
53
- y,
54
- width,
55
- height
56
- }),
57
- rrect: (r, rx, ry) => ({
58
- rect: r,
59
- rx,
60
- ry
61
- }),
62
- point: vec,
63
- add: (a, b) => vec(a.x + b.x, a.y + b.y),
64
- sub: (a, b) => vec(a.x - b.x, a.y - b.y),
65
- neg: a => vec(-a.x, -a.y),
66
- dist: (a, b) => Math.hypot(a.x - b.x, a.y - b.y),
67
- translate: _ref2 => {
68
- let {
69
- x,
70
- y
71
- } = _ref2;
72
- return [{
73
- translateX: x
74
- }, {
75
- translateY: y
76
- }];
77
- },
78
- bounds: Noop,
79
- topLeft: Noop,
80
- topRight: Noop,
81
- bottomLeft: Noop,
82
- bottomRight: Noop,
83
- center: Noop,
84
- processTransform2d: Noop,
85
- // ValueExports
86
- ...Values,
87
- ...ValuesHooks,
88
- Selector,
89
- // Animations
90
- ...timingFunctions,
91
- ...springFunctions,
92
- ...decayFunctions,
93
- ...interpolateFn,
94
- ...interpolatePathFn,
95
- ...interpolateVectorFn,
96
- interpolateColors: (_value, _inputRange, _outputRange) => Float32Array.of(0, 0, 0, 0),
97
- mixColors: (_v, _x, _y) => Float32Array.of(0, 0, 0, 0),
98
- ShaderLib,
99
- createDrawing: Noop,
100
- createDeclaration: Noop
101
- };
102
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Values","ValuesHooks","Selector","BaseSkia","timingFunctions","springFunctions","decayFunctions","interpolateFn","interpolatePathFn","interpolateVectorFn","ShaderLib","Stub","constructor","Proxy","get","apply","set","Noop","Skia","vec","x","y","Mock","useRawData","useData","useFont","useTypeface","useImage","useSVG","createPicture","rect","width","height","rrect","r","rx","ry","point","add","a","b","sub","neg","dist","Math","hypot","translate","translateX","translateY","bounds","topLeft","topRight","bottomLeft","bottomRight","center","processTransform2d","interpolateColors","_value","_inputRange","_outputRange","Float32Array","of","mixColors","_v","_x","_y","createDrawing","createDeclaration"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { Color, Skia as SkiaApi, SkRect, Vector } from \"../skia/types\";\nimport * as Values from \"../values/web\";\nimport * as ValuesHooks from \"../values/hooks\";\nimport { Selector } from \"../values/selector\";\nimport * as BaseSkia from \"../skia/types\";\nimport type * as SkiaExports from \"../skia\";\nimport type * as ValueExports from \"../values\";\nimport type * as AnimationExports from \"../animation\";\nimport * as timingFunctions from \"../animation/timing\";\nimport * as springFunctions from \"../animation/spring\";\nimport * as decayFunctions from \"../animation/decay\";\nimport * as interpolateFn from \"../animation/functions/interpolate\";\nimport * as interpolatePathFn from \"../animation/functions/interpolatePaths\";\nimport * as interpolateVectorFn from \"../animation/functions/interpolateVector\";\nimport { ShaderLib } from \"../renderer/components/shaders/ShaderLib\";\n\nclass Stub {\n constructor() {\n return new Proxy(() => {}, {\n get: () => new Stub(),\n apply: () => new Stub(),\n set: () => true,\n });\n }\n}\n\nconst Noop: () => any = () => {};\n\nexport const Skia: SkiaApi = new Stub() as any;\n\nexport const vec = (x?: number, y?: number) => ({ x: x ?? 0, y: y ?? x ?? 0 });\n\nexport const Mock: typeof SkiaExports &\n typeof ValueExports &\n typeof AnimationExports & {\n createDrawing: () => any;\n createDeclaration: () => any;\n ShaderLib: typeof ShaderLib;\n } = {\n // SkiaExports\n // 1. Skia API. BaseSkia contains the enums, and functions like isPaint etc\n Skia,\n ...BaseSkia,\n // 2. Hooks\n useRawData: Noop,\n useData: Noop,\n useFont: Noop,\n useTypeface: Noop,\n useImage: Noop,\n useSVG: Noop,\n createPicture: Noop,\n // 3. Point/Rect/Transform utilities\n vec,\n rect: (x: number, y: number, width: number, height: number) => ({\n x,\n y,\n width,\n height,\n }),\n rrect: (r: SkRect, rx: number, ry: number) => ({\n rect: r,\n rx,\n ry,\n }),\n point: vec,\n add: (a: Vector, b: Vector) => vec(a.x + b.x, a.y + b.y),\n sub: (a: Vector, b: Vector) => vec(a.x - b.x, a.y - b.y),\n neg: (a: Vector) => vec(-a.x, -a.y),\n dist: (a: Vector, b: Vector) => Math.hypot(a.x - b.x, a.y - b.y),\n translate: ({ x, y }: Vector) =>\n [{ translateX: x }, { translateY: y }] as const,\n\n bounds: Noop,\n topLeft: Noop,\n topRight: Noop,\n bottomLeft: Noop,\n bottomRight: Noop,\n center: Noop,\n processTransform2d: Noop,\n // ValueExports\n ...Values,\n ...ValuesHooks,\n Selector,\n // Animations\n ...timingFunctions,\n ...springFunctions,\n ...decayFunctions,\n ...interpolateFn,\n ...interpolatePathFn,\n ...interpolateVectorFn,\n interpolateColors: (\n _value: number,\n _inputRange: number[],\n _outputRange: Color[]\n ) => Float32Array.of(0, 0, 0, 0),\n mixColors: (_v: number, _x: Color, _y: Color) => Float32Array.of(0, 0, 0, 0),\n ShaderLib,\n createDrawing: Noop,\n createDeclaration: Noop,\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["JsiSkApi","ValueApi","Noop","undefined","NoopValue","current","Mock","CanvasKit","global","SkiaApi","SkiaValueApi","Skia","require","Canvas","useValue","useComputedValue","useTouchHandler","useTiming","useLoop","useSpring","useClockValue","useValueEffect","useRawData","useData","useFont","Font","useTypeface","useImage","useSVG"],"sources":["index.ts"],"sourcesContent":["import type { CanvasKit } from \"canvaskit-wasm\";\n\nimport { JsiSkApi } from \"../skia/web\";\nimport { ValueApi } from \"../values/web\";\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst Noop: () => any = () => undefined;\nconst NoopValue = () => ({ current: 0 });\n\nexport const Mock = (CanvasKit: CanvasKit) => {\n global.SkiaApi = JsiSkApi(CanvasKit);\n global.SkiaValueApi = ValueApi;\n const Skia = global.SkiaApi;\n return {\n Skia,\n ...require(\"../renderer/components\"),\n ...require(\"../skia\"),\n ...require(\"../values\"),\n ...require(\"../animation\"),\n ...require(\"../dom/types\"),\n ...require(\"../dom/nodes\"),\n // We could use the real Canvas if we mock the SkiaView component for node\n Canvas: Noop,\n useValue: NoopValue,\n useComputedValue: NoopValue,\n useTouchHandler: Noop,\n useTiming: NoopValue,\n useLoop: NoopValue,\n useSpring: NoopValue,\n useClockValue: NoopValue,\n useValueEffect: Noop,\n useRawData: Noop,\n useData: Noop,\n useFont: () => Skia.Font(undefined, 0),\n useTypeface: () => null,\n useImage: () => null,\n useSVG: () => null,\n };\n};\n"],"mappings":"AAEA,SAASA,QAAT,QAAyB,aAAzB;AACA,SAASC,QAAT,QAAyB,eAAzB,C,CAEA;;AACA,MAAMC,IAAe,GAAG,MAAMC,SAA9B;;AACA,MAAMC,SAAS,GAAG,OAAO;EAAEC,OAAO,EAAE;AAAX,CAAP,CAAlB;;AAEA,OAAO,MAAMC,IAAI,GAAIC,SAAD,IAA0B;EAC5CC,MAAM,CAACC,OAAP,GAAiBT,QAAQ,CAACO,SAAD,CAAzB;EACAC,MAAM,CAACE,YAAP,GAAsBT,QAAtB;EACA,MAAMU,IAAI,GAAGH,MAAM,CAACC,OAApB;EACA,OAAO;IACLE,IADK;IAEL,GAAGC,OAAO,CAAC,wBAAD,CAFL;IAGL,GAAGA,OAAO,CAAC,SAAD,CAHL;IAIL,GAAGA,OAAO,CAAC,WAAD,CAJL;IAKL,GAAGA,OAAO,CAAC,cAAD,CALL;IAML,GAAGA,OAAO,CAAC,cAAD,CANL;IAOL,GAAGA,OAAO,CAAC,cAAD,CAPL;IAQL;IACAC,MAAM,EAAEX,IATH;IAULY,QAAQ,EAAEV,SAVL;IAWLW,gBAAgB,EAAEX,SAXb;IAYLY,eAAe,EAAEd,IAZZ;IAaLe,SAAS,EAAEb,SAbN;IAcLc,OAAO,EAAEd,SAdJ;IAeLe,SAAS,EAAEf,SAfN;IAgBLgB,aAAa,EAAEhB,SAhBV;IAiBLiB,cAAc,EAAEnB,IAjBX;IAkBLoB,UAAU,EAAEpB,IAlBP;IAmBLqB,OAAO,EAAErB,IAnBJ;IAoBLsB,OAAO,EAAE,MAAMb,IAAI,CAACc,IAAL,CAAUtB,SAAV,EAAqB,CAArB,CApBV;IAqBLuB,WAAW,EAAE,MAAM,IArBd;IAsBLC,QAAQ,EAAE,MAAM,IAtBX;IAuBLC,MAAM,EAAE,MAAM;EAvBT,CAAP;AAyBD,CA7BM"}
@@ -1,5 +1,17 @@
1
- import type { DataSourceParam } from "../types";
1
+ /// <reference types="react" />
2
+ import type { DataSourceParam, SkImage } from "../types";
2
3
  /**
3
4
  * Returns a Skia Image object
4
5
  * */
5
- export declare const useImage: (source: DataSourceParam, onError?: ((err: Error) => void) | undefined) => import("../types").SkImage | null;
6
+ export declare const useImage: (source: DataSourceParam, onError?: ((err: Error) => void) | undefined) => SkImage | null;
7
+ /**
8
+ * Creates an image from a given view reference. NOTE: This method has different implementations
9
+ * on web/native. On web, the callback is called with the view ref and the callback is expected to
10
+ * return a promise that resolves to a Skia Image object. On native, the view ref is used to
11
+ * find the view tag and the Skia Image object is created from the view tag. This means that on web
12
+ * you will need to implement the logic to create the image from the view ref yourself.
13
+ * @param viewRef Ref to the view we're creating an image from
14
+ * @returns A promise that resolves to a Skia Image object or rejects
15
+ * with an error id the view tag is invalid.
16
+ */
17
+ export declare const makeImageFromView: <T extends number | import("react").Component<unknown, unknown, any> | import("react").ComponentClass<unknown, any>>(viewRef: import("react").RefObject<T>, callback?: ((viewRef: import("react").RefObject<T>) => Promise<SkImage | null>) | null) => Promise<SkImage | null>;
@@ -1,3 +1,4 @@
1
+ import { findNodeHandle, Platform } from "react-native";
1
2
  import { Skia } from "../Skia";
2
3
  import { useRawData } from "./Data";
3
4
  const imgFactory = Skia.Image.MakeImageFromEncoded.bind(Skia.Image);
@@ -6,4 +7,35 @@ const imgFactory = Skia.Image.MakeImageFromEncoded.bind(Skia.Image);
6
7
  * */
7
8
 
8
9
  export const useImage = (source, onError) => useRawData(source, imgFactory, onError);
10
+ /**
11
+ * Creates an image from a given view reference. NOTE: This method has different implementations
12
+ * on web/native. On web, the callback is called with the view ref and the callback is expected to
13
+ * return a promise that resolves to a Skia Image object. On native, the view ref is used to
14
+ * find the view tag and the Skia Image object is created from the view tag. This means that on web
15
+ * you will need to implement the logic to create the image from the view ref yourself.
16
+ * @param viewRef Ref to the view we're creating an image from
17
+ * @returns A promise that resolves to a Skia Image object or rejects
18
+ * with an error id the view tag is invalid.
19
+ */
20
+
21
+ export const makeImageFromView = function (viewRef) {
22
+ let callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
23
+
24
+ // In web implementation we just delegate the work to the provided callback
25
+ if (Platform.OS === "web") {
26
+ if (callback) {
27
+ return callback(viewRef);
28
+ } else {
29
+ Promise.reject(new Error("Callback is required on web in the makeImageFromView function."));
30
+ }
31
+ }
32
+
33
+ const viewTag = findNodeHandle(viewRef.current);
34
+
35
+ if (viewTag !== null && viewTag !== 0) {
36
+ return Skia.Image.MakeImageFromViewTag(viewTag);
37
+ }
38
+
39
+ return Promise.reject(new Error("Invalid view tag"));
40
+ };
9
41
  //# sourceMappingURL=Image.js.map