@shopify/react-native-skia 0.1.172 → 0.1.174

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 (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
@@ -1,44 +1,43 @@
1
- import type { SkShader } from "../../../skia/types";
2
1
  import type { NodeContext } from "../Node";
3
2
  import { JsiDeclarationNode } from "../Node";
4
- import type { ColorProps, FractalNoiseProps, ImageShaderProps, LinearGradientProps, RadialGradientProps, ShaderProps, SweepGradientProps, TurbulenceProps, TwoPointConicalGradientProps } from "../../types";
3
+ import type { ColorProps, DeclarationContext, FractalNoiseProps, ImageShaderProps, LinearGradientProps, RadialGradientProps, ShaderProps, SweepGradientProps, TurbulenceProps, TwoPointConicalGradientProps } from "../../types";
5
4
  import { NodeType } from "../../types";
6
- export declare abstract class ShaderDeclaration<P> extends JsiDeclarationNode<P, SkShader> {
5
+ export declare abstract class ShaderDeclaration<P> extends JsiDeclarationNode<P> {
7
6
  constructor(ctx: NodeContext, type: NodeType, props: P);
8
7
  }
9
8
  export declare class ShaderNode extends ShaderDeclaration<ShaderProps> {
10
9
  constructor(ctx: NodeContext, props: ShaderProps);
11
- materialize(): SkShader;
10
+ decorate(ctx: DeclarationContext): void;
12
11
  }
13
12
  export declare class ImageShaderNode extends ShaderDeclaration<ImageShaderProps> {
14
13
  constructor(ctx: NodeContext, props: ImageShaderProps);
15
- materialize(): SkShader;
14
+ decorate(ctx: DeclarationContext): void;
16
15
  }
17
16
  export declare class ColorNode extends ShaderDeclaration<ColorProps> {
18
17
  constructor(ctx: NodeContext, props: ColorProps);
19
- materialize(): SkShader;
18
+ decorate(ctx: DeclarationContext): void;
20
19
  }
21
20
  export declare class TurbulenceNode extends ShaderDeclaration<TurbulenceProps> {
22
21
  constructor(ctx: NodeContext, props: TurbulenceProps);
23
- materialize(): SkShader;
22
+ decorate(ctx: DeclarationContext): void;
24
23
  }
25
24
  export declare class FractalNoiseNode extends ShaderDeclaration<FractalNoiseProps> {
26
25
  constructor(ctx: NodeContext, props: FractalNoiseProps);
27
- materialize(): SkShader;
26
+ decorate(ctx: DeclarationContext): void;
28
27
  }
29
28
  export declare class LinearGradientNode extends ShaderDeclaration<LinearGradientProps> {
30
29
  constructor(ctx: NodeContext, props: LinearGradientProps);
31
- materialize(): SkShader;
30
+ decorate(ctx: DeclarationContext): void;
32
31
  }
33
32
  export declare class RadialGradientNode extends ShaderDeclaration<RadialGradientProps> {
34
33
  constructor(ctx: NodeContext, props: RadialGradientProps);
35
- materialize(): SkShader;
34
+ decorate(ctx: DeclarationContext): void;
36
35
  }
37
36
  export declare class SweepGradientNode extends ShaderDeclaration<SweepGradientProps> {
38
37
  constructor(ctx: NodeContext, props: SweepGradientProps);
39
- materialize(): SkShader;
38
+ decorate(ctx: DeclarationContext): void;
40
39
  }
41
40
  export declare class TwoPointConicalGradientNode extends ShaderDeclaration<TwoPointConicalGradientProps> {
42
41
  constructor(ctx: NodeContext, props: TwoPointConicalGradientProps);
43
- materialize(): SkShader;
42
+ decorate(ctx: DeclarationContext): void;
44
43
  }
@@ -27,7 +27,8 @@ class ShaderNode extends ShaderDeclaration {
27
27
  super(ctx, _types2.NodeType.Shader, props);
28
28
  }
29
29
 
30
- materialize() {
30
+ decorate(ctx) {
31
+ this.decorateChildren(ctx);
31
32
  const {
32
33
  source,
33
34
  uniforms,
@@ -35,7 +36,8 @@ class ShaderNode extends ShaderDeclaration {
35
36
  } = this.props;
36
37
  const m3 = this.Skia.Matrix();
37
38
  (0, _datatypes.processTransformProps)(m3, transform);
38
- return source.makeShaderWithChildren((0, _types.processUniforms)(source, uniforms), this.children().filter(child => child instanceof _Node.JsiDeclarationNode && child.isShader()).map(child => child.materialize()), m3);
39
+ const shader = source.makeShaderWithChildren((0, _types.processUniforms)(source, uniforms), ctx.shaders.popAll(), m3);
40
+ ctx.shaders.push(shader);
39
41
  }
40
42
 
41
43
  }
@@ -47,7 +49,7 @@ class ImageShaderNode extends ShaderDeclaration {
47
49
  super(ctx, _types2.NodeType.ImageShader, props);
48
50
  }
49
51
 
50
- materialize() {
52
+ decorate(ctx) {
51
53
  const {
52
54
  fit,
53
55
  image,
@@ -75,7 +77,8 @@ class ImageShaderNode extends ShaderDeclaration {
75
77
  const lm = this.Skia.Matrix();
76
78
  lm.concat(m3);
77
79
  (0, _datatypes.processTransformProps)(lm, imageShaderProps);
78
- return image.makeShaderOptions(_types.TileMode[(0, _datatypes.enumKey)(tx)], _types.TileMode[(0, _datatypes.enumKey)(ty)], _types.FilterMode[(0, _datatypes.enumKey)(fm)], _types.MipmapMode[(0, _datatypes.enumKey)(mm)], lm);
80
+ const shader = image.makeShaderOptions(_types.TileMode[(0, _datatypes.enumKey)(tx)], _types.TileMode[(0, _datatypes.enumKey)(ty)], _types.FilterMode[(0, _datatypes.enumKey)(fm)], _types.MipmapMode[(0, _datatypes.enumKey)(mm)], lm);
81
+ ctx.shaders.push(shader);
79
82
  }
80
83
 
81
84
  }
@@ -87,11 +90,12 @@ class ColorNode extends ShaderDeclaration {
87
90
  super(ctx, _types2.NodeType.ColorShader, props);
88
91
  }
89
92
 
90
- materialize() {
93
+ decorate(ctx) {
91
94
  const {
92
95
  color
93
96
  } = this.props;
94
- return this.Skia.Shader.MakeColor(this.Skia.Color(color));
97
+ const shader = this.Skia.Shader.MakeColor(this.Skia.Color(color));
98
+ ctx.shaders.push(shader);
95
99
  }
96
100
 
97
101
  }
@@ -103,7 +107,7 @@ class TurbulenceNode extends ShaderDeclaration {
103
107
  super(ctx, _types2.NodeType.Turbulence, props);
104
108
  }
105
109
 
106
- materialize() {
110
+ decorate(ctx) {
107
111
  const {
108
112
  freqX,
109
113
  freqY,
@@ -112,7 +116,8 @@ class TurbulenceNode extends ShaderDeclaration {
112
116
  tileWidth,
113
117
  tileHeight
114
118
  } = this.props;
115
- return this.Skia.Shader.MakeTurbulence(freqX, freqY, octaves, seed, tileWidth, tileHeight);
119
+ const shader = this.Skia.Shader.MakeTurbulence(freqX, freqY, octaves, seed, tileWidth, tileHeight);
120
+ ctx.shaders.push(shader);
116
121
  }
117
122
 
118
123
  }
@@ -124,7 +129,7 @@ class FractalNoiseNode extends ShaderDeclaration {
124
129
  super(ctx, _types2.NodeType.FractalNoise, props);
125
130
  }
126
131
 
127
- materialize() {
132
+ decorate(ctx) {
128
133
  const {
129
134
  freqX,
130
135
  freqY,
@@ -133,7 +138,8 @@ class FractalNoiseNode extends ShaderDeclaration {
133
138
  tileWidth,
134
139
  tileHeight
135
140
  } = this.props;
136
- return this.Skia.Shader.MakeFractalNoise(freqX, freqY, octaves, seed, tileWidth, tileHeight);
141
+ const shader = this.Skia.Shader.MakeFractalNoise(freqX, freqY, octaves, seed, tileWidth, tileHeight);
142
+ ctx.shaders.push(shader);
137
143
  }
138
144
 
139
145
  }
@@ -145,7 +151,7 @@ class LinearGradientNode extends ShaderDeclaration {
145
151
  super(ctx, _types2.NodeType.LinearGradient, props);
146
152
  }
147
153
 
148
- materialize() {
154
+ decorate(ctx) {
149
155
  const {
150
156
  start,
151
157
  end
@@ -157,7 +163,8 @@ class LinearGradientNode extends ShaderDeclaration {
157
163
  localMatrix,
158
164
  flags
159
165
  } = (0, _datatypes.processGradientProps)(this.Skia, this.props);
160
- return this.Skia.Shader.MakeLinearGradient(start, end, colors, positions ?? null, mode, localMatrix, flags);
166
+ const shader = this.Skia.Shader.MakeLinearGradient(start, end, colors, positions ?? null, mode, localMatrix, flags);
167
+ ctx.shaders.push(shader);
161
168
  }
162
169
 
163
170
  }
@@ -169,7 +176,7 @@ class RadialGradientNode extends ShaderDeclaration {
169
176
  super(ctx, _types2.NodeType.RadialGradient, props);
170
177
  }
171
178
 
172
- materialize() {
179
+ decorate(ctx) {
173
180
  const {
174
181
  c,
175
182
  r
@@ -181,7 +188,8 @@ class RadialGradientNode extends ShaderDeclaration {
181
188
  localMatrix,
182
189
  flags
183
190
  } = (0, _datatypes.processGradientProps)(this.Skia, this.props);
184
- return this.Skia.Shader.MakeRadialGradient(c, r, colors, positions, mode, localMatrix, flags);
191
+ const shader = this.Skia.Shader.MakeRadialGradient(c, r, colors, positions, mode, localMatrix, flags);
192
+ ctx.shaders.push(shader);
185
193
  }
186
194
 
187
195
  }
@@ -193,7 +201,7 @@ class SweepGradientNode extends ShaderDeclaration {
193
201
  super(ctx, _types2.NodeType.SweepGradient, props);
194
202
  }
195
203
 
196
- materialize() {
204
+ decorate(ctx) {
197
205
  const {
198
206
  c,
199
207
  start,
@@ -206,7 +214,8 @@ class SweepGradientNode extends ShaderDeclaration {
206
214
  localMatrix,
207
215
  flags
208
216
  } = (0, _datatypes.processGradientProps)(this.Skia, this.props);
209
- return this.Skia.Shader.MakeSweepGradient(c.x, c.y, colors, positions, mode, localMatrix, flags, start, end);
217
+ const shader = this.Skia.Shader.MakeSweepGradient(c.x, c.y, colors, positions, mode, localMatrix, flags, start, end);
218
+ ctx.shaders.push(shader);
210
219
  }
211
220
 
212
221
  }
@@ -218,7 +227,7 @@ class TwoPointConicalGradientNode extends ShaderDeclaration {
218
227
  super(ctx, _types2.NodeType.TwoPointConicalGradient, props);
219
228
  }
220
229
 
221
- materialize() {
230
+ decorate(ctx) {
222
231
  const {
223
232
  startR,
224
233
  endR,
@@ -232,7 +241,8 @@ class TwoPointConicalGradientNode extends ShaderDeclaration {
232
241
  localMatrix,
233
242
  flags
234
243
  } = (0, _datatypes.processGradientProps)(this.Skia, this.props);
235
- return this.Skia.Shader.MakeTwoPointConicalGradient(start, startR, end, endR, colors, positions, mode, localMatrix, flags);
244
+ const shader = this.Skia.Shader.MakeTwoPointConicalGradient(start, startR, end, endR, colors, positions, mode, localMatrix, flags);
245
+ ctx.shaders.push(shader);
236
246
  }
237
247
 
238
248
  }
@@ -1 +1 @@
1
- {"version":3,"names":["ShaderDeclaration","JsiDeclarationNode","constructor","ctx","type","props","DeclarationType","Shader","ShaderNode","NodeType","materialize","source","uniforms","transform","m3","Skia","Matrix","processTransformProps","makeShaderWithChildren","processUniforms","children","filter","child","isShader","map","ImageShaderNode","ImageShader","fit","image","tx","ty","fm","mm","imageShaderProps","rct","getRect","rects","fitRects","x","y","width","height","sx","sy","rect2rect","src","dst","translate","translateX","translateY","scale","scaleX","scaleY","lm","concat","makeShaderOptions","TileMode","enumKey","FilterMode","MipmapMode","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","processGradientProps","MakeLinearGradient","RadialGradientNode","RadialGradient","c","r","MakeRadialGradient","SweepGradientNode","SweepGradient","MakeSweepGradient","TwoPointConicalGradientNode","TwoPointConicalGradient","startR","endR","MakeTwoPointConicalGradient"],"sources":["Shaders.ts"],"sourcesContent":["import {\n processUniforms,\n FilterMode,\n MipmapMode,\n TileMode,\n} from \"../../../skia/types\";\nimport type { SkShader } from \"../../../skia/types\";\nimport type { NodeContext } from \"../Node\";\nimport { JsiDeclarationNode } from \"../Node\";\nimport type {\n ColorProps,\n FractalNoiseProps,\n ImageShaderProps,\n LinearGradientProps,\n RadialGradientProps,\n ShaderProps,\n SweepGradientProps,\n TurbulenceProps,\n TwoPointConicalGradientProps,\n} from \"../../types\";\nimport { DeclarationType, NodeType } from \"../../types\";\nimport {\n enumKey,\n fitRects,\n getRect,\n processGradientProps,\n processTransformProps,\n rect2rect,\n} from \"../datatypes\";\n\nexport abstract class ShaderDeclaration<P> extends JsiDeclarationNode<\n P,\n SkShader\n> {\n constructor(ctx: NodeContext, type: NodeType, props: P) {\n super(ctx, DeclarationType.Shader, type, props);\n }\n}\n\nexport class ShaderNode extends ShaderDeclaration<ShaderProps> {\n constructor(ctx: NodeContext, props: ShaderProps) {\n super(ctx, NodeType.Shader, props);\n }\n\n materialize() {\n const { source, uniforms, ...transform } = this.props;\n const m3 = this.Skia.Matrix();\n processTransformProps(m3, transform);\n return source.makeShaderWithChildren(\n processUniforms(source, uniforms),\n this.children()\n .filter(\n (child): child is JsiDeclarationNode<unknown, SkShader> =>\n child instanceof JsiDeclarationNode && child.isShader()\n )\n .map((child) => child.materialize()),\n m3\n );\n }\n}\n\nexport class ImageShaderNode extends ShaderDeclaration<ImageShaderProps> {\n constructor(ctx: NodeContext, props: ImageShaderProps) {\n super(ctx, NodeType.ImageShader, props);\n }\n\n materialize() {\n const { fit, image, tx, ty, fm, mm, ...imageShaderProps } = this.props;\n const rct = getRect(this.Skia, imageShaderProps);\n 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 return image.makeShaderOptions(\n TileMode[enumKey(tx)],\n TileMode[enumKey(ty)],\n FilterMode[enumKey(fm)],\n MipmapMode[enumKey(mm)],\n lm\n );\n }\n}\n\nexport class ColorNode extends ShaderDeclaration<ColorProps> {\n constructor(ctx: NodeContext, props: ColorProps) {\n super(ctx, NodeType.ColorShader, props);\n }\n\n materialize() {\n const { color } = this.props;\n return this.Skia.Shader.MakeColor(this.Skia.Color(color));\n }\n}\n\nexport class TurbulenceNode extends ShaderDeclaration<TurbulenceProps> {\n constructor(ctx: NodeContext, props: TurbulenceProps) {\n super(ctx, NodeType.Turbulence, props);\n }\n\n materialize() {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n return this.Skia.Shader.MakeTurbulence(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n }\n}\n\nexport class FractalNoiseNode extends ShaderDeclaration<FractalNoiseProps> {\n constructor(ctx: NodeContext, props: FractalNoiseProps) {\n super(ctx, NodeType.FractalNoise, props);\n }\n\n materialize() {\n const { freqX, freqY, octaves, seed, tileWidth, tileHeight } = this.props;\n return this.Skia.Shader.MakeFractalNoise(\n freqX,\n freqY,\n octaves,\n seed,\n tileWidth,\n tileHeight\n );\n }\n}\n\nexport class LinearGradientNode extends ShaderDeclaration<LinearGradientProps> {\n constructor(ctx: NodeContext, props: LinearGradientProps) {\n super(ctx, NodeType.LinearGradient, props);\n }\n\n materialize() {\n const { start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeLinearGradient(\n start,\n end,\n colors,\n positions ?? null,\n mode,\n localMatrix,\n flags\n );\n }\n}\n\nexport class RadialGradientNode extends ShaderDeclaration<RadialGradientProps> {\n constructor(ctx: NodeContext, props: RadialGradientProps) {\n super(ctx, NodeType.RadialGradient, props);\n }\n\n materialize() {\n const { c, r } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeRadialGradient(\n c,\n r,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n }\n}\n\nexport class SweepGradientNode extends ShaderDeclaration<SweepGradientProps> {\n constructor(ctx: NodeContext, props: SweepGradientProps) {\n super(ctx, NodeType.SweepGradient, props);\n }\n\n materialize() {\n const { c, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeSweepGradient(\n c.x,\n c.y,\n colors,\n positions,\n mode,\n localMatrix,\n flags,\n start,\n end\n );\n }\n}\n\nexport class TwoPointConicalGradientNode extends ShaderDeclaration<TwoPointConicalGradientProps> {\n constructor(ctx: NodeContext, props: TwoPointConicalGradientProps) {\n super(ctx, NodeType.TwoPointConicalGradient, props);\n }\n\n materialize() {\n const { startR, endR, start, end } = this.props;\n const { colors, positions, mode, localMatrix, flags } =\n processGradientProps(this.Skia, this.props);\n return this.Skia.Shader.MakeTwoPointConicalGradient(\n start,\n startR,\n end,\n endR,\n colors,\n positions,\n mode,\n localMatrix,\n flags\n );\n }\n}\n"],"mappings":";;;;;;;AAAA;;AAQA;;AAYA;;AACA;;AASO,MAAeA,iBAAf,SAA4CC,wBAA5C,CAGL;EACAC,WAAW,CAACC,GAAD,EAAmBC,IAAnB,EAAmCC,KAAnC,EAA6C;IACtD,MAAMF,GAAN,EAAWG,uBAAA,CAAgBC,MAA3B,EAAmCH,IAAnC,EAAyCC,KAAzC;EACD;;AAHD;;;;AAMK,MAAMG,UAAN,SAAyBR,iBAAzB,CAAwD;EAC7DE,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAAuC;IAChD,MAAMF,GAAN,EAAWM,gBAAA,CAASF,MAApB,EAA4BF,KAA5B;EACD;;EAEDK,WAAW,GAAG;IACZ,MAAM;MAAEC,MAAF;MAAUC,QAAV;MAAoB,GAAGC;IAAvB,IAAqC,KAAKR,KAAhD;IACA,MAAMS,EAAE,GAAG,KAAKC,IAAL,CAAUC,MAAV,EAAX;IACA,IAAAC,gCAAA,EAAsBH,EAAtB,EAA0BD,SAA1B;IACA,OAAOF,MAAM,CAACO,sBAAP,CACL,IAAAC,sBAAA,EAAgBR,MAAhB,EAAwBC,QAAxB,CADK,EAEL,KAAKQ,QAAL,GACGC,MADH,CAEKC,KAAD,IACEA,KAAK,YAAYrB,wBAAjB,IAAuCqB,KAAK,CAACC,QAAN,EAH7C,EAKGC,GALH,CAKQF,KAAD,IAAWA,KAAK,CAACZ,WAAN,EALlB,CAFK,EAQLI,EARK,CAAP;EAUD;;AAnB4D;;;;AAsBxD,MAAMW,eAAN,SAA8BzB,iBAA9B,CAAkE;EACvEE,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAA4C;IACrD,MAAMF,GAAN,EAAWM,gBAAA,CAASiB,WAApB,EAAiCrB,KAAjC;EACD;;EAEDK,WAAW,GAAG;IACZ,MAAM;MAAEiB,GAAF;MAAOC,KAAP;MAAcC,EAAd;MAAkBC,EAAlB;MAAsBC,EAAtB;MAA0BC,EAA1B;MAA8B,GAAGC;IAAjC,IAAsD,KAAK5B,KAAjE;IACA,MAAM6B,GAAG,GAAG,IAAAC,kBAAA,EAAQ,KAAKpB,IAAb,EAAmBkB,gBAAnB,CAAZ;IACA,MAAMnB,EAAE,GAAG,KAAKC,IAAL,CAAUC,MAAV,EAAX;;IACA,IAAIkB,GAAJ,EAAS;MACP,MAAME,KAAK,GAAG,IAAAC,mBAAA,EACZV,GADY,EAEZ;QAAEW,CAAC,EAAE,CAAL;QAAQC,CAAC,EAAE,CAAX;QAAcC,KAAK,EAAEZ,KAAK,CAACY,KAAN,EAArB;QAAoCC,MAAM,EAAEb,KAAK,CAACa,MAAN;MAA5C,CAFY,EAGZP,GAHY,CAAd;MAKA,MAAM,CAACI,CAAD,EAAIC,CAAJ,EAAOG,EAAP,EAAWC,EAAX,IAAiB,IAAAC,oBAAA,EAAUR,KAAK,CAACS,GAAhB,EAAqBT,KAAK,CAACU,GAA3B,CAAvB;MACAhC,EAAE,CAACiC,SAAH,CAAaT,CAAC,CAACU,UAAf,EAA2BT,CAAC,CAACU,UAA7B;MACAnC,EAAE,CAACoC,KAAH,CAASR,EAAE,CAACS,MAAZ,EAAoBR,EAAE,CAACS,MAAvB;IACD;;IACD,MAAMC,EAAE,GAAG,KAAKtC,IAAL,CAAUC,MAAV,EAAX;IACAqC,EAAE,CAACC,MAAH,CAAUxC,EAAV;IACA,IAAAG,gCAAA,EAAsBoC,EAAtB,EAA0BpB,gBAA1B;IACA,OAAOL,KAAK,CAAC2B,iBAAN,CACLC,eAAA,CAAS,IAAAC,kBAAA,EAAQ5B,EAAR,CAAT,CADK,EAEL2B,eAAA,CAAS,IAAAC,kBAAA,EAAQ3B,EAAR,CAAT,CAFK,EAGL4B,iBAAA,CAAW,IAAAD,kBAAA,EAAQ1B,EAAR,CAAX,CAHK,EAIL4B,iBAAA,CAAW,IAAAF,kBAAA,EAAQzB,EAAR,CAAX,CAJK,EAKLqB,EALK,CAAP;EAOD;;AA7BsE;;;;AAgClE,MAAMO,SAAN,SAAwB5D,iBAAxB,CAAsD;EAC3DE,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAAsC;IAC/C,MAAMF,GAAN,EAAWM,gBAAA,CAASoD,WAApB,EAAiCxD,KAAjC;EACD;;EAEDK,WAAW,GAAG;IACZ,MAAM;MAAEoD;IAAF,IAAY,KAAKzD,KAAvB;IACA,OAAO,KAAKU,IAAL,CAAUR,MAAV,CAAiBwD,SAAjB,CAA2B,KAAKhD,IAAL,CAAUiD,KAAV,CAAgBF,KAAhB,CAA3B,CAAP;EACD;;AAR0D;;;;AAWtD,MAAMG,cAAN,SAA6BjE,iBAA7B,CAAgE;EACrEE,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAA2C;IACpD,MAAMF,GAAN,EAAWM,gBAAA,CAASyD,UAApB,EAAgC7D,KAAhC;EACD;;EAEDK,WAAW,GAAG;IACZ,MAAM;MAAEyD,KAAF;MAASC,KAAT;MAAgBC,OAAhB;MAAyBC,IAAzB;MAA+BC,SAA/B;MAA0CC;IAA1C,IAAyD,KAAKnE,KAApE;IACA,OAAO,KAAKU,IAAL,CAAUR,MAAV,CAAiBkE,cAAjB,CACLN,KADK,EAELC,KAFK,EAGLC,OAHK,EAILC,IAJK,EAKLC,SALK,EAMLC,UANK,CAAP;EAQD;;AAfoE;;;;AAkBhE,MAAME,gBAAN,SAA+B1E,iBAA/B,CAAoE;EACzEE,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAA6C;IACtD,MAAMF,GAAN,EAAWM,gBAAA,CAASkE,YAApB,EAAkCtE,KAAlC;EACD;;EAEDK,WAAW,GAAG;IACZ,MAAM;MAAEyD,KAAF;MAASC,KAAT;MAAgBC,OAAhB;MAAyBC,IAAzB;MAA+BC,SAA/B;MAA0CC;IAA1C,IAAyD,KAAKnE,KAApE;IACA,OAAO,KAAKU,IAAL,CAAUR,MAAV,CAAiBqE,gBAAjB,CACLT,KADK,EAELC,KAFK,EAGLC,OAHK,EAILC,IAJK,EAKLC,SALK,EAMLC,UANK,CAAP;EAQD;;AAfwE;;;;AAkBpE,MAAMK,kBAAN,SAAiC7E,iBAAjC,CAAwE;EAC7EE,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAA+C;IACxD,MAAMF,GAAN,EAAWM,gBAAA,CAASqE,cAApB,EAAoCzE,KAApC;EACD;;EAEDK,WAAW,GAAG;IACZ,MAAM;MAAEqE,KAAF;MAASC;IAAT,IAAiB,KAAK3E,KAA5B;IACA,MAAM;MAAE4E,MAAF;MAAUC,SAAV;MAAqBC,IAArB;MAA2BC,WAA3B;MAAwCC;IAAxC,IACJ,IAAAC,+BAAA,EAAqB,KAAKvE,IAA1B,EAAgC,KAAKV,KAArC,CADF;IAEA,OAAO,KAAKU,IAAL,CAAUR,MAAV,CAAiBgF,kBAAjB,CACLR,KADK,EAELC,GAFK,EAGLC,MAHK,EAILC,SAAS,IAAI,IAJR,EAKLC,IALK,EAMLC,WANK,EAOLC,KAPK,CAAP;EASD;;AAlB4E;;;;AAqBxE,MAAMG,kBAAN,SAAiCxF,iBAAjC,CAAwE;EAC7EE,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAA+C;IACxD,MAAMF,GAAN,EAAWM,gBAAA,CAASgF,cAApB,EAAoCpF,KAApC;EACD;;EAEDK,WAAW,GAAG;IACZ,MAAM;MAAEgF,CAAF;MAAKC;IAAL,IAAW,KAAKtF,KAAtB;IACA,MAAM;MAAE4E,MAAF;MAAUC,SAAV;MAAqBC,IAArB;MAA2BC,WAA3B;MAAwCC;IAAxC,IACJ,IAAAC,+BAAA,EAAqB,KAAKvE,IAA1B,EAAgC,KAAKV,KAArC,CADF;IAEA,OAAO,KAAKU,IAAL,CAAUR,MAAV,CAAiBqF,kBAAjB,CACLF,CADK,EAELC,CAFK,EAGLV,MAHK,EAILC,SAJK,EAKLC,IALK,EAMLC,WANK,EAOLC,KAPK,CAAP;EASD;;AAlB4E;;;;AAqBxE,MAAMQ,iBAAN,SAAgC7F,iBAAhC,CAAsE;EAC3EE,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAA8C;IACvD,MAAMF,GAAN,EAAWM,gBAAA,CAASqF,aAApB,EAAmCzF,KAAnC;EACD;;EAEDK,WAAW,GAAG;IACZ,MAAM;MAAEgF,CAAF;MAAKX,KAAL;MAAYC;IAAZ,IAAoB,KAAK3E,KAA/B;IACA,MAAM;MAAE4E,MAAF;MAAUC,SAAV;MAAqBC,IAArB;MAA2BC,WAA3B;MAAwCC;IAAxC,IACJ,IAAAC,+BAAA,EAAqB,KAAKvE,IAA1B,EAAgC,KAAKV,KAArC,CADF;IAEA,OAAO,KAAKU,IAAL,CAAUR,MAAV,CAAiBwF,iBAAjB,CACLL,CAAC,CAACpD,CADG,EAELoD,CAAC,CAACnD,CAFG,EAGL0C,MAHK,EAILC,SAJK,EAKLC,IALK,EAMLC,WANK,EAOLC,KAPK,EAQLN,KARK,EASLC,GATK,CAAP;EAWD;;AApB0E;;;;AAuBtE,MAAMgB,2BAAN,SAA0ChG,iBAA1C,CAA0F;EAC/FE,WAAW,CAACC,GAAD,EAAmBE,KAAnB,EAAwD;IACjE,MAAMF,GAAN,EAAWM,gBAAA,CAASwF,uBAApB,EAA6C5F,KAA7C;EACD;;EAEDK,WAAW,GAAG;IACZ,MAAM;MAAEwF,MAAF;MAAUC,IAAV;MAAgBpB,KAAhB;MAAuBC;IAAvB,IAA+B,KAAK3E,KAA1C;IACA,MAAM;MAAE4E,MAAF;MAAUC,SAAV;MAAqBC,IAArB;MAA2BC,WAA3B;MAAwCC;IAAxC,IACJ,IAAAC,+BAAA,EAAqB,KAAKvE,IAA1B,EAAgC,KAAKV,KAArC,CADF;IAEA,OAAO,KAAKU,IAAL,CAAUR,MAAV,CAAiB6F,2BAAjB,CACLrB,KADK,EAELmB,MAFK,EAGLlB,GAHK,EAILmB,IAJK,EAKLlB,MALK,EAMLC,SANK,EAOLC,IAPK,EAQLC,WARK,EASLC,KATK,CAAP;EAWD;;AApB8F"}
1
+ {"version":3,"names":["ShaderDeclaration","JsiDeclarationNode","constructor","ctx","type","props","DeclarationType","Shader","ShaderNode","NodeType","decorate","decorateChildren","source","uniforms","transform","m3","Skia","Matrix","processTransformProps","shader","makeShaderWithChildren","processUniforms","shaders","popAll","push","ImageShaderNode","ImageShader","fit","image","tx","ty","fm","mm","imageShaderProps","rct","getRect","rects","fitRects","x","y","width","height","sx","sy","rect2rect","src","dst","translate","translateX","translateY","scale","scaleX","scaleY","lm","concat","makeShaderOptions","TileMode","enumKey","FilterMode","MipmapMode","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","processGradientProps","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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"}
@@ -0,0 +1,29 @@
1
+ import type { SkShader, SkPaint, SkImageFilter, SkMaskFilter, SkPathEffect, Skia, SkColorFilter } from "../../skia/types";
2
+ declare type Composer<T> = (outer: T, inner: T) => T;
3
+ export declare const composeDeclarations: <T>(filters: T[], composer: Composer<T>) => T;
4
+ declare class Declaration<T> {
5
+ private composer?;
6
+ private decls;
7
+ private indexes;
8
+ constructor(composer?: Composer<T> | undefined);
9
+ private get index();
10
+ save(): void;
11
+ restore(): void;
12
+ pop(): T | undefined;
13
+ push(decl: T): void;
14
+ popAll(): T[];
15
+ popAllAsOne(): T;
16
+ }
17
+ export declare class DeclarationContext {
18
+ private Skia;
19
+ readonly paints: Declaration<SkPaint>;
20
+ readonly maskFilters: Declaration<SkMaskFilter>;
21
+ readonly shaders: Declaration<SkShader>;
22
+ readonly pathEffects: Declaration<SkPathEffect>;
23
+ readonly imageFilters: Declaration<SkImageFilter>;
24
+ readonly colorFilters: Declaration<SkColorFilter>;
25
+ constructor(Skia: Skia);
26
+ save(): void;
27
+ restore(): void;
28
+ }
29
+ export {};
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.composeDeclarations = exports.DeclarationContext = void 0;
7
+
8
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+
10
+ const composeDeclarations = (filters, composer) => {
11
+ if (filters.length <= 1) {
12
+ return filters[0];
13
+ }
14
+
15
+ return filters.reverse().reduce((inner, outer) => {
16
+ if (!inner) {
17
+ return outer;
18
+ }
19
+
20
+ return composer(outer, inner);
21
+ });
22
+ };
23
+
24
+ exports.composeDeclarations = composeDeclarations;
25
+
26
+ class Declaration {
27
+ constructor(composer) {
28
+ this.composer = composer;
29
+
30
+ _defineProperty(this, "decls", []);
31
+
32
+ _defineProperty(this, "indexes", [0]);
33
+ }
34
+
35
+ get index() {
36
+ return this.indexes[this.indexes.length - 1];
37
+ }
38
+
39
+ save() {
40
+ this.indexes.push(this.decls.length);
41
+ }
42
+
43
+ restore() {
44
+ this.indexes.pop();
45
+ }
46
+
47
+ pop() {
48
+ return this.decls.pop();
49
+ }
50
+
51
+ push(decl) {
52
+ this.decls.push(decl);
53
+ }
54
+
55
+ popAll() {
56
+ return this.decls.splice(this.index, this.decls.length - this.index);
57
+ }
58
+
59
+ popAllAsOne() {
60
+ if (!this.composer) {
61
+ throw new Error("No composer for this type of declaration");
62
+ }
63
+
64
+ const decls = this.popAll();
65
+ return composeDeclarations(decls, this.composer);
66
+ }
67
+
68
+ }
69
+
70
+ class DeclarationContext {
71
+ constructor(Skia) {
72
+ this.Skia = Skia;
73
+
74
+ _defineProperty(this, "paints", void 0);
75
+
76
+ _defineProperty(this, "maskFilters", void 0);
77
+
78
+ _defineProperty(this, "shaders", void 0);
79
+
80
+ _defineProperty(this, "pathEffects", void 0);
81
+
82
+ _defineProperty(this, "imageFilters", void 0);
83
+
84
+ _defineProperty(this, "colorFilters", void 0);
85
+
86
+ const peComp = this.Skia.PathEffect.MakeCompose.bind(this.Skia.PathEffect);
87
+ const ifComp = this.Skia.ImageFilter.MakeCompose.bind(this.Skia.ImageFilter);
88
+ const cfComp = this.Skia.ColorFilter.MakeCompose.bind(this.Skia.ColorFilter);
89
+ this.paints = new Declaration();
90
+ this.maskFilters = new Declaration();
91
+ this.shaders = new Declaration();
92
+ this.pathEffects = new Declaration(peComp);
93
+ this.imageFilters = new Declaration(ifComp);
94
+ this.colorFilters = new Declaration(cfComp);
95
+ }
96
+
97
+ save() {
98
+ this.paints.save();
99
+ this.maskFilters.save();
100
+ this.shaders.save();
101
+ this.pathEffects.save();
102
+ this.imageFilters.save();
103
+ this.colorFilters.save();
104
+ }
105
+
106
+ restore() {
107
+ this.paints.restore();
108
+ this.maskFilters.restore();
109
+ this.shaders.restore();
110
+ this.pathEffects.restore();
111
+ this.imageFilters.restore();
112
+ this.colorFilters.restore();
113
+ }
114
+
115
+ }
116
+
117
+ exports.DeclarationContext = DeclarationContext;
118
+ //# sourceMappingURL=DeclarationContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["composeDeclarations","filters","composer","length","reverse","reduce","inner","outer","Declaration","constructor","index","indexes","save","push","decls","restore","pop","decl","popAll","splice","popAllAsOne","Error","DeclarationContext","Skia","peComp","PathEffect","MakeCompose","bind","ifComp","ImageFilter","cfComp","ColorFilter","paints","maskFilters","shaders","pathEffects","imageFilters","colorFilters"],"sources":["DeclarationContext.ts"],"sourcesContent":["import type {\n SkShader,\n SkPaint,\n SkImageFilter,\n SkMaskFilter,\n SkPathEffect,\n Skia,\n SkColorFilter,\n} from \"../../skia/types\";\n\ntype Composer<T> = (outer: T, inner: T) => T;\n\nexport const composeDeclarations = <T>(filters: T[], composer: Composer<T>) => {\n if (filters.length <= 1) {\n return filters[0];\n }\n return filters.reverse().reduce((inner, outer) => {\n if (!inner) {\n return outer;\n }\n return composer(outer, inner);\n });\n};\n\nclass Declaration<T> {\n private decls: T[] = [];\n private indexes = [0];\n\n constructor(private composer?: Composer<T>) {}\n\n private get index() {\n return this.indexes[this.indexes.length - 1];\n }\n\n save() {\n this.indexes.push(this.decls.length);\n }\n\n restore() {\n this.indexes.pop();\n }\n\n pop() {\n return this.decls.pop();\n }\n\n push(decl: T) {\n this.decls.push(decl);\n }\n\n popAll() {\n return this.decls.splice(this.index, this.decls.length - this.index);\n }\n\n popAllAsOne() {\n if (!this.composer) {\n throw new Error(\"No composer for this type of declaration\");\n }\n const decls = this.popAll();\n return composeDeclarations(decls, this.composer!);\n }\n}\n\nexport class DeclarationContext {\n readonly paints: Declaration<SkPaint>;\n readonly maskFilters: Declaration<SkMaskFilter>;\n readonly shaders: Declaration<SkShader>;\n readonly pathEffects: Declaration<SkPathEffect>;\n readonly imageFilters: Declaration<SkImageFilter>;\n readonly colorFilters: Declaration<SkColorFilter>;\n\n constructor(private Skia: Skia) {\n const peComp = this.Skia.PathEffect.MakeCompose.bind(this.Skia.PathEffect);\n const ifComp = this.Skia.ImageFilter.MakeCompose.bind(\n this.Skia.ImageFilter\n );\n const cfComp = this.Skia.ColorFilter.MakeCompose.bind(\n this.Skia.ColorFilter\n );\n this.paints = new Declaration<SkPaint>();\n this.maskFilters = new Declaration<SkMaskFilter>();\n this.shaders = new Declaration<SkShader>();\n this.pathEffects = new Declaration<SkPathEffect>(peComp);\n this.imageFilters = new Declaration<SkImageFilter>(ifComp);\n this.colorFilters = new Declaration<SkColorFilter>(cfComp);\n }\n\n save() {\n this.paints.save();\n this.maskFilters.save();\n this.shaders.save();\n this.pathEffects.save();\n this.imageFilters.save();\n this.colorFilters.save();\n }\n\n restore() {\n this.paints.restore();\n this.maskFilters.restore();\n this.shaders.restore();\n this.pathEffects.restore();\n this.imageFilters.restore();\n this.colorFilters.restore();\n }\n}\n"],"mappings":"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"}
@@ -1,5 +1,22 @@
1
- import type { SkCanvas, SkPaint } from "../../skia/types";
1
+ import type { SkCanvas, SkPaint, Skia } from "../../skia/types";
2
+ import type { PaintProps } from "./Common";
3
+ import { DeclarationContext } from "./DeclarationContext";
4
+ import type { Node } from "./Node";
2
5
  export interface DrawingContext {
3
6
  canvas: SkCanvas;
4
7
  paint: SkPaint;
8
+ saveAndConcat(node: Node<PaintProps>, cache?: SkPaint): boolean;
9
+ restore(): void;
10
+ declarationCtx: DeclarationContext;
11
+ }
12
+ export declare class JsiDrawingContext implements DrawingContext {
13
+ private readonly Skia;
14
+ readonly canvas: SkCanvas;
15
+ paints: SkPaint[];
16
+ declarationCtx: DeclarationContext;
17
+ constructor(Skia: Skia, canvas: SkCanvas);
18
+ get paint(): SkPaint;
19
+ private save;
20
+ restore(): void;
21
+ saveAndConcat(node: Node<PaintProps>, cache?: SkPaint): boolean;
5
22
  }