@shopify/react-native-skia 0.1.158 → 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 (403) hide show
  1. package/android/CMakeLists.txt +35 -11
  2. package/android/build.gradle +21 -25
  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/JsiSkHostObjects.h +6 -0
  11. package/cpp/api/JsiSkImageFilterFactory.h +1 -1
  12. package/cpp/api/JsiSkPaint.h +9 -2
  13. package/cpp/api/JsiSkPath.h +1 -0
  14. package/cpp/api/JsiSkRuntimeEffect.h +36 -36
  15. package/cpp/jsi/JsiHostObject.cpp +16 -28
  16. package/cpp/jsi/JsiHostObject.h +127 -7
  17. package/cpp/jsi/JsiValue.cpp +346 -0
  18. package/cpp/jsi/JsiValue.h +222 -0
  19. package/cpp/jsi/JsiValueWrapper.h +33 -5
  20. package/cpp/rnskia/RNSkDomView.cpp +220 -0
  21. package/cpp/rnskia/RNSkDomView.h +140 -0
  22. package/cpp/rnskia/RNSkJsView.cpp +0 -4
  23. package/cpp/rnskia/RNSkJsView.h +6 -4
  24. package/cpp/rnskia/RNSkManager.cpp +7 -0
  25. package/cpp/rnskia/RNSkPictureView.h +5 -8
  26. package/cpp/rnskia/RNSkView.h +113 -5
  27. package/cpp/rnskia/dom/JsiDomApi.h +167 -0
  28. package/cpp/rnskia/dom/base/BaseNodeProp.h +72 -0
  29. package/cpp/rnskia/dom/base/DerivedNodeProp.h +187 -0
  30. package/cpp/rnskia/dom/base/DrawingContext.cpp +227 -0
  31. package/cpp/rnskia/dom/base/DrawingContext.h +136 -0
  32. package/cpp/rnskia/dom/base/JsiDependencyManager.h +294 -0
  33. package/cpp/rnskia/dom/base/JsiDomDeclarationNode.h +176 -0
  34. package/cpp/rnskia/dom/base/JsiDomDrawingNode.h +50 -0
  35. package/cpp/rnskia/dom/base/JsiDomNode.h +361 -0
  36. package/cpp/rnskia/dom/base/JsiDomRenderNode.h +267 -0
  37. package/cpp/rnskia/dom/base/NodeProp.h +130 -0
  38. package/cpp/rnskia/dom/base/NodePropsContainer.h +119 -0
  39. package/cpp/rnskia/dom/nodes/JsiBackdropFilterNode.h +38 -0
  40. package/cpp/rnskia/dom/nodes/JsiBlendNode.h +112 -0
  41. package/cpp/rnskia/dom/nodes/JsiBlurMaskNode.h +78 -0
  42. package/cpp/rnskia/dom/nodes/JsiBoxNode.h +104 -0
  43. package/cpp/rnskia/dom/nodes/JsiBoxShadowNode.h +33 -0
  44. package/cpp/rnskia/dom/nodes/JsiCircleNode.h +38 -0
  45. package/cpp/rnskia/dom/nodes/JsiColorFilterNodes.h +192 -0
  46. package/cpp/rnskia/dom/nodes/JsiCustomDrawingNode.h +123 -0
  47. package/cpp/rnskia/dom/nodes/JsiDiffRectNode.h +42 -0
  48. package/cpp/rnskia/dom/nodes/JsiFillNode.h +22 -0
  49. package/cpp/rnskia/dom/nodes/JsiGlyphsNode.h +56 -0
  50. package/cpp/rnskia/dom/nodes/JsiGroupNode.h +26 -0
  51. package/cpp/rnskia/dom/nodes/JsiImageFilterNodes.h +415 -0
  52. package/cpp/rnskia/dom/nodes/JsiImageNode.h +34 -0
  53. package/cpp/rnskia/dom/nodes/JsiImageSvgNode.h +44 -0
  54. package/cpp/rnskia/dom/nodes/JsiLayerNode.h +64 -0
  55. package/cpp/rnskia/dom/nodes/JsiLineNode.h +43 -0
  56. package/cpp/rnskia/dom/nodes/JsiOvalNode.h +34 -0
  57. package/cpp/rnskia/dom/nodes/JsiPaintNode.h +77 -0
  58. package/cpp/rnskia/dom/nodes/JsiPatchNode.h +54 -0
  59. package/cpp/rnskia/dom/nodes/JsiPathEffectNodes.h +315 -0
  60. package/cpp/rnskia/dom/nodes/JsiPathNode.h +181 -0
  61. package/cpp/rnskia/dom/nodes/JsiPictureNode.h +32 -0
  62. package/cpp/rnskia/dom/nodes/JsiPointsNode.h +51 -0
  63. package/cpp/rnskia/dom/nodes/JsiRRectNode.h +34 -0
  64. package/cpp/rnskia/dom/nodes/JsiRectNode.h +34 -0
  65. package/cpp/rnskia/dom/nodes/JsiShaderNodes.h +517 -0
  66. package/cpp/rnskia/dom/nodes/JsiTextBlobNode.h +47 -0
  67. package/cpp/rnskia/dom/nodes/JsiTextNode.h +54 -0
  68. package/cpp/rnskia/dom/nodes/JsiTextPathNode.h +32 -0
  69. package/cpp/rnskia/dom/nodes/JsiVerticesNode.h +43 -0
  70. package/cpp/rnskia/dom/props/BezierProps.h +63 -0
  71. package/cpp/rnskia/dom/props/BlendModeProp.h +101 -0
  72. package/cpp/rnskia/dom/props/BoxShadowProps.h +61 -0
  73. package/cpp/rnskia/dom/props/CircleProp.h +46 -0
  74. package/cpp/rnskia/dom/props/ClipProp.h +62 -0
  75. package/cpp/rnskia/dom/props/ColorProp.h +80 -0
  76. package/cpp/rnskia/dom/props/DrawingProp.h +33 -0
  77. package/cpp/rnskia/dom/props/FontProp.h +34 -0
  78. package/cpp/rnskia/dom/props/GlyphsProp.h +53 -0
  79. package/cpp/rnskia/dom/props/ImageProps.h +173 -0
  80. package/cpp/rnskia/dom/props/LayerProp.h +50 -0
  81. package/cpp/rnskia/dom/props/MatrixProp.h +33 -0
  82. package/cpp/rnskia/dom/props/NumbersProp.h +63 -0
  83. package/cpp/rnskia/dom/props/PaintProps.h +172 -0
  84. package/cpp/rnskia/dom/props/PathProp.h +55 -0
  85. package/cpp/rnskia/dom/props/PictureProp.h +38 -0
  86. package/cpp/rnskia/dom/props/PointProp.h +72 -0
  87. package/cpp/rnskia/dom/props/PointsProp.h +83 -0
  88. package/cpp/rnskia/dom/props/RRectProp.h +134 -0
  89. package/cpp/rnskia/dom/props/RadiusProp.h +43 -0
  90. package/cpp/rnskia/dom/props/RectProp.h +118 -0
  91. package/cpp/rnskia/dom/props/StrokeProps.h +75 -0
  92. package/cpp/rnskia/dom/props/SvgProp.h +37 -0
  93. package/cpp/rnskia/dom/props/TextBlobProp.h +128 -0
  94. package/cpp/rnskia/dom/props/TileModeProp.h +50 -0
  95. package/cpp/rnskia/dom/props/TransformProp.h +80 -0
  96. package/cpp/rnskia/dom/props/TransformsProps.h +68 -0
  97. package/cpp/rnskia/dom/props/UniformsProp.h +194 -0
  98. package/cpp/rnskia/dom/props/VertexModeProp.h +47 -0
  99. package/cpp/rnskia/dom/props/VerticesProps.h +67 -0
  100. package/cpp/rnskia/values/RNSkReadonlyValue.h +13 -4
  101. package/cpp/skia/include/android/SkAndroidFrameworkUtils.h +35 -1
  102. package/cpp/skia/include/codec/SkAndroidCodec.h +17 -1
  103. package/cpp/skia/include/codec/SkCodec.h +8 -5
  104. package/cpp/skia/include/core/SkAnnotation.h +2 -0
  105. package/cpp/skia/include/core/SkBitmap.h +52 -1
  106. package/cpp/skia/include/core/SkBlendMode.h +2 -0
  107. package/cpp/skia/include/core/SkCanvas.h +52 -31
  108. package/cpp/skia/include/core/SkCapabilities.h +44 -0
  109. package/cpp/skia/include/core/SkColor.h +7 -0
  110. package/cpp/skia/include/core/SkColorFilter.h +37 -0
  111. package/cpp/skia/include/core/SkColorSpace.h +1 -1
  112. package/cpp/skia/include/core/SkFont.h +4 -0
  113. package/cpp/skia/include/core/SkFontMgr.h +3 -0
  114. package/cpp/skia/include/core/SkGraphics.h +9 -0
  115. package/cpp/skia/include/core/SkImage.h +77 -17
  116. package/cpp/skia/include/core/SkImageEncoder.h +5 -3
  117. package/cpp/skia/include/core/SkImageGenerator.h +27 -17
  118. package/cpp/skia/include/core/SkM44.h +1 -0
  119. package/cpp/skia/include/core/SkMesh.h +120 -34
  120. package/cpp/skia/include/core/SkMilestone.h +1 -1
  121. package/cpp/skia/include/core/SkOverdrawCanvas.h +2 -1
  122. package/cpp/skia/include/core/SkPaint.h +15 -2
  123. package/cpp/skia/include/core/SkPath.h +4 -0
  124. package/cpp/skia/include/core/SkPathBuilder.h +1 -1
  125. package/cpp/skia/include/core/SkPicture.h +0 -3
  126. package/cpp/skia/include/core/SkPictureRecorder.h +0 -2
  127. package/cpp/skia/include/core/SkPixmap.h +19 -0
  128. package/cpp/skia/include/core/SkRasterHandleAllocator.h +3 -1
  129. package/cpp/skia/include/core/SkRect.h +11 -4
  130. package/cpp/skia/include/core/SkRefCnt.h +13 -1
  131. package/cpp/skia/include/core/SkRegion.h +6 -0
  132. package/cpp/skia/include/core/SkSamplingOptions.h +8 -6
  133. package/cpp/skia/include/core/SkScalar.h +6 -25
  134. package/cpp/skia/include/core/SkShader.h +20 -12
  135. package/cpp/skia/include/core/SkSpan.h +51 -19
  136. package/cpp/skia/include/core/SkStream.h +2 -2
  137. package/cpp/skia/include/core/SkString.h +11 -3
  138. package/cpp/skia/include/core/SkSurface.h +85 -8
  139. package/cpp/skia/include/core/SkTextBlob.h +5 -2
  140. package/cpp/skia/include/core/SkTypes.h +11 -10
  141. package/cpp/skia/include/docs/SkPDFDocument.h +0 -5
  142. package/cpp/skia/include/effects/Sk1DPathEffect.h +6 -1
  143. package/cpp/skia/include/effects/Sk2DPathEffect.h +4 -1
  144. package/cpp/skia/include/effects/SkColorMatrix.h +1 -0
  145. package/cpp/skia/include/effects/SkColorMatrixFilter.h +5 -8
  146. package/cpp/skia/include/effects/SkCornerPathEffect.h +5 -1
  147. package/cpp/skia/include/effects/SkDashPathEffect.h +5 -1
  148. package/cpp/skia/include/effects/SkGradientShader.h +68 -38
  149. package/cpp/skia/include/effects/SkHighContrastFilter.h +5 -1
  150. package/cpp/skia/include/effects/SkImageFilters.h +5 -4
  151. package/cpp/skia/include/effects/SkLumaColorFilter.h +4 -1
  152. package/cpp/skia/include/effects/SkOpPathEffect.h +6 -2
  153. package/cpp/skia/include/effects/SkOverdrawColorFilter.h +5 -2
  154. package/cpp/skia/include/effects/SkRuntimeEffect.h +54 -62
  155. package/cpp/skia/include/effects/SkShaderMaskFilter.h +3 -1
  156. package/cpp/skia/include/effects/SkTableColorFilter.h +8 -21
  157. package/cpp/skia/include/effects/SkTableMaskFilter.h +5 -1
  158. package/cpp/skia/include/effects/SkTrimPathEffect.h +5 -1
  159. package/cpp/skia/include/encode/SkEncoder.h +17 -0
  160. package/cpp/skia/include/encode/SkWebpEncoder.h +17 -0
  161. package/cpp/skia/include/gpu/GpuTypes.h +18 -0
  162. package/cpp/skia/include/gpu/GrBackendSurface.h +38 -17
  163. package/cpp/skia/include/gpu/GrBackendSurfaceMutableState.h +6 -71
  164. package/cpp/skia/include/gpu/GrContextOptions.h +1 -1
  165. package/cpp/skia/include/gpu/GrContextThreadSafeProxy.h +10 -9
  166. package/cpp/skia/include/gpu/GrDirectContext.h +42 -22
  167. package/cpp/skia/include/gpu/GrRecordingContext.h +6 -3
  168. package/cpp/skia/include/gpu/GrTypes.h +11 -11
  169. package/cpp/skia/include/gpu/MutableTextureState.h +122 -0
  170. package/cpp/skia/include/gpu/gl/GrGLFunctions.h +1 -0
  171. package/cpp/skia/include/gpu/gl/GrGLInterface.h +1 -0
  172. package/cpp/skia/include/gpu/graphite/BackendTexture.h +7 -0
  173. package/cpp/skia/include/gpu/graphite/CombinationBuilder.h +195 -0
  174. package/cpp/skia/include/gpu/graphite/Context.h +47 -55
  175. package/cpp/skia/include/gpu/graphite/ContextOptions.h +85 -0
  176. package/cpp/skia/include/gpu/graphite/GraphiteTypes.h +1 -17
  177. package/cpp/skia/include/gpu/graphite/ImageProvider.h +61 -0
  178. package/cpp/skia/include/gpu/graphite/Recorder.h +87 -8
  179. package/cpp/skia/include/gpu/graphite/Recording.h +19 -9
  180. package/cpp/skia/include/gpu/graphite/TextureInfo.h +40 -8
  181. package/cpp/skia/include/gpu/graphite/dawn/DawnBackendContext.h +25 -0
  182. package/cpp/skia/include/gpu/graphite/mtl/MtlBackendContext.h +3 -2
  183. package/cpp/skia/include/gpu/graphite/vk/VulkanGraphiteTypes.h +69 -0
  184. package/cpp/skia/include/gpu/mtl/MtlMemoryAllocator.h +39 -0
  185. package/cpp/skia/include/gpu/vk/GrVkBackendContext.h +21 -19
  186. package/cpp/skia/include/gpu/vk/GrVkExtensions.h +2 -50
  187. package/cpp/skia/include/gpu/vk/GrVkMemoryAllocator.h +2 -127
  188. package/cpp/skia/include/gpu/vk/GrVkTypes.h +5 -43
  189. package/cpp/skia/include/gpu/vk/VulkanBackendContext.h +46 -0
  190. package/cpp/skia/include/gpu/vk/VulkanExtensions.h +67 -0
  191. package/cpp/skia/include/gpu/vk/VulkanMemoryAllocator.h +116 -0
  192. package/cpp/skia/include/gpu/vk/VulkanTypes.h +59 -0
  193. package/cpp/skia/include/pathops/SkPathOps.h +1 -1
  194. package/cpp/skia/include/private/SkColorData.h +10 -40
  195. package/cpp/skia/include/private/SkEncodedInfo.h +9 -3
  196. package/cpp/skia/include/private/SkFloatingPoint.h +9 -6
  197. package/cpp/skia/include/private/SkHalf.h +5 -52
  198. package/cpp/skia/include/private/SkMacros.h +1 -1
  199. package/cpp/skia/include/private/SkMalloc.h +4 -0
  200. package/cpp/skia/include/private/SkPathRef.h +10 -10
  201. package/cpp/skia/include/private/SkSLModifiers.h +59 -23
  202. package/cpp/skia/include/private/SkSLProgramKind.h +1 -0
  203. package/cpp/skia/include/private/SkSLSymbol.h +7 -3
  204. package/cpp/skia/include/private/SkStringView.h +4 -0
  205. package/cpp/skia/include/private/SkTArray.h +21 -7
  206. package/cpp/skia/include/private/SkTDArray.h +173 -285
  207. package/cpp/skia/include/private/SkTHash.h +33 -32
  208. package/cpp/skia/include/private/SkTemplates.h +24 -26
  209. package/cpp/skia/include/private/SkVx.h +218 -135
  210. package/cpp/skia/include/private/chromium/GrSlug.h +3 -65
  211. package/cpp/skia/include/private/chromium/SkChromeRemoteGlyphCache.h +6 -3
  212. package/cpp/skia/include/private/chromium/Slug.h +76 -0
  213. package/cpp/skia/include/private/gpu/ganesh/GrTypesPriv.h +6 -1
  214. package/cpp/skia/include/private/gpu/ganesh/GrVkTypesPriv.h +5 -39
  215. package/cpp/skia/include/private/gpu/graphite/VulkanGraphiteTypesPriv.h +63 -0
  216. package/cpp/skia/include/{gpu/vk/GrVkVulkan.h → private/gpu/vk/SkiaVulkan.h} +2 -2
  217. package/cpp/skia/include/private/gpu/vk/VulkanTypesPriv.h +57 -0
  218. package/cpp/skia/include/sksl/DSL.h +0 -1
  219. package/cpp/skia/include/sksl/DSLBlock.h +4 -18
  220. package/cpp/skia/include/sksl/DSLCase.h +2 -8
  221. package/cpp/skia/include/sksl/DSLCore.h +8 -15
  222. package/cpp/skia/include/sksl/DSLExpression.h +51 -142
  223. package/cpp/skia/include/sksl/DSLFunction.h +7 -15
  224. package/cpp/skia/include/sksl/DSLModifiers.h +5 -2
  225. package/cpp/skia/include/sksl/DSLStatement.h +4 -39
  226. package/cpp/skia/include/sksl/DSLSymbols.h +1 -11
  227. package/cpp/skia/include/sksl/DSLType.h +20 -12
  228. package/cpp/skia/include/sksl/DSLVar.h +56 -146
  229. package/cpp/skia/include/sksl/SkSLErrorReporter.h +2 -15
  230. package/cpp/skia/include/sksl/SkSLOperator.h +62 -59
  231. package/cpp/skia/include/sksl/SkSLPosition.h +2 -0
  232. package/cpp/skia/include/sksl/SkSLVersion.h +27 -0
  233. package/cpp/skia/include/svg/SkSVGCanvas.h +1 -0
  234. package/cpp/skia/include/utils/SkAnimCodecPlayer.h +1 -1
  235. package/cpp/skia/include/utils/SkBase64.h +2 -0
  236. package/cpp/skia/include/utils/SkCustomTypeface.h +24 -11
  237. package/cpp/skia/include/utils/SkEventTracer.h +12 -1
  238. package/cpp/skia/include/utils/SkNWayCanvas.h +11 -4
  239. package/cpp/skia/include/utils/SkPaintFilterCanvas.h +9 -4
  240. package/cpp/skia/include/utils/SkParse.h +3 -0
  241. package/cpp/skia/include/utils/SkShadowUtils.h +2 -0
  242. package/cpp/skia/include/utils/SkTextUtils.h +2 -1
  243. package/cpp/skia/{include/third_party → modules}/skcms/skcms.h +10 -0
  244. package/cpp/skia/modules/skcms/skcms_internal.h +56 -0
  245. package/cpp/skia/modules/skcms/src/Transform_inl.h +1609 -0
  246. package/cpp/skia/modules/skparagraph/include/DartTypes.h +153 -0
  247. package/cpp/skia/modules/skparagraph/include/FontArguments.h +46 -0
  248. package/cpp/skia/modules/skparagraph/include/FontCollection.h +84 -0
  249. package/cpp/skia/modules/skparagraph/include/Metrics.h +98 -0
  250. package/cpp/skia/modules/skparagraph/include/Paragraph.h +111 -0
  251. package/cpp/skia/modules/skparagraph/include/ParagraphBuilder.h +69 -0
  252. package/cpp/skia/modules/skparagraph/include/ParagraphCache.h +77 -0
  253. package/cpp/skia/modules/skparagraph/include/ParagraphStyle.h +143 -0
  254. package/cpp/skia/modules/skparagraph/include/TextShadow.h +30 -0
  255. package/cpp/skia/modules/skparagraph/include/TextStyle.h +352 -0
  256. package/cpp/skia/modules/skparagraph/include/TypefaceFontProvider.h +81 -0
  257. package/cpp/skia/modules/svg/include/SkSVGAttributeParser.h +1 -1
  258. package/cpp/skia/modules/svg/include/SkSVGTypes.h +3 -3
  259. package/cpp/skia/src/core/SkLRUCache.h +126 -0
  260. package/cpp/skia/src/core/SkTInternalLList.h +302 -0
  261. package/cpp/utils/RNSkTimingInfo.h +1 -0
  262. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.h +15 -4
  263. package/ios/RNSkia-iOS/RNSkMetalCanvasProvider.mm +40 -54
  264. package/ios/RNSkia-iOS/SkiaDomViewManager.h +8 -0
  265. package/ios/RNSkia-iOS/SkiaDomViewManager.mm +51 -0
  266. package/lib/commonjs/dom/nodes/JsiSkDOM.js +56 -56
  267. package/lib/commonjs/dom/nodes/JsiSkDOM.js.map +1 -1
  268. package/lib/commonjs/dom/nodes/RenderNode.js +1 -1
  269. package/lib/commonjs/dom/nodes/RenderNode.js.map +1 -1
  270. package/lib/commonjs/renderer/Canvas.js +19 -63
  271. package/lib/commonjs/renderer/Canvas.js.map +1 -1
  272. package/lib/commonjs/renderer/DependencyManager.js +0 -5
  273. package/lib/commonjs/renderer/DependencyManager.js.map +1 -1
  274. package/lib/commonjs/renderer/HostComponents.js.map +1 -1
  275. package/lib/commonjs/renderer/useCanvas.js +4 -18
  276. package/lib/commonjs/renderer/useCanvas.js.map +1 -1
  277. package/lib/commonjs/views/SkiaBaseWebView.js +7 -0
  278. package/lib/commonjs/views/SkiaBaseWebView.js.map +1 -1
  279. package/lib/commonjs/views/SkiaDomView.js +152 -0
  280. package/lib/commonjs/views/SkiaDomView.js.map +1 -0
  281. package/lib/commonjs/views/SkiaDomView.web.js +55 -0
  282. package/lib/commonjs/views/SkiaDomView.web.js.map +1 -0
  283. package/lib/commonjs/views/SkiaPictureView.js +16 -2
  284. package/lib/commonjs/views/SkiaPictureView.js.map +1 -1
  285. package/lib/commonjs/views/SkiaView.js +17 -2
  286. package/lib/commonjs/views/SkiaView.js.map +1 -1
  287. package/lib/commonjs/views/index.js +13 -0
  288. package/lib/commonjs/views/index.js.map +1 -1
  289. package/lib/commonjs/views/types.js.map +1 -1
  290. package/lib/module/dom/nodes/JsiSkDOM.js +56 -56
  291. package/lib/module/dom/nodes/JsiSkDOM.js.map +1 -1
  292. package/lib/module/dom/nodes/RenderNode.js +1 -1
  293. package/lib/module/dom/nodes/RenderNode.js.map +1 -1
  294. package/lib/module/renderer/Canvas.js +20 -64
  295. package/lib/module/renderer/Canvas.js.map +1 -1
  296. package/lib/module/renderer/DependencyManager.js +0 -5
  297. package/lib/module/renderer/DependencyManager.js.map +1 -1
  298. package/lib/module/renderer/HostComponents.js.map +1 -1
  299. package/lib/module/renderer/useCanvas.js +2 -13
  300. package/lib/module/renderer/useCanvas.js.map +1 -1
  301. package/lib/module/views/SkiaBaseWebView.js +7 -0
  302. package/lib/module/views/SkiaBaseWebView.js.map +1 -1
  303. package/lib/module/views/SkiaDomView.js +128 -0
  304. package/lib/module/views/SkiaDomView.js.map +1 -0
  305. package/lib/module/views/SkiaDomView.web.js +41 -0
  306. package/lib/module/views/SkiaDomView.web.js.map +1 -0
  307. package/lib/module/views/SkiaPictureView.js +14 -2
  308. package/lib/module/views/SkiaPictureView.js.map +1 -1
  309. package/lib/module/views/SkiaView.js +15 -2
  310. package/lib/module/views/SkiaView.js.map +1 -1
  311. package/lib/module/views/index.js +1 -0
  312. package/lib/module/views/index.js.map +1 -1
  313. package/lib/module/views/types.js.map +1 -1
  314. package/lib/typescript/src/dom/nodes/JsiSkDOM.d.ts +57 -64
  315. package/lib/typescript/src/renderer/Canvas.d.ts +5 -8
  316. package/lib/typescript/src/renderer/DependencyManager.d.ts +0 -2
  317. package/lib/typescript/src/renderer/HostComponents.d.ts +66 -3
  318. package/lib/typescript/src/renderer/useCanvas.d.ts +0 -6
  319. package/lib/typescript/src/views/SkiaBaseWebView.d.ts +4 -0
  320. package/lib/typescript/src/views/SkiaDomView.d.ts +31 -0
  321. package/lib/typescript/src/views/SkiaDomView.web.d.ts +7 -0
  322. package/lib/typescript/src/views/index.d.ts +1 -0
  323. package/lib/typescript/src/views/types.d.ts +12 -2
  324. package/libs/android/arm64-v8a/libskia.a +0 -0
  325. package/libs/android/arm64-v8a/libskottie.a +0 -0
  326. package/libs/android/arm64-v8a/libskparagraph.a +0 -0
  327. package/libs/android/arm64-v8a/libsksg.a +0 -0
  328. package/libs/android/arm64-v8a/libskshaper.a +0 -0
  329. package/libs/android/arm64-v8a/libskunicode.a +0 -0
  330. package/libs/android/arm64-v8a/libsvg.a +0 -0
  331. package/libs/android/armeabi-v7a/libskia.a +0 -0
  332. package/libs/android/armeabi-v7a/libskottie.a +0 -0
  333. package/libs/android/armeabi-v7a/libskparagraph.a +0 -0
  334. package/libs/android/armeabi-v7a/libsksg.a +0 -0
  335. package/libs/android/armeabi-v7a/libskshaper.a +0 -0
  336. package/libs/android/armeabi-v7a/libskunicode.a +0 -0
  337. package/libs/android/armeabi-v7a/libsvg.a +0 -0
  338. package/libs/android/x86/libskia.a +0 -0
  339. package/libs/android/x86/libskottie.a +0 -0
  340. package/libs/android/x86/libskparagraph.a +0 -0
  341. package/libs/android/x86/libsksg.a +0 -0
  342. package/libs/android/x86/libskshaper.a +0 -0
  343. package/libs/android/x86/libskunicode.a +0 -0
  344. package/libs/android/x86/libsvg.a +0 -0
  345. package/libs/android/x86_64/libskia.a +0 -0
  346. package/libs/android/x86_64/libskottie.a +0 -0
  347. package/libs/android/x86_64/libskparagraph.a +0 -0
  348. package/libs/android/x86_64/libsksg.a +0 -0
  349. package/libs/android/x86_64/libskshaper.a +0 -0
  350. package/libs/android/x86_64/libskunicode.a +0 -0
  351. package/libs/android/x86_64/libsvg.a +0 -0
  352. package/libs/ios/libskia.xcframework/ios-arm64_arm64e/libskia.a +0 -0
  353. package/libs/ios/libskia.xcframework/ios-arm64_arm64e_x86_64-simulator/libskia.a +0 -0
  354. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e/libskottie.a +0 -0
  355. package/libs/ios/libskottie.xcframework/ios-arm64_arm64e_x86_64-simulator/libskottie.a +0 -0
  356. package/libs/ios/libskparagraph.xcframework/Info.plist +42 -0
  357. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e/libskparagraph.a +0 -0
  358. package/libs/ios/libskparagraph.xcframework/ios-arm64_arm64e_x86_64-simulator/libskparagraph.a +0 -0
  359. package/libs/ios/libsksg.xcframework/Info.plist +5 -5
  360. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e/libsksg.a +0 -0
  361. package/libs/ios/libsksg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsksg.a +0 -0
  362. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e/libskshaper.a +0 -0
  363. package/libs/ios/libskshaper.xcframework/ios-arm64_arm64e_x86_64-simulator/libskshaper.a +0 -0
  364. package/libs/ios/libskunicode.xcframework/Info.plist +42 -0
  365. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e/libskunicode.a +0 -0
  366. package/libs/ios/libskunicode.xcframework/ios-arm64_arm64e_x86_64-simulator/libskunicode.a +0 -0
  367. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e/libsvg.a +0 -0
  368. package/libs/ios/libsvg.xcframework/ios-arm64_arm64e_x86_64-simulator/libsvg.a +0 -0
  369. package/package.json +5 -3
  370. package/react-native-skia.podspec +3 -1
  371. package/src/dom/nodes/JsiSkDOM.ts +170 -56
  372. package/src/dom/nodes/RenderNode.ts +1 -1
  373. package/src/renderer/Canvas.tsx +32 -56
  374. package/src/renderer/DependencyManager.tsx +0 -5
  375. package/src/renderer/HostComponents.ts +152 -1
  376. package/src/renderer/useCanvas.ts +1 -15
  377. package/src/views/SkiaBaseWebView.tsx +4 -0
  378. package/src/views/SkiaDomView.tsx +120 -0
  379. package/src/views/SkiaDomView.web.tsx +37 -0
  380. package/src/views/SkiaPictureView.tsx +10 -2
  381. package/src/views/SkiaView.tsx +11 -3
  382. package/src/views/index.ts +1 -0
  383. package/src/views/types.ts +19 -2
  384. package/cpp/jsi/JsiSimpleValueWrapper.h +0 -99
  385. package/cpp/skia/include/c/sk_canvas.h +0 -159
  386. package/cpp/skia/include/c/sk_colorspace.h +0 -25
  387. package/cpp/skia/include/c/sk_data.h +0 -65
  388. package/cpp/skia/include/c/sk_image.h +0 -71
  389. package/cpp/skia/include/c/sk_imageinfo.h +0 -62
  390. package/cpp/skia/include/c/sk_maskfilter.h +0 -47
  391. package/cpp/skia/include/c/sk_matrix.h +0 -49
  392. package/cpp/skia/include/c/sk_paint.h +0 -145
  393. package/cpp/skia/include/c/sk_path.h +0 -102
  394. package/cpp/skia/include/c/sk_picture.h +0 -70
  395. package/cpp/skia/include/c/sk_shader.h +0 -143
  396. package/cpp/skia/include/c/sk_surface.h +0 -73
  397. package/cpp/skia/include/c/sk_types.h +0 -278
  398. package/cpp/skia/include/gpu/graphite/SkStuff.h +0 -47
  399. package/cpp/skia/include/private/SkNx.h +0 -430
  400. package/cpp/skia/include/private/SkNx_neon.h +0 -713
  401. package/cpp/skia/include/private/SkNx_sse.h +0 -823
  402. package/cpp/skia/include/sksl/DSLRuntimeEffects.h +0 -32
  403. package/cpp/skia/include/sksl/DSLWrapper.h +0 -77
@@ -1,5 +1,8 @@
1
1
  import { NodeType } from "../dom/types";
2
2
  import type {
3
+ DeclarationNode,
4
+ FractalNoiseProps,
5
+ RenderNode,
3
6
  CircleProps,
4
7
  DrawingNodeProps,
5
8
  ImageProps,
@@ -53,12 +56,160 @@ import type {
53
56
  BlendProps,
54
57
  MorphologyImageFilterProps,
55
58
  } from "../dom/types/ImageFilters";
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";
56
71
 
57
72
  import type { Container } from "./Container";
58
73
  import { exhaustiveCheck } from "./typeddash";
59
74
  import type { SkiaProps } from "./processors";
75
+ import type { DependencyManager } from "./DependencyManager";
60
76
 
61
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
+
62
213
  // eslint-disable-next-line @typescript-eslint/no-namespace
63
214
  namespace JSX {
64
215
  interface IntrinsicElements {
@@ -112,7 +263,7 @@ declare global {
112
263
  skImageShader: SkiaProps<ImageShaderProps>;
113
264
  skColorShader: SkiaProps<ColorProps>;
114
265
  skTurbulence: SkiaProps<TurbulenceProps>;
115
- skFractalNoise: SkiaProps<TurbulenceProps>;
266
+ skFractalNoise: SkiaProps<FractalNoiseProps>;
116
267
  skLinearGradient: SkiaProps<LinearGradientProps>;
117
268
  skRadialGradient: SkiaProps<RadialGradientProps>;
118
269
  skSweepGradient: SkiaProps<SweepGradientProps>;
@@ -1,35 +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 = () => {
16
- const ctx = useContext(CanvasContext);
17
- console.warn(
18
- // eslint-disable-next-line max-len
19
- "useCanvas is deprecated. use the onSize property instead: https://shopify.github.io/react-native-skia/docs/canvas/overview"
20
- );
21
- if (!ctx) {
22
- throw new Error("Canvas context is not available");
23
- }
24
- return ctx;
25
- };
26
-
27
13
  // This private function will be removed once we remove the useCanvas hook and
28
14
  // implement the Mask component as a node (will be faster too)
29
15
  export const useSkiaPrivate = () => {
30
16
  const ctx = useContext(CanvasContext);
31
17
  if (!ctx) {
32
- throw new Error("Canvas context is not available");
18
+ throw new Error("Skia Canvas context is not available");
33
19
  }
34
20
  return ctx.Skia;
35
21
  };
@@ -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();
@@ -0,0 +1,120 @@
1
+ import React from "react";
2
+ import { requireNativeComponent, Platform } from "react-native";
3
+ import type { HostComponent } from "react-native";
4
+
5
+ import type { SkRect } from "../skia/types";
6
+ import type { SkiaValue } from "../values";
7
+
8
+ import { SkiaViewApi } from "./api";
9
+ import { SkiaViewNativeId } from "./SkiaView";
10
+ import type { NativeSkiaViewProps, SkiaDomViewProps } from "./types";
11
+
12
+ const NativeSkiaDomView: HostComponent<SkiaDomViewProps> =
13
+ Platform.OS !== "web"
14
+ ? requireNativeComponent<NativeSkiaViewProps>("SkiaDomView")
15
+ : // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
+ (null as any);
17
+
18
+ export class SkiaDomView extends React.Component<SkiaDomViewProps> {
19
+ constructor(props: SkiaDomViewProps) {
20
+ super(props);
21
+ this._nativeId = SkiaViewNativeId.current++;
22
+ const { root, onTouch, onSize } = props;
23
+ if (root) {
24
+ assertSkiaViewApi();
25
+ SkiaViewApi.setJsiProperty(this._nativeId, "root", root);
26
+ }
27
+ if (onTouch) {
28
+ assertSkiaViewApi();
29
+ SkiaViewApi.setJsiProperty(this._nativeId, "onTouch", onTouch);
30
+ }
31
+ if (onSize) {
32
+ assertSkiaViewApi();
33
+ SkiaViewApi.setJsiProperty(this._nativeId, "onSize", onSize);
34
+ }
35
+ }
36
+
37
+ private _nativeId: number;
38
+
39
+ public get nativeId() {
40
+ return this._nativeId;
41
+ }
42
+
43
+ componentDidUpdate(prevProps: SkiaDomViewProps) {
44
+ const { root, onTouch, onSize } = this.props;
45
+ if (root !== prevProps.root) {
46
+ assertSkiaViewApi();
47
+ SkiaViewApi.setJsiProperty(this._nativeId, "root", root);
48
+ }
49
+ if (onTouch !== prevProps.onTouch) {
50
+ assertSkiaViewApi();
51
+ SkiaViewApi.setJsiProperty(this._nativeId, "onTouch", onTouch);
52
+ }
53
+ if (onSize !== prevProps.onSize) {
54
+ assertSkiaViewApi();
55
+ SkiaViewApi.setJsiProperty(this._nativeId, "onSize", onSize);
56
+ }
57
+ }
58
+
59
+ /**
60
+ * Creates a snapshot from the canvas in the surface
61
+ * @param rect Rect to use as bounds. Optional.
62
+ * @returns An Image object.
63
+ */
64
+ public makeImageSnapshot(rect?: SkRect) {
65
+ assertSkiaViewApi();
66
+ return SkiaViewApi.makeImageSnapshot(this._nativeId, rect);
67
+ }
68
+
69
+ /**
70
+ * Sends a redraw request to the native SkiaView.
71
+ */
72
+ public redraw() {
73
+ assertSkiaViewApi();
74
+ SkiaViewApi.requestRedraw(this._nativeId);
75
+ }
76
+
77
+ /**
78
+ * Registers one or move values as a dependant value of the Skia View. The view will
79
+ * The view will redraw itself when any of the values change.
80
+ * @param values Values to register
81
+ */
82
+ public registerValues(values: SkiaValue<unknown>[]): () => void {
83
+ assertSkiaViewApi();
84
+ return SkiaViewApi.registerValuesInView(this._nativeId, values);
85
+ }
86
+
87
+ /**
88
+ * Clear up the dom node when unmounting to release resources.
89
+ */
90
+ componentWillUnmount(): void {
91
+ assertSkiaViewApi();
92
+ SkiaViewApi.setJsiProperty(this._nativeId, "root", null);
93
+ }
94
+
95
+ render() {
96
+ const { mode, debug = false, ...viewProps } = this.props;
97
+ return (
98
+ <NativeSkiaDomView
99
+ collapsable={false}
100
+ nativeID={`${this._nativeId}`}
101
+ mode={mode}
102
+ debug={debug}
103
+ {...viewProps}
104
+ />
105
+ );
106
+ }
107
+ }
108
+
109
+ const assertSkiaViewApi = () => {
110
+ if (
111
+ SkiaViewApi === null ||
112
+ SkiaViewApi.setJsiProperty === null ||
113
+ SkiaViewApi.callJsiMethod === null ||
114
+ SkiaViewApi.registerValuesInView === null ||
115
+ SkiaViewApi.requestRedraw === null ||
116
+ SkiaViewApi.makeImageSnapshot === null
117
+ ) {
118
+ throw Error("Skia View Api was not found.");
119
+ }
120
+ };
@@ -0,0 +1,37 @@
1
+ import { PixelRatio } from "react-native";
2
+
3
+ import { Skia } from "../skia";
4
+ import type { SkCanvas } from "../skia/types";
5
+
6
+ import { SkiaBaseWebView } from "./SkiaBaseWebView";
7
+ import type { SkiaDomViewProps, TouchInfo } from "./types";
8
+
9
+ const pd = PixelRatio.get();
10
+
11
+ export class SkiaDomView extends SkiaBaseWebView<SkiaDomViewProps> {
12
+ constructor(props: SkiaDomViewProps) {
13
+ super(props);
14
+ }
15
+
16
+ protected renderInCanvas(canvas: SkCanvas, touches: TouchInfo[]): void {
17
+ if (this.props.onTouch) {
18
+ this.props.onTouch([touches]);
19
+ }
20
+ if (this.props.onSize) {
21
+ const { width, height } = this.getSize();
22
+ this.props.onSize.current = { width, height };
23
+ }
24
+ if (this.props.root) {
25
+ const paint = Skia.Paint();
26
+ const ctx = {
27
+ canvas,
28
+ paint,
29
+ opacity: 1,
30
+ };
31
+ canvas.save();
32
+ canvas.scale(pd, pd);
33
+ this.props.root.render(ctx);
34
+ canvas.restore();
35
+ }
36
+ }
37
+ }
@@ -15,11 +15,15 @@ export class SkiaPictureView extends React.Component<SkiaPictureViewProps> {
15
15
  constructor(props: SkiaPictureViewProps) {
16
16
  super(props);
17
17
  this._nativeId = SkiaViewNativeId.current++;
18
- const { picture } = props;
18
+ const { picture, onSize } = props;
19
19
  if (picture) {
20
20
  assertSkiaViewApi();
21
21
  SkiaViewApi.setJsiProperty(this._nativeId, "picture", picture);
22
22
  }
23
+ if (onSize) {
24
+ assertSkiaViewApi();
25
+ SkiaViewApi.setJsiProperty(this._nativeId, "onSize", onSize);
26
+ }
23
27
  }
24
28
 
25
29
  private _nativeId: number;
@@ -29,11 +33,15 @@ export class SkiaPictureView extends React.Component<SkiaPictureViewProps> {
29
33
  }
30
34
 
31
35
  componentDidUpdate(prevProps: SkiaPictureViewProps) {
32
- const { picture } = this.props;
36
+ const { picture, onSize } = this.props;
33
37
  if (picture !== prevProps.picture) {
34
38
  assertSkiaViewApi();
35
39
  SkiaViewApi.setJsiProperty(this._nativeId, "picture", picture);
36
40
  }
41
+ if (onSize !== prevProps.onSize) {
42
+ assertSkiaViewApi();
43
+ SkiaViewApi.setJsiProperty(this._nativeId, "onSize", onSize);
44
+ }
37
45
  }
38
46
 
39
47
  /**
@@ -16,11 +16,15 @@ export class SkiaView extends React.Component<SkiaDrawViewProps> {
16
16
  constructor(props: SkiaDrawViewProps) {
17
17
  super(props);
18
18
  this._nativeId = SkiaViewNativeId.current++;
19
- const { onDraw } = props;
19
+ const { onDraw, onSize } = props;
20
20
  if (onDraw) {
21
21
  assertSkiaViewApi();
22
22
  SkiaViewApi.setJsiProperty(this._nativeId, "drawCallback", onDraw);
23
23
  }
24
+ if (onSize) {
25
+ assertSkiaViewApi();
26
+ SkiaViewApi.setJsiProperty(this._nativeId, "onSize", onSize);
27
+ }
24
28
  }
25
29
 
26
30
  private _nativeId: number;
@@ -30,11 +34,15 @@ export class SkiaView extends React.Component<SkiaDrawViewProps> {
30
34
  }
31
35
 
32
36
  componentDidUpdate(prevProps: SkiaDrawViewProps) {
33
- const { onDraw } = this.props;
37
+ const { onDraw, onSize } = this.props;
34
38
  if (onDraw !== prevProps.onDraw) {
35
39
  assertSkiaViewApi();
36
40
  SkiaViewApi.setJsiProperty(this._nativeId, "drawCallback", onDraw);
37
41
  }
42
+ if (onSize !== prevProps.onSize) {
43
+ assertSkiaViewApi();
44
+ SkiaViewApi.setJsiProperty(this._nativeId, "onSize", onSize);
45
+ }
38
46
  }
39
47
 
40
48
  /**
@@ -66,7 +74,7 @@ export class SkiaView extends React.Component<SkiaDrawViewProps> {
66
74
  }
67
75
 
68
76
  render() {
69
- const { mode, debug = false, ...viewProps } = this.props;
77
+ const { mode, debug = false, onSize, ...viewProps } = this.props;
70
78
  return (
71
79
  <NativeSkiaView
72
80
  collapsable={false}
@@ -1,5 +1,6 @@
1
1
  export * from "./SkiaView";
2
2
  export * from "./SkiaPictureView";
3
+ export * from "./SkiaDomView";
3
4
  export * from "./types";
4
5
  export * from "./useDrawCallback";
5
6
  export * from "./useTouchHandler";
@@ -1,7 +1,14 @@
1
1
  import type { ViewProps } from "react-native";
2
2
 
3
- import type { SkCanvas, SkImage, SkPicture, SkRect } from "../skia/types";
4
- import type { SkiaValue } from "../values";
3
+ import type { GroupProps, RenderNode } from "../dom/types";
4
+ import type {
5
+ SkCanvas,
6
+ SkImage,
7
+ SkPicture,
8
+ SkRect,
9
+ SkSize,
10
+ } from "../skia/types";
11
+ import type { SkiaMutableValue, SkiaValue } from "../values";
5
12
 
6
13
  export type DrawMode = "continuous" | "default";
7
14
 
@@ -86,6 +93,11 @@ export interface SkiaBaseViewProps extends ViewProps {
86
93
  * average time it takes to render.
87
94
  */
88
95
  debug?: boolean;
96
+ /**
97
+ * Pass an animated value to the onSize property to get updates when
98
+ * the Skia view is resized.
99
+ */
100
+ onSize?: SkiaMutableValue<SkSize>;
89
101
  }
90
102
 
91
103
  export interface SkiaDrawViewProps extends SkiaBaseViewProps {
@@ -102,3 +114,8 @@ export interface SkiaDrawViewProps extends SkiaBaseViewProps {
102
114
  export interface SkiaPictureViewProps extends SkiaBaseViewProps {
103
115
  picture?: SkPicture;
104
116
  }
117
+
118
+ export interface SkiaDomViewProps extends SkiaBaseViewProps {
119
+ root?: RenderNode<GroupProps>;
120
+ onTouch?: TouchHandler;
121
+ }
@@ -1,99 +0,0 @@
1
- #pragma once
2
-
3
- #include <memory>
4
-
5
- #include <jsi/jsi.h>
6
-
7
- namespace RNJsi {
8
- namespace jsi = facebook::jsi;
9
-
10
- /**
11
- Implements a simple wrapper class for JSI primitives like numbers and boolean
12
- values. Objects, strings and arrays are stored as values inside a property
13
- holder. The class also provides a method for comparing values that will compare
14
- numbers, booleans and strings.
15
- */
16
- class JsiSimpleValueWrapper {
17
- private:
18
- enum ValueType { NonInitialized, Undefined, Null, Bool, Number, JsiValue };
19
-
20
- public:
21
- explicit JsiSimpleValueWrapper(jsi::Runtime &runtime)
22
- : _type(ValueType::NonInitialized),
23
- _propNameId(jsi::PropNameID::forUtf8(runtime, "value")) {}
24
-
25
- jsi::Value getCurrent(jsi::Runtime &runtime) {
26
- switch (_type) {
27
- case ValueType::NonInitialized:
28
- return nullptr;
29
- case ValueType::Undefined:
30
- return jsi::Value::undefined();
31
- case ValueType::Null:
32
- return jsi::Value::null();
33
- case ValueType::Bool:
34
- return _boolValue;
35
- case ValueType::Number:
36
- return _numberValue;
37
- case ValueType::JsiValue:
38
- if (_valueHolder == nullptr) {
39
- return jsi::Value::undefined();
40
- }
41
- return _valueHolder->getProperty(runtime, _propNameId);
42
- }
43
- }
44
-
45
- void setCurrent(jsi::Runtime &runtime, const jsi::Value &value) {
46
- if (value.isNumber()) {
47
- _type = ValueType::Number;
48
- _numberValue = value.asNumber();
49
- } else if (value.isBool()) {
50
- _type = ValueType::Bool;
51
- _boolValue = value.getBool();
52
- } else if (value.isUndefined()) {
53
- _type = ValueType::Undefined;
54
- } else if (value.isNull()) {
55
- _type = ValueType::Null;
56
- } else {
57
- _type = ValueType::JsiValue;
58
- // Save as javascript object - we don't want to have to copy strings,
59
- // objects and values
60
- if (_valueHolder == nullptr) {
61
- _valueHolder = std::make_shared<jsi::Object>(runtime);
62
- }
63
- _valueHolder->setProperty(runtime, _propNameId, value);
64
- }
65
- }
66
-
67
- bool equals(jsi::Runtime &runtime, const jsi::Value &value) {
68
- if (_type == ValueType::NonInitialized) {
69
- return false;
70
- }
71
- if (value.isNumber() && _type == ValueType::Number) {
72
- return _numberValue == value.asNumber();
73
- } else if (value.isBool() && _type == ValueType::Bool) {
74
- return _boolValue == value.getBool();
75
- } else if (value.isUndefined()) {
76
- return _type == ValueType::Undefined;
77
- } else if (value.isNull()) {
78
- return _type == ValueType::Null;
79
- } else if (value.isString()) {
80
- auto current = getCurrent(runtime);
81
- if (current.isString()) {
82
- return jsi::String::strictEquals(runtime, value.asString(runtime),
83
- current.asString(runtime));
84
- }
85
- return false;
86
- }
87
- return false;
88
- }
89
-
90
- private:
91
- jsi::PropNameID _propNameId;
92
- std::shared_ptr<jsi::Object> _valueHolder;
93
-
94
- bool _boolValue;
95
- double _numberValue;
96
-
97
- ValueType _type;
98
- };
99
- } // namespace RNJsi