@shopify/react-native-skia 0.1.172 → 0.1.173

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 (311) hide show
  1. package/android/CMakeLists.txt +1 -0
  2. package/android/cpp/rnskia-android/RNSkAndroidPlatformContext.h +5 -0
  3. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +106 -5
  4. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +3 -1
  5. package/cpp/api/JsiSkSurface.h +7 -1
  6. package/cpp/api/JsiSkSurfaceFactory.h +15 -2
  7. package/cpp/rnskia/RNSkDomView.cpp +2 -4
  8. package/cpp/rnskia/RNSkJsView.cpp +3 -0
  9. package/cpp/rnskia/RNSkPictureView.h +3 -0
  10. package/cpp/rnskia/RNSkPlatformContext.h +9 -0
  11. package/cpp/rnskia/dom/JsiDomApi.h +1 -0
  12. package/cpp/rnskia/dom/base/ConcatablePaint.cpp +117 -0
  13. package/cpp/rnskia/dom/base/ConcatablePaint.h +49 -0
  14. package/cpp/rnskia/dom/base/Declaration.h +88 -0
  15. package/cpp/rnskia/dom/base/DeclarationContext.h +79 -0
  16. package/cpp/rnskia/dom/base/DerivedNodeProp.h +25 -9
  17. package/cpp/rnskia/dom/base/DrawingContext.cpp +32 -186
  18. package/cpp/rnskia/dom/base/DrawingContext.h +45 -64
  19. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +35 -106
  20. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +28 -9
  21. package/cpp/rnskia/dom/base/JsiDomNode.h +46 -17
  22. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +81 -67
  23. package/cpp/rnskia/dom/base/NodeProp.h +12 -2
  24. package/cpp/rnskia/dom/base/NodePropsContainer.h +15 -16
  25. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +22 -11
  26. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +43 -59
  27. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +16 -17
  28. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +6 -5
  29. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +45 -69
  30. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +1 -1
  31. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +121 -161
  32. package/cpp/rnskia/dom/nodes/JsiImageNode.h +1 -0
  33. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +28 -18
  34. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +82 -45
  35. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +68 -101
  36. package/cpp/rnskia/dom/nodes/JsiPathNode.h +3 -2
  37. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +150 -207
  38. package/cpp/rnskia/dom/props/BezierProps.h +4 -2
  39. package/cpp/rnskia/dom/props/BlendModeProp.h +4 -2
  40. package/cpp/rnskia/dom/props/BoxShadowProps.h +8 -10
  41. package/cpp/rnskia/dom/props/CircleProp.h +6 -5
  42. package/cpp/rnskia/dom/props/ClipProp.h +6 -4
  43. package/cpp/rnskia/dom/props/ColorProp.h +8 -4
  44. package/cpp/rnskia/dom/props/DrawingProp.h +5 -3
  45. package/cpp/rnskia/dom/props/FontProp.h +4 -2
  46. package/cpp/rnskia/dom/props/GlyphsProp.h +4 -2
  47. package/cpp/rnskia/dom/props/ImageProps.h +9 -6
  48. package/cpp/rnskia/dom/props/LayerProp.h +6 -4
  49. package/cpp/rnskia/dom/props/MatrixProp.h +4 -2
  50. package/cpp/rnskia/dom/props/NumbersProp.h +8 -4
  51. package/cpp/rnskia/dom/props/PaintProps.h +55 -92
  52. package/cpp/rnskia/dom/props/PathProp.h +4 -2
  53. package/cpp/rnskia/dom/props/PictureProp.h +4 -2
  54. package/cpp/rnskia/dom/props/PointProp.h +4 -2
  55. package/cpp/rnskia/dom/props/PointsProp.h +8 -4
  56. package/cpp/rnskia/dom/props/RRectProp.h +23 -16
  57. package/cpp/rnskia/dom/props/RadiusProp.h +4 -2
  58. package/cpp/rnskia/dom/props/RectProp.h +18 -12
  59. package/cpp/rnskia/dom/props/StrokeProps.h +8 -4
  60. package/cpp/rnskia/dom/props/SvgProp.h +4 -2
  61. package/cpp/rnskia/dom/props/TextBlobProp.h +10 -8
  62. package/cpp/rnskia/dom/props/TileModeProp.h +4 -2
  63. package/cpp/rnskia/dom/props/TransformProp.h +4 -2
  64. package/cpp/rnskia/dom/props/TransformsProps.h +5 -7
  65. package/cpp/rnskia/dom/props/UniformsProp.h +4 -2
  66. package/cpp/rnskia/dom/props/VertexModeProp.h +4 -2
  67. package/cpp/rnskia/dom/props/VerticesProps.h +7 -11
  68. package/ios/RNSkia-iOS/DisplayLink.mm +22 -24
  69. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +53 -50
  70. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.h +2 -0
  71. package/ios/RNSkia-iOS/RNSkiOSPlatformContext.mm +38 -25
  72. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +17 -17
  73. package/ios/RNSkia-iOS/SkiaDrawViewManager.mm +17 -17
  74. package/ios/RNSkia-iOS/SkiaManager.mm +12 -10
  75. package/ios/RNSkia-iOS/SkiaMetalRenderer.h +5 -0
  76. package/ios/RNSkia-iOS/SkiaMetalRenderer.mm +53 -0
  77. package/ios/RNSkia-iOS/SkiaPictureViewManager.mm +17 -17
  78. package/ios/RNSkia-iOS/SkiaUIView.mm +63 -53
  79. package/ios/RNSkiaModule.mm +5 -7
  80. package/lib/commonjs/dom/nodes/DrawingNode.js +5 -1
  81. package/lib/commonjs/dom/nodes/DrawingNode.js.map +1 -1
  82. package/lib/commonjs/dom/nodes/JsiSkDOM.d.ts +33 -34
  83. package/lib/commonjs/dom/nodes/LayerNode.js +13 -6
  84. package/lib/commonjs/dom/nodes/LayerNode.js.map +1 -1
  85. package/lib/commonjs/dom/nodes/Node.d.ts +6 -11
  86. package/lib/commonjs/dom/nodes/Node.js +8 -26
  87. package/lib/commonjs/dom/nodes/Node.js.map +1 -1
  88. package/lib/commonjs/dom/nodes/PaintContext.js.map +1 -1
  89. package/lib/commonjs/dom/nodes/PaintNode.d.ts +3 -3
  90. package/lib/commonjs/dom/nodes/PaintNode.js +32 -15
  91. package/lib/commonjs/dom/nodes/PaintNode.js.map +1 -1
  92. package/lib/commonjs/dom/nodes/RenderNode.d.ts +2 -3
  93. package/lib/commonjs/dom/nodes/RenderNode.js +19 -187
  94. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  95. package/lib/commonjs/dom/nodes/drawings/BackdropFilterNode.d.ts +1 -1
  96. package/lib/commonjs/dom/nodes/drawings/BackdropFilterNode.js +25 -7
  97. package/lib/commonjs/dom/nodes/drawings/BackdropFilterNode.js.map +1 -1
  98. package/lib/commonjs/dom/nodes/drawings/Box.d.ts +3 -1
  99. package/lib/commonjs/dom/nodes/drawings/Box.js +3 -0
  100. package/lib/commonjs/dom/nodes/drawings/Box.js.map +1 -1
  101. package/lib/commonjs/dom/nodes/paint/BlendNode.d.ts +3 -7
  102. package/lib/commonjs/dom/nodes/paint/BlendNode.js +16 -47
  103. package/lib/commonjs/dom/nodes/paint/BlendNode.js.map +1 -1
  104. package/lib/commonjs/dom/nodes/paint/ColorFilters.d.ts +10 -11
  105. package/lib/commonjs/dom/nodes/paint/ColorFilters.js +29 -43
  106. package/lib/commonjs/dom/nodes/paint/ColorFilters.js.map +1 -1
  107. package/lib/commonjs/dom/nodes/paint/ImageFilters.d.ts +11 -11
  108. package/lib/commonjs/dom/nodes/paint/ImageFilters.js +45 -42
  109. package/lib/commonjs/dom/nodes/paint/ImageFilters.js.map +1 -1
  110. package/lib/commonjs/dom/nodes/paint/MaskFilters.d.ts +3 -3
  111. package/lib/commonjs/dom/nodes/paint/MaskFilters.js +3 -2
  112. package/lib/commonjs/dom/nodes/paint/MaskFilters.js.map +1 -1
  113. package/lib/commonjs/dom/nodes/paint/PathEffects.d.ts +15 -18
  114. package/lib/commonjs/dom/nodes/paint/PathEffects.js +30 -72
  115. package/lib/commonjs/dom/nodes/paint/PathEffects.js.map +1 -1
  116. package/lib/commonjs/dom/nodes/paint/Shaders.d.ts +11 -12
  117. package/lib/commonjs/dom/nodes/paint/Shaders.js +28 -18
  118. package/lib/commonjs/dom/nodes/paint/Shaders.js.map +1 -1
  119. package/lib/commonjs/dom/types/DeclarationContext.d.ts +29 -0
  120. package/lib/commonjs/dom/types/DeclarationContext.js +118 -0
  121. package/lib/commonjs/dom/types/DeclarationContext.js.map +1 -0
  122. package/lib/commonjs/dom/types/DrawingContext.d.ts +18 -1
  123. package/lib/commonjs/dom/types/DrawingContext.js +330 -0
  124. package/lib/commonjs/dom/types/DrawingContext.js.map +1 -1
  125. package/lib/commonjs/dom/types/Node.d.ts +4 -10
  126. package/lib/commonjs/dom/types/Node.js.map +1 -1
  127. package/lib/commonjs/dom/types/SkDOM.d.ts +22 -23
  128. package/lib/commonjs/dom/types/SkDOM.js.map +1 -1
  129. package/lib/commonjs/dom/types/index.d.ts +1 -0
  130. package/lib/commonjs/dom/types/index.js +13 -0
  131. package/lib/commonjs/dom/types/index.js.map +1 -1
  132. package/lib/commonjs/index.d.ts +1 -0
  133. package/lib/commonjs/index.js +13 -0
  134. package/lib/commonjs/index.js.map +1 -1
  135. package/lib/commonjs/renderer/Canvas.js +3 -3
  136. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  137. package/lib/commonjs/renderer/DrawingContext.d.ts +4 -3
  138. package/lib/commonjs/renderer/DrawingContext.js.map +1 -1
  139. package/lib/commonjs/renderer/HostComponents.d.ts +35 -35
  140. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  141. package/lib/commonjs/renderer/HostConfig.js +1 -0
  142. package/lib/commonjs/renderer/HostConfig.js.map +1 -1
  143. package/lib/commonjs/renderer/Offscreen.d.ts +2 -0
  144. package/lib/commonjs/renderer/Offscreen.js +31 -0
  145. package/lib/commonjs/renderer/Offscreen.js.map +1 -0
  146. package/lib/commonjs/renderer/Reconciler.js +0 -1
  147. package/lib/commonjs/renderer/Reconciler.js.map +1 -1
  148. package/lib/commonjs/skia/types/Surface/Surface.d.ts +4 -0
  149. package/lib/commonjs/skia/types/Surface/Surface.js.map +1 -1
  150. package/lib/commonjs/skia/types/Surface/SurfaceFactory.d.ts +6 -0
  151. package/lib/commonjs/skia/types/Surface/SurfaceFactory.js.map +1 -1
  152. package/lib/commonjs/skia/web/JsiSkSurface.d.ts +1 -0
  153. package/lib/commonjs/skia/web/JsiSkSurface.js +4 -0
  154. package/lib/commonjs/skia/web/JsiSkSurface.js.map +1 -1
  155. package/lib/commonjs/skia/web/JsiSkSurfaceFactory.d.ts +2 -1
  156. package/lib/commonjs/skia/web/JsiSkSurfaceFactory.js +21 -1
  157. package/lib/commonjs/skia/web/JsiSkSurfaceFactory.js.map +1 -1
  158. package/lib/commonjs/views/SkiaBaseWebView.js +6 -4
  159. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  160. package/lib/commonjs/views/SkiaDomView.web.js +3 -14
  161. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -1
  162. package/lib/commonjs/views/SkiaPictureView.web.js +0 -7
  163. package/lib/commonjs/views/SkiaPictureView.web.js.map +1 -1
  164. package/lib/commonjs/views/SkiaView.web.js +0 -7
  165. package/lib/commonjs/views/SkiaView.web.js.map +1 -1
  166. package/lib/module/dom/nodes/DrawingNode.js +5 -1
  167. package/lib/module/dom/nodes/DrawingNode.js.map +1 -1
  168. package/lib/module/dom/nodes/JsiSkDOM.d.ts +33 -34
  169. package/lib/module/dom/nodes/LayerNode.js +13 -7
  170. package/lib/module/dom/nodes/LayerNode.js.map +1 -1
  171. package/lib/module/dom/nodes/Node.d.ts +6 -11
  172. package/lib/module/dom/nodes/Node.js +8 -25
  173. package/lib/module/dom/nodes/Node.js.map +1 -1
  174. package/lib/module/dom/nodes/PaintContext.js.map +1 -1
  175. package/lib/module/dom/nodes/PaintNode.d.ts +3 -3
  176. package/lib/module/dom/nodes/PaintNode.js +32 -15
  177. package/lib/module/dom/nodes/PaintNode.js.map +1 -1
  178. package/lib/module/dom/nodes/RenderNode.d.ts +2 -3
  179. package/lib/module/dom/nodes/RenderNode.js +20 -187
  180. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  181. package/lib/module/dom/nodes/drawings/BackdropFilterNode.d.ts +1 -1
  182. package/lib/module/dom/nodes/drawings/BackdropFilterNode.js +23 -4
  183. package/lib/module/dom/nodes/drawings/BackdropFilterNode.js.map +1 -1
  184. package/lib/module/dom/nodes/drawings/Box.d.ts +3 -1
  185. package/lib/module/dom/nodes/drawings/Box.js +3 -0
  186. package/lib/module/dom/nodes/drawings/Box.js.map +1 -1
  187. package/lib/module/dom/nodes/paint/BlendNode.d.ts +3 -7
  188. package/lib/module/dom/nodes/paint/BlendNode.js +15 -46
  189. package/lib/module/dom/nodes/paint/BlendNode.js.map +1 -1
  190. package/lib/module/dom/nodes/paint/ColorFilters.d.ts +10 -11
  191. package/lib/module/dom/nodes/paint/ColorFilters.js +29 -43
  192. package/lib/module/dom/nodes/paint/ColorFilters.js.map +1 -1
  193. package/lib/module/dom/nodes/paint/ImageFilters.d.ts +11 -11
  194. package/lib/module/dom/nodes/paint/ImageFilters.js +48 -41
  195. package/lib/module/dom/nodes/paint/ImageFilters.js.map +1 -1
  196. package/lib/module/dom/nodes/paint/MaskFilters.d.ts +3 -3
  197. package/lib/module/dom/nodes/paint/MaskFilters.js +3 -2
  198. package/lib/module/dom/nodes/paint/MaskFilters.js.map +1 -1
  199. package/lib/module/dom/nodes/paint/PathEffects.d.ts +15 -18
  200. package/lib/module/dom/nodes/paint/PathEffects.js +29 -72
  201. package/lib/module/dom/nodes/paint/PathEffects.js.map +1 -1
  202. package/lib/module/dom/nodes/paint/Shaders.d.ts +11 -12
  203. package/lib/module/dom/nodes/paint/Shaders.js +28 -18
  204. package/lib/module/dom/nodes/paint/Shaders.js.map +1 -1
  205. package/lib/module/dom/types/DeclarationContext.d.ts +29 -0
  206. package/lib/module/dom/types/DeclarationContext.js +107 -0
  207. package/lib/module/dom/types/DeclarationContext.js.map +1 -0
  208. package/lib/module/dom/types/DrawingContext.d.ts +18 -1
  209. package/lib/module/dom/types/DrawingContext.js +322 -1
  210. package/lib/module/dom/types/DrawingContext.js.map +1 -1
  211. package/lib/module/dom/types/Node.d.ts +4 -10
  212. package/lib/module/dom/types/Node.js.map +1 -1
  213. package/lib/module/dom/types/SkDOM.d.ts +22 -23
  214. package/lib/module/dom/types/SkDOM.js.map +1 -1
  215. package/lib/module/dom/types/index.d.ts +1 -0
  216. package/lib/module/dom/types/index.js +1 -0
  217. package/lib/module/dom/types/index.js.map +1 -1
  218. package/lib/module/index.d.ts +1 -0
  219. package/lib/module/index.js +1 -0
  220. package/lib/module/index.js.map +1 -1
  221. package/lib/module/renderer/Canvas.js +3 -3
  222. package/lib/module/renderer/Canvas.js.map +1 -1
  223. package/lib/module/renderer/DrawingContext.d.ts +4 -3
  224. package/lib/module/renderer/DrawingContext.js.map +1 -1
  225. package/lib/module/renderer/HostComponents.d.ts +35 -35
  226. package/lib/module/renderer/HostComponents.js.map +1 -1
  227. package/lib/module/renderer/HostConfig.js +1 -0
  228. package/lib/module/renderer/HostConfig.js.map +1 -1
  229. package/lib/module/renderer/Offscreen.d.ts +2 -0
  230. package/lib/module/renderer/Offscreen.js +19 -0
  231. package/lib/module/renderer/Offscreen.js.map +1 -0
  232. package/lib/module/renderer/Reconciler.js +0 -1
  233. package/lib/module/renderer/Reconciler.js.map +1 -1
  234. package/lib/module/skia/types/Surface/Surface.d.ts +4 -0
  235. package/lib/module/skia/types/Surface/Surface.js.map +1 -1
  236. package/lib/module/skia/types/Surface/SurfaceFactory.d.ts +6 -0
  237. package/lib/module/skia/types/Surface/SurfaceFactory.js.map +1 -1
  238. package/lib/module/skia/web/JsiSkSurface.d.ts +1 -0
  239. package/lib/module/skia/web/JsiSkSurface.js +4 -0
  240. package/lib/module/skia/web/JsiSkSurface.js.map +1 -1
  241. package/lib/module/skia/web/JsiSkSurfaceFactory.d.ts +2 -1
  242. package/lib/module/skia/web/JsiSkSurfaceFactory.js +21 -1
  243. package/lib/module/skia/web/JsiSkSurfaceFactory.js.map +1 -1
  244. package/lib/module/views/SkiaBaseWebView.js +6 -4
  245. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  246. package/lib/module/views/SkiaDomView.web.js +2 -11
  247. package/lib/module/views/SkiaDomView.web.js.map +1 -1
  248. package/lib/module/views/SkiaPictureView.web.js +0 -5
  249. package/lib/module/views/SkiaPictureView.web.js.map +1 -1
  250. package/lib/module/views/SkiaView.web.js +0 -5
  251. package/lib/module/views/SkiaView.web.js.map +1 -1
  252. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +33 -34
  253. package/lib/typescript/src/dom/nodes/Node.d.ts +6 -11
  254. package/lib/typescript/src/dom/nodes/PaintNode.d.ts +3 -3
  255. package/lib/typescript/src/dom/nodes/RenderNode.d.ts +2 -3
  256. package/lib/typescript/src/dom/nodes/drawings/BackdropFilterNode.d.ts +1 -1
  257. package/lib/typescript/src/dom/nodes/drawings/Box.d.ts +3 -1
  258. package/lib/typescript/src/dom/nodes/paint/BlendNode.d.ts +3 -7
  259. package/lib/typescript/src/dom/nodes/paint/ColorFilters.d.ts +10 -11
  260. package/lib/typescript/src/dom/nodes/paint/ImageFilters.d.ts +11 -11
  261. package/lib/typescript/src/dom/nodes/paint/MaskFilters.d.ts +3 -3
  262. package/lib/typescript/src/dom/nodes/paint/PathEffects.d.ts +15 -18
  263. package/lib/typescript/src/dom/nodes/paint/Shaders.d.ts +11 -12
  264. package/lib/typescript/src/dom/types/DeclarationContext.d.ts +29 -0
  265. package/lib/typescript/src/dom/types/DrawingContext.d.ts +18 -1
  266. package/lib/typescript/src/dom/types/Node.d.ts +4 -10
  267. package/lib/typescript/src/dom/types/SkDOM.d.ts +22 -23
  268. package/lib/typescript/src/dom/types/index.d.ts +1 -0
  269. package/lib/typescript/src/index.d.ts +1 -0
  270. package/lib/typescript/src/renderer/DrawingContext.d.ts +4 -3
  271. package/lib/typescript/src/renderer/HostComponents.d.ts +35 -35
  272. package/lib/typescript/src/renderer/Offscreen.d.ts +2 -0
  273. package/lib/typescript/src/skia/types/Surface/Surface.d.ts +4 -0
  274. package/lib/typescript/src/skia/types/Surface/SurfaceFactory.d.ts +6 -0
  275. package/lib/typescript/src/skia/web/JsiSkSurface.d.ts +1 -0
  276. package/lib/typescript/src/skia/web/JsiSkSurfaceFactory.d.ts +2 -1
  277. package/package.json +1 -1
  278. package/src/dom/nodes/DrawingNode.ts +5 -1
  279. package/src/dom/nodes/LayerNode.ts +13 -11
  280. package/src/dom/nodes/Node.ts +18 -41
  281. package/src/dom/nodes/PaintContext.ts +1 -0
  282. package/src/dom/nodes/PaintNode.ts +28 -18
  283. package/src/dom/nodes/RenderNode.ts +25 -183
  284. package/src/dom/nodes/drawings/BackdropFilterNode.ts +18 -11
  285. package/src/dom/nodes/drawings/Box.ts +6 -4
  286. package/src/dom/nodes/paint/BlendNode.ts +16 -63
  287. package/src/dom/nodes/paint/ColorFilters.ts +32 -55
  288. package/src/dom/nodes/paint/ImageFilters.ts +58 -53
  289. package/src/dom/nodes/paint/MaskFilters.ts +5 -7
  290. package/src/dom/nodes/paint/PathEffects.ts +37 -90
  291. package/src/dom/nodes/paint/Shaders.ts +31 -29
  292. package/src/dom/types/DeclarationContext.ts +105 -0
  293. package/src/dom/types/DrawingContext.ts +304 -1
  294. package/src/dom/types/Node.ts +4 -20
  295. package/src/dom/types/SkDOM.ts +22 -43
  296. package/src/dom/types/index.ts +1 -0
  297. package/src/index.ts +1 -0
  298. package/src/renderer/Canvas.tsx +3 -3
  299. package/src/renderer/DrawingContext.ts +4 -5
  300. package/src/renderer/HostComponents.ts +34 -53
  301. package/src/renderer/HostConfig.ts +1 -0
  302. package/src/renderer/Offscreen.tsx +24 -0
  303. package/src/renderer/Reconciler.tsx +0 -1
  304. package/src/skia/types/Surface/Surface.ts +5 -0
  305. package/src/skia/types/Surface/SurfaceFactory.ts +7 -0
  306. package/src/skia/web/JsiSkSurface.ts +4 -0
  307. package/src/skia/web/JsiSkSurfaceFactory.ts +21 -2
  308. package/src/views/SkiaBaseWebView.tsx +6 -2
  309. package/src/views/SkiaDomView.web.tsx +2 -13
  310. package/src/views/SkiaPictureView.web.tsx +0 -7
  311. package/src/views/SkiaView.web.tsx +0 -7
@@ -23,84 +23,48 @@
23
23
 
24
24
  namespace RNSkia {
25
25
 
26
- class JsiBaseShaderNode
27
- : public JsiDomDeclarationNode<JsiBaseShaderNode, sk_sp<SkShader>> {
28
- public:
29
- JsiBaseShaderNode(std::shared_ptr<RNSkPlatformContext> context,
30
- const char *type)
31
- : JsiDomDeclarationNode<JsiBaseShaderNode, sk_sp<SkShader>>(context,
32
- type) {}
33
-
34
- protected:
35
- sk_sp<SkShader> resolve(std::shared_ptr<JsiDomNode> child) override {
36
- auto ptr = std::dynamic_pointer_cast<JsiBaseShaderNode>(child);
37
- if (ptr) {
38
- return ptr->getCurrent();
39
- }
40
- return nullptr;
41
- }
42
-
43
- void setShader(DrawingContext *context, sk_sp<SkShader> f) {
44
- set(context, f);
45
- }
46
-
47
- void set(DrawingContext *context, sk_sp<SkShader> shader) override {
48
- auto paint = context->getMutablePaint();
49
- paint->setShader(shader);
50
- setCurrent(shader);
51
- }
52
- };
53
-
54
- class JsiShaderNode : public JsiBaseShaderNode,
26
+ class JsiShaderNode : public JsiDomDeclarationNode,
55
27
  public JsiDomNodeCtor<JsiShaderNode> {
56
28
  public:
57
29
  explicit JsiShaderNode(std::shared_ptr<RNSkPlatformContext> context)
58
- : JsiBaseShaderNode(context, "skShader") {}
59
-
60
- protected:
61
- void decorate(DrawingContext *context) override {
62
- if (isChanged(context)) {
63
- auto source = _sourceProp->value().getAs<JsiSkRuntimeEffect>();
64
- if (source == nullptr) {
65
- throw std::runtime_error("Expected runtime effect when reading source "
66
- "property of RuntimeEffectImageFilter.");
67
- }
68
- auto uniforms =
69
- _uniformsProp->isSet() ? _uniformsProp->getDerivedValue() : nullptr;
70
-
71
- SkMatrix lm;
72
- auto tm =
73
- _transformProp->isSet() ? _transformProp->getDerivedValue() : nullptr;
74
-
75
- if (tm != nullptr) {
76
- if (_originProp->isSet()) {
77
- auto tr = _originProp->getDerivedValue();
78
- lm.preTranslate(tr->x(), tr->y());
79
- lm.preConcat(*tm);
80
- lm.preTranslate(-tr->x(), -tr->y());
81
- } else {
82
- lm.preConcat(*tm);
83
- }
30
+ : JsiDomDeclarationNode(context, "skShader", DeclarationType::Shader) {}
31
+
32
+ void decorate(DeclarationContext *context) override {
33
+ decorateChildren(context);
34
+ auto source = _sourceProp->value().getAs<JsiSkRuntimeEffect>();
35
+ if (source == nullptr) {
36
+ throw std::runtime_error("Expected runtime effect when reading source "
37
+ "property of RuntimeEffectImageFilter.");
38
+ }
39
+ auto uniforms =
40
+ _uniformsProp->isSet() ? _uniformsProp->getDerivedValue() : nullptr;
41
+
42
+ SkMatrix lm;
43
+ auto tm =
44
+ _transformProp->isSet() ? _transformProp->getDerivedValue() : nullptr;
45
+
46
+ if (tm != nullptr) {
47
+ if (_originProp->isSet()) {
48
+ auto tr = _originProp->getDerivedValue();
49
+ lm.preTranslate(tr->x(), tr->y());
50
+ lm.preConcat(*tm);
51
+ lm.preTranslate(-tr->x(), -tr->y());
52
+ } else {
53
+ lm.preConcat(*tm);
84
54
  }
55
+ }
85
56
 
86
- // get all children that are shader nodes
87
- std::vector<sk_sp<SkShader>> children;
88
- children.reserve(getChildren().size());
89
- for (auto &child : getChildren()) {
90
- auto ptr = std::dynamic_pointer_cast<JsiBaseShaderNode>(child);
91
- if (ptr != nullptr) {
92
- children.push_back(ptr->getCurrent());
93
- }
94
- }
57
+ // get all children that are shader nodes
58
+ auto children = context->getShaders()->popAll();
95
59
 
96
- // Update shader
97
- setShader(context, source->getObject()->makeShader(
98
- uniforms, children.data(), children.size(), &lm));
99
- }
60
+ // Update shader
61
+ context->getShaders()->push(source->getObject()->makeShader(
62
+ uniforms, children.data(), children.size(), &lm));
100
63
  }
101
64
 
65
+ protected:
102
66
  void defineProperties(NodePropsContainer *container) override {
103
- JsiBaseDomDeclarationNode::defineProperties(container);
67
+ JsiDomDeclarationNode::defineProperties(container);
104
68
  _sourceProp = container->defineProperty<NodeProp>("source");
105
69
  _uniformsProp =
106
70
  container->defineProperty<UniformsProp>("uniforms", _sourceProp);
@@ -117,55 +81,52 @@ private:
117
81
  PointProp *_originProp;
118
82
  };
119
83
 
120
- class JsiImageShaderNode : public JsiBaseShaderNode,
84
+ class JsiImageShaderNode : public JsiDomDeclarationNode,
121
85
  public JsiDomNodeCtor<JsiImageShaderNode> {
122
86
  public:
123
87
  explicit JsiImageShaderNode(std::shared_ptr<RNSkPlatformContext> context)
124
- : JsiBaseShaderNode(context, "skImageShader") {}
125
-
126
- protected:
127
- void decorate(DrawingContext *context) override {
128
- if (isChanged(context)) {
129
- auto image = _imageProps->getImage();
130
- auto rect = _imageProps->getRect();
131
- auto lm =
132
- _transformProp->isSet() ? _transformProp->getDerivedValue() : nullptr;
133
-
134
- if (rect != nullptr && lm != nullptr) {
135
- auto rc = _imageProps->getDerivedValue();
136
- auto m3 = _imageProps->rect2rect(rc->src, rc->dst);
137
- if (_transformProp->isChanged()) {
138
- // To modify the matrix we need to copy it since we're not allowed to
139
- // modify values contained in properties - this would have caused the
140
- // matrix to be translated and scaled more and more for each render
141
- // even thought the matrix prop did not change.
142
- _matrix.reset();
143
- _matrix.preConcat(m3);
144
- if (_originProp->isSet()) {
145
- auto tr = _originProp->getDerivedValue();
146
- _matrix.preTranslate(tr->x(), tr->y());
147
- _matrix.preConcat(*lm);
148
- _matrix.preTranslate(-tr->x(), -tr->y());
149
- } else {
150
- _matrix.preConcat(*lm);
151
- }
88
+ : JsiDomDeclarationNode(context, "skImageShader",
89
+ DeclarationType::Shader) {}
90
+
91
+ void decorate(DeclarationContext *context) override {
92
+
93
+ auto image = _imageProps->getImage();
94
+ auto rect = _imageProps->getRect();
95
+ auto lm =
96
+ _transformProp->isSet() ? _transformProp->getDerivedValue() : nullptr;
97
+
98
+ if (rect != nullptr && lm != nullptr) {
99
+ auto rc = _imageProps->getDerivedValue();
100
+ auto m3 = _imageProps->rect2rect(rc->src, rc->dst);
101
+ if (_transformProp->isChanged()) {
102
+ // To modify the matrix we need to copy it since we're not allowed to
103
+ // modify values contained in properties - this would have caused the
104
+ // matrix to be translated and scaled more and more for each render
105
+ // even thought the matrix prop did not change.
106
+ _matrix.reset();
107
+ _matrix.preConcat(m3);
108
+ if (_originProp->isSet()) {
109
+ auto tr = _originProp->getDerivedValue();
110
+ _matrix.preTranslate(tr->x(), tr->y());
111
+ _matrix.preConcat(*lm);
112
+ _matrix.preTranslate(-tr->x(), -tr->y());
113
+ } else {
114
+ _matrix.preConcat(*lm);
152
115
  }
153
116
  }
154
-
155
- setShader(
156
- context,
157
- image->makeShader(
158
- *_txProp->getDerivedValue(), *_tyProp->getDerivedValue(),
159
- SkSamplingOptions(getFilterModeFromString(
160
- _filterModeProp->value().getAsString()),
161
- getMipmapModeFromString(
162
- _mipmapModeProp->value().getAsString())),
163
- &_matrix));
164
117
  }
118
+
119
+ context->getShaders()->push(image->makeShader(
120
+ *_txProp->getDerivedValue(), *_tyProp->getDerivedValue(),
121
+ SkSamplingOptions(
122
+ getFilterModeFromString(_filterModeProp->value().getAsString()),
123
+ getMipmapModeFromString(_mipmapModeProp->value().getAsString())),
124
+ &_matrix));
165
125
  }
166
126
 
127
+ protected:
167
128
  void defineProperties(NodePropsContainer *container) override {
168
- JsiBaseDomDeclarationNode::defineProperties(container);
129
+ JsiDomDeclarationNode::defineProperties(container);
169
130
  _txProp = container->defineProperty<TileModeProp>("tx");
170
131
  _tyProp = container->defineProperty<TileModeProp>("ty");
171
132
  _filterModeProp = container->defineProperty<NodeProp>("fm");
@@ -224,25 +185,23 @@ private:
224
185
  PointProp *_originProp;
225
186
  };
226
187
 
227
- class JsiColorShaderNode : public JsiBaseShaderNode,
188
+ class JsiColorShaderNode : public JsiDomDeclarationNode,
228
189
  public JsiDomNodeCtor<JsiColorShaderNode> {
229
190
  public:
230
191
  explicit JsiColorShaderNode(std::shared_ptr<RNSkPlatformContext> context)
231
- : JsiBaseShaderNode(context, "skColorShader") {}
192
+ : JsiDomDeclarationNode(context, "skColorShader",
193
+ DeclarationType::Shader) {}
232
194
 
233
- protected:
234
- void decorate(DrawingContext *context) override {
235
- if (isChanged(context)) {
236
- if (_colorProp->isSet()) {
237
- setShader(context, SkShaders::Color(*_colorProp->getDerivedValue()));
238
- } else {
239
- setShader(context, nullptr);
240
- }
195
+ void decorate(DeclarationContext *context) override {
196
+ if (_colorProp->isSet()) {
197
+ context->getShaders()->push(
198
+ SkShaders::Color(*_colorProp->getDerivedValue()));
241
199
  }
242
200
  }
243
201
 
202
+ protected:
244
203
  void defineProperties(NodePropsContainer *container) override {
245
- JsiBaseDomDeclarationNode::defineProperties(container);
204
+ JsiDomDeclarationNode::defineProperties(container);
246
205
  _colorProp = container->defineProperty<ColorProp>("color");
247
206
  _colorProp->require();
248
207
  }
@@ -251,15 +210,14 @@ private:
251
210
  ColorProp *_colorProp;
252
211
  };
253
212
 
254
- class JsiBasePerlinNoiseNode : public JsiBaseShaderNode {
213
+ class JsiBasePerlinNoiseNode : public JsiDomDeclarationNode {
255
214
  public:
256
215
  JsiBasePerlinNoiseNode(std::shared_ptr<RNSkPlatformContext> context,
257
216
  PropId type)
258
- : JsiBaseShaderNode(context, type) {}
217
+ : JsiDomDeclarationNode(context, type, DeclarationType::Shader) {}
259
218
 
260
- protected:
261
219
  void defineProperties(NodePropsContainer *container) override {
262
- JsiBaseDomDeclarationNode::defineProperties(container);
220
+ JsiDomDeclarationNode::defineProperties(container);
263
221
  _freqXProp = container->defineProperty<NodeProp>("freqX");
264
222
  _freqYProp = container->defineProperty<NodeProp>("freqY");
265
223
  _octavesProp = container->defineProperty<NodeProp>("octaves");
@@ -289,18 +247,15 @@ public:
289
247
  explicit JsiTurbulenceNode(std::shared_ptr<RNSkPlatformContext> context)
290
248
  : JsiBasePerlinNoiseNode(context, "skTurbulence") {}
291
249
 
292
- protected:
293
- void decorate(DrawingContext *context) override {
294
- if (isChanged(context)) {
295
- SkISize size = SkISize::Make(_tileWidthProp->value().getAsNumber(),
296
- _tileHeightProp->value().getAsNumber());
297
-
298
- setShader(context, SkPerlinNoiseShader::MakeTurbulence(
299
- _freqXProp->value().getAsNumber(),
300
- _freqYProp->value().getAsNumber(),
301
- _octavesProp->value().getAsNumber(),
302
- _seedProp->value().getAsNumber(), &size));
303
- }
250
+ void decorate(DeclarationContext *context) override {
251
+
252
+ SkISize size = SkISize::Make(_tileWidthProp->value().getAsNumber(),
253
+ _tileHeightProp->value().getAsNumber());
254
+
255
+ context->getShaders()->push(SkPerlinNoiseShader::MakeTurbulence(
256
+ _freqXProp->value().getAsNumber(), _freqYProp->value().getAsNumber(),
257
+ _octavesProp->value().getAsNumber(), _seedProp->value().getAsNumber(),
258
+ &size));
304
259
  }
305
260
  };
306
261
 
@@ -310,28 +265,41 @@ public:
310
265
  explicit JsiFractalNoiseNode(std::shared_ptr<RNSkPlatformContext> context)
311
266
  : JsiBasePerlinNoiseNode(context, "skFractalNoise") {}
312
267
 
313
- protected:
314
- void decorate(DrawingContext *context) override {
315
- if (isChanged(context)) {
316
- SkISize size = SkISize::Make(_tileWidthProp->value().getAsNumber(),
317
- _tileHeightProp->value().getAsNumber());
318
-
319
- setShader(context, SkPerlinNoiseShader::MakeFractalNoise(
320
- _freqXProp->value().getAsNumber(),
321
- _freqYProp->value().getAsNumber(),
322
- _octavesProp->value().getAsNumber(),
323
- _seedProp->value().getAsNumber(), &size));
324
- }
268
+ void decorate(DeclarationContext *context) override {
269
+
270
+ SkISize size = SkISize::Make(_tileWidthProp->value().getAsNumber(),
271
+ _tileHeightProp->value().getAsNumber());
272
+
273
+ context->getShaders()->push(SkPerlinNoiseShader::MakeFractalNoise(
274
+ _freqXProp->value().getAsNumber(), _freqYProp->value().getAsNumber(),
275
+ _octavesProp->value().getAsNumber(), _seedProp->value().getAsNumber(),
276
+ &size));
325
277
  }
326
278
  };
327
279
 
328
- class JsiBaseGradientNode : public JsiBaseShaderNode {
280
+ class JsiBaseGradientNode : public JsiDomDeclarationNode {
329
281
  public:
330
282
  JsiBaseGradientNode(std::shared_ptr<RNSkPlatformContext> context, PropId type)
331
- : JsiBaseShaderNode(context, type) {}
283
+ : JsiDomDeclarationNode(context, type, DeclarationType::Shader) {}
284
+
285
+ void decorate(DeclarationContext *context) override {
286
+
287
+ _colors = _colorsProp->getDerivedValue()->data();
288
+ _colorCount = static_cast<int>(_colorsProp->getDerivedValue()->size());
289
+ _flags = _flagsProp->isSet() ? _flagsProp->value().getAsNumber() : 0;
290
+ _mode =
291
+ _modeProp->isSet() ? *_modeProp->getDerivedValue() : SkTileMode::kClamp;
292
+ _positions = _positionsProp->isSet()
293
+ ? _positionsProp->getDerivedValue()->data()
294
+ : nullptr;
295
+ _matrix = _transformsProps->isSet()
296
+ ? _transformsProps->getDerivedValue().get()
297
+ : nullptr;
298
+ }
332
299
 
300
+ protected:
333
301
  void defineProperties(NodePropsContainer *container) override {
334
- JsiBaseDomDeclarationNode::defineProperties(container);
302
+ JsiDomDeclarationNode::defineProperties(container);
335
303
  _transformsProps = container->defineProperty<TransformsProps>();
336
304
 
337
305
  _colorsProp = container->defineProperty<ColorsProp>("colors");
@@ -342,23 +310,6 @@ public:
342
310
  _colorsProp->require();
343
311
  }
344
312
 
345
- protected:
346
- void decorate(DrawingContext *context) override {
347
- if (isChanged(context)) {
348
- _colors = _colorsProp->getDerivedValue()->data();
349
- _colorCount = static_cast<int>(_colorsProp->getDerivedValue()->size());
350
- _flags = _flagsProp->isSet() ? _flagsProp->value().getAsNumber() : 0;
351
- _mode = _modeProp->isSet() ? *_modeProp->getDerivedValue()
352
- : SkTileMode::kClamp;
353
- _positions = _positionsProp->isSet()
354
- ? _positionsProp->getDerivedValue()->data()
355
- : nullptr;
356
- _matrix = _transformsProps->isSet()
357
- ? _transformsProps->getDerivedValue().get()
358
- : nullptr;
359
- }
360
- }
361
-
362
313
  const SkColor *_colors;
363
314
  double _flags;
364
315
  int _colorCount;
@@ -380,19 +331,17 @@ public:
380
331
  explicit JsiLinearGradientNode(std::shared_ptr<RNSkPlatformContext> context)
381
332
  : JsiBaseGradientNode(context, "skLinearGradient") {}
382
333
 
383
- protected:
384
- void decorate(DrawingContext *context) override {
334
+ void decorate(DeclarationContext *context) override {
385
335
  JsiBaseGradientNode::decorate(context);
386
336
 
387
- if (isChanged(context)) {
388
- SkPoint pts[] = {*_startProp->getDerivedValue(),
389
- *_endProp->getDerivedValue()};
390
- setShader(context, SkGradientShader::MakeLinear(pts, _colors, _positions,
391
- _colorCount, _mode,
392
- _flags, _matrix));
393
- }
337
+ SkPoint pts[] = {*_startProp->getDerivedValue(),
338
+ *_endProp->getDerivedValue()};
339
+ auto shader = SkGradientShader::MakeLinear(
340
+ pts, _colors, _positions, _colorCount, _mode, _flags, _matrix);
341
+ context->getShaders()->push(shader);
394
342
  }
395
343
 
344
+ protected:
396
345
  void defineProperties(NodePropsContainer *container) override {
397
346
  JsiBaseGradientNode::defineProperties(container);
398
347
  _startProp = container->defineProperty<PointProp>("start");
@@ -413,19 +362,17 @@ public:
413
362
  explicit JsiRadialGradientNode(std::shared_ptr<RNSkPlatformContext> context)
414
363
  : JsiBaseGradientNode(context, "skRadialGradient") {}
415
364
 
416
- protected:
417
- void decorate(DrawingContext *context) override {
365
+ void decorate(DeclarationContext *context) override {
418
366
  JsiBaseGradientNode::decorate(context);
419
367
 
420
- if (isChanged(context)) {
421
- auto c = _centerProp->getDerivedValue();
422
- auto r = _radiusProp->value().getAsNumber();
423
- setShader(context, SkGradientShader::MakeRadial(*c, r, _colors,
424
- _positions, _colorCount,
425
- _mode, _flags, _matrix));
426
- }
368
+ auto c = _centerProp->getDerivedValue();
369
+ auto r = _radiusProp->value().getAsNumber();
370
+ auto shader = SkGradientShader::MakeRadial(
371
+ *c, r, _colors, _positions, _colorCount, _mode, _flags, _matrix);
372
+ context->getShaders()->push(shader);
427
373
  }
428
374
 
375
+ protected:
429
376
  void defineProperties(NodePropsContainer *container) override {
430
377
  JsiBaseGradientNode::defineProperties(container);
431
378
  _centerProp = container->defineProperty<PointProp>("c");
@@ -446,21 +393,19 @@ public:
446
393
  explicit JsiSweepGradientNode(std::shared_ptr<RNSkPlatformContext> context)
447
394
  : JsiBaseGradientNode(context, "skSweepGradient") {}
448
395
 
449
- protected:
450
- void decorate(DrawingContext *context) override {
396
+ void decorate(DeclarationContext *context) override {
451
397
  JsiBaseGradientNode::decorate(context);
452
398
 
453
- if (isChanged(context)) {
454
- auto start = _startProp->isSet() ? _startProp->value().getAsNumber() : 0;
455
- auto end = _endProp->isSet() ? _endProp->value().getAsNumber() : 360;
456
- auto c = _centerProp->getDerivedValue();
399
+ auto start = _startProp->isSet() ? _startProp->value().getAsNumber() : 0;
400
+ auto end = _endProp->isSet() ? _endProp->value().getAsNumber() : 360;
401
+ auto c = _centerProp->getDerivedValue();
457
402
 
458
- setShader(context, SkGradientShader::MakeSweep(
459
- c->x(), c->y(), _colors, _positions, _colorCount,
460
- _mode, start, end, _flags, _matrix));
461
- }
403
+ context->getShaders()->push(SkGradientShader::MakeSweep(
404
+ c->x(), c->y(), _colors, _positions, _colorCount, _mode, start, end,
405
+ _flags, _matrix));
462
406
  }
463
407
 
408
+ protected:
464
409
  void defineProperties(NodePropsContainer *container) override {
465
410
  JsiBaseGradientNode::defineProperties(container);
466
411
  _startProp = container->defineProperty<NodeProp>("start");
@@ -482,22 +427,20 @@ public:
482
427
  std::shared_ptr<RNSkPlatformContext> context)
483
428
  : JsiBaseGradientNode(context, "skTwoPointConicalGradient") {}
484
429
 
485
- protected:
486
- void decorate(DrawingContext *context) override {
430
+ void decorate(DeclarationContext *context) override {
487
431
  JsiBaseGradientNode::decorate(context);
488
432
 
489
- if (isChanged(context)) {
490
- auto start = _startProp->getDerivedValue();
491
- auto end = _endProp->getDerivedValue();
492
- auto startR = _startRProp->value().getAsNumber();
493
- auto endR = _endRProp->value().getAsNumber();
433
+ auto start = _startProp->getDerivedValue();
434
+ auto end = _endProp->getDerivedValue();
435
+ auto startR = _startRProp->value().getAsNumber();
436
+ auto endR = _endRProp->value().getAsNumber();
494
437
 
495
- setShader(context, SkGradientShader::MakeTwoPointConical(
496
- *start, startR, *end, endR, _colors, _positions,
497
- _colorCount, _mode, _flags, _matrix));
498
- }
438
+ context->getShaders()->push(SkGradientShader::MakeTwoPointConical(
439
+ *start, startR, *end, endR, _colors, _positions, _colorCount, _mode,
440
+ _flags, _matrix));
499
441
  }
500
442
 
443
+ protected:
501
444
  void defineProperties(NodePropsContainer *container) override {
502
445
  JsiBaseGradientNode::defineProperties(container);
503
446
  _startProp = container->defineProperty<PointProp>("start");
@@ -12,8 +12,10 @@ namespace RNSkia {
12
12
 
13
13
  class BezierProp : public DerivedProp<std::vector<SkPoint>> {
14
14
  public:
15
- explicit BezierProp(PropId name) : DerivedProp<std::vector<SkPoint>>() {
16
- _bezierProp = addProperty(std::make_shared<NodeProp>(name));
15
+ explicit BezierProp(PropId name,
16
+ const std::function<void(BaseNodeProp *)> &onChange)
17
+ : DerivedProp<std::vector<SkPoint>>(onChange) {
18
+ _bezierProp = defineProperty<NodeProp>(name);
17
19
  }
18
20
 
19
21
  void updateDerivedValue() override {
@@ -18,8 +18,10 @@ namespace RNSkia {
18
18
 
19
19
  class BlendModeProp : public DerivedProp<SkBlendMode> {
20
20
  public:
21
- explicit BlendModeProp(PropId name) : DerivedProp<SkBlendMode>() {
22
- _blendMode = addProperty(std::make_shared<NodeProp>(name));
21
+ explicit BlendModeProp(PropId name,
22
+ const std::function<void(BaseNodeProp *)> &onChange)
23
+ : DerivedProp<SkBlendMode>(onChange) {
24
+ _blendMode = defineProperty<NodeProp>(name);
23
25
  }
24
26
 
25
27
  void updateDerivedValue() override {
@@ -9,16 +9,14 @@ namespace RNSkia {
9
9
 
10
10
  class BoxShadowProps : public DerivedProp<SkPaint> {
11
11
  public:
12
- BoxShadowProps() : DerivedProp<SkPaint>() {
13
- _dxProp = addProperty(std::make_shared<NodeProp>(JsiPropId::get("dx")));
14
- _dyProp = addProperty(std::make_shared<NodeProp>(JsiPropId::get("dy")));
15
- _spreadProp =
16
- addProperty(std::make_shared<NodeProp>(JsiPropId::get("spread")));
17
- _blurProp = addProperty(std::make_shared<NodeProp>(JsiPropId::get("blur")));
18
- _colorProp =
19
- addProperty(std::make_shared<ColorProp>(JsiPropId::get("color")));
20
- _innerProp =
21
- addProperty(std::make_shared<NodeProp>(JsiPropId::get("inner")));
12
+ explicit BoxShadowProps(const std::function<void(BaseNodeProp *)> &onChange)
13
+ : DerivedProp<SkPaint>(onChange) {
14
+ _dxProp = defineProperty<NodeProp>("dx");
15
+ _dyProp = defineProperty<NodeProp>("dy");
16
+ _spreadProp = defineProperty<NodeProp>("spread");
17
+ _blurProp = defineProperty<NodeProp>("blur");
18
+ _colorProp = defineProperty<ColorProp>("color");
19
+ _innerProp = defineProperty<NodeProp>("inner");
22
20
 
23
21
  _blurProp->require();
24
22
  }
@@ -20,10 +20,11 @@ static PropId PropNameC = JsiPropId::get("c");
20
20
 
21
21
  class CircleProp : public DerivedProp<SkPoint> {
22
22
  public:
23
- CircleProp() : DerivedProp<SkPoint>() {
24
- _c = addProperty(std::make_shared<PointProp>(PropNameC));
25
- _cx = addProperty(std::make_shared<NodeProp>(PropNameCx));
26
- _cy = addProperty(std::make_shared<NodeProp>(PropNameCy));
23
+ explicit CircleProp(const std::function<void(BaseNodeProp *)> &onChange)
24
+ : DerivedProp<SkPoint>(onChange) {
25
+ _c = defineProperty<PointProp>("c");
26
+ _cx = defineProperty<NodeProp>("cx");
27
+ _cy = defineProperty<NodeProp>("cy");
27
28
  }
28
29
 
29
30
  void updateDerivedValue() override {
@@ -33,7 +34,7 @@ public:
33
34
  setDerivedValue(SkPoint::Make(_cx->value().getAsNumber(),
34
35
  _cy->value().getAsNumber()));
35
36
  } else if (_c->isSet()) {
36
- setDerivedValue(_c->getDerivedValue());
37
+ setDerivedValue(_c->getUnsafeDerivedValue());
37
38
  } else {
38
39
  setDerivedValue(SkPoint::Make(0.0, 0.0));
39
40
  }
@@ -19,10 +19,12 @@ namespace RNSkia {
19
19
 
20
20
  class ClipProp : public BaseDerivedProp {
21
21
  public:
22
- explicit ClipProp(PropId name) : BaseDerivedProp() {
23
- _pathProp = addProperty(std::make_shared<PathProp>(name));
24
- _rectProp = addProperty(std::make_shared<RectProp>(name));
25
- _rrectProp = addProperty(std::make_shared<RRectProp>(name));
22
+ explicit ClipProp(PropId name,
23
+ const std::function<void(BaseNodeProp *)> &onChange)
24
+ : BaseDerivedProp(onChange) {
25
+ _pathProp = defineProperty<PathProp>(name);
26
+ _rectProp = defineProperty<RectProp>(name);
27
+ _rrectProp = defineProperty<RRectProp>(name);
26
28
  }
27
29
 
28
30
  void updateDerivedValue() override {
@@ -16,8 +16,10 @@ static PropId PropName3 = JsiPropId::get("3");
16
16
 
17
17
  class ColorProp : public DerivedProp<SkColor> {
18
18
  public:
19
- explicit ColorProp(PropId name) : DerivedProp<SkColor>() {
20
- _colorProp = addProperty(std::make_shared<NodeProp>(name));
19
+ explicit ColorProp(PropId name,
20
+ const std::function<void(BaseNodeProp *)> &onChange)
21
+ : DerivedProp<SkColor>(onChange) {
22
+ _colorProp = defineProperty<NodeProp>(name);
21
23
  }
22
24
 
23
25
  void updateDerivedValue() override {
@@ -59,8 +61,10 @@ private:
59
61
 
60
62
  class ColorsProp : public DerivedProp<std::vector<SkColor>> {
61
63
  public:
62
- explicit ColorsProp(PropId name) : DerivedProp<std::vector<SkColor>>() {
63
- _colorsProp = addProperty(std::make_shared<NodeProp>(name));
64
+ explicit ColorsProp(PropId name,
65
+ const std::function<void(BaseNodeProp *)> &onChange)
66
+ : DerivedProp<std::vector<SkColor>>(onChange) {
67
+ _colorsProp = defineProperty<NodeProp>(name);
64
68
  }
65
69
 
66
70
  void updateDerivedValue() override {
@@ -13,9 +13,11 @@ using NotifyNeedRenderCallback =
13
13
 
14
14
  class DrawingProp : public DerivedSkProp<SkPicture> {
15
15
  public:
16
- DrawingProp(PropId name, NotifyNeedRenderCallback notifyPictureNeeded)
17
- : _notifyPictureNeeded(notifyPictureNeeded), DerivedSkProp<SkPicture>() {
18
- _drawingProp = addProperty(std::make_shared<NodeProp>(name));
16
+ DrawingProp(PropId name, NotifyNeedRenderCallback notifyPictureNeeded,
17
+ const std::function<void(BaseNodeProp *)> &onChange)
18
+ : _notifyPictureNeeded(notifyPictureNeeded), DerivedSkProp<SkPicture>(
19
+ onChange) {
20
+ _drawingProp = defineProperty<NodeProp>(name);
19
21
  }
20
22
 
21
23
  void updateDerivedValue() override {
@@ -10,8 +10,10 @@ namespace RNSkia {
10
10
 
11
11
  class FontProp : public DerivedProp<SkFont> {
12
12
  public:
13
- explicit FontProp(PropId name) : DerivedProp<SkFont>() {
14
- _fontProp = addProperty(std::make_shared<NodeProp>(name));
13
+ explicit FontProp(PropId name,
14
+ const std::function<void(BaseNodeProp *)> &onChange)
15
+ : DerivedProp<SkFont>(onChange) {
16
+ _fontProp = defineProperty<NodeProp>(name);
15
17
  }
16
18
 
17
19
  void updateDerivedValue() override {
@@ -19,8 +19,10 @@ struct GlyphInfo {
19
19
 
20
20
  class GlyphsProp : public DerivedProp<GlyphInfo> {
21
21
  public:
22
- explicit GlyphsProp(PropId name) : DerivedProp<GlyphInfo>() {
23
- _glyphsProp = addProperty(std::make_shared<NodeProp>(name));
22
+ explicit GlyphsProp(PropId name,
23
+ const std::function<void(BaseNodeProp *)> &onChange)
24
+ : DerivedProp<GlyphInfo>(onChange) {
25
+ _glyphsProp = defineProperty<NodeProp>(name);
24
26
  }
25
27
 
26
28
  void updateDerivedValue() override {