@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
@@ -0,0 +1,410 @@
1
+ #pragma once
2
+
3
+ #include <memory>
4
+ #include <optional>
5
+ #include <utility>
6
+ #include <variant>
7
+
8
+ #include <jsi/jsi.h>
9
+
10
+ #include "jsi/JSIConverter.h"
11
+
12
+ #pragma clang diagnostic push
13
+ #pragma clang diagnostic ignored "-Wdocumentation"
14
+
15
+ #include "include/core/SkColor.h"
16
+ #include "include/core/SkPoint3.h"
17
+ #include "include/core/SkRefCnt.h"
18
+ #include "include/core/SkSize.h"
19
+
20
+ #pragma clang diagnostic pop
21
+
22
+ // Forward declarations of the wrapped Skia types. Only the trait below needs
23
+ // them; the converter bodies are templates and are instantiated lazily, at
24
+ // which point the classes are complete.
25
+ class SkImage;
26
+ class SkShader;
27
+ class SkTypeface;
28
+ class SkColorFilter;
29
+ class SkImageFilter;
30
+ class SkMaskFilter;
31
+ class SkPathEffect;
32
+ class SkData;
33
+ class SkPicture;
34
+ class SkTextBlob;
35
+ class SkRuntimeEffect;
36
+ class SkRuntimeEffectBuilder;
37
+ class SkVertices;
38
+ class SkFontMgr;
39
+ class SkSVGDOM;
40
+ class SkPaint;
41
+ class SkFont;
42
+ class SkMatrix;
43
+ class SkPathBuilder;
44
+ struct SkRect;
45
+ struct SkPoint;
46
+ class SkRRect;
47
+ class SkFontStyle;
48
+ struct SkImageInfo;
49
+ struct SkRSXform;
50
+
51
+ namespace skia {
52
+ namespace textlayout {
53
+ class TextStyle;
54
+ struct ParagraphStyle;
55
+ class TypefaceFontProvider;
56
+ } // namespace textlayout
57
+ } // namespace skia
58
+
59
+ namespace RNSkia {
60
+
61
+ namespace jsi = facebook::jsi;
62
+
63
+ class JsiSkImage;
64
+ class JsiSkShader;
65
+ class JsiSkTypeface;
66
+ class JsiSkColorFilter;
67
+ class JsiSkImageFilter;
68
+ class JsiSkMaskFilter;
69
+ class JsiSkPathEffect;
70
+ class JsiSkData;
71
+ class JsiSkPicture;
72
+ class JsiSkTextBlob;
73
+ class JsiSkRuntimeEffect;
74
+ class JsiSkRuntimeShaderBuilder;
75
+ class JsiSkVertices;
76
+ class JsiSkFontMgr;
77
+ class JsiSkSVG;
78
+ class JsiSkPaint;
79
+ class JsiSkFont;
80
+ class JsiSkMatrix;
81
+ class JsiSkPath;
82
+ class JsiSkRect;
83
+ class JsiSkPoint;
84
+ class JsiSkRRect;
85
+ class JsiSkFontStyle;
86
+ class JsiSkImageInfo;
87
+ class JsiSkRSXform;
88
+ class JsiSkTextStyle;
89
+ class JsiSkParagraphStyle;
90
+ class JsiSkTypefaceFontProvider;
91
+
92
+ /**
93
+ * Maps a wrapped Skia type to the JsiSk* class whose `fromValue` knows how to
94
+ * read it from a JS value (including the plain-object fallbacks, e.g. SkRect
95
+ * from {x, y, width, height}). The JSIConverter specializations below are
96
+ * enabled for exactly the types listed here.
97
+ */
98
+ template <typename T> struct JsiSkWrapperFor;
99
+
100
+ template <> struct JsiSkWrapperFor<SkImage> {
101
+ using type = JsiSkImage;
102
+ };
103
+ template <> struct JsiSkWrapperFor<SkShader> {
104
+ using type = JsiSkShader;
105
+ };
106
+ template <> struct JsiSkWrapperFor<SkTypeface> {
107
+ using type = JsiSkTypeface;
108
+ };
109
+ template <> struct JsiSkWrapperFor<SkColorFilter> {
110
+ using type = JsiSkColorFilter;
111
+ };
112
+ template <> struct JsiSkWrapperFor<SkImageFilter> {
113
+ using type = JsiSkImageFilter;
114
+ };
115
+ template <> struct JsiSkWrapperFor<SkMaskFilter> {
116
+ using type = JsiSkMaskFilter;
117
+ };
118
+ template <> struct JsiSkWrapperFor<SkPathEffect> {
119
+ using type = JsiSkPathEffect;
120
+ };
121
+ template <> struct JsiSkWrapperFor<SkData> {
122
+ using type = JsiSkData;
123
+ };
124
+ template <> struct JsiSkWrapperFor<SkPicture> {
125
+ using type = JsiSkPicture;
126
+ };
127
+ template <> struct JsiSkWrapperFor<SkTextBlob> {
128
+ using type = JsiSkTextBlob;
129
+ };
130
+ template <> struct JsiSkWrapperFor<SkRuntimeEffect> {
131
+ using type = JsiSkRuntimeEffect;
132
+ };
133
+ template <> struct JsiSkWrapperFor<SkRuntimeEffectBuilder> {
134
+ using type = JsiSkRuntimeShaderBuilder;
135
+ };
136
+ template <> struct JsiSkWrapperFor<SkVertices> {
137
+ using type = JsiSkVertices;
138
+ };
139
+ template <> struct JsiSkWrapperFor<SkFontMgr> {
140
+ using type = JsiSkFontMgr;
141
+ };
142
+ template <> struct JsiSkWrapperFor<SkSVGDOM> {
143
+ using type = JsiSkSVG;
144
+ };
145
+ template <> struct JsiSkWrapperFor<SkPaint> {
146
+ using type = JsiSkPaint;
147
+ };
148
+ template <> struct JsiSkWrapperFor<SkFont> {
149
+ using type = JsiSkFont;
150
+ };
151
+ template <> struct JsiSkWrapperFor<SkMatrix> {
152
+ using type = JsiSkMatrix;
153
+ };
154
+ // Note: JsiSkPath wraps an SkPathBuilder (not an SkPath).
155
+ template <> struct JsiSkWrapperFor<SkPathBuilder> {
156
+ using type = JsiSkPath;
157
+ };
158
+ template <> struct JsiSkWrapperFor<SkRect> {
159
+ using type = JsiSkRect;
160
+ };
161
+ template <> struct JsiSkWrapperFor<SkPoint> {
162
+ using type = JsiSkPoint;
163
+ };
164
+ template <> struct JsiSkWrapperFor<SkRRect> {
165
+ using type = JsiSkRRect;
166
+ };
167
+ template <> struct JsiSkWrapperFor<SkFontStyle> {
168
+ using type = JsiSkFontStyle;
169
+ };
170
+ template <> struct JsiSkWrapperFor<SkImageInfo> {
171
+ using type = JsiSkImageInfo;
172
+ };
173
+ template <> struct JsiSkWrapperFor<SkRSXform> {
174
+ using type = JsiSkRSXform;
175
+ };
176
+ template <> struct JsiSkWrapperFor<skia::textlayout::TextStyle> {
177
+ using type = JsiSkTextStyle;
178
+ };
179
+ template <> struct JsiSkWrapperFor<skia::textlayout::ParagraphStyle> {
180
+ using type = JsiSkParagraphStyle;
181
+ };
182
+ template <> struct JsiSkWrapperFor<skia::textlayout::TypefaceFontProvider> {
183
+ using type = JsiSkTypefaceFontProvider;
184
+ };
185
+
186
+ template <typename T>
187
+ using JsiSkWrapperFor_t = typename JsiSkWrapperFor<T>::type;
188
+
189
+ class JsiSkColor;
190
+
191
+ /**
192
+ * SkColor is a typedef of uint32_t, which already has a JSIConverter, so
193
+ * color arguments use this strong typedef to route through
194
+ * JsiSkColor::fromValue (array | Float32Array) instead.
195
+ */
196
+ struct JsiColor {
197
+ SkColor color;
198
+ operator SkColor() const { return color; }
199
+ };
200
+
201
+ template <> struct JsiSkWrapperFor<JsiColor> {
202
+ using type = JsiSkColor;
203
+ };
204
+
205
+ /**
206
+ * An argument the JS API treats as absent when it is omitted, undefined, or
207
+ * null. This matches the pervasive `hasOptionalArgument` pattern of the raw
208
+ * bindings. Use std::optional instead when null must be distinguished from
209
+ * undefined (it treats only omitted/undefined as absent).
210
+ */
211
+ template <typename T> struct JsiOptional : std::optional<T> {
212
+ using std::optional<T>::optional;
213
+ };
214
+
215
+ } // namespace RNSkia
216
+
217
+ namespace rnwgpu {
218
+
219
+ /**
220
+ * sk_sp<T> arguments (SkImage, SkShader, ...). Delegates to the wrapper
221
+ * class's fromValue, so wrapper objects and any legacy fallback shapes keep
222
+ * working. Conversion is strict: null/undefined throw, matching the previous
223
+ * raw JSI_HOST_FUNCTION bodies. Arguments that explicitly accept null use
224
+ * std::variant<std::nullptr_t, sk_sp<T>> (see below); arguments that may be
225
+ * omitted use std::optional.
226
+ *
227
+ * There is intentionally no toJSI: building a wrapper requires the platform
228
+ * context, so methods return std::shared_ptr<JsiSkFoo> built with
229
+ * getContext() instead (handled by the NativeObject converter).
230
+ */
231
+ template <typename T>
232
+ struct JSIConverter<sk_sp<T>,
233
+ std::void_t<typename RNSkia::JsiSkWrapperFor<T>::type>> {
234
+ static sk_sp<T> fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
235
+ bool outOfBound) {
236
+ return RNSkia::JsiSkWrapperFor_t<T>::fromValue(runtime, arg);
237
+ }
238
+ };
239
+
240
+ /**
241
+ * std::shared_ptr<T> arguments for the wrapped non-refcounted Skia types
242
+ * (SkPaint, SkFont, SkMatrix, SkRect, ...). Same rules as sk_sp above.
243
+ */
244
+ template <typename T>
245
+ struct JSIConverter<std::shared_ptr<T>,
246
+ std::void_t<typename RNSkia::JsiSkWrapperFor<T>::type>> {
247
+ static std::shared_ptr<T> fromJSI(jsi::Runtime &runtime,
248
+ const jsi::Value &arg, bool outOfBound) {
249
+ return RNSkia::JsiSkWrapperFor_t<T>::fromValue(runtime, arg);
250
+ }
251
+ };
252
+
253
+ /**
254
+ * Nullable sk_sp<T> arguments: JS null maps to the std::nullptr_t
255
+ * alternative, anything else goes through the strict converter above.
256
+ */
257
+ template <typename T>
258
+ struct JSIConverter<std::variant<std::nullptr_t, sk_sp<T>>,
259
+ std::void_t<typename RNSkia::JsiSkWrapperFor<T>::type>> {
260
+ using Target = std::variant<std::nullptr_t, sk_sp<T>>;
261
+
262
+ static Target fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
263
+ bool outOfBound) {
264
+ if (arg.isNull()) {
265
+ return Target(nullptr);
266
+ }
267
+ return Target(JSIConverter<sk_sp<T>>::fromJSI(runtime, arg, outOfBound));
268
+ }
269
+ };
270
+
271
+ /**
272
+ * SkRect / SkPoint / SkMatrix / SkRSXform by value — the wrapper's fromValue
273
+ * provides the plain-object/array fallbacks. fromJSI only; returning these
274
+ * types is done through std::shared_ptr<JsiSkRect> etc. (see above).
275
+ *
276
+ * All bodies below reach the wrapper through JsiSkWrapperFor_t<T> so the
277
+ * name stays dependent on T and is only looked up at instantiation, when the
278
+ * wrapper class is complete (two-phase lookup would otherwise bind — and
279
+ * reject — the incomplete forward declaration at definition time).
280
+ */
281
+ template <typename T>
282
+ struct JSIConverter<T, std::enable_if_t<std::is_same_v<T, SkRect> ||
283
+ std::is_same_v<T, SkMatrix> ||
284
+ std::is_same_v<T, SkRSXform>>> {
285
+ static T fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
286
+ bool outOfBound) {
287
+ return *RNSkia::JsiSkWrapperFor_t<T>::fromValue(runtime, arg);
288
+ }
289
+ };
290
+
291
+ // SkPoint additionally converts back to a plain {x, y} object — this is what
292
+ // the raw bindings returned for point results (e.g. getLastPt), NOT a Point
293
+ // wrapper. Methods that should return a wrapper use
294
+ // std::shared_ptr<JsiSkPoint> instead.
295
+ template <typename T>
296
+ struct JSIConverter<T, std::enable_if_t<std::is_same_v<T, SkPoint>>> {
297
+ static T fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
298
+ bool outOfBound) {
299
+ return *RNSkia::JsiSkWrapperFor_t<T>::fromValue(runtime, arg);
300
+ }
301
+ static jsi::Value toJSI(jsi::Runtime &runtime, const T &point) {
302
+ jsi::Object result(runtime);
303
+ result.setProperty(runtime, "x", static_cast<double>(point.x()));
304
+ result.setProperty(runtime, "y", static_cast<double>(point.y()));
305
+ return result;
306
+ }
307
+ };
308
+
309
+ // Paragraph style values — their fromValue helpers return by value and read
310
+ // plain JS style objects.
311
+ template <typename T>
312
+ struct JSIConverter<
313
+ T, std::enable_if_t<std::is_same_v<T, skia::textlayout::TextStyle> ||
314
+ std::is_same_v<T, skia::textlayout::ParagraphStyle>>> {
315
+ static T fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
316
+ bool outOfBound) {
317
+ return RNSkia::JsiSkWrapperFor_t<T>::fromValue(runtime, arg);
318
+ }
319
+ };
320
+
321
+ // Colors via the JsiColor strong typedef (see above).
322
+ template <typename T>
323
+ struct JSIConverter<T, std::enable_if_t<std::is_same_v<T, RNSkia::JsiColor>>> {
324
+ static T fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
325
+ bool outOfBound) {
326
+ return {RNSkia::JsiSkWrapperFor_t<T>::fromValue(runtime, arg)};
327
+ }
328
+ static jsi::Value toJSI(jsi::Runtime &runtime, const T &arg) {
329
+ return RNSkia::JsiSkWrapperFor_t<T>::toValue(runtime, arg.color);
330
+ }
331
+ };
332
+
333
+ // JsiOptional<T>: omitted | undefined | null -> absent
334
+ template <typename T> struct JSIConverter<RNSkia::JsiOptional<T>> {
335
+ static RNSkia::JsiOptional<T> fromJSI(jsi::Runtime &runtime,
336
+ const jsi::Value &arg,
337
+ bool outOfBound) {
338
+ if (outOfBound || arg.isUndefined() || arg.isNull()) {
339
+ return {};
340
+ }
341
+ return {JSIConverter<T>::fromJSI(runtime, arg, outOfBound)};
342
+ }
343
+ static jsi::Value toJSI(jsi::Runtime &runtime,
344
+ const RNSkia::JsiOptional<T> &arg) {
345
+ if (!arg.has_value()) {
346
+ return jsi::Value::null();
347
+ }
348
+ return JSIConverter<T>::toJSI(runtime, arg.value());
349
+ }
350
+ };
351
+
352
+ // SkPoint3 <- {x, y, z}
353
+ template <> struct JSIConverter<SkPoint3> {
354
+ static SkPoint3 fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
355
+ bool outOfBound) {
356
+ auto object = arg.asObject(runtime);
357
+ auto x = object.getProperty(runtime, "x").asNumber();
358
+ auto y = object.getProperty(runtime, "y").asNumber();
359
+ auto z = object.getProperty(runtime, "z").asNumber();
360
+ return SkPoint3::Make(x, y, z);
361
+ }
362
+ };
363
+
364
+ // std::string | null (nullable string results)
365
+ template <> struct JSIConverter<std::variant<std::nullptr_t, std::string>> {
366
+ using Target = std::variant<std::nullptr_t, std::string>;
367
+ static Target fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
368
+ bool outOfBound) {
369
+ if (arg.isNull()) {
370
+ return Target(nullptr);
371
+ }
372
+ return Target(JSIConverter<std::string>::fromJSI(runtime, arg, outOfBound));
373
+ }
374
+ static jsi::Value toJSI(jsi::Runtime &runtime, const Target &arg) {
375
+ if (std::holds_alternative<std::nullptr_t>(arg)) {
376
+ return jsi::Value::null();
377
+ }
378
+ return JSIConverter<std::string>::toJSI(runtime, std::get<std::string>(arg));
379
+ }
380
+ };
381
+
382
+ // SkSize -> {width, height} (fractional)
383
+ template <> struct JSIConverter<SkSize> {
384
+ static jsi::Value toJSI(jsi::Runtime &runtime, const SkSize &size) {
385
+ jsi::Object result(runtime);
386
+ result.setProperty(runtime, "width", static_cast<double>(size.width()));
387
+ result.setProperty(runtime, "height", static_cast<double>(size.height()));
388
+ return result;
389
+ }
390
+ };
391
+
392
+ // SkISize <> {width, height}
393
+ template <> struct JSIConverter<SkISize> {
394
+ static SkISize fromJSI(jsi::Runtime &runtime, const jsi::Value &arg,
395
+ bool outOfBound) {
396
+ auto object = arg.asObject(runtime);
397
+ auto width = object.getProperty(runtime, "width").asNumber();
398
+ auto height = object.getProperty(runtime, "height").asNumber();
399
+ return SkISize::Make(static_cast<int32_t>(width),
400
+ static_cast<int32_t>(height));
401
+ }
402
+ static jsi::Value toJSI(jsi::Runtime &runtime, const SkISize &size) {
403
+ jsi::Object result(runtime);
404
+ result.setProperty(runtime, "width", static_cast<double>(size.width()));
405
+ result.setProperty(runtime, "height", static_cast<double>(size.height()));
406
+ return result;
407
+ }
408
+ };
409
+
410
+ } // namespace rnwgpu
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include <jsi/jsi.h>
7
7
 
8
- #include "JsiSkHostObjects.h"
8
+ #include "JsiSkNativeObjects.h"
9
9
 
10
10
  #pragma clang diagnostic push
11
11
  #pragma clang diagnostic ignored "-Wdocumentation"
@@ -19,19 +19,25 @@ namespace RNSkia {
19
19
 
20
20
  namespace jsi = facebook::jsi;
21
21
 
22
- class JsiSkData : public JsiSkWrappingSkPtrHostObject<SkData> {
22
+ class JsiSkData : public JsiSkWrappingSkPtrNativeObject<JsiSkData, SkData> {
23
23
  public:
24
+ static constexpr const char *CLASS_NAME = "Data";
25
+
24
26
  JsiSkData(std::shared_ptr<RNSkPlatformContext> context, sk_sp<SkData> asset)
25
- : JsiSkWrappingSkPtrHostObject(std::move(context), std::move(asset)) {}
27
+ : JsiSkWrappingSkPtrNativeObject<JsiSkData, SkData>(std::move(context),
28
+ std::move(asset)) {}
26
29
 
27
- size_t getMemoryPressure() const override {
30
+ size_t getMemoryPressure() override {
28
31
  auto data = getObject();
29
32
  return data ? data->size() : 0;
30
33
  }
31
34
 
32
- std::string getObjectType() const override { return "JsiSkData"; }
35
+ static sk_sp<SkData> fromValue(jsi::Runtime &runtime, const jsi::Value &obj) {
36
+ return objectFromValue(runtime, obj);
37
+ }
33
38
 
34
- EXPORT_JSI_API_TYPENAME(JsiSkData, Data)
35
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkData, dispose))
39
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
40
+ installCommon(runtime, prototype);
41
+ }
36
42
  };
37
43
  } // namespace RNSkia
@@ -1,20 +1,24 @@
1
1
  #pragma once
2
2
 
3
3
  #include <memory>
4
+ #include <string>
4
5
  #include <utility>
5
6
 
6
7
  #include <jsi/jsi.h>
7
8
 
8
- #include "jsi/JsiPromises.h"
9
9
  #include "JsiSkData.h"
10
+ #include "JsiSkNativeObjects.h"
10
11
  #include "api/third_party/base64.h"
12
+ #include "jsi/JsiPromises.h"
11
13
 
12
14
  namespace RNSkia {
13
15
 
14
16
  namespace jsi = facebook::jsi;
15
17
 
16
- class JsiSkDataFactory : public JsiSkHostObject {
18
+ class JsiSkDataFactory : public JsiSkNativeObject<JsiSkDataFactory> {
17
19
  public:
20
+ static constexpr const char *CLASS_NAME = "DataFactory";
21
+
18
22
  JSI_HOST_FUNCTION(fromURI) {
19
23
  auto jsiLocalUri = arguments[0].asString(runtime);
20
24
  auto localUri = jsiLocalUri.utf8(runtime);
@@ -38,10 +42,9 @@ public:
38
42
  context = std::move(context),
39
43
  promise = std::move(promise),
40
44
  result = std::move(result)]() {
41
- auto hostObjectInstance =
42
- std::make_shared<JsiSkData>(context, std::move(result));
43
- promise->resolve(JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
44
- runtime, hostObjectInstance, context));
45
+ promise->resolve(makeJsiObject(
46
+ runtime,
47
+ std::make_shared<JsiSkData>(context, std::move(result))));
45
48
  });
46
49
  });
47
50
  });
@@ -56,51 +59,43 @@ public:
56
59
 
57
60
  auto data =
58
61
  SkData::MakeWithCopy(buffer.data(runtime), buffer.size(runtime));
59
- auto hostObjectInstance =
60
- std::make_shared<JsiSkData>(getContext(), std::move(data));
61
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
62
- runtime, hostObjectInstance, getContext());
62
+ return makeJsiObject(
63
+ runtime, std::make_shared<JsiSkData>(getContext(), std::move(data)));
63
64
  }
64
65
 
65
- JSI_HOST_FUNCTION(fromBase64) {
66
- auto base64 = arguments[0].asString(runtime);
67
- auto base64Str = base64.utf8(runtime);
66
+ std::shared_ptr<JsiSkData> fromBase64(std::string base64Str) {
68
67
  auto size = base64Str.size();
69
68
 
70
69
  // Calculate length
71
70
  size_t len;
72
- auto err =
73
- Base64::Decode(&base64.utf8(runtime).c_str()[0], size, nullptr, &len);
71
+ auto err = Base64::Decode(base64Str.c_str(), size, nullptr, &len);
74
72
  if (err != Base64::Error::kNone) {
75
- throw jsi::JSError(runtime, "Error decoding base64 string");
76
- return jsi::Value::undefined();
73
+ throw std::runtime_error("Error decoding base64 string");
77
74
  }
78
75
 
79
76
  // Create data object and decode
80
77
  auto data = SkData::MakeUninitialized(len);
81
- err = Base64::Decode(&base64.utf8(runtime).c_str()[0], size,
82
- data->writable_data(), &len);
78
+ err = Base64::Decode(base64Str.c_str(), size, data->writable_data(), &len);
83
79
  if (err != Base64::Error::kNone) {
84
- throw jsi::JSError(runtime, "Error decoding base64 string");
85
- return jsi::Value::undefined();
80
+ throw std::runtime_error("Error decoding base64 string");
86
81
  }
87
82
 
88
- auto hostObjectInstance =
89
- std::make_shared<JsiSkData>(getContext(), std::move(data));
90
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
91
- runtime, hostObjectInstance, getContext());
83
+ return std::make_shared<JsiSkData>(getContext(), std::move(data));
92
84
  }
93
85
 
94
- size_t getMemoryPressure() const override { return 1024; }
86
+ size_t getMemoryPressure() override { return 1024; }
95
87
 
96
- std::string getObjectType() const override { return "JsiSkDataFactory"; }
97
-
98
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkDataFactory, fromURI),
99
- JSI_EXPORT_FUNC(JsiSkDataFactory, fromBytes),
100
- JSI_EXPORT_FUNC(JsiSkDataFactory, fromBase64))
88
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
89
+ installHostMethod(runtime, prototype, "fromURI",
90
+ &JsiSkDataFactory::fromURI);
91
+ installHostMethod(runtime, prototype, "fromBytes",
92
+ &JsiSkDataFactory::fromBytes);
93
+ installMethod(runtime, prototype, "fromBase64",
94
+ &JsiSkDataFactory::fromBase64);
95
+ }
101
96
 
102
97
  explicit JsiSkDataFactory(std::shared_ptr<RNSkPlatformContext> context)
103
- : JsiSkHostObject(std::move(context)) {}
98
+ : JsiSkNativeObject<JsiSkDataFactory>(std::move(context)) {}
104
99
  };
105
100
 
106
101
  } // namespace RNSkia