@shopify/react-native-skia 0.1.172 → 0.1.174

Sign up to get free protection for your applications and to get access to all the features.
Files changed (324) 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 +56 -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/JsiSkDataFactory.js +0 -1
  153. package/lib/commonjs/skia/web/JsiSkDataFactory.js.map +1 -1
  154. package/lib/commonjs/skia/web/JsiSkImage.d.ts +1 -0
  155. package/lib/commonjs/skia/web/JsiSkImage.js +34 -3
  156. package/lib/commonjs/skia/web/JsiSkImage.js.map +1 -1
  157. package/lib/commonjs/skia/web/JsiSkSurface.d.ts +1 -0
  158. package/lib/commonjs/skia/web/JsiSkSurface.js +4 -0
  159. package/lib/commonjs/skia/web/JsiSkSurface.js.map +1 -1
  160. package/lib/commonjs/skia/web/JsiSkSurfaceFactory.d.ts +2 -1
  161. package/lib/commonjs/skia/web/JsiSkSurfaceFactory.js +21 -1
  162. package/lib/commonjs/skia/web/JsiSkSurfaceFactory.js.map +1 -1
  163. package/lib/commonjs/views/SkiaBaseWebView.js +14 -8
  164. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  165. package/lib/commonjs/views/SkiaDomView.web.js +3 -14
  166. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -1
  167. package/lib/commonjs/views/SkiaPictureView.web.js +0 -7
  168. package/lib/commonjs/views/SkiaPictureView.web.js.map +1 -1
  169. package/lib/commonjs/views/SkiaView.web.js +0 -7
  170. package/lib/commonjs/views/SkiaView.web.js.map +1 -1
  171. package/lib/module/dom/nodes/DrawingNode.js +5 -1
  172. package/lib/module/dom/nodes/DrawingNode.js.map +1 -1
  173. package/lib/module/dom/nodes/JsiSkDOM.d.ts +33 -34
  174. package/lib/module/dom/nodes/LayerNode.js +13 -7
  175. package/lib/module/dom/nodes/LayerNode.js.map +1 -1
  176. package/lib/module/dom/nodes/Node.d.ts +6 -11
  177. package/lib/module/dom/nodes/Node.js +8 -25
  178. package/lib/module/dom/nodes/Node.js.map +1 -1
  179. package/lib/module/dom/nodes/PaintContext.js.map +1 -1
  180. package/lib/module/dom/nodes/PaintNode.d.ts +3 -3
  181. package/lib/module/dom/nodes/PaintNode.js +32 -15
  182. package/lib/module/dom/nodes/PaintNode.js.map +1 -1
  183. package/lib/module/dom/nodes/RenderNode.d.ts +2 -3
  184. package/lib/module/dom/nodes/RenderNode.js +20 -187
  185. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  186. package/lib/module/dom/nodes/drawings/BackdropFilterNode.d.ts +1 -1
  187. package/lib/module/dom/nodes/drawings/BackdropFilterNode.js +23 -4
  188. package/lib/module/dom/nodes/drawings/BackdropFilterNode.js.map +1 -1
  189. package/lib/module/dom/nodes/drawings/Box.d.ts +3 -1
  190. package/lib/module/dom/nodes/drawings/Box.js +3 -0
  191. package/lib/module/dom/nodes/drawings/Box.js.map +1 -1
  192. package/lib/module/dom/nodes/paint/BlendNode.d.ts +3 -7
  193. package/lib/module/dom/nodes/paint/BlendNode.js +15 -46
  194. package/lib/module/dom/nodes/paint/BlendNode.js.map +1 -1
  195. package/lib/module/dom/nodes/paint/ColorFilters.d.ts +10 -11
  196. package/lib/module/dom/nodes/paint/ColorFilters.js +29 -43
  197. package/lib/module/dom/nodes/paint/ColorFilters.js.map +1 -1
  198. package/lib/module/dom/nodes/paint/ImageFilters.d.ts +11 -11
  199. package/lib/module/dom/nodes/paint/ImageFilters.js +48 -41
  200. package/lib/module/dom/nodes/paint/ImageFilters.js.map +1 -1
  201. package/lib/module/dom/nodes/paint/MaskFilters.d.ts +3 -3
  202. package/lib/module/dom/nodes/paint/MaskFilters.js +3 -2
  203. package/lib/module/dom/nodes/paint/MaskFilters.js.map +1 -1
  204. package/lib/module/dom/nodes/paint/PathEffects.d.ts +15 -18
  205. package/lib/module/dom/nodes/paint/PathEffects.js +29 -72
  206. package/lib/module/dom/nodes/paint/PathEffects.js.map +1 -1
  207. package/lib/module/dom/nodes/paint/Shaders.d.ts +11 -12
  208. package/lib/module/dom/nodes/paint/Shaders.js +28 -18
  209. package/lib/module/dom/nodes/paint/Shaders.js.map +1 -1
  210. package/lib/module/dom/types/DeclarationContext.d.ts +29 -0
  211. package/lib/module/dom/types/DeclarationContext.js +107 -0
  212. package/lib/module/dom/types/DeclarationContext.js.map +1 -0
  213. package/lib/module/dom/types/DrawingContext.d.ts +18 -1
  214. package/lib/module/dom/types/DrawingContext.js +322 -1
  215. package/lib/module/dom/types/DrawingContext.js.map +1 -1
  216. package/lib/module/dom/types/Node.d.ts +4 -10
  217. package/lib/module/dom/types/Node.js.map +1 -1
  218. package/lib/module/dom/types/SkDOM.d.ts +22 -23
  219. package/lib/module/dom/types/SkDOM.js.map +1 -1
  220. package/lib/module/dom/types/index.d.ts +1 -0
  221. package/lib/module/dom/types/index.js +1 -0
  222. package/lib/module/dom/types/index.js.map +1 -1
  223. package/lib/module/index.d.ts +1 -0
  224. package/lib/module/index.js +1 -0
  225. package/lib/module/index.js.map +1 -1
  226. package/lib/module/renderer/Canvas.js +3 -3
  227. package/lib/module/renderer/Canvas.js.map +1 -1
  228. package/lib/module/renderer/DrawingContext.d.ts +4 -3
  229. package/lib/module/renderer/DrawingContext.js.map +1 -1
  230. package/lib/module/renderer/HostComponents.d.ts +35 -35
  231. package/lib/module/renderer/HostComponents.js.map +1 -1
  232. package/lib/module/renderer/HostConfig.js +1 -0
  233. package/lib/module/renderer/HostConfig.js.map +1 -1
  234. package/lib/module/renderer/Offscreen.d.ts +2 -0
  235. package/lib/module/renderer/Offscreen.js +19 -0
  236. package/lib/module/renderer/Offscreen.js.map +1 -0
  237. package/lib/module/renderer/Reconciler.js +0 -1
  238. package/lib/module/renderer/Reconciler.js.map +1 -1
  239. package/lib/module/skia/types/Surface/Surface.d.ts +4 -0
  240. package/lib/module/skia/types/Surface/Surface.js.map +1 -1
  241. package/lib/module/skia/types/Surface/SurfaceFactory.d.ts +6 -0
  242. package/lib/module/skia/types/Surface/SurfaceFactory.js.map +1 -1
  243. package/lib/module/skia/web/JsiSkDataFactory.js +0 -1
  244. package/lib/module/skia/web/JsiSkDataFactory.js.map +1 -1
  245. package/lib/module/skia/web/JsiSkImage.d.ts +1 -0
  246. package/lib/module/skia/web/JsiSkImage.js +31 -3
  247. package/lib/module/skia/web/JsiSkImage.js.map +1 -1
  248. package/lib/module/skia/web/JsiSkSurface.d.ts +1 -0
  249. package/lib/module/skia/web/JsiSkSurface.js +4 -0
  250. package/lib/module/skia/web/JsiSkSurface.js.map +1 -1
  251. package/lib/module/skia/web/JsiSkSurfaceFactory.d.ts +2 -1
  252. package/lib/module/skia/web/JsiSkSurfaceFactory.js +21 -1
  253. package/lib/module/skia/web/JsiSkSurfaceFactory.js.map +1 -1
  254. package/lib/module/views/SkiaBaseWebView.js +14 -8
  255. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  256. package/lib/module/views/SkiaDomView.web.js +2 -11
  257. package/lib/module/views/SkiaDomView.web.js.map +1 -1
  258. package/lib/module/views/SkiaPictureView.web.js +0 -5
  259. package/lib/module/views/SkiaPictureView.web.js.map +1 -1
  260. package/lib/module/views/SkiaView.web.js +0 -5
  261. package/lib/module/views/SkiaView.web.js.map +1 -1
  262. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +33 -34
  263. package/lib/typescript/src/dom/nodes/Node.d.ts +6 -11
  264. package/lib/typescript/src/dom/nodes/PaintNode.d.ts +3 -3
  265. package/lib/typescript/src/dom/nodes/RenderNode.d.ts +2 -3
  266. package/lib/typescript/src/dom/nodes/drawings/BackdropFilterNode.d.ts +1 -1
  267. package/lib/typescript/src/dom/nodes/drawings/Box.d.ts +3 -1
  268. package/lib/typescript/src/dom/nodes/paint/BlendNode.d.ts +3 -7
  269. package/lib/typescript/src/dom/nodes/paint/ColorFilters.d.ts +10 -11
  270. package/lib/typescript/src/dom/nodes/paint/ImageFilters.d.ts +11 -11
  271. package/lib/typescript/src/dom/nodes/paint/MaskFilters.d.ts +3 -3
  272. package/lib/typescript/src/dom/nodes/paint/PathEffects.d.ts +15 -18
  273. package/lib/typescript/src/dom/nodes/paint/Shaders.d.ts +11 -12
  274. package/lib/typescript/src/dom/types/DeclarationContext.d.ts +29 -0
  275. package/lib/typescript/src/dom/types/DrawingContext.d.ts +18 -1
  276. package/lib/typescript/src/dom/types/Node.d.ts +4 -10
  277. package/lib/typescript/src/dom/types/SkDOM.d.ts +22 -23
  278. package/lib/typescript/src/dom/types/index.d.ts +1 -0
  279. package/lib/typescript/src/index.d.ts +1 -0
  280. package/lib/typescript/src/renderer/DrawingContext.d.ts +4 -3
  281. package/lib/typescript/src/renderer/HostComponents.d.ts +35 -35
  282. package/lib/typescript/src/renderer/Offscreen.d.ts +2 -0
  283. package/lib/typescript/src/skia/types/Surface/Surface.d.ts +4 -0
  284. package/lib/typescript/src/skia/types/Surface/SurfaceFactory.d.ts +6 -0
  285. package/lib/typescript/src/skia/web/JsiSkImage.d.ts +1 -0
  286. package/lib/typescript/src/skia/web/JsiSkSurface.d.ts +1 -0
  287. package/lib/typescript/src/skia/web/JsiSkSurfaceFactory.d.ts +2 -1
  288. package/package.json +1 -1
  289. package/src/dom/nodes/DrawingNode.ts +5 -1
  290. package/src/dom/nodes/LayerNode.ts +13 -11
  291. package/src/dom/nodes/Node.ts +18 -41
  292. package/src/dom/nodes/PaintContext.ts +1 -0
  293. package/src/dom/nodes/PaintNode.ts +28 -18
  294. package/src/dom/nodes/RenderNode.ts +25 -183
  295. package/src/dom/nodes/drawings/BackdropFilterNode.ts +18 -11
  296. package/src/dom/nodes/drawings/Box.ts +6 -4
  297. package/src/dom/nodes/paint/BlendNode.ts +16 -63
  298. package/src/dom/nodes/paint/ColorFilters.ts +32 -55
  299. package/src/dom/nodes/paint/ImageFilters.ts +58 -53
  300. package/src/dom/nodes/paint/MaskFilters.ts +5 -7
  301. package/src/dom/nodes/paint/PathEffects.ts +37 -90
  302. package/src/dom/nodes/paint/Shaders.ts +31 -29
  303. package/src/dom/types/DeclarationContext.ts +105 -0
  304. package/src/dom/types/DrawingContext.ts +304 -1
  305. package/src/dom/types/Node.ts +4 -20
  306. package/src/dom/types/SkDOM.ts +22 -43
  307. package/src/dom/types/index.ts +1 -0
  308. package/src/index.ts +1 -0
  309. package/src/renderer/Canvas.tsx +3 -3
  310. package/src/renderer/DrawingContext.ts +4 -5
  311. package/src/renderer/HostComponents.ts +34 -53
  312. package/src/renderer/HostConfig.ts +1 -0
  313. package/src/renderer/Offscreen.tsx +24 -0
  314. package/src/renderer/Reconciler.tsx +0 -1
  315. package/src/skia/types/Surface/Surface.ts +5 -0
  316. package/src/skia/types/Surface/SurfaceFactory.ts +7 -0
  317. package/src/skia/web/JsiSkDataFactory.ts +0 -1
  318. package/src/skia/web/JsiSkImage.ts +26 -2
  319. package/src/skia/web/JsiSkSurface.ts +4 -0
  320. package/src/skia/web/JsiSkSurfaceFactory.ts +21 -2
  321. package/src/views/SkiaBaseWebView.tsx +9 -2
  322. package/src/views/SkiaDomView.web.tsx +2 -13
  323. package/src/views/SkiaPictureView.web.tsx +0 -7
  324. 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 {