@shopify/react-native-skia 2.10.0 → 2.10.2

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 (332) hide show
  1. package/android/CMakeLists.txt +7 -41
  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 +14 -20
  5. package/cpp/api/JsiSkAnimatedImage.h +13 -16
  6. package/cpp/api/JsiSkAnimatedImageFactory.h +9 -7
  7. package/cpp/api/JsiSkApi.h +94 -90
  8. package/cpp/api/JsiSkCanvas.h +108 -251
  9. package/cpp/api/JsiSkColorFilterFactory.h +45 -63
  10. package/cpp/api/JsiSkContourMeasure.h +19 -29
  11. package/cpp/api/JsiSkContourMeasureIter.h +6 -6
  12. package/cpp/api/JsiSkConverters.h +410 -0
  13. package/cpp/api/JsiSkDataFactory.h +9 -15
  14. package/cpp/api/JsiSkFont.h +99 -180
  15. package/cpp/api/JsiSkFontMgr.h +19 -21
  16. package/cpp/api/JsiSkFontMgrFactory.h +4 -5
  17. package/cpp/api/JsiSkImage.h +66 -66
  18. package/cpp/api/JsiSkImageFactory.h +66 -63
  19. package/cpp/api/JsiSkImageFilterFactory.h +354 -608
  20. package/cpp/api/JsiSkImageInfo.h +10 -13
  21. package/cpp/api/JsiSkMaskFilterFactory.h +8 -11
  22. package/cpp/api/JsiSkMatrix.h +36 -73
  23. package/cpp/api/JsiSkNativeObjects.h +64 -96
  24. package/cpp/api/JsiSkPaint.h +73 -131
  25. package/cpp/api/JsiSkParagraph.h +36 -53
  26. package/cpp/api/JsiSkParagraphBuilder.h +36 -64
  27. package/cpp/api/JsiSkParagraphBuilderFactory.h +11 -16
  28. package/cpp/api/JsiSkPath.h +216 -349
  29. package/cpp/api/JsiSkPathBuilder.h +133 -269
  30. package/cpp/api/JsiSkPathBuilderFactory.h +11 -11
  31. package/cpp/api/JsiSkPathEffectFactory.h +52 -72
  32. package/cpp/api/JsiSkPathFactory.h +129 -195
  33. package/cpp/api/JsiSkPicture.h +12 -18
  34. package/cpp/api/JsiSkPictureRecorder.h +14 -15
  35. package/cpp/api/JsiSkPoint.h +4 -4
  36. package/cpp/api/JsiSkRRect.h +7 -8
  37. package/cpp/api/JsiSkRSXform.h +10 -23
  38. package/cpp/api/JsiSkRect.h +23 -31
  39. package/cpp/api/JsiSkRuntimeEffect.h +67 -83
  40. package/cpp/api/JsiSkRuntimeEffectFactory.h +6 -10
  41. package/cpp/api/JsiSkRuntimeShaderBuilder.h +5 -14
  42. package/cpp/api/JsiSkSVG.h +4 -4
  43. package/cpp/api/JsiSkShaderFactory.h +153 -225
  44. package/cpp/api/JsiSkSkottie.h +104 -126
  45. package/cpp/api/JsiSkSurface.h +11 -14
  46. package/cpp/api/JsiSkSurfaceFactory.h +6 -7
  47. package/cpp/api/JsiSkTextBlobFactory.h +31 -54
  48. package/cpp/api/JsiSkTypeface.h +8 -12
  49. package/cpp/api/JsiSkTypefaceFactory.h +9 -7
  50. package/cpp/api/JsiSkTypefaceFontProvider.h +22 -23
  51. package/cpp/api/JsiSkTypefaceFontProviderFactory.h +5 -6
  52. package/cpp/api/JsiSkVertices.h +6 -8
  53. package/cpp/api/JsiSkiaContext.h +10 -11
  54. package/cpp/api/JsiVideo.h +31 -71
  55. package/cpp/jsi/EnumMapper.h +2 -2
  56. package/cpp/jsi/JSIConverter.h +2 -33
  57. package/cpp/jsi/NativeObject.h +24 -19
  58. package/cpp/jsi/Promise.cpp +2 -2
  59. package/cpp/jsi/Promise.h +2 -2
  60. package/cpp/rnskia/RNDawnContext.h +18 -2
  61. package/cpp/rnskia/RNDawnInterop.cpp +19 -0
  62. package/cpp/rnskia/RNDawnUtils.h +18 -1
  63. package/cpp/rnskia/RNSkManager.cpp +5 -162
  64. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +2 -0
  65. package/lib/commonjs/mock/index.js +0 -1
  66. package/lib/commonjs/mock/index.js.map +1 -1
  67. package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +15 -6
  68. package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
  69. package/lib/commonjs/skia/types/Skia.d.ts +5 -15
  70. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  71. package/lib/commonjs/skia/types/index.d.ts +0 -1
  72. package/lib/commonjs/skia/types/index.js +0 -11
  73. package/lib/commonjs/skia/types/index.js.map +1 -1
  74. package/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  75. package/lib/commonjs/skia/web/JsiSkImageFactory.js +2 -2
  76. package/lib/commonjs/skia/web/JsiSkImageFactory.js.map +1 -1
  77. package/lib/commonjs/skia/web/JsiSkia.js +1 -4
  78. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  79. package/lib/commonjs/views/index.d.ts +0 -1
  80. package/lib/commonjs/views/index.js +0 -11
  81. package/lib/commonjs/views/index.js.map +1 -1
  82. package/lib/module/mock/index.js +0 -1
  83. package/lib/module/mock/index.js.map +1 -1
  84. package/lib/module/skia/types/Image/ImageFactory.d.ts +15 -6
  85. package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
  86. package/lib/module/skia/types/Skia.d.ts +5 -15
  87. package/lib/module/skia/types/Skia.js.map +1 -1
  88. package/lib/module/skia/types/index.d.ts +0 -1
  89. package/lib/module/skia/types/index.js +0 -1
  90. package/lib/module/skia/types/index.js.map +1 -1
  91. package/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  92. package/lib/module/skia/web/JsiSkImageFactory.js +2 -2
  93. package/lib/module/skia/web/JsiSkImageFactory.js.map +1 -1
  94. package/lib/module/skia/web/JsiSkia.js +1 -4
  95. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  96. package/lib/module/views/index.d.ts +0 -1
  97. package/lib/module/views/index.js +0 -1
  98. package/lib/module/views/index.js.map +1 -1
  99. package/lib/typescript/lib/commonjs/mock/index.d.ts +0 -1
  100. package/lib/typescript/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  101. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -2
  102. package/lib/typescript/lib/module/mock/index.d.ts +0 -2
  103. package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -2
  104. package/lib/typescript/lib/module/skia/types/index.d.ts +0 -1
  105. package/lib/typescript/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  106. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -2
  107. package/lib/typescript/lib/module/views/index.d.ts +0 -1
  108. package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +15 -6
  109. package/lib/typescript/src/skia/types/Skia.d.ts +5 -15
  110. package/lib/typescript/src/skia/types/index.d.ts +0 -1
  111. package/lib/typescript/src/skia/web/JsiSkImageFactory.d.ts +2 -2
  112. package/lib/typescript/src/views/index.d.ts +0 -1
  113. package/package.json +3 -4
  114. package/react-native-skia.podspec +38 -4
  115. package/src/mock/index.ts +0 -1
  116. package/src/skia/types/Image/ImageFactory.ts +15 -6
  117. package/src/skia/types/Skia.ts +5 -15
  118. package/src/skia/types/index.ts +0 -1
  119. package/src/skia/web/JsiSkImageFactory.ts +3 -3
  120. package/src/skia/web/JsiSkia.ts +2 -5
  121. package/src/views/index.ts +0 -1
  122. package/android/cpp/jni/JniWebGPUView.cpp +0 -112
  123. package/android/cpp/rnskia-android/SkiaPlatformContext.h +0 -26
  124. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUSurfaceView.java +0 -43
  125. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUTextureView.java +0 -50
  126. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUView.java +0 -98
  127. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewAPI.java +0 -19
  128. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewManager.java +0 -58
  129. package/apple/RNWebGPUAppleNativeBuffer.mm +0 -33
  130. package/apple/SkiaPlatformContext.h +0 -20
  131. package/apple/SkiaPlatformContext.mm +0 -21
  132. package/apple/SkiaWebGPUView.mm +0 -81
  133. package/apple/WebGPUMetalView.mm +0 -136
  134. package/cpp/rnwgpu/ArrayBuffer.h +0 -116
  135. package/cpp/rnwgpu/Canvas.h +0 -52
  136. package/cpp/rnwgpu/PlatformContext.h +0 -18
  137. package/cpp/rnwgpu/SurfaceRegistry.h +0 -605
  138. package/cpp/rnwgpu/api/AppleNativeBuffer.h +0 -22
  139. package/cpp/rnwgpu/api/Convertors.h +0 -783
  140. package/cpp/rnwgpu/api/External.h +0 -12
  141. package/cpp/rnwgpu/api/GPU.cpp +0 -162
  142. package/cpp/rnwgpu/api/GPU.h +0 -60
  143. package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -239
  144. package/cpp/rnwgpu/api/GPUAdapter.h +0 -60
  145. package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -57
  146. package/cpp/rnwgpu/api/GPUBindGroup.cpp +0 -3
  147. package/cpp/rnwgpu/api/GPUBindGroup.h +0 -51
  148. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +0 -52
  149. package/cpp/rnwgpu/api/GPUBuffer.cpp +0 -107
  150. package/cpp/rnwgpu/api/GPUBuffer.h +0 -88
  151. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -75
  152. package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -70
  153. package/cpp/rnwgpu/api/GPUCommandBuffer.h +0 -45
  154. package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +0 -179
  155. package/cpp/rnwgpu/api/GPUCommandEncoder.h +0 -111
  156. package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -79
  157. package/cpp/rnwgpu/api/GPUCompilationMessage.h +0 -36
  158. package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +0 -60
  159. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +0 -85
  160. package/cpp/rnwgpu/api/GPUComputePipeline.cpp +0 -12
  161. package/cpp/rnwgpu/api/GPUComputePipeline.h +0 -60
  162. package/cpp/rnwgpu/api/GPUDevice.cpp +0 -613
  163. package/cpp/rnwgpu/api/GPUDevice.h +0 -258
  164. package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +0 -7
  165. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +0 -40
  166. package/cpp/rnwgpu/api/GPUError.h +0 -35
  167. package/cpp/rnwgpu/api/GPUExtent3D.h +0 -66
  168. package/cpp/rnwgpu/api/GPUExternalTexture.cpp +0 -139
  169. package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -95
  170. package/cpp/rnwgpu/api/GPUFeatures.h +0 -203
  171. package/cpp/rnwgpu/api/GPUInternalError.h +0 -31
  172. package/cpp/rnwgpu/api/GPUOrigin2D.h +0 -55
  173. package/cpp/rnwgpu/api/GPUOrigin3D.h +0 -62
  174. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +0 -33
  175. package/cpp/rnwgpu/api/GPUPipelineLayout.h +0 -45
  176. package/cpp/rnwgpu/api/GPUQuerySet.cpp +0 -11
  177. package/cpp/rnwgpu/api/GPUQuerySet.h +0 -73
  178. package/cpp/rnwgpu/api/GPUQueue.cpp +0 -179
  179. package/cpp/rnwgpu/api/GPUQueue.h +0 -84
  180. package/cpp/rnwgpu/api/GPURenderBundle.h +0 -44
  181. package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +0 -131
  182. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +0 -110
  183. package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +0 -165
  184. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +0 -130
  185. package/cpp/rnwgpu/api/GPURenderPipeline.cpp +0 -13
  186. package/cpp/rnwgpu/api/GPURenderPipeline.h +0 -61
  187. package/cpp/rnwgpu/api/GPUSampler.h +0 -44
  188. package/cpp/rnwgpu/api/GPUShaderModule.cpp +0 -56
  189. package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
  190. package/cpp/rnwgpu/api/GPUSharedFence.cpp +0 -80
  191. package/cpp/rnwgpu/api/GPUSharedFence.h +0 -53
  192. package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -135
  193. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -75
  194. package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +0 -129
  195. package/cpp/rnwgpu/api/GPUSupportedLimits.h +0 -131
  196. package/cpp/rnwgpu/api/GPUTexture.cpp +0 -47
  197. package/cpp/rnwgpu/api/GPUTexture.h +0 -162
  198. package/cpp/rnwgpu/api/GPUTextureView.h +0 -44
  199. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +0 -60
  200. package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
  201. package/cpp/rnwgpu/api/ImageBitmap.h +0 -62
  202. package/cpp/rnwgpu/api/NativeBufferUtils.h +0 -87
  203. package/cpp/rnwgpu/api/RNWebGPU.h +0 -82
  204. package/cpp/rnwgpu/api/WebGPUConstants.h +0 -36
  205. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -64
  206. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -78
  207. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -56
  208. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -97
  209. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -57
  210. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -52
  211. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -56
  212. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -56
  213. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -59
  214. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +0 -39
  215. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +0 -76
  216. package/cpp/rnwgpu/api/descriptors/GPUColor.h +0 -66
  217. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -58
  218. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
  219. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -45
  220. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -45
  221. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -56
  222. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -58
  223. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -67
  224. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -56
  225. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -103
  226. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -109
  227. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -38
  228. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -90
  229. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -73
  230. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -62
  231. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
  232. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -65
  233. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -81
  234. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -54
  235. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
  236. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -54
  237. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -57
  238. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -69
  239. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -61
  240. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -55
  241. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -43
  242. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -45
  243. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -80
  244. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -81
  245. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -101
  246. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -92
  247. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -58
  248. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -103
  249. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -51
  250. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -45
  251. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -110
  252. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -60
  253. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -62
  254. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
  255. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +0 -58
  256. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +0 -51
  257. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -73
  258. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -64
  259. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -59
  260. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -59
  261. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -91
  262. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
  263. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -91
  264. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -64
  265. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -53
  266. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -62
  267. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -73
  268. package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1969
  269. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -213
  270. package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -58
  271. package/cpp/rnwgpu/async/RuntimeContext.cpp +0 -199
  272. package/cpp/rnwgpu/async/RuntimeContext.h +0 -134
  273. package/lib/commonjs/skia/types/WebGPU.d.ts +0 -184
  274. package/lib/commonjs/skia/types/WebGPU.js +0 -105
  275. package/lib/commonjs/skia/types/WebGPU.js.map +0 -1
  276. package/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -8
  277. package/lib/commonjs/specs/WebGPUViewNativeComponent.js +0 -10
  278. package/lib/commonjs/specs/WebGPUViewNativeComponent.js.map +0 -1
  279. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  280. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js +0 -103
  281. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  282. package/lib/commonjs/specs/utils.d.ts +0 -1
  283. package/lib/commonjs/specs/utils.js +0 -11
  284. package/lib/commonjs/specs/utils.js.map +0 -1
  285. package/lib/commonjs/views/WebGPUCanvas.d.ts +0 -33
  286. package/lib/commonjs/views/WebGPUCanvas.js +0 -79
  287. package/lib/commonjs/views/WebGPUCanvas.js.map +0 -1
  288. package/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -23
  289. package/lib/commonjs/views/WebGPUCanvas.web.js +0 -20
  290. package/lib/commonjs/views/WebGPUCanvas.web.js.map +0 -1
  291. package/lib/module/skia/types/WebGPU.d.ts +0 -184
  292. package/lib/module/skia/types/WebGPU.js +0 -99
  293. package/lib/module/skia/types/WebGPU.js.map +0 -1
  294. package/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -8
  295. package/lib/module/specs/WebGPUViewNativeComponent.js +0 -4
  296. package/lib/module/specs/WebGPUViewNativeComponent.js.map +0 -1
  297. package/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  298. package/lib/module/specs/WebGPUViewNativeComponent.web.js +0 -96
  299. package/lib/module/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  300. package/lib/module/specs/utils.d.ts +0 -1
  301. package/lib/module/specs/utils.js +0 -5
  302. package/lib/module/specs/utils.js.map +0 -1
  303. package/lib/module/views/WebGPUCanvas.d.ts +0 -33
  304. package/lib/module/views/WebGPUCanvas.js +0 -70
  305. package/lib/module/views/WebGPUCanvas.js.map +0 -1
  306. package/lib/module/views/WebGPUCanvas.web.d.ts +0 -23
  307. package/lib/module/views/WebGPUCanvas.web.js +0 -12
  308. package/lib/module/views/WebGPUCanvas.web.js.map +0 -1
  309. package/lib/typescript/lib/commonjs/skia/types/WebGPU.d.ts +0 -2
  310. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -4
  311. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -3
  312. package/lib/typescript/lib/commonjs/specs/utils.d.ts +0 -2
  313. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.d.ts +0 -6
  314. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -6
  315. package/lib/typescript/lib/module/skia/types/WebGPU.d.ts +0 -31
  316. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -2
  317. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -2
  318. package/lib/typescript/lib/module/specs/utils.d.ts +0 -1
  319. package/lib/typescript/lib/module/views/WebGPUCanvas.d.ts +0 -7
  320. package/lib/typescript/lib/module/views/WebGPUCanvas.web.d.ts +0 -8
  321. package/lib/typescript/src/skia/types/WebGPU.d.ts +0 -184
  322. package/lib/typescript/src/specs/WebGPUViewNativeComponent.d.ts +0 -8
  323. package/lib/typescript/src/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  324. package/lib/typescript/src/specs/utils.d.ts +0 -1
  325. package/lib/typescript/src/views/WebGPUCanvas.d.ts +0 -33
  326. package/lib/typescript/src/views/WebGPUCanvas.web.d.ts +0 -23
  327. package/src/skia/types/WebGPU.ts +0 -226
  328. package/src/specs/WebGPUViewNativeComponent.ts +0 -11
  329. package/src/specs/WebGPUViewNativeComponent.web.ts +0 -110
  330. package/src/specs/utils.ts +0 -4
  331. package/src/views/WebGPUCanvas.tsx +0 -125
  332. package/src/views/WebGPUCanvas.web.tsx +0 -36
@@ -2,10 +2,12 @@
2
2
 
3
3
  #include <memory>
4
4
  #include <utility>
5
+ #include <vector>
5
6
 
6
7
  #include <jsi/jsi.h>
7
8
 
8
9
  #include "JsiSkNativeObjects.h"
10
+ #include "JsiSkPoint.h"
9
11
 
10
12
  #pragma clang diagnostic push
11
13
  #pragma clang diagnostic ignored "-Wdocumentation"
@@ -31,55 +33,43 @@ public:
31
33
  : JsiSkWrappingSkPtrNativeObject<JsiSkContourMeasure, SkContourMeasure>(
32
34
  std::move(context), std::move(contourMeasure)) {}
33
35
 
34
- JSI_HOST_FUNCTION(getPosTan) {
35
- auto dist = arguments[0].asNumber();
36
+ std::vector<std::shared_ptr<JsiSkPoint>> getPosTan(double dist) {
36
37
  SkPoint position;
37
38
  SkPoint tangent;
38
39
  auto result = getObject()->getPosTan(dist, &position, &tangent);
39
40
  if (!result) {
40
- throw jsi::JSError(runtime, "getPosTan() failed");
41
+ throw std::runtime_error("getPosTan() failed");
41
42
  }
42
- auto posTan = jsi::Array(runtime, 2);
43
- auto pos = makeJsiObject(
44
- runtime, std::make_shared<JsiSkPoint>(getContext(), position));
45
- auto tan = makeJsiObject(
46
- runtime, std::make_shared<JsiSkPoint>(getContext(), tangent));
47
- posTan.setValueAtIndex(runtime, 0, pos);
48
- posTan.setValueAtIndex(runtime, 1, tan);
49
- return posTan;
43
+ return {std::make_shared<JsiSkPoint>(getContext(), position),
44
+ std::make_shared<JsiSkPoint>(getContext(), tangent)};
50
45
  }
51
46
 
52
- JSI_HOST_FUNCTION(length) {
53
- return jsi::Value(SkScalarToDouble(getObject()->length()));
54
- }
47
+ double length() { return SkScalarToDouble(getObject()->length()); }
55
48
 
56
- JSI_HOST_FUNCTION(isClosed) { return jsi::Value(getObject()->isClosed()); }
49
+ bool isClosed() { return getObject()->isClosed(); }
57
50
 
58
- JSI_HOST_FUNCTION(getSegment) {
59
- auto start = arguments[0].asNumber();
60
- auto end = arguments[1].asNumber();
61
- auto startWithMoveTo = arguments[2].getBool();
51
+ std::shared_ptr<JsiSkPath> getSegment(double start, double end,
52
+ bool startWithMoveTo) {
62
53
  SkPathBuilder builder;
63
54
  auto result =
64
55
  getObject()->getSegment(start, end, &builder, startWithMoveTo);
65
56
  if (!result) {
66
- throw jsi::JSError(runtime, "getSegment() failed");
57
+ throw std::runtime_error("getSegment() failed");
67
58
  }
68
- return JsiSkPath::toValue(runtime, getContext(), builder.snapshot());
59
+ return std::make_shared<JsiSkPath>(getContext(), builder.snapshot());
69
60
  }
70
61
 
71
62
  size_t getMemoryPressure() override { return 1024; }
72
63
 
73
64
  static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
74
65
  installCommon(runtime, prototype);
75
- installHostMethod(runtime, prototype, "getPosTan",
76
- &JsiSkContourMeasure::getPosTan);
77
- installHostMethod(runtime, prototype, "length",
78
- &JsiSkContourMeasure::length);
79
- installHostMethod(runtime, prototype, "isClosed",
80
- &JsiSkContourMeasure::isClosed);
81
- installHostMethod(runtime, prototype, "getSegment",
82
- &JsiSkContourMeasure::getSegment);
66
+ installMethod(runtime, prototype, "getPosTan",
67
+ &JsiSkContourMeasure::getPosTan);
68
+ installMethod(runtime, prototype, "length", &JsiSkContourMeasure::length);
69
+ installMethod(runtime, prototype, "isClosed",
70
+ &JsiSkContourMeasure::isClosed);
71
+ installMethod(runtime, prototype, "getSegment",
72
+ &JsiSkContourMeasure::getSegment);
83
73
  }
84
74
  };
85
75
  } // namespace RNSkia
@@ -1,6 +1,7 @@
1
1
  #pragma once
2
2
 
3
3
  #include <memory>
4
+ #include <optional>
4
5
  #include <utility>
5
6
 
6
7
  #include "JsiSkContourMeasure.h"
@@ -33,19 +34,18 @@ public:
33
34
  std::move(context), std::make_shared<SkContourMeasureIter>(
34
35
  path, forceClosed, resScale)) {}
35
36
 
36
- JSI_HOST_FUNCTION(next) {
37
+ std::optional<std::shared_ptr<JsiSkContourMeasure>> next() {
37
38
  auto next = getObject()->next();
38
39
  if (next == nullptr) {
39
- return jsi::Value::undefined();
40
+ return std::nullopt;
40
41
  }
41
- return makeJsiObject(runtime, std::make_shared<JsiSkContourMeasure>(
42
- getContext(), std::move(next)));
42
+ return std::make_shared<JsiSkContourMeasure>(getContext(),
43
+ std::move(next));
43
44
  }
44
45
 
45
46
  static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
46
47
  installCommon(runtime, prototype);
47
- installHostMethod(runtime, prototype, "next",
48
- &JsiSkContourMeasureIter::next);
48
+ installMethod(runtime, prototype, "next", &JsiSkContourMeasureIter::next);
49
49
  }
50
50
 
51
51
  size_t getMemoryPressure() override {
@@ -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 RNJsi {
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 RNJsi
@@ -1,6 +1,7 @@
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>
@@ -62,31 +63,24 @@ public:
62
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
- return makeJsiObject(
89
- runtime, std::make_shared<JsiSkData>(getContext(), std::move(data)));
83
+ return std::make_shared<JsiSkData>(getContext(), std::move(data));
90
84
  }
91
85
 
92
86
  size_t getMemoryPressure() override { return 1024; }
@@ -96,8 +90,8 @@ public:
96
90
  &JsiSkDataFactory::fromURI);
97
91
  installHostMethod(runtime, prototype, "fromBytes",
98
92
  &JsiSkDataFactory::fromBytes);
99
- installHostMethod(runtime, prototype, "fromBase64",
100
- &JsiSkDataFactory::fromBase64);
93
+ installMethod(runtime, prototype, "fromBase64",
94
+ &JsiSkDataFactory::fromBase64);
101
95
  }
102
96
 
103
97
  explicit JsiSkDataFactory(std::shared_ptr<RNSkPlatformContext> context)