@shopify/react-native-skia 2.9.1 → 2.10.1

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 (387) hide show
  1. package/android/CMakeLists.txt +8 -46
  2. package/android/build.gradle +33 -0
  3. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +1 -2
  4. package/cpp/api/JsiNativeBuffer.h +23 -24
  5. package/cpp/api/JsiSkAnimatedImage.h +24 -25
  6. package/cpp/api/JsiSkAnimatedImageFactory.h +18 -17
  7. package/cpp/api/JsiSkApi.h +254 -96
  8. package/cpp/api/JsiSkCanvas.h +141 -266
  9. package/cpp/api/JsiSkColor.h +7 -5
  10. package/cpp/api/JsiSkColorFilter.h +15 -8
  11. package/cpp/api/JsiSkColorFilterFactory.h +49 -67
  12. package/cpp/api/JsiSkContourMeasure.h +31 -38
  13. package/cpp/api/JsiSkContourMeasureIter.h +20 -23
  14. package/cpp/api/JsiSkConverters.h +410 -0
  15. package/cpp/api/JsiSkData.h +13 -7
  16. package/cpp/api/JsiSkDataFactory.h +27 -32
  17. package/cpp/api/JsiSkFont.h +123 -192
  18. package/cpp/api/JsiSkFontMgr.h +33 -26
  19. package/cpp/api/JsiSkFontMgrFactory.h +12 -11
  20. package/cpp/api/JsiSkFontStyle.h +14 -12
  21. package/cpp/api/JsiSkImage.h +90 -79
  22. package/cpp/api/JsiSkImageFactory.h +93 -95
  23. package/cpp/api/JsiSkImageFilter.h +21 -11
  24. package/cpp/api/JsiSkImageFilterFactory.h +375 -629
  25. package/cpp/api/JsiSkImageInfo.h +25 -25
  26. package/cpp/api/JsiSkMaskFilter.h +21 -11
  27. package/cpp/api/JsiSkMaskFilterFactory.h +17 -17
  28. package/cpp/api/JsiSkMatrix.h +51 -88
  29. package/cpp/api/JsiSkNativeObjects.h +387 -0
  30. package/cpp/api/JsiSkPaint.h +104 -142
  31. package/cpp/api/JsiSkParagraph.h +54 -64
  32. package/cpp/api/JsiSkParagraphBuilder.h +43 -68
  33. package/cpp/api/JsiSkParagraphBuilderFactory.h +20 -24
  34. package/cpp/api/JsiSkPath.h +242 -350
  35. package/cpp/api/JsiSkPathBuilder.h +153 -273
  36. package/cpp/api/JsiSkPathBuilderFactory.h +19 -20
  37. package/cpp/api/JsiSkPathEffect.h +21 -11
  38. package/cpp/api/JsiSkPathEffectFactory.h +61 -80
  39. package/cpp/api/JsiSkPathFactory.h +148 -238
  40. package/cpp/api/JsiSkPicture.h +32 -27
  41. package/cpp/api/JsiSkPictureFactory.h +21 -26
  42. package/cpp/api/JsiSkPictureRecorder.h +27 -29
  43. package/cpp/api/JsiSkPoint.h +20 -23
  44. package/cpp/api/JsiSkRRect.h +24 -32
  45. package/cpp/api/JsiSkRSXform.h +31 -48
  46. package/cpp/api/JsiSkRect.h +40 -50
  47. package/cpp/api/JsiSkRuntimeEffect.h +85 -92
  48. package/cpp/api/JsiSkRuntimeEffectFactory.h +14 -18
  49. package/cpp/api/JsiSkRuntimeShaderBuilder.h +28 -30
  50. package/cpp/api/JsiSkSVG.h +15 -15
  51. package/cpp/api/JsiSkSVGFactory.h +17 -20
  52. package/cpp/api/JsiSkShader.h +15 -8
  53. package/cpp/api/JsiSkShaderFactory.h +159 -238
  54. package/cpp/api/JsiSkSkottie.h +131 -143
  55. package/cpp/api/JsiSkSurface.h +29 -32
  56. package/cpp/api/JsiSkSurfaceFactory.h +18 -20
  57. package/cpp/api/JsiSkTextBlob.h +15 -8
  58. package/cpp/api/JsiSkTextBlobFactory.h +40 -66
  59. package/cpp/api/JsiSkTypeface.h +25 -22
  60. package/cpp/api/JsiSkTypefaceFactory.h +17 -15
  61. package/cpp/api/JsiSkTypefaceFontProvider.h +43 -39
  62. package/cpp/api/JsiSkTypefaceFontProviderFactory.h +13 -12
  63. package/cpp/api/JsiSkVertices.h +23 -22
  64. package/cpp/api/JsiSkiaContext.h +22 -23
  65. package/cpp/api/JsiSkottieFactory.h +16 -17
  66. package/cpp/api/JsiVideo.h +43 -81
  67. package/cpp/api/recorder/Convertor.h +31 -61
  68. package/cpp/api/recorder/DataTypes.h +8 -16
  69. package/cpp/api/recorder/JsiRecorder.h +83 -55
  70. package/cpp/api/recorder/RNRecorder.h +1 -1
  71. package/cpp/jsi/BoxedNativeObject.h +146 -0
  72. package/cpp/{jsi2 → jsi}/EnumMapper.h +4 -1
  73. package/cpp/{jsi2 → jsi}/JSIConverter.h +0 -31
  74. package/cpp/{jsi2 → jsi}/NativeObject.h +131 -152
  75. package/cpp/jsi/RuntimeAwareCache.cpp +1 -1
  76. package/cpp/jsi/RuntimeAwareCache.h +26 -8
  77. package/cpp/jsi/ViewProperty.h +5 -11
  78. package/cpp/rnskia/RNDawnContext.h +18 -2
  79. package/cpp/rnskia/RNDawnInterop.cpp +19 -0
  80. package/cpp/rnskia/RNDawnUtils.h +18 -1
  81. package/cpp/rnskia/RNSkJsiViewApi.h +20 -11
  82. package/cpp/rnskia/RNSkManager.cpp +9 -168
  83. package/cpp/rnskia/RNSkPictureView.h +1 -1
  84. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +2 -0
  85. package/lib/commonjs/external/reanimated/renderHelpers.d.ts +15 -0
  86. package/lib/commonjs/external/reanimated/renderHelpers.js +30 -1
  87. package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
  88. package/lib/commonjs/mock/index.js +0 -1
  89. package/lib/commonjs/mock/index.js.map +1 -1
  90. package/lib/commonjs/skia/NativeSetup.js +4 -0
  91. package/lib/commonjs/skia/NativeSetup.js.map +1 -1
  92. package/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +1 -0
  93. package/lib/commonjs/skia/SkiaWorkletSerialization.js +66 -0
  94. package/lib/commonjs/skia/SkiaWorkletSerialization.js.map +1 -0
  95. package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +15 -6
  96. package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
  97. package/lib/commonjs/skia/types/Skia.d.ts +5 -15
  98. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  99. package/lib/commonjs/skia/types/index.d.ts +0 -1
  100. package/lib/commonjs/skia/types/index.js +0 -11
  101. package/lib/commonjs/skia/types/index.js.map +1 -1
  102. package/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  103. package/lib/commonjs/skia/web/JsiSkImageFactory.js +2 -2
  104. package/lib/commonjs/skia/web/JsiSkImageFactory.js.map +1 -1
  105. package/lib/commonjs/skia/web/JsiSkia.js +1 -4
  106. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  107. package/lib/commonjs/sksg/Container.native.js +20 -1
  108. package/lib/commonjs/sksg/Container.native.js.map +1 -1
  109. package/lib/commonjs/views/index.d.ts +0 -1
  110. package/lib/commonjs/views/index.js +0 -11
  111. package/lib/commonjs/views/index.js.map +1 -1
  112. package/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  113. package/lib/module/external/reanimated/renderHelpers.js +29 -0
  114. package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
  115. package/lib/module/mock/index.js +0 -1
  116. package/lib/module/mock/index.js.map +1 -1
  117. package/lib/module/skia/NativeSetup.js +4 -0
  118. package/lib/module/skia/NativeSetup.js.map +1 -1
  119. package/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  120. package/lib/module/skia/SkiaWorkletSerialization.js +59 -0
  121. package/lib/module/skia/SkiaWorkletSerialization.js.map +1 -0
  122. package/lib/module/skia/types/Image/ImageFactory.d.ts +15 -6
  123. package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
  124. package/lib/module/skia/types/Skia.d.ts +5 -15
  125. package/lib/module/skia/types/Skia.js.map +1 -1
  126. package/lib/module/skia/types/index.d.ts +0 -1
  127. package/lib/module/skia/types/index.js +0 -1
  128. package/lib/module/skia/types/index.js.map +1 -1
  129. package/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  130. package/lib/module/skia/web/JsiSkImageFactory.js +2 -2
  131. package/lib/module/skia/web/JsiSkImageFactory.js.map +1 -1
  132. package/lib/module/skia/web/JsiSkia.js +1 -4
  133. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  134. package/lib/module/sksg/Container.native.js +21 -2
  135. package/lib/module/sksg/Container.native.js.map +1 -1
  136. package/lib/module/views/index.d.ts +0 -1
  137. package/lib/module/views/index.js +0 -1
  138. package/lib/module/views/index.js.map +1 -1
  139. package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
  140. package/lib/typescript/lib/commonjs/mock/index.d.ts +0 -1
  141. package/lib/typescript/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +2 -0
  142. package/lib/typescript/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  143. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -2
  144. package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  145. package/lib/typescript/lib/module/mock/index.d.ts +0 -2
  146. package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -2
  147. package/lib/typescript/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  148. package/lib/typescript/lib/module/skia/types/index.d.ts +0 -1
  149. package/lib/typescript/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  150. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -2
  151. package/lib/typescript/lib/module/views/index.d.ts +0 -1
  152. package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +15 -0
  153. package/lib/typescript/src/skia/SkiaWorkletSerialization.d.ts +1 -0
  154. package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +15 -6
  155. package/lib/typescript/src/skia/types/Skia.d.ts +5 -15
  156. package/lib/typescript/src/skia/types/index.d.ts +0 -1
  157. package/lib/typescript/src/skia/web/JsiSkImageFactory.d.ts +2 -2
  158. package/lib/typescript/src/views/index.d.ts +0 -1
  159. package/package.json +8 -5
  160. package/react-native-skia.podspec +38 -5
  161. package/src/external/reanimated/renderHelpers.ts +30 -0
  162. package/src/mock/index.ts +0 -1
  163. package/src/skia/NativeSetup.ts +5 -0
  164. package/src/skia/SkiaWorkletSerialization.ts +67 -0
  165. package/src/skia/types/Image/ImageFactory.ts +15 -6
  166. package/src/skia/types/Skia.ts +5 -15
  167. package/src/skia/types/index.ts +0 -1
  168. package/src/skia/web/JsiSkImageFactory.ts +3 -3
  169. package/src/skia/web/JsiSkia.ts +2 -5
  170. package/src/sksg/Container.native.ts +40 -2
  171. package/src/views/index.ts +0 -1
  172. package/android/cpp/jni/JniWebGPUView.cpp +0 -112
  173. package/android/cpp/rnskia-android/SkiaPlatformContext.h +0 -26
  174. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUSurfaceView.java +0 -43
  175. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUTextureView.java +0 -50
  176. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUView.java +0 -98
  177. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewAPI.java +0 -19
  178. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewManager.java +0 -58
  179. package/apple/RNWebGPUAppleNativeBuffer.mm +0 -33
  180. package/apple/SkiaPlatformContext.h +0 -20
  181. package/apple/SkiaPlatformContext.mm +0 -21
  182. package/apple/SkiaWebGPUView.mm +0 -81
  183. package/apple/WebGPUMetalView.mm +0 -136
  184. package/cpp/api/JsiSkHostObjects.h +0 -257
  185. package/cpp/jsi/JsiHostObject.cpp +0 -137
  186. package/cpp/jsi/JsiHostObject.h +0 -385
  187. package/cpp/rnwgpu/ArrayBuffer.h +0 -117
  188. package/cpp/rnwgpu/Canvas.h +0 -50
  189. package/cpp/rnwgpu/PlatformContext.h +0 -18
  190. package/cpp/rnwgpu/SurfaceRegistry.h +0 -605
  191. package/cpp/rnwgpu/api/AppleNativeBuffer.h +0 -22
  192. package/cpp/rnwgpu/api/Convertors.h +0 -783
  193. package/cpp/rnwgpu/api/External.h +0 -12
  194. package/cpp/rnwgpu/api/GPU.cpp +0 -162
  195. package/cpp/rnwgpu/api/GPU.h +0 -60
  196. package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -240
  197. package/cpp/rnwgpu/api/GPUAdapter.h +0 -60
  198. package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -57
  199. package/cpp/rnwgpu/api/GPUBindGroup.cpp +0 -3
  200. package/cpp/rnwgpu/api/GPUBindGroup.h +0 -51
  201. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +0 -52
  202. package/cpp/rnwgpu/api/GPUBuffer.cpp +0 -107
  203. package/cpp/rnwgpu/api/GPUBuffer.h +0 -88
  204. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -75
  205. package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -70
  206. package/cpp/rnwgpu/api/GPUCommandBuffer.h +0 -45
  207. package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +0 -179
  208. package/cpp/rnwgpu/api/GPUCommandEncoder.h +0 -111
  209. package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -79
  210. package/cpp/rnwgpu/api/GPUCompilationMessage.h +0 -36
  211. package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +0 -60
  212. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +0 -85
  213. package/cpp/rnwgpu/api/GPUComputePipeline.cpp +0 -12
  214. package/cpp/rnwgpu/api/GPUComputePipeline.h +0 -60
  215. package/cpp/rnwgpu/api/GPUDevice.cpp +0 -614
  216. package/cpp/rnwgpu/api/GPUDevice.h +0 -258
  217. package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +0 -7
  218. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +0 -40
  219. package/cpp/rnwgpu/api/GPUError.h +0 -35
  220. package/cpp/rnwgpu/api/GPUExtent3D.h +0 -66
  221. package/cpp/rnwgpu/api/GPUExternalTexture.cpp +0 -139
  222. package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -95
  223. package/cpp/rnwgpu/api/GPUFeatures.h +0 -203
  224. package/cpp/rnwgpu/api/GPUInternalError.h +0 -31
  225. package/cpp/rnwgpu/api/GPUOrigin2D.h +0 -55
  226. package/cpp/rnwgpu/api/GPUOrigin3D.h +0 -62
  227. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +0 -33
  228. package/cpp/rnwgpu/api/GPUPipelineLayout.h +0 -45
  229. package/cpp/rnwgpu/api/GPUQuerySet.cpp +0 -11
  230. package/cpp/rnwgpu/api/GPUQuerySet.h +0 -73
  231. package/cpp/rnwgpu/api/GPUQueue.cpp +0 -179
  232. package/cpp/rnwgpu/api/GPUQueue.h +0 -84
  233. package/cpp/rnwgpu/api/GPURenderBundle.h +0 -44
  234. package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +0 -131
  235. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +0 -110
  236. package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +0 -165
  237. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +0 -130
  238. package/cpp/rnwgpu/api/GPURenderPipeline.cpp +0 -13
  239. package/cpp/rnwgpu/api/GPURenderPipeline.h +0 -61
  240. package/cpp/rnwgpu/api/GPUSampler.h +0 -44
  241. package/cpp/rnwgpu/api/GPUShaderModule.cpp +0 -56
  242. package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
  243. package/cpp/rnwgpu/api/GPUSharedFence.cpp +0 -80
  244. package/cpp/rnwgpu/api/GPUSharedFence.h +0 -53
  245. package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -135
  246. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -75
  247. package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +0 -129
  248. package/cpp/rnwgpu/api/GPUSupportedLimits.h +0 -131
  249. package/cpp/rnwgpu/api/GPUTexture.cpp +0 -47
  250. package/cpp/rnwgpu/api/GPUTexture.h +0 -162
  251. package/cpp/rnwgpu/api/GPUTextureView.h +0 -44
  252. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +0 -60
  253. package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
  254. package/cpp/rnwgpu/api/ImageBitmap.h +0 -62
  255. package/cpp/rnwgpu/api/NativeBufferUtils.h +0 -87
  256. package/cpp/rnwgpu/api/RNWebGPU.h +0 -82
  257. package/cpp/rnwgpu/api/WebGPUConstants.h +0 -36
  258. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -64
  259. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -78
  260. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -56
  261. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -97
  262. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -57
  263. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -52
  264. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -56
  265. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -56
  266. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -59
  267. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +0 -39
  268. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +0 -76
  269. package/cpp/rnwgpu/api/descriptors/GPUColor.h +0 -66
  270. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -58
  271. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
  272. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -45
  273. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -45
  274. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -56
  275. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -58
  276. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -67
  277. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -56
  278. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -103
  279. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -109
  280. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -38
  281. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -90
  282. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -73
  283. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -62
  284. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
  285. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -65
  286. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -81
  287. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -54
  288. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
  289. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -54
  290. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -57
  291. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -69
  292. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -61
  293. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -55
  294. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -43
  295. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -45
  296. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -80
  297. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -81
  298. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -101
  299. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -92
  300. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -58
  301. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -103
  302. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -51
  303. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -45
  304. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -110
  305. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -60
  306. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -62
  307. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
  308. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +0 -58
  309. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +0 -51
  310. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -73
  311. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -64
  312. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -59
  313. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -59
  314. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -91
  315. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
  316. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -91
  317. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -64
  318. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -53
  319. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -62
  320. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -73
  321. package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1969
  322. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -214
  323. package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -58
  324. package/cpp/rnwgpu/async/RuntimeContext.cpp +0 -199
  325. package/cpp/rnwgpu/async/RuntimeContext.h +0 -134
  326. package/lib/commonjs/skia/types/WebGPU.d.ts +0 -184
  327. package/lib/commonjs/skia/types/WebGPU.js +0 -105
  328. package/lib/commonjs/skia/types/WebGPU.js.map +0 -1
  329. package/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -8
  330. package/lib/commonjs/specs/WebGPUViewNativeComponent.js +0 -10
  331. package/lib/commonjs/specs/WebGPUViewNativeComponent.js.map +0 -1
  332. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  333. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js +0 -103
  334. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  335. package/lib/commonjs/specs/utils.d.ts +0 -1
  336. package/lib/commonjs/specs/utils.js +0 -11
  337. package/lib/commonjs/specs/utils.js.map +0 -1
  338. package/lib/commonjs/views/WebGPUCanvas.d.ts +0 -33
  339. package/lib/commonjs/views/WebGPUCanvas.js +0 -79
  340. package/lib/commonjs/views/WebGPUCanvas.js.map +0 -1
  341. package/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -23
  342. package/lib/commonjs/views/WebGPUCanvas.web.js +0 -20
  343. package/lib/commonjs/views/WebGPUCanvas.web.js.map +0 -1
  344. package/lib/module/skia/types/WebGPU.d.ts +0 -184
  345. package/lib/module/skia/types/WebGPU.js +0 -99
  346. package/lib/module/skia/types/WebGPU.js.map +0 -1
  347. package/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -8
  348. package/lib/module/specs/WebGPUViewNativeComponent.js +0 -4
  349. package/lib/module/specs/WebGPUViewNativeComponent.js.map +0 -1
  350. package/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  351. package/lib/module/specs/WebGPUViewNativeComponent.web.js +0 -96
  352. package/lib/module/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  353. package/lib/module/specs/utils.d.ts +0 -1
  354. package/lib/module/specs/utils.js +0 -5
  355. package/lib/module/specs/utils.js.map +0 -1
  356. package/lib/module/views/WebGPUCanvas.d.ts +0 -33
  357. package/lib/module/views/WebGPUCanvas.js +0 -70
  358. package/lib/module/views/WebGPUCanvas.js.map +0 -1
  359. package/lib/module/views/WebGPUCanvas.web.d.ts +0 -23
  360. package/lib/module/views/WebGPUCanvas.web.js +0 -12
  361. package/lib/module/views/WebGPUCanvas.web.js.map +0 -1
  362. package/lib/typescript/lib/commonjs/skia/types/WebGPU.d.ts +0 -2
  363. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -4
  364. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -3
  365. package/lib/typescript/lib/commonjs/specs/utils.d.ts +0 -2
  366. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.d.ts +0 -6
  367. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -6
  368. package/lib/typescript/lib/module/skia/types/WebGPU.d.ts +0 -31
  369. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -2
  370. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -2
  371. package/lib/typescript/lib/module/specs/utils.d.ts +0 -1
  372. package/lib/typescript/lib/module/views/WebGPUCanvas.d.ts +0 -7
  373. package/lib/typescript/lib/module/views/WebGPUCanvas.web.d.ts +0 -8
  374. package/lib/typescript/src/skia/types/WebGPU.d.ts +0 -184
  375. package/lib/typescript/src/specs/WebGPUViewNativeComponent.d.ts +0 -8
  376. package/lib/typescript/src/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  377. package/lib/typescript/src/specs/utils.d.ts +0 -1
  378. package/lib/typescript/src/views/WebGPUCanvas.d.ts +0 -33
  379. package/lib/typescript/src/views/WebGPUCanvas.web.d.ts +0 -23
  380. package/src/skia/types/WebGPU.ts +0 -226
  381. package/src/specs/WebGPUViewNativeComponent.ts +0 -11
  382. package/src/specs/WebGPUViewNativeComponent.web.ts +0 -110
  383. package/src/specs/utils.ts +0 -4
  384. package/src/views/WebGPUCanvas.tsx +0 -125
  385. package/src/views/WebGPUCanvas.web.tsx +0 -36
  386. /package/cpp/{jsi2 → jsi}/Promise.cpp +0 -0
  387. /package/cpp/{jsi2 → jsi}/Promise.h +0 -0
@@ -70,6 +70,7 @@ if(SK_GRAPHITE)
70
70
  set(BACKEND_SOURCES
71
71
  #TODO: is this source needed to be added?
72
72
  "${PROJECT_SOURCE_DIR}/../cpp/rnskia/RNDawnWindowContext.cpp"
73
+ "${PROJECT_SOURCE_DIR}/../cpp/rnskia/RNDawnInterop.cpp"
73
74
  )
74
75
  else()
75
76
  add_definitions(-DSK_GL -DSK_GANESH)
@@ -99,10 +100,10 @@ add_library(
99
100
  "${PROJECT_SOURCE_DIR}/cpp/rnskia-android/AHardwareBufferUtils.cpp"
100
101
  "${PROJECT_SOURCE_DIR}/cpp/rnskia-android/RNSkAndroidVideo.cpp"
101
102
 
102
- "${PROJECT_SOURCE_DIR}/../cpp/jsi/JsiHostObject.cpp"
103
103
  "${PROJECT_SOURCE_DIR}/../cpp/jsi/RuntimeLifecycleMonitor.cpp"
104
104
  "${PROJECT_SOURCE_DIR}/../cpp/jsi/RuntimeAwareCache.cpp"
105
105
  "${PROJECT_SOURCE_DIR}/../cpp/jsi/JsiPromises.cpp"
106
+ "${PROJECT_SOURCE_DIR}/../cpp/jsi/Promise.cpp"
106
107
 
107
108
  "${PROJECT_SOURCE_DIR}/../cpp/rnskia/RNSkManager.cpp"
108
109
 
@@ -114,42 +115,6 @@ add_library(
114
115
  ${BACKEND_SOURCES}
115
116
  )
116
117
 
117
- if(SK_GRAPHITE)
118
- # WebGPU JSI infrastructure (jsi2)
119
- target_sources(${PACKAGE_NAME} PRIVATE
120
- "${PROJECT_SOURCE_DIR}/../cpp/jsi2/Promise.cpp"
121
-
122
- # WebGPU async system
123
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/async/AsyncTaskHandle.cpp"
124
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/async/RuntimeContext.cpp"
125
-
126
- # WebGPU API
127
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPU.cpp"
128
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUAdapter.cpp"
129
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUBindGroup.cpp"
130
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUBuffer.cpp"
131
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUCanvasContext.cpp"
132
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUCommandEncoder.cpp"
133
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUComputePassEncoder.cpp"
134
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUComputePipeline.cpp"
135
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUDevice.cpp"
136
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUDeviceLostInfo.cpp"
137
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUExternalTexture.cpp"
138
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUQuerySet.cpp"
139
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUQueue.cpp"
140
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPURenderBundleEncoder.cpp"
141
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPURenderPassEncoder.cpp"
142
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPURenderPipeline.cpp"
143
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUShaderModule.cpp"
144
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUSharedFence.cpp"
145
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUSharedTextureMemory.cpp"
146
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUSupportedLimits.cpp"
147
- "${PROJECT_SOURCE_DIR}/../cpp/rnwgpu/api/GPUTexture.cpp"
148
-
149
- # WebGPU Canvas JNI bindings
150
- "${PROJECT_SOURCE_DIR}/cpp/jni/JniWebGPUView.cpp"
151
- )
152
- endif()
153
118
 
154
119
 
155
120
  target_include_directories(
@@ -179,13 +144,8 @@ target_include_directories(
179
144
  ../cpp/rnskia/values
180
145
  ../cpp/utils
181
146
 
182
- # WebGPU bindings
147
+ # Shared JSI infrastructure (cpp/jsi) via prefix-qualified includes
183
148
  ../cpp
184
- ../cpp/jsi2
185
- ../cpp/rnwgpu
186
- ../cpp/rnwgpu/api
187
- ../cpp/rnwgpu/api/descriptors
188
- ../cpp/rnwgpu/async
189
149
 
190
150
  ${libfbjni_include_DIRS}
191
151
  )
@@ -218,8 +178,10 @@ add_library(jsonreader STATIC IMPORTED)
218
178
  set_property(TARGET jsonreader PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libjsonreader.a")
219
179
 
220
180
  if(SK_GRAPHITE)
221
- add_library(dawn_combined STATIC IMPORTED)
222
- set_property(TARGET dawn_combined PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libdawn_combined.a")
181
+ # Dawn is a shared library, the same artifact react-native-webgpu links, so
182
+ # an app that installs both packages loads exactly one Dawn copy.
183
+ add_library(webgpu_dawn SHARED IMPORTED)
184
+ set_property(TARGET webgpu_dawn PROPERTY IMPORTED_LOCATION "${SKIA_LIBS_PATH}/libwebgpu_dawn.so")
223
185
  endif()
224
186
 
225
187
  find_library(
@@ -394,7 +356,7 @@ endif()
394
356
  if(SK_GRAPHITE)
395
357
  target_link_libraries(${PACKAGE_NAME}
396
358
  ${COMMON_LIBS}
397
- dawn_combined
359
+ webgpu_dawn
398
360
  )
399
361
  else()
400
362
  target_link_libraries(${PACKAGE_NAME}
@@ -88,6 +88,39 @@ def skiaLibsPath = useGraphite
88
88
  : "${resolveNodePackage('react-native-skia-graphite-android', projectDir)}/libs")
89
89
  : "${resolveNodePackage('react-native-skia-android', projectDir)}/libs"
90
90
 
91
+ // Both packages must link the exact same Dawn artifact: compare this
92
+ // Graphite build's Dawn release tag (libs/.dawn-version) with the tag
93
+ // react-native-webgpu declares in its package.json `dawn` field.
94
+ if (useGraphite) {
95
+ def dawnMarker = file("${projectDir}/../libs/.dawn-version")
96
+ def webgpuDir = null
97
+ try {
98
+ webgpuDir = resolveNodePackage('react-native-webgpu', projectDir)
99
+ } catch (Exception ignored) {
100
+ // react-native-webgpu not installed: nothing to check
101
+ }
102
+ if (dawnMarker.exists() && webgpuDir != null) {
103
+ def skiaDawn = dawnMarker.text.trim()
104
+ def webgpuJson = new groovy.json.JsonSlurper().parse(file("${webgpuDir}/package.json"))
105
+ if (webgpuJson.dawn == null) {
106
+ throw new GradleException(
107
+ "react-native-skia: the installed react-native-webgpu " +
108
+ "(${webgpuJson.version}) does not declare a `dawn` field in its " +
109
+ "package.json, so it predates shared-Dawn support and cannot be " +
110
+ "paired with this Graphite build (which links ${skiaDawn}). " +
111
+ "Upgrade react-native-webgpu.")
112
+ }
113
+ def webgpuDawn = "dawn-" + webgpuJson.dawn.toString().replace('/', '-')
114
+ if (skiaDawn != webgpuDawn) {
115
+ throw new GradleException(
116
+ "react-native-skia: Dawn version mismatch. This Graphite build links " +
117
+ "${skiaDawn} but react-native-webgpu links ${webgpuDawn}. " +
118
+ "Align the two packages so the app contains exactly one Dawn.")
119
+ }
120
+ logger.warn("react-native-skia: Dawn versions match (${skiaDawn})")
121
+ }
122
+ }
123
+
91
124
  logger.warn("react-native-skia: SK_GRAPHITE: ${useGraphite}")
92
125
  logger.warn("react-native-skia: Skia libs: ${skiaLibsPath}")
93
126
  logger.warn("react-native-skia: node_modules/ found at: ${nodeModules}")
@@ -43,8 +43,7 @@ public class RNSkiaPackage extends TurboReactPackage {
43
43
  @Override
44
44
  public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
45
45
  return Arrays.<ViewManager>asList(
46
- new SkiaPictureViewManager(),
47
- new WebGPUViewManager()
46
+ new SkiaPictureViewManager()
48
47
  );
49
48
  }
50
49
 
@@ -6,6 +6,7 @@
6
6
  #include <jsi/jsi.h>
7
7
 
8
8
  #include "JsiSkImage.h"
9
+ #include "JsiSkNativeObjects.h"
9
10
 
10
11
  namespace RNSkia {
11
12
 
@@ -15,43 +16,41 @@ namespace jsi = facebook::jsi;
15
16
  Implementation of the ParagraphBuilderFactory for making ParagraphBuilder JSI
16
17
  object
17
18
  */
18
- class JsiNativeBufferFactory : public JsiSkHostObject {
19
+ class JsiNativeBufferFactory
20
+ : public JsiSkNativeObject<JsiNativeBufferFactory> {
19
21
  public:
20
- JSI_HOST_FUNCTION(MakeFromImage) {
21
- auto image = JsiSkImage::fromValue(runtime, arguments[0]);
22
+ static constexpr const char *CLASS_NAME = "NativeBufferFactory";
23
+
24
+ // Native buffer pointers travel as BigInts, which the void* converter
25
+ // produces/consumes.
26
+ void *MakeFromImage(sk_sp<SkImage> image) {
22
27
  image->makeNonTextureImage();
23
28
  uint64_t pointer = getContext()->makeNativeBuffer(image);
24
- return jsi::BigInt::fromUint64(runtime, pointer);
29
+ return reinterpret_cast<void *>(pointer);
25
30
  }
26
31
 
27
- JSI_HOST_FUNCTION(MakeTestBuffer) {
28
- auto width = static_cast<int>(arguments[0].asNumber());
29
- auto height = static_cast<int>(arguments[1].asNumber());
32
+ void *MakeTestBuffer(int width, int height) {
30
33
  uint64_t pointer = getContext()->makeTestNativeBuffer(width, height);
31
- return jsi::BigInt::fromUint64(runtime, pointer);
34
+ return reinterpret_cast<void *>(pointer);
32
35
  }
33
36
 
34
- JSI_HOST_FUNCTION(Release) {
35
-
36
- jsi::BigInt pointer = arguments[0].asBigInt(runtime);
37
- const uintptr_t nativeBufferPointer = pointer.asUint64(runtime);
38
-
39
- getContext()->releaseNativeBuffer(nativeBufferPointer);
40
- return jsi::Value::undefined();
37
+ void Release(void *pointer) {
38
+ getContext()->releaseNativeBuffer(reinterpret_cast<uintptr_t>(pointer));
41
39
  }
42
40
 
43
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiNativeBufferFactory, Release),
44
- JSI_EXPORT_FUNC(JsiNativeBufferFactory, MakeFromImage),
45
- JSI_EXPORT_FUNC(JsiNativeBufferFactory, MakeTestBuffer))
46
-
47
- size_t getMemoryPressure() const override { return 1024; }
48
-
49
- std::string getObjectType() const override {
50
- return "JsiNativeBufferFactory";
41
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
42
+ installMethod(runtime, prototype, "Release",
43
+ &JsiNativeBufferFactory::Release);
44
+ installMethod(runtime, prototype, "MakeFromImage",
45
+ &JsiNativeBufferFactory::MakeFromImage);
46
+ installMethod(runtime, prototype, "MakeTestBuffer",
47
+ &JsiNativeBufferFactory::MakeTestBuffer);
51
48
  }
52
49
 
50
+ size_t getMemoryPressure() override { return 1024; }
51
+
53
52
  explicit JsiNativeBufferFactory(std::shared_ptr<RNSkPlatformContext> context)
54
- : JsiSkHostObject(std::move(context)) {}
53
+ : JsiSkNativeObject<JsiNativeBufferFactory>(std::move(context)) {}
55
54
  };
56
55
 
57
56
  } // namespace RNSkia
@@ -7,7 +7,7 @@
7
7
  #include <string>
8
8
  #include <utility>
9
9
 
10
- #include "JsiSkHostObjects.h"
10
+ #include "JsiSkNativeObjects.h"
11
11
  #include "api/third_party/base64.h"
12
12
 
13
13
  #pragma clang diagnostic push
@@ -29,44 +29,45 @@ namespace RNSkia {
29
29
  namespace jsi = facebook::jsi;
30
30
 
31
31
  class JsiSkAnimatedImage
32
- : public JsiSkWrappingSkPtrHostObject<SkAnimatedImage> {
32
+ : public JsiSkWrappingSkPtrNativeObject<JsiSkAnimatedImage,
33
+ SkAnimatedImage> {
33
34
  public:
35
+ static constexpr const char *CLASS_NAME = "AnimatedImage";
36
+
34
37
  // TODO-API: Properties?
35
- JSI_HOST_FUNCTION(getCurrentFrame) {
38
+ std::shared_ptr<JsiSkImage> getCurrentFrame() {
36
39
  auto image = getObject()->getCurrentFrame();
37
- auto hostObjectInstance =
38
- std::make_shared<JsiSkImage>(getContext(), std::move(image));
39
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
40
- runtime, hostObjectInstance, getContext());
40
+ return std::make_shared<JsiSkImage>(getContext(), std::move(image));
41
41
  }
42
42
 
43
- JSI_HOST_FUNCTION(getFrameCount) {
44
- return static_cast<int>(getObject()->getFrameCount());
45
- }
43
+ int getFrameCount() { return static_cast<int>(getObject()->getFrameCount()); }
46
44
 
47
- JSI_HOST_FUNCTION(currentFrameDuration) {
45
+ int currentFrameDuration() {
48
46
  return static_cast<int>(getObject()->currentFrameDuration());
49
47
  }
50
48
 
51
- JSI_HOST_FUNCTION(decodeNextFrame) {
49
+ int decodeNextFrame() {
52
50
  return static_cast<int>(getObject()->decodeNextFrame());
53
51
  }
54
52
 
55
- EXPORT_JSI_API_TYPENAME(JsiSkAnimatedImage, AnimatedImage)
56
-
57
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkAnimatedImage, dispose),
58
- JSI_EXPORT_FUNC(JsiSkAnimatedImage, getFrameCount),
59
- JSI_EXPORT_FUNC(JsiSkAnimatedImage, getCurrentFrame),
60
- JSI_EXPORT_FUNC(JsiSkAnimatedImage,
61
- currentFrameDuration),
62
- JSI_EXPORT_FUNC(JsiSkAnimatedImage, decodeNextFrame))
53
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
54
+ installCommon(runtime, prototype);
55
+ installMethod(runtime, prototype, "getFrameCount",
56
+ &JsiSkAnimatedImage::getFrameCount);
57
+ installMethod(runtime, prototype, "getCurrentFrame",
58
+ &JsiSkAnimatedImage::getCurrentFrame);
59
+ installMethod(runtime, prototype, "currentFrameDuration",
60
+ &JsiSkAnimatedImage::currentFrameDuration);
61
+ installMethod(runtime, prototype, "decodeNextFrame",
62
+ &JsiSkAnimatedImage::decodeNextFrame);
63
+ }
63
64
 
64
65
  JsiSkAnimatedImage(std::shared_ptr<RNSkPlatformContext> context,
65
66
  const sk_sp<SkAnimatedImage> image)
66
- : JsiSkWrappingSkPtrHostObject<SkAnimatedImage>(std::move(context),
67
- std::move(image)) {}
67
+ : JsiSkWrappingSkPtrNativeObject<JsiSkAnimatedImage, SkAnimatedImage>(
68
+ std::move(context), std::move(image)) {}
68
69
 
69
- size_t getMemoryPressure() const override {
70
+ size_t getMemoryPressure() override {
70
71
  auto animation = getObject();
71
72
  if (!animation) {
72
73
  return 0;
@@ -131,8 +132,6 @@ public:
131
132
 
132
133
  return estimated;
133
134
  }
134
-
135
- std::string getObjectType() const override { return "JsiSkAnimatedImage"; }
136
135
  };
137
136
 
138
137
  } // namespace RNSkia
@@ -2,45 +2,46 @@
2
2
 
3
3
  #include <memory>
4
4
  #include <utility>
5
+ #include <variant>
5
6
 
6
7
  #include <jsi/jsi.h>
7
8
 
8
- #include "jsi/JsiPromises.h"
9
9
  #include "JsiSkAnimatedImage.h"
10
+ #include "JsiSkConverters.h"
10
11
  #include "JsiSkData.h"
11
- #include "JsiSkHostObjects.h"
12
+ #include "JsiSkNativeObjects.h"
13
+ #include "jsi/JsiPromises.h"
12
14
 
13
15
  namespace RNSkia {
14
16
 
15
17
  namespace jsi = facebook::jsi;
16
18
 
17
- class JsiSkAnimatedImageFactory : public JsiSkHostObject {
19
+ class JsiSkAnimatedImageFactory
20
+ : public JsiSkNativeObject<JsiSkAnimatedImageFactory> {
18
21
  public:
19
- JSI_HOST_FUNCTION(MakeAnimatedImageFromEncoded) {
20
- auto data = JsiSkData::fromValue(runtime, arguments[0]);
22
+ static constexpr const char *CLASS_NAME = "AnimatedImageFactory";
23
+
24
+ std::variant<std::nullptr_t, std::shared_ptr<JsiSkAnimatedImage>>
25
+ MakeAnimatedImageFromEncoded(sk_sp<SkData> data) {
21
26
  auto codec = SkAndroidCodec::MakeFromData(data);
22
27
  auto image = SkAnimatedImage::Make(std::move(codec));
23
28
  if (image == nullptr) {
24
- return jsi::Value::null();
29
+ return nullptr;
25
30
  }
26
- auto hostObjectInstance =
27
- std::make_shared<JsiSkAnimatedImage>(getContext(), std::move(image));
28
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
29
- runtime, hostObjectInstance, getContext());
31
+ return std::make_shared<JsiSkAnimatedImage>(getContext(),
32
+ std::move(image));
30
33
  }
31
34
 
32
- size_t getMemoryPressure() const override { return 1024; }
35
+ size_t getMemoryPressure() override { return 1024; }
33
36
 
34
- std::string getObjectType() const override {
35
- return "JsiSkAnimatedImageFactory";
37
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
38
+ installMethod(runtime, prototype, "MakeAnimatedImageFromEncoded",
39
+ &JsiSkAnimatedImageFactory::MakeAnimatedImageFromEncoded);
36
40
  }
37
41
 
38
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkAnimatedImageFactory,
39
- MakeAnimatedImageFromEncoded))
40
-
41
42
  explicit JsiSkAnimatedImageFactory(
42
43
  std::shared_ptr<RNSkPlatformContext> context)
43
- : JsiSkHostObject(std::move(context)) {}
44
+ : JsiSkNativeObject<JsiSkAnimatedImageFactory>(std::move(context)) {}
44
45
  };
45
46
 
46
47
  } // namespace RNSkia