@shopify/react-native-skia 0.1.157 → 0.1.159

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 (482) hide show
  1. package/android/CMakeLists.txt +35 -11
  2. package/android/build.gradle +31 -30
  3. package/android/cpp/jni/JniLoad.cpp +2 -0
  4. package/android/cpp/jni/include/JniSkiaDomView.h +89 -0
  5. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.cpp +4 -3
  6. package/android/cpp/rnskia-android/SkiaOpenGLRenderer.h +4 -3
  7. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +2 -1
  8. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomView.java +45 -0
  9. package/android/src/main/java/com/shopify/reactnative/skia/SkiaDomViewManager.java +64 -0
  10. package/cpp/api/JsiSkContourMeasure.h +7 -5
  11. package/cpp/api/JsiSkHostObjects.h +6 -0
  12. package/cpp/api/JsiSkImageFilterFactory.h +1 -1
  13. package/cpp/api/JsiSkPaint.h +9 -2
  14. package/cpp/api/JsiSkPath.h +1 -0
  15. package/cpp/api/JsiSkRuntimeEffect.h +36 -36
  16. package/cpp/jsi/JsiHostObject.cpp +16 -28
  17. package/cpp/jsi/JsiHostObject.h +127 -7
  18. package/cpp/jsi/JsiValue.cpp +346 -0
  19. package/cpp/jsi/JsiValue.h +222 -0
  20. package/cpp/jsi/JsiValueWrapper.h +33 -5
  21. package/cpp/rnskia/RNSkDomView.cpp +220 -0
  22. package/cpp/rnskia/RNSkDomView.h +140 -0
  23. package/cpp/rnskia/RNSkJsView.cpp +0 -4
  24. package/cpp/rnskia/RNSkJsView.h +6 -4
  25. package/cpp/rnskia/RNSkManager.cpp +7 -0
  26. package/cpp/rnskia/RNSkPictureView.h +5 -8
  27. package/cpp/rnskia/RNSkView.h +113 -5
  28. package/cpp/rnskia/dom/JsiDomApi.h +167 -0
  29. package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
  30. package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
  31. package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
  32. package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
  33. package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
  34. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
  35. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
  36. package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
  37. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
  38. package/cpp/rnskia/dom/base/NodeProp.h +130 -0
  39. package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
  40. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
  41. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
  42. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
  43. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
  44. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
  45. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
  46. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
  47. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
  48. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
  49. package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
  50. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
  51. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
  52. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
  53. package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
  54. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
  55. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
  56. package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
  57. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
  58. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
  59. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
  60. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
  61. package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
  62. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
  63. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
  64. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
  65. package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
  66. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
  67. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
  68. package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
  69. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
  70. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
  71. package/cpp/rnskia/dom/props/BezierProps.h +63 -0
  72. package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
  73. package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
  74. package/cpp/rnskia/dom/props/CircleProp.h +46 -0
  75. package/cpp/rnskia/dom/props/ClipProp.h +62 -0
  76. package/cpp/rnskia/dom/props/ColorProp.h +80 -0
  77. package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
  78. package/cpp/rnskia/dom/props/FontProp.h +34 -0
  79. package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
  80. package/cpp/rnskia/dom/props/ImageProps.h +173 -0
  81. package/cpp/rnskia/dom/props/LayerProp.h +50 -0
  82. package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
  83. package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
  84. package/cpp/rnskia/dom/props/PaintProps.h +172 -0
  85. package/cpp/rnskia/dom/props/PathProp.h +55 -0
  86. package/cpp/rnskia/dom/props/PictureProp.h +38 -0
  87. package/cpp/rnskia/dom/props/PointProp.h +72 -0
  88. package/cpp/rnskia/dom/props/PointsProp.h +83 -0
  89. package/cpp/rnskia/dom/props/RRectProp.h +134 -0
  90. package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
  91. package/cpp/rnskia/dom/props/RectProp.h +118 -0
  92. package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
  93. package/cpp/rnskia/dom/props/SvgProp.h +37 -0
  94. package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
  95. package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
  96. package/cpp/rnskia/dom/props/TransformProp.h +80 -0
  97. package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
  98. package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
  99. package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
  100. package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
  101. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
  102. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
  103. package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
  104. package/cpp/skia/include/codec/SkCodec.h +8 -5
  105. package/cpp/skia/include/core/SkAnnotation.h +2 -0
  106. package/cpp/skia/include/core/SkBitmap.h +52 -1
  107. package/cpp/skia/include/core/SkBlendMode.h +2 -0
  108. package/cpp/skia/include/core/SkCanvas.h +52 -31
  109. package/cpp/skia/include/core/SkCapabilities.h +44 -0
  110. package/cpp/skia/include/core/SkColor.h +7 -0
  111. package/cpp/skia/include/core/SkColorFilter.h +37 -0
  112. package/cpp/skia/include/core/SkColorSpace.h +1 -1
  113. package/cpp/skia/include/core/SkFont.h +4 -0
  114. package/cpp/skia/include/core/SkFontMgr.h +3 -0
  115. package/cpp/skia/include/core/SkGraphics.h +9 -0
  116. package/cpp/skia/include/core/SkImage.h +77 -17
  117. package/cpp/skia/include/core/SkImageEncoder.h +5 -3
  118. package/cpp/skia/include/core/SkImageGenerator.h +27 -17
  119. package/cpp/skia/include/core/SkM44.h +1 -0
  120. package/cpp/skia/include/core/SkMesh.h +120 -34
  121. package/cpp/skia/include/core/SkMilestone.h +1 -1
  122. package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
  123. package/cpp/skia/include/core/SkPaint.h +15 -2
  124. package/cpp/skia/include/core/SkPath.h +4 -0
  125. package/cpp/skia/include/core/SkPathBuilder.h +1 -1
  126. package/cpp/skia/include/core/SkPicture.h +0 -3
  127. package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
  128. package/cpp/skia/include/core/SkPixmap.h +19 -0
  129. package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
  130. package/cpp/skia/include/core/SkRect.h +11 -4
  131. package/cpp/skia/include/core/SkRefCnt.h +13 -1
  132. package/cpp/skia/include/core/SkRegion.h +6 -0
  133. package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
  134. package/cpp/skia/include/core/SkScalar.h +6 -25
  135. package/cpp/skia/include/core/SkShader.h +20 -12
  136. package/cpp/skia/include/core/SkSpan.h +51 -19
  137. package/cpp/skia/include/core/SkStream.h +2 -2
  138. package/cpp/skia/include/core/SkString.h +11 -3
  139. package/cpp/skia/include/core/SkSurface.h +85 -8
  140. package/cpp/skia/include/core/SkTextBlob.h +5 -2
  141. package/cpp/skia/include/core/SkTypes.h +11 -10
  142. package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
  143. package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
  144. package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
  145. package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
  146. package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
  147. package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
  148. package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
  149. package/cpp/skia/include/effects/SkGradientShader.h +68 -38
  150. package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
  151. package/cpp/skia/include/effects/SkImageFilters.h +5 -4
  152. package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
  153. package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
  154. package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
  155. package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
  156. package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
  157. package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
  158. package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
  159. package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
  160. package/cpp/skia/include/encode/SkEncoder.h +17 -0
  161. package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
  162. package/cpp/skia/include/gpu/GpuTypes.h +18 -0
  163. package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
  164. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
  165. package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
  166. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
  167. package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
  168. package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
  169. package/cpp/skia/include/gpu/GrTypes.h +11 -11
  170. package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
  171. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
  172. package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
  173. package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
  174. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
  175. package/cpp/skia/include/gpu/graphite/Context.h +47 -55
  176. package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
  177. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
  178. package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
  179. package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
  180. package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
  181. package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
  182. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
  183. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
  184. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
  185. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
  186. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
  187. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
  188. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
  189. package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
  190. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
  191. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
  192. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
  193. package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
  194. package/cpp/skia/include/pathops/SkPathOps.h +1 -1
  195. package/cpp/skia/include/private/SkColorData.h +10 -40
  196. package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
  197. package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
  198. package/cpp/skia/include/private/SkHalf.h +5 -52
  199. package/cpp/skia/include/private/SkMacros.h +1 -1
  200. package/cpp/skia/include/private/SkMalloc.h +4 -0
  201. package/cpp/skia/include/private/SkPathRef.h +10 -10
  202. package/cpp/skia/include/private/SkSLModifiers.h +59 -23
  203. package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
  204. package/cpp/skia/include/private/SkSLSymbol.h +7 -3
  205. package/cpp/skia/include/private/SkStringView.h +4 -0
  206. package/cpp/skia/include/private/SkTArray.h +21 -7
  207. package/cpp/skia/include/private/SkTDArray.h +173 -285
  208. package/cpp/skia/include/private/SkTHash.h +33 -32
  209. package/cpp/skia/include/private/SkTemplates.h +24 -26
  210. package/cpp/skia/include/private/SkVx.h +218 -135
  211. package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
  212. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
  213. package/cpp/skia/include/private/chromium/Slug.h +76 -0
  214. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
  215. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
  216. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
  217. package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
  218. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
  219. package/cpp/skia/include/sksl/DSL.h +0 -1
  220. package/cpp/skia/include/sksl/DSLBlock.h +4 -18
  221. package/cpp/skia/include/sksl/DSLCase.h +2 -8
  222. package/cpp/skia/include/sksl/DSLCore.h +8 -15
  223. package/cpp/skia/include/sksl/DSLExpression.h +51 -142
  224. package/cpp/skia/include/sksl/DSLFunction.h +7 -15
  225. package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
  226. package/cpp/skia/include/sksl/DSLStatement.h +4 -39
  227. package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
  228. package/cpp/skia/include/sksl/DSLType.h +20 -12
  229. package/cpp/skia/include/sksl/DSLVar.h +56 -146
  230. package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
  231. package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
  232. package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
  233. package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
  234. package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
  235. package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
  236. package/cpp/skia/include/utils/SkBase64.h +2 -0
  237. package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
  238. package/cpp/skia/include/utils/SkEventTracer.h +12 -1
  239. package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
  240. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
  241. package/cpp/skia/include/utils/SkParse.h +3 -0
  242. package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
  243. package/cpp/skia/include/utils/SkTextUtils.h +2 -1
  244. package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
  245. package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
  246. package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
  247. package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
  248. package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
  249. package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
  250. package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
  251. package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
  252. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
  253. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
  254. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
  255. package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
  256. package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
  257. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
  258. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
  259. package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
  260. package/cpp/skia/src/core/SkLRUCache.h +126 -0
  261. package/cpp/skia/src/core/SkTInternalLList.h +302 -0
  262. package/cpp/utils/RNSkTimingInfo.h +1 -0
  263. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
  264. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
  265. package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
  266. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
  267. package/lib/commonjs/dom/nodes/DrawingNode.js +1 -5
  268. package/lib/commonjs/dom/nodes/DrawingNode.js.map +1 -1
  269. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
  270. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  271. package/lib/commonjs/dom/nodes/RenderNode.js +3 -9
  272. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  273. package/lib/commonjs/dom/nodes/drawings/Text.js +4 -9
  274. package/lib/commonjs/dom/nodes/drawings/Text.js.map +1 -1
  275. package/lib/commonjs/dom/types/Common.js.map +1 -1
  276. package/lib/commonjs/dom/types/Drawings.js.map +1 -1
  277. package/lib/commonjs/mock/index.js +0 -1
  278. package/lib/commonjs/mock/index.js.map +1 -1
  279. package/lib/commonjs/renderer/Canvas.js +21 -57
  280. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  281. package/lib/commonjs/renderer/DependencyManager.js +0 -5
  282. package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
  283. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  284. package/lib/commonjs/renderer/components/Mask.js +1 -3
  285. package/lib/commonjs/renderer/components/Mask.js.map +1 -1
  286. package/lib/commonjs/renderer/components/Paint.js +5 -18
  287. package/lib/commonjs/renderer/components/Paint.js.map +1 -1
  288. package/lib/commonjs/renderer/useCanvas.js +8 -6
  289. package/lib/commonjs/renderer/useCanvas.js.map +1 -1
  290. package/lib/commonjs/skia/core/Picture.js +1 -24
  291. package/lib/commonjs/skia/core/Picture.js.map +1 -1
  292. package/lib/commonjs/skia/core/Rect.js +1 -1
  293. package/lib/commonjs/skia/core/Rect.js.map +1 -1
  294. package/lib/commonjs/skia/types/ContourMeasure.js.map +1 -1
  295. package/lib/commonjs/skia/types/Size.js +2 -0
  296. package/lib/commonjs/skia/types/Size.js.map +1 -0
  297. package/lib/commonjs/skia/types/index.js +13 -0
  298. package/lib/commonjs/skia/types/index.js.map +1 -1
  299. package/lib/commonjs/skia/web/JsiSkColor.js +8 -0
  300. package/lib/commonjs/skia/web/JsiSkColor.js.map +1 -1
  301. package/lib/commonjs/skia/web/JsiSkContourMeasure.js +4 -7
  302. package/lib/commonjs/skia/web/JsiSkContourMeasure.js.map +1 -1
  303. package/lib/commonjs/values/web/RNSkReadonlyValue.js +4 -2
  304. package/lib/commonjs/values/web/RNSkReadonlyValue.js.map +1 -1
  305. package/lib/commonjs/views/SkiaBaseWebView.js +9 -2
  306. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  307. package/lib/commonjs/views/SkiaDomView.js +152 -0
  308. package/lib/commonjs/views/SkiaDomView.js.map +1 -0
  309. package/lib/commonjs/views/SkiaDomView.web.js +55 -0
  310. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
  311. package/lib/commonjs/views/SkiaPictureView.js +16 -2
  312. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  313. package/lib/commonjs/views/SkiaView.js +17 -2
  314. package/lib/commonjs/views/SkiaView.js.map +1 -1
  315. package/lib/commonjs/views/index.js +13 -0
  316. package/lib/commonjs/views/index.js.map +1 -1
  317. package/lib/commonjs/views/types.js.map +1 -1
  318. package/lib/module/dom/nodes/DrawingNode.js +2 -6
  319. package/lib/module/dom/nodes/DrawingNode.js.map +1 -1
  320. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  321. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  322. package/lib/module/dom/nodes/RenderNode.js +2 -5
  323. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  324. package/lib/module/dom/nodes/drawings/Text.js +4 -9
  325. package/lib/module/dom/nodes/drawings/Text.js.map +1 -1
  326. package/lib/module/dom/types/Common.js.map +1 -1
  327. package/lib/module/dom/types/Drawings.js.map +1 -1
  328. package/lib/module/mock/index.js +0 -1
  329. package/lib/module/mock/index.js.map +1 -1
  330. package/lib/module/renderer/Canvas.js +22 -58
  331. package/lib/module/renderer/Canvas.js.map +1 -1
  332. package/lib/module/renderer/DependencyManager.js +0 -5
  333. package/lib/module/renderer/DependencyManager.js.map +1 -1
  334. package/lib/module/renderer/HostComponents.js.map +1 -1
  335. package/lib/module/renderer/components/Mask.js +2 -4
  336. package/lib/module/renderer/components/Mask.js.map +1 -1
  337. package/lib/module/renderer/components/Paint.js +3 -14
  338. package/lib/module/renderer/components/Paint.js.map +1 -1
  339. package/lib/module/renderer/useCanvas.js +6 -4
  340. package/lib/module/renderer/useCanvas.js.map +1 -1
  341. package/lib/module/skia/core/Picture.js +0 -18
  342. package/lib/module/skia/core/Picture.js.map +1 -1
  343. package/lib/module/skia/core/Rect.js +1 -1
  344. package/lib/module/skia/core/Rect.js.map +1 -1
  345. package/lib/module/skia/types/ContourMeasure.js.map +1 -1
  346. package/lib/module/skia/types/Size.js +2 -0
  347. package/lib/module/skia/types/Size.js.map +1 -0
  348. package/lib/module/skia/types/index.js +1 -0
  349. package/lib/module/skia/types/index.js.map +1 -1
  350. package/lib/module/skia/web/JsiSkColor.js +8 -0
  351. package/lib/module/skia/web/JsiSkColor.js.map +1 -1
  352. package/lib/module/skia/web/JsiSkContourMeasure.js +3 -7
  353. package/lib/module/skia/web/JsiSkContourMeasure.js.map +1 -1
  354. package/lib/module/values/web/RNSkReadonlyValue.js +4 -2
  355. package/lib/module/values/web/RNSkReadonlyValue.js.map +1 -1
  356. package/lib/module/views/SkiaBaseWebView.js +9 -2
  357. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  358. package/lib/module/views/SkiaDomView.js +128 -0
  359. package/lib/module/views/SkiaDomView.js.map +1 -0
  360. package/lib/module/views/SkiaDomView.web.js +41 -0
  361. package/lib/module/views/SkiaDomView.web.js.map +1 -0
  362. package/lib/module/views/SkiaPictureView.js +14 -2
  363. package/lib/module/views/SkiaPictureView.js.map +1 -1
  364. package/lib/module/views/SkiaView.js +15 -2
  365. package/lib/module/views/SkiaView.js.map +1 -1
  366. package/lib/module/views/index.js +1 -0
  367. package/lib/module/views/index.js.map +1 -1
  368. package/lib/module/views/types.js.map +1 -1
  369. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
  370. package/lib/typescript/src/dom/nodes/RenderNode.d.ts +1 -3
  371. package/lib/typescript/src/dom/types/Common.d.ts +2 -3
  372. package/lib/typescript/src/dom/types/Drawings.d.ts +1 -3
  373. package/lib/typescript/src/renderer/Canvas.d.ts +5 -5
  374. package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
  375. package/lib/typescript/src/renderer/HostComponents.d.ts +67 -8
  376. package/lib/typescript/src/renderer/components/Paint.d.ts +3 -4
  377. package/lib/typescript/src/renderer/useCanvas.d.ts +1 -6
  378. package/lib/typescript/src/skia/core/Picture.d.ts +0 -8
  379. package/lib/typescript/src/skia/types/ContourMeasure.d.ts +3 -2
  380. package/lib/typescript/src/skia/types/Size.d.ts +4 -0
  381. package/lib/typescript/src/skia/types/index.d.ts +1 -0
  382. package/lib/typescript/src/skia/web/JsiSkContourMeasure.d.ts +2 -6
  383. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
  384. package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
  385. package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
  386. package/lib/typescript/src/views/index.d.ts +1 -0
  387. package/lib/typescript/src/views/types.d.ts +12 -2
  388. package/libs/android/arm64-v8a/libskia.a +0 -0
  389. package/libs/android/arm64-v8a/libskottie.a +0 -0
  390. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  391. package/libs/android/arm64-v8a/libsksg.a +0 -0
  392. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  393. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  394. package/libs/android/arm64-v8a/libsvg.a +0 -0
  395. package/libs/android/armeabi-v7a/libskia.a +0 -0
  396. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  397. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  398. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  399. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  400. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  401. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  402. package/libs/android/x86/libskia.a +0 -0
  403. package/libs/android/x86/libskottie.a +0 -0
  404. package/libs/android/x86/libskparagraph.a +0 -0
  405. package/libs/android/x86/libsksg.a +0 -0
  406. package/libs/android/x86/libskshaper.a +0 -0
  407. package/libs/android/x86/libskunicode.a +0 -0
  408. package/libs/android/x86/libsvg.a +0 -0
  409. package/libs/android/x86_64/libskia.a +0 -0
  410. package/libs/android/x86_64/libskottie.a +0 -0
  411. package/libs/android/x86_64/libskparagraph.a +0 -0
  412. package/libs/android/x86_64/libsksg.a +0 -0
  413. package/libs/android/x86_64/libskshaper.a +0 -0
  414. package/libs/android/x86_64/libskunicode.a +0 -0
  415. package/libs/android/x86_64/libsvg.a +0 -0
  416. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  417. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  418. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  419. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  420. package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
  421. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  422. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  423. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  424. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  425. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  426. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  427. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  428. package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
  429. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  430. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  431. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  432. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  433. package/package.json +6 -4
  434. package/react-native-skia.podspec +3 -1
  435. package/src/dom/nodes/DrawingNode.ts +2 -4
  436. package/src/dom/nodes/JsiSkDOM.ts +170 -56
  437. package/src/dom/nodes/RenderNode.ts +2 -14
  438. package/src/dom/nodes/drawings/Text.ts +4 -4
  439. package/src/dom/types/Common.ts +2 -4
  440. package/src/dom/types/Drawings.ts +1 -4
  441. package/src/mock/index.ts +0 -1
  442. package/src/renderer/Canvas.tsx +32 -51
  443. package/src/renderer/DependencyManager.tsx +0 -5
  444. package/src/renderer/HostComponents.ts +153 -5
  445. package/src/renderer/components/Mask.tsx +2 -2
  446. package/src/renderer/components/Paint.tsx +3 -14
  447. package/src/renderer/useCanvas.ts +5 -5
  448. package/src/skia/core/Picture.ts +0 -24
  449. package/src/skia/core/Rect.ts +1 -1
  450. package/src/skia/types/ContourMeasure.tsx +3 -2
  451. package/src/skia/types/Size.ts +4 -0
  452. package/src/skia/types/index.ts +1 -0
  453. package/src/skia/web/JsiSkColor.ts +11 -0
  454. package/src/skia/web/JsiSkContourMeasure.ts +7 -3
  455. package/src/values/web/RNSkReadonlyValue.ts +4 -2
  456. package/src/views/SkiaBaseWebView.tsx +6 -2
  457. package/src/views/SkiaDomView.tsx +120 -0
  458. package/src/views/SkiaDomView.web.tsx +37 -0
  459. package/src/views/SkiaPictureView.tsx +10 -2
  460. package/src/views/SkiaView.tsx +11 -3
  461. package/src/views/index.ts +1 -0
  462. package/src/views/types.ts +19 -2
  463. package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
  464. package/cpp/skia/include/c/sk_canvas.h +0 -159
  465. package/cpp/skia/include/c/sk_colorspace.h +0 -25
  466. package/cpp/skia/include/c/sk_data.h +0 -65
  467. package/cpp/skia/include/c/sk_image.h +0 -71
  468. package/cpp/skia/include/c/sk_imageinfo.h +0 -62
  469. package/cpp/skia/include/c/sk_maskfilter.h +0 -47
  470. package/cpp/skia/include/c/sk_matrix.h +0 -49
  471. package/cpp/skia/include/c/sk_paint.h +0 -145
  472. package/cpp/skia/include/c/sk_path.h +0 -102
  473. package/cpp/skia/include/c/sk_picture.h +0 -70
  474. package/cpp/skia/include/c/sk_shader.h +0 -143
  475. package/cpp/skia/include/c/sk_surface.h +0 -73
  476. package/cpp/skia/include/c/sk_types.h +0 -278
  477. package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
  478. package/cpp/skia/include/private/SkNx.h +0 -430
  479. package/cpp/skia/include/private/SkNx_neon.h +0 -713
  480. package/cpp/skia/include/private/SkNx_sse.h +0 -823
  481. package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
  482. package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
@@ -1,10 +1,10 @@
1
1
  import React, {
2
2
  useEffect,
3
- useState,
4
3
  useCallback,
5
4
  useMemo,
6
5
  forwardRef,
7
6
  useRef,
7
+ useState,
8
8
  } from "react";
9
9
  import type {
10
10
  RefObject,
@@ -15,10 +15,10 @@ import type {
15
15
  } from "react";
16
16
  import type { OpaqueRoot } from "react-reconciler";
17
17
  import ReactReconciler from "react-reconciler";
18
+ import { Platform } from "react-native";
18
19
 
19
- import { SkiaView, useDrawCallback } from "../views";
20
+ import { SkiaDomView } from "../views";
20
21
  import type { TouchHandler } from "../views";
21
- import { useValue } from "../values/hooks/useValue";
22
22
  import { Skia } from "../skia/Skia";
23
23
  import type { SkiaValue } from "../values";
24
24
 
@@ -43,24 +43,31 @@ const render = (element: ReactNode, root: OpaqueRoot, container: Container) => {
43
43
  });
44
44
  };
45
45
 
46
- export const useCanvasRef = () => useRef<SkiaView>(null);
46
+ export const useCanvasRef = () => useRef<SkiaDomView>(null);
47
+
48
+ const createDependencyManager = (
49
+ registerValues: (values: Array<SkiaValue<unknown>>) => () => void
50
+ ) =>
51
+ global.SkiaDomApi && global.SkiaDomApi.DependencyManager
52
+ ? global.SkiaDomApi.DependencyManager(registerValues)
53
+ : new DependencyManager(registerValues);
47
54
 
48
- export interface CanvasProps extends ComponentProps<typeof SkiaView> {
49
- ref?: RefObject<SkiaView>;
55
+ export interface CanvasProps extends ComponentProps<typeof SkiaDomView> {
56
+ ref?: RefObject<SkiaDomView>;
50
57
  children: ReactNode;
51
58
  onTouch?: TouchHandler;
52
59
  }
53
60
 
54
- export const Canvas = forwardRef<SkiaView, CanvasProps>(
55
- ({ children, style, debug, mode, onTouch }, forwardedRef) => {
56
- const size = useValue({ width: 0, height: 0 });
57
- const canvasCtx = useMemo(() => ({ Skia, size }), [size]);
61
+ export const Canvas = forwardRef<SkiaDomView, CanvasProps>(
62
+ ({ children, style, debug, mode, onTouch, onSize }, forwardedRef) => {
58
63
  const innerRef = useCanvasRef();
59
64
  const ref = useCombinedRefs(forwardedRef, innerRef);
60
- const [tick, setTick] = useState(0);
65
+ const [, setTick] = useState(0);
61
66
  const redraw = useCallback(() => {
62
- setTick((t) => t + 1);
63
- }, []);
67
+ Platform.OS === "web"
68
+ ? setTick((tick) => tick + 1)
69
+ : innerRef.current?.redraw();
70
+ }, [innerRef]);
64
71
 
65
72
  const registerValues = useCallback(
66
73
  (values: Array<SkiaValue<unknown>>) => {
@@ -73,7 +80,11 @@ export const Canvas = forwardRef<SkiaView, CanvasProps>(
73
80
  );
74
81
 
75
82
  const container = useMemo(() => {
76
- return new Container(Skia, new DependencyManager(registerValues), redraw);
83
+ return new Container(
84
+ Skia,
85
+ createDependencyManager(registerValues),
86
+ redraw
87
+ );
77
88
  }, [redraw, registerValues]);
78
89
 
79
90
  const root = useMemo(
@@ -90,47 +101,15 @@ export const Canvas = forwardRef<SkiaView, CanvasProps>(
90
101
  ),
91
102
  [container]
92
103
  );
104
+
93
105
  // Render effect
94
106
  useEffect(() => {
95
107
  render(
96
- <CanvasProvider value={canvasCtx}>{children}</CanvasProvider>,
108
+ <CanvasProvider value={{ Skia }}>{children}</CanvasProvider>,
97
109
  root,
98
110
  container
99
111
  );
100
- }, [children, root, redraw, container, canvasCtx]);
101
-
102
- const paint = useMemo(() => Skia.Paint(), []);
103
-
104
- // Draw callback
105
- const onDraw = useDrawCallback(
106
- (canvas, info) => {
107
- // TODO: if tree is empty (count === 1) maybe we should not render?
108
- const { width, height, timestamp } = info;
109
- if (onTouch) {
110
- onTouch(info.touches);
111
- }
112
- if (
113
- width !== canvasCtx.size.current.width ||
114
- height !== canvasCtx.size.current.height
115
- ) {
116
- canvasCtx.size.current = { width, height };
117
- }
118
- paint.reset();
119
- const ctx = {
120
- width,
121
- height,
122
- timestamp,
123
- canvas,
124
- paint,
125
- opacity: 1,
126
- ref,
127
- center: { x: width / 2, y: height / 2 },
128
- Skia,
129
- };
130
- container.draw(ctx);
131
- },
132
- [tick, onTouch]
133
- );
112
+ }, [children, root, redraw, container]);
134
113
 
135
114
  useEffect(() => {
136
115
  return () => {
@@ -141,10 +120,12 @@ export const Canvas = forwardRef<SkiaView, CanvasProps>(
141
120
  }, [container, root]);
142
121
 
143
122
  return (
144
- <SkiaView
123
+ <SkiaDomView
145
124
  ref={ref}
146
125
  style={style}
147
- onDraw={onDraw}
126
+ root={container.root}
127
+ onTouch={onTouch}
128
+ onSize={onSize}
148
129
  mode={mode}
149
130
  debug={debug}
150
131
  />
@@ -24,10 +24,6 @@ export class DependencyManager {
24
24
  this.registerValues = registerValues;
25
25
  }
26
26
 
27
- unsubscribeNodes(nodes: Node<unknown>[]) {
28
- nodes.forEach((n) => this.unsubscribeNode(n));
29
- }
30
-
31
27
  /**
32
28
  * Call to unsubscribe all value listeners from the given node based
33
29
  * on the current list of subscriptions for the node. This function
@@ -77,7 +73,6 @@ export class DependencyManager {
77
73
  * when the node is mounted and when one or more props on the node changes.
78
74
  * @param node Node to subscribe to value changes for
79
75
  * @param props Node's properties
80
- * @param onResolveProp Callback when a property value changes
81
76
  */
82
77
  subscribeNode<P>(node: Node<unknown>, props: AnimatedProps<P>) {
83
78
  // Get mutators from node's properties
@@ -1,7 +1,8 @@
1
- import type { ForwardedRef } from "react";
2
-
3
1
  import { NodeType } from "../dom/types";
4
2
  import type {
3
+ DeclarationNode,
4
+ FractalNoiseProps,
5
+ RenderNode,
5
6
  CircleProps,
6
7
  DrawingNodeProps,
7
8
  ImageProps,
@@ -55,19 +56,166 @@ import type {
55
56
  BlendProps,
56
57
  MorphologyImageFilterProps,
57
58
  } from "../dom/types/ImageFilters";
58
- import type { PaintNode } from "../dom/nodes/PaintNode";
59
+ import type {
60
+ SkColorFilter,
61
+ SkImageFilter,
62
+ SkMaskFilter,
63
+ SkPaint,
64
+ SkPathEffect,
65
+ SkRect,
66
+ SkRRect,
67
+ SkShader,
68
+ } from "../skia";
69
+ import type { JsiDrawingNode } from "../dom/nodes/DrawingNode";
70
+ import type { SkiaValue } from "../values";
59
71
 
60
72
  import type { Container } from "./Container";
61
73
  import { exhaustiveCheck } from "./typeddash";
62
74
  import type { SkiaProps } from "./processors";
75
+ import type { DependencyManager } from "./DependencyManager";
63
76
 
64
77
  declare global {
78
+ var SkiaDomApi: {
79
+ DependencyManager: (
80
+ registerValues: (values: Array<SkiaValue<unknown>>) => () => void
81
+ ) => DependencyManager;
82
+
83
+ // FIXME: We need a better type for this
84
+ RectNode: (props: RectProps) => JsiDrawingNode<RectProps, SkRect>;
85
+ RRectNode: (
86
+ props: RoundedRectProps
87
+ ) => JsiDrawingNode<RoundedRectProps, SkRRect>;
88
+ GroupNode: (props: GroupProps) => RenderNode<GroupProps>;
89
+ PaintNode: (props: PaintProps) => DeclarationNode<PaintProps, SkPaint>;
90
+ FillNode: (props: PaintProps) => RenderNode<PaintProps>;
91
+ CircleNode: (props: CircleProps) => RenderNode<CircleProps>;
92
+ PathNode: (props: PathProps) => RenderNode<PathProps>;
93
+ CustomDrawingNode: (
94
+ props: CustomDrawingNodeProps
95
+ ) => RenderNode<CustomDrawingNodeProps>;
96
+ LineNode: (props: LineProps) => RenderNode<LineProps>;
97
+ ImageNode: (props: ImageProps) => RenderNode<ImageProps>;
98
+ OvalNode: (props: OvalProps) => RenderNode<OvalProps>;
99
+ PatchNode: (props: PatchProps) => RenderNode<PatchProps>;
100
+ PointsNode: (props: PointsProps) => RenderNode<PointsProps>;
101
+ DiffRectNode: (props: DiffRectProps) => RenderNode<DiffRectProps>;
102
+ // Mask filters
103
+ BlurMaskFilterNode: (
104
+ props: BlurMaskFilterProps
105
+ ) => DeclarationNode<BlurMaskFilterProps, SkMaskFilter>;
106
+
107
+ // Path effects
108
+ DashPathEffectNode: (
109
+ props: DashPathEffectProps
110
+ ) => DeclarationNode<DashPathEffectProps, SkPathEffect>;
111
+ DiscretePathEffectNode: (
112
+ props: DiscretePathEffectProps
113
+ ) => DeclarationNode<DiscretePathEffectProps, SkPathEffect>;
114
+ CornerPathEffectNode: (
115
+ props: CornerPathEffectProps
116
+ ) => DeclarationNode<CornerPathEffectProps, SkPathEffect>;
117
+ Path1DPathEffectNode: (
118
+ props: Path1DPathEffectProps
119
+ ) => DeclarationNode<Path1DPathEffectProps, SkPathEffect>;
120
+ Path2DPathEffectNode: (
121
+ props: Path2DPathEffectProps
122
+ ) => DeclarationNode<Path2DPathEffectProps, SkPathEffect>;
123
+ Line2DPathEffectNode: (
124
+ props: Line2DPathEffectProps
125
+ ) => DeclarationNode<Line2DPathEffectProps, SkPathEffect>;
126
+ SumPathEffectNode: () => DeclarationNode<null, SkPathEffect>;
127
+
128
+ // Image filters
129
+ BlendImageFilterNode: (
130
+ props: BlendImageFilterProps
131
+ ) => DeclarationNode<BlendImageFilterProps, SkImageFilter>;
132
+ DropShadowImageFilterNode: (
133
+ props: DropShadowImageFilterProps
134
+ ) => DeclarationNode<DropShadowImageFilterProps, SkImageFilter>;
135
+ DisplacementMapImageFilterNode: (
136
+ props: DisplacementMapImageFilterProps
137
+ ) => DeclarationNode<DisplacementMapImageFilterProps, SkImageFilter>;
138
+ BlurImageFilterNode: (
139
+ props: BlurImageFilterProps
140
+ ) => DeclarationNode<BlurImageFilterProps, SkImageFilter>;
141
+ OffsetImageFilterNode: (
142
+ props: OffsetImageFilterProps
143
+ ) => DeclarationNode<OffsetImageFilterProps, SkImageFilter>;
144
+ MorphologyImageFilterNode: (
145
+ props: MorphologyImageFilterProps
146
+ ) => DeclarationNode<MorphologyImageFilterProps, SkImageFilter>;
147
+ RuntimeShaderImageFilterNode: (
148
+ props: RuntimeShaderImageFilterProps
149
+ ) => DeclarationNode<RuntimeShaderImageFilterProps, SkImageFilter>;
150
+
151
+ // Color filters
152
+ MatrixColorFilterNode: (
153
+ props: MatrixColorFilterProps
154
+ ) => DeclarationNode<MatrixColorFilterProps, SkColorFilter>;
155
+ BlendColorFilterNode: (
156
+ props: BlendColorFilterProps
157
+ ) => DeclarationNode<BlendColorFilterProps, SkColorFilter>;
158
+ LinearToSRGBGammaColorFilterNode: () => DeclarationNode<
159
+ null,
160
+ SkColorFilter
161
+ >;
162
+ SRGBToLinearGammaColorFilterNode: () => DeclarationNode<
163
+ null,
164
+ SkColorFilter
165
+ >;
166
+ LumaColorFilterNode: () => DeclarationNode<null, SkColorFilter>;
167
+ LerpColorFilterNode: (
168
+ props: LerpColorFilterProps
169
+ ) => DeclarationNode<LerpColorFilterProps, SkColorFilter>;
170
+
171
+ // Shaders
172
+ ShaderNode: (props: ShaderProps) => DeclarationNode<ShaderProps, SkShader>;
173
+ ImageShaderNode: (
174
+ props: ImageShaderProps
175
+ ) => DeclarationNode<ImageShaderProps, SkShader>;
176
+ ColorShaderNode: (
177
+ props: ColorProps
178
+ ) => DeclarationNode<ColorProps, SkShader>;
179
+ TurbulenceNode: (
180
+ props: TurbulenceProps
181
+ ) => DeclarationNode<TurbulenceProps, SkShader>;
182
+ FractalNoiseNode: (
183
+ props: FractalNoiseProps
184
+ ) => DeclarationNode<FractalNoiseProps, SkShader>;
185
+ LinearGradientNode: (
186
+ props: LinearGradientProps
187
+ ) => DeclarationNode<LinearGradientProps, SkShader>;
188
+ RadialGradientNode: (
189
+ props: RadialGradientProps
190
+ ) => DeclarationNode<RadialGradientProps, SkShader>;
191
+ SweepGradientNode: (
192
+ props: SweepGradientProps
193
+ ) => DeclarationNode<SweepGradientProps, SkShader>;
194
+ TwoPointConicalGradientNode: (
195
+ props: TwoPointConicalGradientProps
196
+ ) => DeclarationNode<TwoPointConicalGradientProps, SkShader>;
197
+ PictureNode: (props: PictureProps) => RenderNode<PictureProps>;
198
+ ImageSVGNode: (props: ImageSVGProps) => RenderNode<ImageSVGProps>;
199
+ VerticesNode: (props: VerticesProps) => RenderNode<VerticesProps>;
200
+ TextNode: (prop: TextProps) => RenderNode<TextProps>;
201
+ TextPathNode: (prop: TextPathProps) => RenderNode<TextPathProps>;
202
+ TextBlobNode: (prop: TextBlobProps) => RenderNode<TextBlobProps>;
203
+ GlyphsNode: (prop: GlyphsProps) => RenderNode<GlyphsProps>;
204
+ BlendNode: (prop: BlendProps) => DeclarationNode<BlendProps, SkImageFilter>;
205
+ BackdropFilterNode: (prop: ChildrenProps) => RenderNode<ChildrenProps>;
206
+ BoxNode: (prop: BoxProps) => RenderNode<BoxProps>;
207
+ BoxShadowNode: (
208
+ prop: BoxShadowProps
209
+ ) => DeclarationNode<BoxShadowProps, BoxShadowProps>;
210
+ LayerNode: (prop: ChildrenProps) => RenderNode<ChildrenProps>;
211
+ };
212
+
65
213
  // eslint-disable-next-line @typescript-eslint/no-namespace
66
214
  namespace JSX {
67
215
  interface IntrinsicElements {
68
216
  skGroup: SkiaProps<GroupProps>;
69
217
  skLayer: SkiaProps<ChildrenProps>;
70
- skPaint: SkiaProps<PaintProps> & { ref: ForwardedRef<PaintNode> };
218
+ skPaint: SkiaProps<PaintProps>;
71
219
 
72
220
  // Drawings
73
221
  skFill: SkiaProps<DrawingNodeProps>;
@@ -115,7 +263,7 @@ declare global {
115
263
  skImageShader: SkiaProps<ImageShaderProps>;
116
264
  skColorShader: SkiaProps<ColorProps>;
117
265
  skTurbulence: SkiaProps<TurbulenceProps>;
118
- skFractalNoise: SkiaProps<TurbulenceProps>;
266
+ skFractalNoise: SkiaProps<FractalNoiseProps>;
119
267
  skLinearGradient: SkiaProps<LinearGradientProps>;
120
268
  skRadialGradient: SkiaProps<RadialGradientProps>;
121
269
  skSweepGradient: SkiaProps<SweepGradientProps>;
@@ -2,7 +2,7 @@ import type { ReactNode } from "react";
2
2
  import React, { useMemo } from "react";
3
3
 
4
4
  import { BlendMode } from "../../skia/types";
5
- import { useCanvas } from "../useCanvas";
5
+ import { useSkiaPrivate } from "../useCanvas";
6
6
 
7
7
  import { Group } from "./Group";
8
8
 
@@ -14,7 +14,7 @@ interface MaskProps {
14
14
  }
15
15
 
16
16
  export const Mask = ({ children, mask, mode, clip }: MaskProps) => {
17
- const { Skia } = useCanvas();
17
+ const Skia = useSkiaPrivate();
18
18
  const maskPaint = useMemo(() => {
19
19
  const paint = Skia.Paint();
20
20
  paint.setBlendMode(BlendMode.Src);
@@ -1,19 +1,8 @@
1
- /* eslint-disable max-len */
2
- import React, { useRef, forwardRef } from "react";
1
+ import React from "react";
3
2
 
4
3
  import type { SkiaProps } from "../processors";
5
4
  import type { DrawingNodeProps } from "../../dom/types";
6
- import type { PaintNode } from "../../dom/nodes/PaintNode";
7
5
 
8
- export const usePaintRef = () => {
9
- console.log(`usePaintRef() is now deprecated.
10
- If you are using the layer property, simply pass the component directly: https://shopify.github.io/react-native-skia/docs/group#layer-effects.
11
- If you are using the paint property, please the following paint properties directly: https://shopify.github.io/react-native-skia/docs/paint/overview`);
12
- return useRef<PaintNode>(null);
6
+ export const Paint = (props: SkiaProps<DrawingNodeProps>) => {
7
+ return <skPaint {...props} />;
13
8
  };
14
-
15
- export const Paint = forwardRef<PaintNode, SkiaProps<DrawingNodeProps>>(
16
- (props, ref) => {
17
- return <skPaint ref={ref} {...props} />;
18
- }
19
- );
@@ -1,21 +1,21 @@
1
1
  import React, { useContext } from "react";
2
2
 
3
3
  import type { Skia } from "../skia/types";
4
- import type { SkiaValue } from "../values/types";
5
4
 
6
5
  interface CanvasContext {
7
6
  Skia: Skia;
8
- size: SkiaValue<{ width: number; height: number }>;
9
7
  }
10
8
 
11
9
  const CanvasContext = React.createContext<CanvasContext | null>(null);
12
10
 
13
11
  export const CanvasProvider = CanvasContext.Provider;
14
12
 
15
- export const useCanvas = () => {
13
+ // This private function will be removed once we remove the useCanvas hook and
14
+ // implement the Mask component as a node (will be faster too)
15
+ export const useSkiaPrivate = () => {
16
16
  const ctx = useContext(CanvasContext);
17
17
  if (!ctx) {
18
- throw new Error("Canvas context is not available");
18
+ throw new Error("Skia Canvas context is not available");
19
19
  }
20
- return ctx;
20
+ return ctx.Skia;
21
21
  };
@@ -1,30 +1,6 @@
1
- import type { DependencyList } from "react";
2
- import { useMemo } from "react";
3
-
4
1
  import { Skia } from "../Skia";
5
2
  import type { SkCanvas, SkRect } from "../types";
6
3
 
7
- /**
8
- * Memoizes and returns an SkPicture that can be drawn to another canvas.
9
- * @param rect Picture bounds
10
- * @param cb Callback for drawing to the canvas
11
- * @returns SkPicture
12
- */
13
- export const usePicture = (
14
- rect: SkRect,
15
- cb: (canvas: SkCanvas) => void,
16
- deps: DependencyList = []
17
- ) => {
18
- console.warn("usePicture() is deprecated. Use createPicture() instead.");
19
- return useMemo(() => {
20
- const recorder = Skia.PictureRecorder();
21
- const canvas = recorder.beginRecording(rect);
22
- cb(canvas);
23
- return recorder.finishRecordingAsPicture();
24
- // eslint-disable-next-line react-hooks/exhaustive-deps
25
- }, deps);
26
- };
27
-
28
4
  /**
29
5
  * Memoizes and returns an SkPicture that can be drawn to another canvas.
30
6
  * @param rect Picture bounds
@@ -12,7 +12,7 @@ export const bounds = (rects: SkRect[]) => {
12
12
  const y = Math.min(...rects.map((r) => r.y));
13
13
  const width = Math.max(...rects.map((r) => r.x + r.width));
14
14
  const height = Math.max(...rects.map((r) => r.y + r.height));
15
- return rect(x, y, width, height);
15
+ return rect(x, y, width - x, height - y);
16
16
  };
17
17
 
18
18
  export const topLeft = (r: SkRect | SkRRect) =>
@@ -1,5 +1,6 @@
1
1
  import type { SkJSIInstance } from "./JsiInstance";
2
2
  import type { SkPath } from "./Path/Path";
3
+ import type { SkPoint } from "./Point";
3
4
 
4
5
  export interface PosTan {
5
6
  px: number;
@@ -11,10 +12,10 @@ export interface PosTan {
11
12
  export interface SkContourMeasure extends SkJSIInstance<"ContourMeasure"> {
12
13
  /**
13
14
  * Returns the given position and tangent line for the distance on the given contour.
14
- * The return value is 4 floats in this order: posX, posY, vecX, vecY.
15
+ * The return value an array of 2 vectors: [position, tangent]
15
16
  * @param distance - will be pinned between 0 and length().
16
17
  */
17
- getPosTan(distance: number): PosTan;
18
+ getPosTan(distance: number): [position: SkPoint, tangent: SkPoint];
18
19
 
19
20
  /**
20
21
  * Returns an Path representing the segment of this contour.
@@ -0,0 +1,4 @@
1
+ export interface SkSize {
2
+ width: number;
3
+ height: number;
4
+ }
@@ -25,3 +25,4 @@ export * from "./RSXform";
25
25
  export * from "./JsiInstance";
26
26
  export * from "./Skia";
27
27
  export * from "./TextBlob";
28
+ export * from "./Size";
@@ -241,6 +241,17 @@ const parseCSSColor = (cssStr: string) => {
241
241
  return null;
242
242
  } // Covers NaN.
243
243
  return [(iv & 0xff0000) >> 16, (iv & 0xff00) >> 8, iv & 0xff, 1];
244
+ } else if (str.length === 9) {
245
+ var iv = parseInt(str.substr(1), 16); // TODO(deanm): Stricter parsing.
246
+ if (!(iv >= 0 && iv <= 0xffffffff)) {
247
+ return null; // Covers NaN.
248
+ }
249
+ return [
250
+ ((iv & 0xff000000) >> 24) & 0xff,
251
+ (iv & 0xff0000) >> 16,
252
+ (iv & 0xff00) >> 8,
253
+ (iv & 0xff) / 255,
254
+ ];
244
255
  }
245
256
 
246
257
  return null;
@@ -4,6 +4,7 @@ import type { SkContourMeasure } from "../types";
4
4
 
5
5
  import { HostObject } from "./Host";
6
6
  import { JsiSkPath } from "./JsiSkPath";
7
+ import { JsiSkPoint } from "./JsiSkPoint";
7
8
 
8
9
  export class JsiSkContourMeasure
9
10
  extends HostObject<ContourMeasure, "ContourMeasure">
@@ -13,9 +14,12 @@ export class JsiSkContourMeasure
13
14
  super(CanvasKit, ref, "ContourMeasure");
14
15
  }
15
16
 
16
- getPosTan(distance: number) {
17
- const [px, py, tx, ty] = this.ref.getPosTan(distance);
18
- return { px, py, tx, ty };
17
+ getPosTan(distance: number): [position: JsiSkPoint, tangent: JsiSkPoint] {
18
+ const posTan = this.ref.getPosTan(distance);
19
+ return [
20
+ new JsiSkPoint(this.CanvasKit, posTan.slice(0, 2)),
21
+ new JsiSkPoint(this.CanvasKit, posTan.slice(2)),
22
+ ];
19
23
  }
20
24
 
21
25
  getSegment(startD: number, stopD: number, startWithMoveTo: boolean) {
@@ -13,8 +13,10 @@ export class RNSkReadonlyValue<T> implements SkiaValue<T> {
13
13
  }
14
14
 
15
15
  protected update(nextValue: T): void {
16
- this._current = nextValue;
17
- this.notifyListeners();
16
+ if (this._current !== nextValue) {
17
+ this._current = nextValue;
18
+ this.notifyListeners();
19
+ }
18
20
  }
19
21
 
20
22
  public readonly __typename__ = "RNSkValue";
@@ -46,8 +46,8 @@ export abstract class SkiaBaseWebView<
46
46
  // Reset canvas / surface on layout change
47
47
  if (this._canvasRef.current) {
48
48
  const canvas = this._canvasRef.current;
49
- canvas.width = canvas.clientWidth * pd;
50
- canvas.height = canvas.clientHeight * pd;
49
+ canvas.width = width * pd;
50
+ canvas.height = height * pd;
51
51
  const surface = CanvasKit.MakeWebGLCanvasSurface(this._canvasRef.current);
52
52
  if (!surface) {
53
53
  throw new Error("Could not create surface");
@@ -58,6 +58,10 @@ export abstract class SkiaBaseWebView<
58
58
  }
59
59
  }
60
60
 
61
+ protected getSize() {
62
+ return { width: this.width, height: this.height };
63
+ }
64
+
61
65
  componentDidMount() {
62
66
  // Start render loop
63
67
  this.tick();