@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
@@ -2,13 +2,17 @@
2
2
 
3
3
  #include <memory>
4
4
  #include <numeric>
5
+ #include <optional>
6
+ #include <string>
5
7
  #include <utility>
8
+ #include <variant>
6
9
  #include <vector>
7
10
 
8
- #include "JsiSkHostObjects.h"
11
+ #include "JsiSkNativeObjects.h"
9
12
  #include "utils/RNSkLog.h"
10
13
  #include <jsi/jsi.h>
11
14
 
15
+ #include "JsiSkConverters.h"
12
16
  #include "JsiSkPaint.h"
13
17
  #include "JsiSkPoint.h"
14
18
  #include "JsiSkRect.h"
@@ -26,41 +30,30 @@ namespace RNSkia {
26
30
 
27
31
  namespace jsi = facebook::jsi;
28
32
 
29
- class JsiSkFont : public JsiSkWrappingSharedPtrHostObject<SkFont> {
33
+ class JsiSkFont : public JsiSkWrappingSharedPtrNativeObject<JsiSkFont, SkFont> {
30
34
  public:
31
- JSI_HOST_FUNCTION(getGlyphWidths) {
32
- auto jsiGlyphs = arguments[0].asObject(runtime).asArray(runtime);
33
- std::vector<SkGlyphID> glyphs;
34
- int glyphsSize = static_cast<int>(jsiGlyphs.size(runtime));
35
-
36
- std::vector<SkScalar> widthPtrs;
37
- widthPtrs.resize(glyphsSize);
38
-
39
- glyphs.reserve(glyphsSize);
40
- for (int i = 0; i < glyphsSize; i++) {
41
- glyphs.push_back(jsiGlyphs.getValueAtIndex(runtime, i).asNumber());
35
+ static constexpr const char *CLASS_NAME = "Font";
36
+
37
+ std::vector<double>
38
+ getGlyphWidths(std::vector<int> glyphs,
39
+ std::optional<std::shared_ptr<SkPaint>> paint) {
40
+ std::vector<SkGlyphID> glyphIds;
41
+ glyphIds.reserve(glyphs.size());
42
+ for (auto glyph : glyphs) {
43
+ glyphIds.push_back(static_cast<SkGlyphID>(glyph));
42
44
  }
43
- auto widths = SkSpan(static_cast<SkScalar *>(widthPtrs.data()), glyphsSize);
44
- auto g = SkSpan(glyphs.data(), glyphs.size());
45
- if (count > 1) {
46
- auto paint = JsiSkPaint::fromValue(runtime, arguments[1]);
47
- getObject()->getWidthsBounds(g, widths, {}, paint.get());
48
- } else {
49
- getObject()->getWidthsBounds(g, widths, {}, nullptr);
50
- }
51
- auto jsiWidths = jsi::Array(runtime, glyphsSize);
52
- for (int i = 0; i < glyphsSize; i++) {
53
- jsiWidths.setValueAtIndex(
54
- runtime, i,
55
- jsi::Value(
56
- SkScalarToDouble(static_cast<SkScalar *>(widthPtrs.data())[i])));
57
- }
58
- return jsiWidths;
45
+ std::vector<SkScalar> widths;
46
+ widths.resize(glyphIds.size());
47
+ auto g = SkSpan(glyphIds.data(), glyphIds.size());
48
+ auto w = SkSpan(widths.data(), widths.size());
49
+ getObject()->getWidthsBounds(
50
+ g, w, {}, paint.has_value() ? paint.value().get() : nullptr);
51
+ return std::vector<double>(widths.begin(), widths.end());
59
52
  }
60
53
 
61
54
  // TODO: deprecate
62
- JSI_HOST_FUNCTION(getTextWidth) {
63
- auto str = arguments[0].asString(runtime).utf8(runtime);
55
+ int getTextWidth(std::string str,
56
+ std::optional<std::shared_ptr<SkPaint>> paint) {
64
57
  auto numGlyphIDs = getObject()->countText(str.c_str(), str.length(),
65
58
  SkTextEncoding::kUTF8);
66
59
  std::vector<SkGlyphID> glyphs;
@@ -68,34 +61,25 @@ public:
68
61
  auto g = SkSpan(glyphs.data(), glyphs.size());
69
62
  getObject()->textToGlyphs(str.c_str(), str.length(), SkTextEncoding::kUTF8,
70
63
  g);
71
- std::vector<SkScalar> widthPtrs;
72
- widthPtrs.resize(numGlyphIDs);
73
- auto widths = SkSpan(widthPtrs.data(), widthPtrs.size());
74
- if (count > 1) {
75
- auto paint = JsiSkPaint::fromValue(runtime, arguments[1]);
76
- getObject()->getWidthsBounds(g, widths, {}, paint.get());
77
- } else {
78
- getObject()->getWidthsBounds(g, widths, {}, nullptr);
79
- }
80
- return jsi::Value(std::accumulate(widthPtrs.begin(), widthPtrs.end(), 0));
64
+ std::vector<SkScalar> widths;
65
+ widths.resize(numGlyphIDs);
66
+ auto w = SkSpan(widths.data(), widths.size());
67
+ getObject()->getWidthsBounds(
68
+ g, w, {}, paint.has_value() ? paint.value().get() : nullptr);
69
+ return std::accumulate(widths.begin(), widths.end(), 0);
81
70
  }
82
71
 
83
- JSI_HOST_FUNCTION(measureText) {
84
- auto str = arguments[0].asString(runtime).utf8(runtime);
72
+ std::shared_ptr<JsiSkRect>
73
+ measureText(std::string str, std::optional<std::shared_ptr<SkPaint>> paint) {
85
74
  SkRect bounds;
86
- if (count > 1) {
87
- auto paint = JsiSkPaint::fromValue(runtime, arguments[1]);
88
- getObject()->measureText(str.c_str(), str.length(), SkTextEncoding::kUTF8,
89
- &bounds, paint.get());
90
- } else {
91
- getObject()->measureText(str.c_str(), str.length(), SkTextEncoding::kUTF8,
92
- &bounds);
93
- }
94
- auto rect = std::make_shared<JsiSkRect>(getContext(), std::move(bounds));
95
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, rect,
96
- getContext());
75
+ getObject()->measureText(str.c_str(), str.length(), SkTextEncoding::kUTF8,
76
+ &bounds,
77
+ paint.has_value() ? paint.value().get() : nullptr);
78
+ return std::make_shared<JsiSkRect>(getContext(), bounds);
97
79
  }
98
80
 
81
+ // Stays raw: the result object has a conditionally present `bounds`
82
+ // property, which a typed return value cannot express.
99
83
  JSI_HOST_FUNCTION(getMetrics) {
100
84
  SkFontMetrics fm;
101
85
  getObject()->getMetrics(&fm);
@@ -112,178 +96,131 @@ public:
112
96
  return metrics;
113
97
  }
114
98
 
115
- JSI_HOST_FUNCTION(getGlyphIDs) {
116
- auto str = arguments[0].asString(runtime).utf8(runtime);
117
- int numGlyphIDs =
118
- count > 1 && !arguments[1].isNull() && !arguments[1].isUndefined()
119
- ? static_cast<int>(arguments[1].asNumber())
120
- : getObject()->countText(str.c_str(), str.length(),
121
- SkTextEncoding::kUTF8);
99
+ std::vector<int> getGlyphIDs(std::string str, JsiOptional<int> numGlyphs) {
100
+ int numGlyphIDs = numGlyphs.has_value()
101
+ ? *numGlyphs
102
+ : getObject()->countText(str.c_str(), str.length(),
103
+ SkTextEncoding::kUTF8);
122
104
  std::vector<SkGlyphID> glyphIDs;
123
105
  glyphIDs.resize(numGlyphIDs);
124
106
  auto g = SkSpan(static_cast<SkGlyphID *>(glyphIDs.data()), glyphIDs.size());
125
107
  getObject()->textToGlyphs(str.c_str(), str.length(), SkTextEncoding::kUTF8,
126
108
  g);
127
- auto jsiGlyphIDs = jsi::Array(runtime, numGlyphIDs);
128
- for (int i = 0; i < numGlyphIDs; i++) {
129
- jsiGlyphIDs.setValueAtIndex(runtime, i,
130
- jsi::Value(static_cast<int>(glyphIDs[i])));
131
- }
132
- return jsiGlyphIDs;
109
+ return std::vector<int>(glyphIDs.begin(), glyphIDs.end());
133
110
  }
134
111
 
135
- JSI_HOST_FUNCTION(getGlyphIntercepts) {
136
- auto jsiGlyphs = arguments[0].asObject(runtime).asArray(runtime);
137
- auto jsiPositions = arguments[1].asObject(runtime).asArray(runtime);
138
- auto top = arguments[2].asNumber();
139
- auto bottom = arguments[3].asNumber();
140
- std::vector<SkPoint> positions;
141
- int pointsSize = static_cast<int>(jsiPositions.size(runtime));
142
- positions.reserve(pointsSize);
143
- for (int i = 0; i < pointsSize; i++) {
144
- std::shared_ptr<SkPoint> point = JsiSkPoint::fromValue(
145
- runtime, jsiPositions.getValueAtIndex(runtime, i).asObject(runtime));
146
- positions.push_back(*point.get());
147
- }
148
-
149
- std::vector<SkGlyphID> glyphs;
150
- int glyphsSize = static_cast<int>(jsiGlyphs.size(runtime));
151
- glyphs.reserve(glyphsSize);
152
- for (int i = 0; i < glyphsSize; i++) {
153
- glyphs.push_back(jsiGlyphs.getValueAtIndex(runtime, i).asNumber());
112
+ std::vector<int> getGlyphIntercepts(std::vector<int> glyphs,
113
+ std::vector<SkPoint> positions,
114
+ double top, double bottom) {
115
+ std::vector<SkGlyphID> glyphIds;
116
+ glyphIds.reserve(glyphs.size());
117
+ for (auto glyph : glyphs) {
118
+ glyphIds.push_back(static_cast<SkGlyphID>(glyph));
154
119
  }
155
-
156
- if (glyphs.size() > positions.size()) {
157
- throw jsi::JSError(runtime, "Not enough x,y position pairs for glyphs");
158
- return jsi::Value::null();
120
+ if (glyphIds.size() > positions.size()) {
121
+ throw std::runtime_error("Not enough x,y position pairs for glyphs");
159
122
  }
160
- auto g = SkSpan(glyphs.data(), glyphs.size());
123
+ auto g = SkSpan(glyphIds.data(), glyphIds.size());
161
124
  auto p = SkSpan(positions.data(), positions.size());
162
125
  auto sects = getObject()->getIntercepts(g, p, top, bottom);
163
- auto jsiSects = jsi::Array(runtime, sects.size());
164
- for (int i = 0; i < sects.size(); i++) {
165
- jsiSects.setValueAtIndex(runtime, i,
166
- jsi::Value(static_cast<int>(sects.at(i))));
167
- }
168
- return jsiSects;
126
+ return std::vector<int>(sects.begin(), sects.end());
169
127
  }
170
128
 
171
- JSI_HOST_FUNCTION(getScaleX) {
172
- return jsi::Value(SkScalarToDouble(getObject()->getScaleX()));
173
- }
129
+ double getScaleX() { return SkScalarToDouble(getObject()->getScaleX()); }
174
130
 
175
- JSI_HOST_FUNCTION(getSize) {
176
- return jsi::Value(SkScalarToDouble(getObject()->getSize()));
177
- }
131
+ double getSize() { return SkScalarToDouble(getObject()->getSize()); }
178
132
 
179
- JSI_HOST_FUNCTION(getSkewX) {
180
- return jsi::Value(SkScalarToDouble(getObject()->getSkewX()));
181
- }
133
+ double getSkewX() { return SkScalarToDouble(getObject()->getSkewX()); }
182
134
 
183
- JSI_HOST_FUNCTION(isEmbolden) {
184
- return jsi::Value(getObject()->isEmbolden());
185
- }
135
+ bool isEmbolden() { return getObject()->isEmbolden(); }
186
136
 
187
- JSI_HOST_FUNCTION(getTypeface) {
188
- return JsiSkTypeface::toValue(
189
- runtime, getContext(), sk_sp<SkTypeface>(getObject()->getTypeface()));
137
+ std::shared_ptr<JsiSkTypeface> getTypeface() {
138
+ return std::make_shared<JsiSkTypeface>(
139
+ getContext(), sk_sp<SkTypeface>(getObject()->getTypeface()));
190
140
  }
191
141
 
192
- JSI_HOST_FUNCTION(setEdging) {
193
- auto edging = arguments[0].asNumber();
142
+ void setEdging(double edging) {
194
143
  getObject()->setEdging(static_cast<SkFont::Edging>(edging));
195
- return jsi::Value::undefined();
196
144
  }
197
145
 
198
- JSI_HOST_FUNCTION(embeddedBitmaps) {
199
- auto embeddedBitmaps = arguments[0].getBool();
146
+ void setEmbeddedBitmaps(bool embeddedBitmaps) {
200
147
  getObject()->setEmbeddedBitmaps(embeddedBitmaps);
201
- return jsi::Value::undefined();
202
148
  }
203
149
 
204
- JSI_HOST_FUNCTION(setHinting) {
205
- auto hinting = arguments[0].asNumber();
150
+ void setHinting(double hinting) {
206
151
  getObject()->setHinting(static_cast<SkFontHinting>(hinting));
207
- return jsi::Value::undefined();
208
152
  }
209
153
 
210
- JSI_HOST_FUNCTION(setLinearMetrics) {
211
- auto linearMetrics = arguments[0].getBool();
154
+ void setLinearMetrics(bool linearMetrics) {
212
155
  getObject()->setLinearMetrics(linearMetrics);
213
- return jsi::Value::undefined();
214
156
  }
215
157
 
216
- JSI_HOST_FUNCTION(setScaleX) {
217
- auto scaleX = arguments[0].asNumber();
218
- getObject()->setScaleX(scaleX);
219
- return jsi::Value::undefined();
220
- }
158
+ void setScaleX(double scaleX) { getObject()->setScaleX(scaleX); }
221
159
 
222
- JSI_HOST_FUNCTION(setSkewX) {
223
- auto skewX = arguments[0].asNumber();
224
- getObject()->setSkewX(skewX);
225
- return jsi::Value::undefined();
226
- }
160
+ void setSkewX(double skewX) { getObject()->setSkewX(skewX); }
227
161
 
228
- JSI_HOST_FUNCTION(setSize) {
229
- auto size = arguments[0].asNumber();
230
- getObject()->setSize(size);
231
- return jsi::Value::undefined();
232
- }
162
+ void setSize(double size) { getObject()->setSize(size); }
233
163
 
234
- JSI_HOST_FUNCTION(setEmbolden) {
235
- auto embolden = arguments[0].asNumber();
236
- getObject()->setEmbolden(embolden);
237
- return jsi::Value::undefined();
164
+ // The JS API declares booleans here, but the previous implementation read
165
+ // the arguments with asNumber() — keep accepting numbers.
166
+ void setEmbolden(double embolden) {
167
+ getObject()->setEmbolden(static_cast<bool>(embolden));
238
168
  }
239
169
 
240
- JSI_HOST_FUNCTION(setSubpixel) {
241
- auto subpixel = arguments[0].asNumber();
242
- getObject()->setSubpixel(subpixel);
243
- return jsi::Value::undefined();
170
+ void setSubpixel(double subpixel) {
171
+ getObject()->setSubpixel(static_cast<bool>(subpixel));
244
172
  }
245
173
 
246
- JSI_HOST_FUNCTION(setTypeface) {
247
- auto typeface = arguments[0].isNull()
248
- ? nullptr
249
- : JsiSkTypeface::fromValue(runtime, arguments[0]);
250
- getObject()->setTypeface(typeface);
251
- return jsi::Value::undefined();
174
+ void setTypeface(std::variant<std::nullptr_t, sk_sp<SkTypeface>> typeface) {
175
+ getObject()->setTypeface(
176
+ std::holds_alternative<std::nullptr_t>(typeface)
177
+ ? nullptr
178
+ : std::get<sk_sp<SkTypeface>>(std::move(typeface)));
252
179
  }
253
180
 
254
- EXPORT_JSI_API_TYPENAME(JsiSkFont, Font)
255
-
256
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkFont, getSize),
257
- JSI_EXPORT_FUNC(JsiSkFont, getMetrics),
258
- JSI_EXPORT_FUNC(JsiSkFont, getGlyphIDs),
259
- JSI_EXPORT_FUNC(JsiSkFont, getGlyphIntercepts),
260
- JSI_EXPORT_FUNC(JsiSkFont, getScaleX),
261
- JSI_EXPORT_FUNC(JsiSkFont, getSkewX),
262
- JSI_EXPORT_FUNC(JsiSkFont, getTypeface),
263
- JSI_EXPORT_FUNC(JsiSkFont, setEdging),
264
- JSI_EXPORT_FUNC(JsiSkFont, embeddedBitmaps),
265
- JSI_EXPORT_FUNC(JsiSkFont, setHinting),
266
- JSI_EXPORT_FUNC(JsiSkFont, setLinearMetrics),
267
- JSI_EXPORT_FUNC(JsiSkFont, setScaleX),
268
- JSI_EXPORT_FUNC(JsiSkFont, setSkewX),
269
- JSI_EXPORT_FUNC(JsiSkFont, setSize),
270
- JSI_EXPORT_FUNC(JsiSkFont, setEmbolden),
271
- JSI_EXPORT_FUNC(JsiSkFont, setSubpixel),
272
- JSI_EXPORT_FUNC(JsiSkFont, setTypeface),
273
- JSI_EXPORT_FUNC(JsiSkFont, getGlyphWidths),
274
- JSI_EXPORT_FUNC(JsiSkFont, getTextWidth),
275
- JSI_EXPORT_FUNC(JsiSkFont, measureText),
276
- JSI_EXPORT_FUNC(JsiSkFont, dispose))
181
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
182
+ installCommon(runtime, prototype);
183
+ installMethod(runtime, prototype, "getSize", &JsiSkFont::getSize);
184
+ installHostMethod(runtime, prototype, "getMetrics", &JsiSkFont::getMetrics);
185
+ installMethod(runtime, prototype, "getGlyphIDs", &JsiSkFont::getGlyphIDs);
186
+ installMethod(runtime, prototype, "getGlyphIntercepts",
187
+ &JsiSkFont::getGlyphIntercepts);
188
+ installMethod(runtime, prototype, "getScaleX", &JsiSkFont::getScaleX);
189
+ installMethod(runtime, prototype, "getSkewX", &JsiSkFont::getSkewX);
190
+ installMethod(runtime, prototype, "getTypeface", &JsiSkFont::getTypeface);
191
+ installMethod(runtime, prototype, "setEdging", &JsiSkFont::setEdging);
192
+ installMethod(runtime, prototype, "embeddedBitmaps",
193
+ &JsiSkFont::setEmbeddedBitmaps);
194
+ installMethod(runtime, prototype, "setHinting", &JsiSkFont::setHinting);
195
+ installMethod(runtime, prototype, "setLinearMetrics",
196
+ &JsiSkFont::setLinearMetrics);
197
+ installMethod(runtime, prototype, "setScaleX", &JsiSkFont::setScaleX);
198
+ installMethod(runtime, prototype, "setSkewX", &JsiSkFont::setSkewX);
199
+ installMethod(runtime, prototype, "setSize", &JsiSkFont::setSize);
200
+ installMethod(runtime, prototype, "setEmbolden", &JsiSkFont::setEmbolden);
201
+ installMethod(runtime, prototype, "setSubpixel", &JsiSkFont::setSubpixel);
202
+ installMethod(runtime, prototype, "setTypeface", &JsiSkFont::setTypeface);
203
+ installMethod(runtime, prototype, "getGlyphWidths",
204
+ &JsiSkFont::getGlyphWidths);
205
+ installMethod(runtime, prototype, "getTextWidth", &JsiSkFont::getTextWidth);
206
+ installMethod(runtime, prototype, "measureText", &JsiSkFont::measureText);
207
+ }
277
208
 
278
209
  JsiSkFont(std::shared_ptr<RNSkPlatformContext> context, const SkFont &font)
279
- : JsiSkWrappingSharedPtrHostObject(std::move(context),
280
- std::make_shared<SkFont>(font)) {}
210
+ : JsiSkWrappingSharedPtrNativeObject<JsiSkFont, SkFont>(
211
+ std::move(context), std::make_shared<SkFont>(font)) {}
281
212
 
282
- size_t getMemoryPressure() const override {
213
+ size_t getMemoryPressure() override {
283
214
  return std::max(sizeof(SkFont), kMinMemoryPressure);
284
215
  }
285
216
 
286
- std::string getObjectType() const override { return "JsiSkFont"; }
217
+ /**
218
+ Returns the underlying object from a host object of this type
219
+ */
220
+ static std::shared_ptr<SkFont> fromValue(jsi::Runtime &runtime,
221
+ const jsi::Value &obj) {
222
+ return objectFromValue(runtime, obj);
223
+ }
287
224
 
288
225
  /**
289
226
  * Creates the function for construction a new instance of the SkFont
@@ -299,22 +236,16 @@ public:
299
236
  if (count == 2) {
300
237
  auto typeface = JsiSkTypeface::fromValue(runtime, arguments[0]);
301
238
  auto size = arguments[1].asNumber();
302
- auto hostObjectInstance =
303
- std::make_shared<JsiSkFont>(context, SkFont(typeface, size));
304
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
305
- runtime, hostObjectInstance, std::move(context));
239
+ return makeJsiObject(runtime, std::make_shared<JsiSkFont>(
240
+ context, SkFont(typeface, size)));
306
241
  } else if (count == 1) {
307
242
  auto typeface = JsiSkTypeface::fromValue(runtime, arguments[0]);
308
- auto hostObjectInstance =
309
- std::make_shared<JsiSkFont>(context, SkFont(typeface));
310
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
311
- runtime, hostObjectInstance, std::move(context));
243
+ return makeJsiObject(
244
+ runtime, std::make_shared<JsiSkFont>(context, SkFont(typeface)));
312
245
  } else {
313
246
  // Return the newly constructed object
314
- auto hostObjectInstance =
315
- std::make_shared<JsiSkFont>(context, SkFont());
316
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
317
- runtime, hostObjectInstance, std::move(context));
247
+ return makeJsiObject(runtime,
248
+ std::make_shared<JsiSkFont>(context, SkFont()));
318
249
  }
319
250
  };
320
251
  }
@@ -2,11 +2,14 @@
2
2
 
3
3
  #include <memory>
4
4
  #include <numeric>
5
+ #include <string>
5
6
  #include <utility>
6
7
  #include <vector>
7
8
 
9
+ #include "JsiSkConverters.h"
8
10
  #include "JsiSkFontStyle.h"
9
- #include "JsiSkHostObjects.h"
11
+ #include "JsiSkNativeObjects.h"
12
+ #include "JsiSkTypeface.h"
10
13
  #include "utils/RNSkLog.h"
11
14
  #include <jsi/jsi.h>
12
15
 
@@ -21,61 +24,65 @@ namespace RNSkia {
21
24
 
22
25
  namespace jsi = facebook::jsi;
23
26
 
24
- class JsiSkFontMgr : public JsiSkWrappingSkPtrHostObject<SkFontMgr> {
27
+ class JsiSkFontMgr
28
+ : public JsiSkWrappingSkPtrNativeObject<JsiSkFontMgr, SkFontMgr> {
25
29
  public:
26
- EXPORT_JSI_API_TYPENAME(JsiSkFontMgr, FontMgr)
30
+ static constexpr const char *CLASS_NAME = "FontMgr";
27
31
 
28
32
  JsiSkFontMgr(std::shared_ptr<RNSkPlatformContext> context,
29
33
  sk_sp<SkFontMgr> fontMgr)
30
- : JsiSkWrappingSkPtrHostObject(context, fontMgr),
34
+ : JsiSkWrappingSkPtrNativeObject<JsiSkFontMgr, SkFontMgr>(context,
35
+ fontMgr),
31
36
  _systemFontFamilies(context->getSystemFontFamilies()) {}
32
37
 
33
- JSI_HOST_FUNCTION(countFamilies) {
38
+ int countFamilies() {
34
39
  return static_cast<int>(getObject()->countFamilies() +
35
40
  _systemFontFamilies.size());
36
41
  }
37
42
 
38
- JSI_HOST_FUNCTION(getFamilyName) {
39
- auto i = static_cast<int>(arguments[0].asNumber());
43
+ std::string getFamilyName(int i) {
40
44
  auto baseFamilyCount = getObject()->countFamilies();
41
45
  if (i < baseFamilyCount) {
42
46
  SkString name;
43
47
  getObject()->getFamilyName(i, &name);
44
- return jsi::String::createFromUtf8(runtime, name.c_str());
48
+ return std::string(name.c_str());
45
49
  }
46
50
  auto systemIndex = i - baseFamilyCount;
47
51
  if (systemIndex < static_cast<int>(_systemFontFamilies.size())) {
48
- return jsi::String::createFromUtf8(runtime,
49
- _systemFontFamilies[systemIndex]);
52
+ return _systemFontFamilies[systemIndex];
50
53
  }
51
- throw jsi::JSError(
52
- runtime,
54
+ throw std::runtime_error(
53
55
  "Font family index out of bounds: " + std::to_string(i) +
54
- " (total families: " +
55
- std::to_string(baseFamilyCount + _systemFontFamilies.size()) + ")");
56
+ " (total families: " +
57
+ std::to_string(baseFamilyCount + _systemFontFamilies.size()) + ")");
56
58
  }
57
59
 
58
- JSI_HOST_FUNCTION(matchFamilyStyle) {
59
- auto name = arguments[0].asString(runtime).utf8(runtime);
60
+ std::shared_ptr<JsiSkTypeface>
61
+ matchFamilyStyle(std::string name, std::shared_ptr<SkFontStyle> fontStyle) {
60
62
  // Resolve font family aliases (e.g., "System" -> ".AppleSystemUIFont" on
61
63
  // iOS)
62
64
  auto resolvedName = getContext()->resolveFontFamily(name);
63
- auto fontStyle = JsiSkFontStyle::fromValue(runtime, arguments[1]);
64
65
  auto typeface =
65
66
  getObject()->matchFamilyStyle(resolvedName.c_str(), *fontStyle);
66
- auto hostObjectInstance =
67
- std::make_shared<JsiSkTypeface>(getContext(), std::move(typeface));
68
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
69
- runtime, hostObjectInstance, getContext());
67
+ return std::make_shared<JsiSkTypeface>(getContext(), std::move(typeface));
70
68
  }
71
69
 
72
- size_t getMemoryPressure() const override { return 2048; }
70
+ size_t getMemoryPressure() override { return 2048; }
73
71
 
74
- std::string getObjectType() const override { return "JsiSkFontMgr"; }
72
+ static sk_sp<SkFontMgr> fromValue(jsi::Runtime &runtime,
73
+ const jsi::Value &obj) {
74
+ return objectFromValue(runtime, obj);
75
+ }
75
76
 
76
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkFontMgr, countFamilies),
77
- JSI_EXPORT_FUNC(JsiSkFontMgr, getFamilyName),
78
- JSI_EXPORT_FUNC(JsiSkFontMgr, matchFamilyStyle))
77
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
78
+ installCommon(runtime, prototype);
79
+ installMethod(runtime, prototype, "countFamilies",
80
+ &JsiSkFontMgr::countFamilies);
81
+ installMethod(runtime, prototype, "getFamilyName",
82
+ &JsiSkFontMgr::getFamilyName);
83
+ installMethod(runtime, prototype, "matchFamilyStyle",
84
+ &JsiSkFontMgr::matchFamilyStyle);
85
+ }
79
86
 
80
87
  private:
81
88
  std::vector<std::string> _systemFontFamilies;
@@ -6,7 +6,8 @@
6
6
 
7
7
  #include <jsi/jsi.h>
8
8
 
9
- #include "JsiSkHostObjects.h"
9
+ #include "JsiSkFontMgr.h"
10
+ #include "JsiSkNativeObjects.h"
10
11
 
11
12
  #pragma clang diagnostic push
12
13
  #pragma clang diagnostic ignored "-Wdocumentation"
@@ -20,8 +21,10 @@ namespace RNSkia {
20
21
 
21
22
  namespace jsi = facebook::jsi;
22
23
 
23
- class JsiSkFontMgrFactory : public JsiSkHostObject {
24
+ class JsiSkFontMgrFactory : public JsiSkNativeObject<JsiSkFontMgrFactory> {
24
25
  public:
26
+ static constexpr const char *CLASS_NAME = "FontMgrFactory";
27
+
25
28
  static sk_sp<SkFontMgr>
26
29
  getFontMgr(std::shared_ptr<RNSkPlatformContext> context) {
27
30
  static SkOnce once;
@@ -30,21 +33,19 @@ public:
30
33
  return fontMgr;
31
34
  }
32
35
 
33
- JSI_HOST_FUNCTION(System) {
36
+ std::shared_ptr<JsiSkFontMgr> System() {
34
37
  auto fontMgr = JsiSkFontMgrFactory::getFontMgr(getContext());
35
- auto fontMgrObj = std::make_shared<JsiSkFontMgr>(getContext(), fontMgr);
36
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, fontMgrObj,
37
- getContext());
38
+ return std::make_shared<JsiSkFontMgr>(getContext(), fontMgr);
38
39
  }
39
40
 
40
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkFontMgrFactory, System))
41
-
42
- size_t getMemoryPressure() const override { return 1024; }
41
+ size_t getMemoryPressure() override { return 1024; }
43
42
 
44
- std::string getObjectType() const override { return "JsiSkFontMgrFactory"; }
43
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
44
+ installMethod(runtime, prototype, "System", &JsiSkFontMgrFactory::System);
45
+ }
45
46
 
46
47
  explicit JsiSkFontMgrFactory(std::shared_ptr<RNSkPlatformContext> context)
47
- : JsiSkHostObject(std::move(context)) {}
48
+ : JsiSkNativeObject<JsiSkFontMgrFactory>(std::move(context)) {}
48
49
  };
49
50
 
50
51
  } // namespace RNSkia
@@ -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"
@@ -18,13 +18,14 @@ namespace RNSkia {
18
18
 
19
19
  namespace jsi = facebook::jsi;
20
20
 
21
- class JsiSkFontStyle : public JsiSkWrappingSharedPtrHostObject<SkFontStyle> {
21
+ class JsiSkFontStyle
22
+ : public JsiSkWrappingSharedPtrNativeObject<JsiSkFontStyle, SkFontStyle> {
22
23
  public:
23
- JSI_API_TYPENAME("FontStyle");
24
+ static constexpr const char *CLASS_NAME = "FontStyle";
24
25
 
25
26
  JsiSkFontStyle(std::shared_ptr<RNSkPlatformContext> context,
26
27
  const SkFontStyle &fontStyle)
27
- : JsiSkWrappingSharedPtrHostObject<SkFontStyle>(
28
+ : JsiSkWrappingSharedPtrNativeObject<JsiSkFontStyle, SkFontStyle>(
28
29
  std::move(context), std::make_shared<SkFontStyle>(fontStyle)) {}
29
30
 
30
31
  /**
@@ -33,8 +34,9 @@ public:
33
34
  static std::shared_ptr<SkFontStyle> fromValue(jsi::Runtime &runtime,
34
35
  const jsi::Value &obj) {
35
36
  const auto &object = obj.asObject(runtime);
36
- if (object.isHostObject(runtime)) {
37
- return object.asHostObject<JsiSkFontStyle>(runtime)->getObject();
37
+ auto fontStyle = tryGetJsiObject<JsiSkFontStyle>(runtime, object);
38
+ if (fontStyle) {
39
+ return fontStyle->getObject();
38
40
  } else {
39
41
  auto weightProp = object.getProperty(runtime, "weight");
40
42
  auto weight = static_cast<int>(
@@ -56,11 +58,13 @@ public:
56
58
  }
57
59
  }
58
60
 
59
- size_t getMemoryPressure() const override {
61
+ size_t getMemoryPressure() override {
60
62
  return std::max(sizeof(SkFontStyle), kMinMemoryPressure);
61
63
  }
62
64
 
63
- std::string getObjectType() const override { return "JsiSkFontStyle"; }
65
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
66
+ installCommon(runtime, prototype);
67
+ }
64
68
 
65
69
  /**
66
70
  Returns the jsi object from a host object of this type
@@ -68,10 +72,8 @@ public:
68
72
  static jsi::Value toValue(jsi::Runtime &runtime,
69
73
  std::shared_ptr<RNSkPlatformContext> context,
70
74
  const SkFontStyle &fontStyle) {
71
- auto fontStyleObj =
72
- std::make_shared<JsiSkFontStyle>(std::move(context), fontStyle);
73
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, fontStyleObj,
74
- context);
75
+ return makeJsiObject(runtime, std::make_shared<JsiSkFontStyle>(
76
+ std::move(context), fontStyle));
75
77
  }
76
78
  };
77
79
  } // namespace RNSkia