@shopify/react-native-skia 2.9.1-next.1 → 2.10.0

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 (273) hide show
  1. package/android/CMakeLists.txt +1 -5
  2. package/android/cpp/jni/JniWebGPUView.cpp +52 -7
  3. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUSurfaceView.java +3 -1
  4. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUTextureView.java +11 -5
  5. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUView.java +10 -7
  6. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewAPI.java +7 -2
  7. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewManager.java +1 -1
  8. package/apple/WebGPUMetalView.mm +49 -6
  9. package/cpp/api/JsiNativeBuffer.h +15 -10
  10. package/cpp/api/JsiSkAnimatedImage.h +21 -19
  11. package/cpp/api/JsiSkAnimatedImageFactory.h +13 -14
  12. package/cpp/api/JsiSkApi.h +246 -92
  13. package/cpp/api/JsiSkCanvas.h +76 -58
  14. package/cpp/api/JsiSkColor.h +7 -5
  15. package/cpp/api/JsiSkColorFilter.h +15 -8
  16. package/cpp/api/JsiSkColorFilterFactory.h +45 -45
  17. package/cpp/api/JsiSkContourMeasure.h +24 -21
  18. package/cpp/api/JsiSkContourMeasureIter.h +18 -21
  19. package/cpp/api/JsiSkData.h +13 -7
  20. package/cpp/api/JsiSkDataFactory.h +22 -21
  21. package/cpp/api/JsiSkFont.h +56 -44
  22. package/cpp/api/JsiSkFontMgr.h +22 -13
  23. package/cpp/api/JsiSkFontMgrFactory.h +12 -10
  24. package/cpp/api/JsiSkFontStyle.h +14 -12
  25. package/cpp/api/JsiSkImage.h +45 -34
  26. package/cpp/api/JsiSkImageFactory.h +47 -52
  27. package/cpp/api/JsiSkImageFilter.h +21 -11
  28. package/cpp/api/JsiSkImageFilterFactory.h +96 -96
  29. package/cpp/api/JsiSkImageInfo.h +22 -19
  30. package/cpp/api/JsiSkMaskFilter.h +21 -11
  31. package/cpp/api/JsiSkMaskFilterFactory.h +16 -13
  32. package/cpp/api/JsiSkMatrix.h +31 -31
  33. package/cpp/api/JsiSkNativeObjects.h +419 -0
  34. package/cpp/api/JsiSkPaint.h +59 -39
  35. package/cpp/api/JsiSkParagraph.h +39 -32
  36. package/cpp/api/JsiSkParagraphBuilder.h +24 -21
  37. package/cpp/api/JsiSkParagraphBuilderFactory.h +13 -12
  38. package/cpp/api/JsiSkParagraphStyle.h +20 -10
  39. package/cpp/api/JsiSkPath.h +95 -70
  40. package/cpp/api/JsiSkPathBuilder.h +83 -67
  41. package/cpp/api/JsiSkPathBuilderFactory.h +16 -17
  42. package/cpp/api/JsiSkPathEffect.h +21 -11
  43. package/cpp/api/JsiSkPathEffectFactory.h +33 -32
  44. package/cpp/api/JsiSkPathFactory.h +79 -103
  45. package/cpp/api/JsiSkPicture.h +24 -13
  46. package/cpp/api/JsiSkPictureFactory.h +21 -26
  47. package/cpp/api/JsiSkPictureRecorder.h +21 -22
  48. package/cpp/api/JsiSkPoint.h +19 -22
  49. package/cpp/api/JsiSkRRect.h +22 -29
  50. package/cpp/api/JsiSkRSXform.h +26 -30
  51. package/cpp/api/JsiSkRect.h +28 -30
  52. package/cpp/api/JsiSkRuntimeEffect.h +39 -30
  53. package/cpp/api/JsiSkRuntimeEffectFactory.h +12 -12
  54. package/cpp/api/JsiSkRuntimeShaderBuilder.h +25 -18
  55. package/cpp/api/JsiSkSVG.h +13 -13
  56. package/cpp/api/JsiSkSVGFactory.h +17 -20
  57. package/cpp/api/JsiSkShader.h +15 -8
  58. package/cpp/api/JsiSkShaderFactory.h +41 -48
  59. package/cpp/api/JsiSkSkottie.h +49 -39
  60. package/cpp/api/JsiSkStrutStyle.h +18 -8
  61. package/cpp/api/JsiSkSurface.h +24 -24
  62. package/cpp/api/JsiSkSurfaceFactory.h +15 -16
  63. package/cpp/api/JsiSkTextBlob.h +15 -8
  64. package/cpp/api/JsiSkTextBlobFactory.h +25 -28
  65. package/cpp/api/JsiSkTextStyle.h +34 -24
  66. package/cpp/api/JsiSkTypeface.h +19 -12
  67. package/cpp/api/JsiSkTypefaceFactory.h +12 -12
  68. package/cpp/api/JsiSkTypefaceFontProvider.h +30 -25
  69. package/cpp/api/JsiSkTypefaceFontProviderFactory.h +14 -12
  70. package/cpp/api/JsiSkVertices.h +21 -18
  71. package/cpp/api/JsiSkiaContext.h +17 -17
  72. package/cpp/api/JsiSkottieFactory.h +16 -17
  73. package/cpp/api/JsiVideo.h +27 -25
  74. package/cpp/api/recorder/Convertor.h +31 -61
  75. package/cpp/api/recorder/DataTypes.h +8 -16
  76. package/cpp/api/recorder/JsiRecorder.h +83 -55
  77. package/cpp/api/recorder/RNRecorder.h +1 -1
  78. package/cpp/jsi/BoxedNativeObject.h +146 -0
  79. package/cpp/{jsi2 → jsi}/EnumMapper.h +4 -1
  80. package/cpp/{jsi2 → jsi}/NativeObject.h +120 -146
  81. package/cpp/jsi/RuntimeAwareCache.cpp +1 -1
  82. package/cpp/jsi/RuntimeAwareCache.h +26 -8
  83. package/cpp/jsi/ViewProperty.h +5 -11
  84. package/cpp/rnskia/RNSkJsiViewApi.h +20 -11
  85. package/cpp/rnskia/RNSkManager.cpp +29 -25
  86. package/cpp/rnskia/RNSkPictureView.h +1 -1
  87. package/cpp/rnwgpu/ArrayBuffer.h +5 -6
  88. package/cpp/rnwgpu/Canvas.h +4 -2
  89. package/cpp/rnwgpu/SurfaceRegistry.h +469 -131
  90. package/cpp/rnwgpu/api/GPU.cpp +4 -4
  91. package/cpp/rnwgpu/api/GPU.h +1 -1
  92. package/cpp/rnwgpu/api/GPUAdapter.cpp +12 -6
  93. package/cpp/rnwgpu/api/GPUAdapter.h +5 -4
  94. package/cpp/rnwgpu/api/GPUAdapterInfo.h +1 -1
  95. package/cpp/rnwgpu/api/GPUBindGroup.h +1 -1
  96. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +1 -1
  97. package/cpp/rnwgpu/api/GPUBuffer.cpp +12 -2
  98. package/cpp/rnwgpu/api/GPUBuffer.h +4 -3
  99. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +33 -19
  100. package/cpp/rnwgpu/api/GPUCanvasContext.h +4 -2
  101. package/cpp/rnwgpu/api/GPUCommandBuffer.h +1 -1
  102. package/cpp/rnwgpu/api/GPUCommandEncoder.h +1 -1
  103. package/cpp/rnwgpu/api/GPUCompilationInfo.h +1 -1
  104. package/cpp/rnwgpu/api/GPUCompilationMessage.h +1 -1
  105. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +1 -1
  106. package/cpp/rnwgpu/api/GPUComputePipeline.h +1 -1
  107. package/cpp/rnwgpu/api/GPUDevice.cpp +38 -24
  108. package/cpp/rnwgpu/api/GPUDevice.h +12 -10
  109. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +1 -1
  110. package/cpp/rnwgpu/api/GPUError.h +1 -1
  111. package/cpp/rnwgpu/api/GPUExtent3D.h +1 -1
  112. package/cpp/rnwgpu/api/GPUExternalTexture.h +1 -1
  113. package/cpp/rnwgpu/api/GPUInternalError.h +1 -1
  114. package/cpp/rnwgpu/api/GPUOrigin2D.h +1 -1
  115. package/cpp/rnwgpu/api/GPUOrigin3D.h +1 -1
  116. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +1 -1
  117. package/cpp/rnwgpu/api/GPUPipelineLayout.h +1 -1
  118. package/cpp/rnwgpu/api/GPUQuerySet.h +1 -1
  119. package/cpp/rnwgpu/api/GPUQueue.cpp +6 -2
  120. package/cpp/rnwgpu/api/GPUQueue.h +4 -4
  121. package/cpp/rnwgpu/api/GPURenderBundle.h +1 -1
  122. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +1 -1
  123. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +1 -1
  124. package/cpp/rnwgpu/api/GPURenderPipeline.h +1 -1
  125. package/cpp/rnwgpu/api/GPUSampler.h +1 -1
  126. package/cpp/rnwgpu/api/GPUShaderModule.cpp +8 -3
  127. package/cpp/rnwgpu/api/GPUShaderModule.h +4 -4
  128. package/cpp/rnwgpu/api/GPUSharedFence.h +1 -1
  129. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +1 -1
  130. package/cpp/rnwgpu/api/GPUSupportedLimits.h +1 -1
  131. package/cpp/rnwgpu/api/GPUTexture.h +1 -1
  132. package/cpp/rnwgpu/api/GPUTextureView.h +1 -1
  133. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +1 -1
  134. package/cpp/rnwgpu/api/GPUValidationError.h +1 -1
  135. package/cpp/rnwgpu/api/ImageBitmap.h +1 -1
  136. package/cpp/rnwgpu/api/RNWebGPU.h +21 -1
  137. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +1 -1
  138. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +1 -1
  139. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +1 -1
  140. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +1 -1
  141. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +1 -1
  142. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +1 -1
  143. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +1 -1
  144. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +1 -1
  145. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +1 -1
  146. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +1 -1
  147. package/cpp/rnwgpu/api/descriptors/GPUColor.h +1 -1
  148. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +1 -1
  149. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +1 -1
  150. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +1 -1
  151. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +1 -1
  152. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +1 -1
  153. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +1 -1
  154. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +1 -1
  155. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +1 -1
  156. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +1 -1
  157. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +1 -1
  158. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +1 -1
  159. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +1 -1
  160. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +1 -1
  161. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +1 -1
  162. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +1 -1
  163. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +1 -1
  164. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +1 -1
  165. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +1 -1
  166. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +1 -1
  167. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +1 -1
  168. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +1 -1
  169. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +1 -1
  170. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +1 -1
  171. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +1 -1
  172. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +1 -1
  173. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +1 -1
  174. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +1 -1
  175. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +1 -1
  176. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +1 -1
  177. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +1 -1
  178. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +1 -1
  179. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +1 -1
  180. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +1 -1
  181. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +1 -1
  182. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +1 -1
  183. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +1 -1
  184. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +1 -1
  185. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +1 -1
  186. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +1 -1
  187. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +1 -1
  188. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +1 -1
  189. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +1 -1
  190. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +1 -1
  191. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +1 -1
  192. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +1 -1
  193. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +1 -1
  194. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +1 -1
  195. package/cpp/rnwgpu/api/descriptors/Unions.h +1 -1
  196. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +20 -21
  197. package/cpp/rnwgpu/async/RuntimeContext.cpp +5 -0
  198. package/cpp/rnwgpu/async/RuntimeContext.h +15 -2
  199. package/lib/commonjs/external/reanimated/renderHelpers.d.ts +15 -0
  200. package/lib/commonjs/external/reanimated/renderHelpers.js +30 -1
  201. package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
  202. package/lib/commonjs/skia/NativeSetup.js +4 -0
  203. package/lib/commonjs/skia/NativeSetup.js.map +1 -1
  204. package/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +1 -0
  205. package/lib/commonjs/skia/SkiaWorkletSerialization.js +66 -0
  206. package/lib/commonjs/skia/SkiaWorkletSerialization.js.map +1 -0
  207. package/lib/commonjs/sksg/Container.native.js +20 -1
  208. package/lib/commonjs/sksg/Container.native.js.map +1 -1
  209. package/lib/commonjs/views/WebGPUCanvas.d.ts +1 -0
  210. package/lib/commonjs/views/WebGPUCanvas.js +13 -0
  211. package/lib/commonjs/views/WebGPUCanvas.js.map +1 -1
  212. package/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  213. package/lib/module/external/reanimated/renderHelpers.js +29 -0
  214. package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
  215. package/lib/module/skia/NativeSetup.js +4 -0
  216. package/lib/module/skia/NativeSetup.js.map +1 -1
  217. package/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  218. package/lib/module/skia/SkiaWorkletSerialization.js +59 -0
  219. package/lib/module/skia/SkiaWorkletSerialization.js.map +1 -0
  220. package/lib/module/sksg/Container.native.js +21 -2
  221. package/lib/module/sksg/Container.native.js.map +1 -1
  222. package/lib/module/views/WebGPUCanvas.d.ts +1 -0
  223. package/lib/module/views/WebGPUCanvas.js +14 -1
  224. package/lib/module/views/WebGPUCanvas.js.map +1 -1
  225. package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
  226. package/lib/typescript/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +2 -0
  227. package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  228. package/lib/typescript/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  229. package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +15 -0
  230. package/lib/typescript/src/skia/SkiaWorkletSerialization.d.ts +1 -0
  231. package/lib/typescript/src/views/WebGPUCanvas.d.ts +1 -0
  232. package/package.json +12 -8
  233. package/react-native-skia.podspec +1 -2
  234. package/src/external/reanimated/renderHelpers.ts +30 -0
  235. package/src/skia/NativeSetup.ts +5 -0
  236. package/src/skia/SkiaWorkletSerialization.ts +67 -0
  237. package/src/sksg/Container.native.ts +40 -2
  238. package/src/views/WebGPUCanvas.tsx +17 -1
  239. package/cpp/api/JsiSkHostObjects.h +0 -257
  240. package/cpp/dawn/include/dawn/dawn_proc.h +0 -53
  241. package/cpp/dawn/include/dawn/dawn_proc_table.h +0 -330
  242. package/cpp/dawn/include/dawn/dawn_thread_dispatch_proc.h +0 -47
  243. package/cpp/dawn/include/dawn/dawn_version.h +0 -41
  244. package/cpp/dawn/include/dawn/native/D3D11Backend.h +0 -65
  245. package/cpp/dawn/include/dawn/native/D3D12Backend.h +0 -86
  246. package/cpp/dawn/include/dawn/native/D3DBackend.h +0 -56
  247. package/cpp/dawn/include/dawn/native/DawnNative.h +0 -369
  248. package/cpp/dawn/include/dawn/native/MetalBackend.h +0 -56
  249. package/cpp/dawn/include/dawn/native/NullBackend.h +0 -39
  250. package/cpp/dawn/include/dawn/native/OpenGLBackend.h +0 -89
  251. package/cpp/dawn/include/dawn/native/VulkanBackend.h +0 -183
  252. package/cpp/dawn/include/dawn/native/WebGPUBackend.h +0 -49
  253. package/cpp/dawn/include/dawn/native/dawn_native_export.h +0 -49
  254. package/cpp/dawn/include/dawn/platform/DawnPlatform.h +0 -210
  255. package/cpp/dawn/include/dawn/platform/dawn_platform_export.h +0 -49
  256. package/cpp/dawn/include/dawn/replay/Replay.h +0 -99
  257. package/cpp/dawn/include/dawn/replay/dawn_replay_export.h +0 -49
  258. package/cpp/dawn/include/dawn/webgpu_cpp_print.h +0 -2844
  259. package/cpp/dawn/include/tint/tint.h +0 -90
  260. package/cpp/dawn/include/webgpu/webgpu.h +0 -4987
  261. package/cpp/dawn/include/webgpu/webgpu_cpp.h +0 -10080
  262. package/cpp/dawn/include/webgpu/webgpu_cpp_chained_struct.h +0 -57
  263. package/cpp/dawn/include/webgpu/webgpu_enum_class_bitmasks.h +0 -161
  264. package/cpp/dawn/include/webgpu/webgpu_glfw.h +0 -88
  265. package/cpp/jsi/JsiHostObject.cpp +0 -137
  266. package/cpp/jsi/JsiHostObject.h +0 -385
  267. package/cpp/skia/src/gpu/graphite/ContextOptionsPriv.h +0 -45
  268. package/cpp/skia/src/gpu/graphite/ResourceTypes.h +0 -360
  269. package/cpp/skia/src/gpu/graphite/TextureProxyView.h +0 -105
  270. package/libs/.graphite +0 -1
  271. /package/cpp/{jsi2 → jsi}/JSIConverter.h +0 -0
  272. /package/cpp/{jsi2 → jsi}/Promise.cpp +0 -0
  273. /package/cpp/{jsi2 → jsi}/Promise.h +0 -0
@@ -6,7 +6,7 @@
6
6
 
7
7
  #include <jsi/jsi.h>
8
8
 
9
- #include "JsiSkHostObjects.h"
9
+ #include "JsiSkNativeObjects.h"
10
10
 
11
11
  #pragma clang diagnostic push
12
12
  #pragma clang diagnostic ignored "-Wdocumentation"
@@ -20,8 +20,10 @@ namespace RNSkia {
20
20
 
21
21
  namespace jsi = facebook::jsi;
22
22
 
23
- class JsiSkFontMgrFactory : public JsiSkHostObject {
23
+ class JsiSkFontMgrFactory : public JsiSkNativeObject<JsiSkFontMgrFactory> {
24
24
  public:
25
+ static constexpr const char *CLASS_NAME = "FontMgrFactory";
26
+
25
27
  static sk_sp<SkFontMgr>
26
28
  getFontMgr(std::shared_ptr<RNSkPlatformContext> context) {
27
29
  static SkOnce once;
@@ -32,19 +34,19 @@ public:
32
34
 
33
35
  JSI_HOST_FUNCTION(System) {
34
36
  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());
37
+ return makeJsiObject(runtime,
38
+ 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
+ installHostMethod(runtime, prototype, "System",
45
+ &JsiSkFontMgrFactory::System);
46
+ }
45
47
 
46
48
  explicit JsiSkFontMgrFactory(std::shared_ptr<RNSkPlatformContext> context)
47
- : JsiSkHostObject(std::move(context)) {}
49
+ : JsiSkNativeObject<JsiSkFontMgrFactory>(std::move(context)) {}
48
50
  };
49
51
 
50
52
  } // 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
@@ -5,9 +5,9 @@
5
5
  #include <utility>
6
6
 
7
7
  #include "JsiSkDispatcher.h"
8
- #include "JsiSkHostObjects.h"
9
8
  #include "JsiSkImageInfo.h"
10
9
  #include "JsiSkMatrix.h"
10
+ #include "JsiSkNativeObjects.h"
11
11
  #include "JsiSkShader.h"
12
12
  #include "api/third_party/base64.h"
13
13
 
@@ -15,8 +15,8 @@
15
15
  #include "utils/RNSkTypedArray.h"
16
16
 
17
17
  #if defined(SK_GRAPHITE)
18
- #include "rnskia/RNDawnContext.h"
19
18
  #include "include/gpu/graphite/Context.h"
19
+ #include "rnskia/RNDawnContext.h"
20
20
  #else
21
21
  #include "include/gpu/ganesh/GrDirectContext.h"
22
22
  #endif
@@ -140,11 +140,13 @@ inline SkSamplingOptions SamplingOptionsFromValue(jsi::Runtime &runtime,
140
140
  return samplingOptions;
141
141
  }
142
142
 
143
- class JsiSkImage : public JsiSkWrappingSkPtrHostObject<SkImage> {
143
+ class JsiSkImage : public JsiSkWrappingSkPtrNativeObject<JsiSkImage, SkImage> {
144
144
  private:
145
145
  std::shared_ptr<Dispatcher> _dispatcher;
146
146
 
147
147
  public:
148
+ static constexpr const char *CLASS_NAME = "Image";
149
+
148
150
  // TODO-API: Properties?
149
151
  JSI_HOST_FUNCTION(width) { return static_cast<double>(getObject()->width()); }
150
152
  JSI_HOST_FUNCTION(height) {
@@ -166,10 +168,8 @@ public:
166
168
  : nullptr;
167
169
  auto shader =
168
170
  getObject()->makeShader(tmx, tmy, SkSamplingOptions(fm, mm), m);
169
- auto shaderObj =
170
- std::make_shared<JsiSkShader>(getContext(), std::move(shader));
171
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shaderObj,
172
- getContext());
171
+ return makeJsiObject(runtime, std::make_shared<JsiSkShader>(
172
+ getContext(), std::move(shader)));
173
173
  }
174
174
 
175
175
  JSI_HOST_FUNCTION(makeShaderCubic) {
@@ -182,10 +182,8 @@ public:
182
182
  : nullptr;
183
183
  auto shader =
184
184
  getObject()->makeShader(tmx, tmy, SkSamplingOptions({B, C}), m);
185
- auto shaderObj =
186
- std::make_shared<JsiSkShader>(getContext(), std::move(shader));
187
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shaderObj,
188
- getContext());
185
+ return makeJsiObject(runtime, std::make_shared<JsiSkShader>(
186
+ getContext(), std::move(shader)));
189
187
  }
190
188
 
191
189
  sk_sp<SkData> encodeImageData(const jsi::Value *arguments, size_t count) {
@@ -344,10 +342,8 @@ public:
344
342
  if (!rasterImage) {
345
343
  return jsi::Value::null();
346
344
  }
347
- auto hostObjectInstance =
348
- std::make_shared<JsiSkImage>(getContext(), std::move(rasterImage));
349
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
350
- runtime, hostObjectInstance, getContext());
345
+ return makeJsiObject(runtime, std::make_shared<JsiSkImage>(
346
+ getContext(), std::move(rasterImage)));
351
347
  }
352
348
 
353
349
  JSI_HOST_FUNCTION(getNativeTextureUnstable) {
@@ -363,25 +359,42 @@ public:
363
359
  return jsi::Value(getObject()->isTextureBacked());
364
360
  }
365
361
 
366
- EXPORT_JSI_API_TYPENAME(JsiSkImage, Image)
367
-
368
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkImage, width),
369
- JSI_EXPORT_FUNC(JsiSkImage, height),
370
- JSI_EXPORT_FUNC(JsiSkImage, getImageInfo),
371
- JSI_EXPORT_FUNC(JsiSkImage, makeShaderOptions),
372
- JSI_EXPORT_FUNC(JsiSkImage, makeShaderCubic),
373
- JSI_EXPORT_FUNC(JsiSkImage, encodeToBytes),
374
- JSI_EXPORT_FUNC(JsiSkImage, encodeToBase64),
375
- JSI_EXPORT_FUNC(JsiSkImage, readPixels),
376
- JSI_EXPORT_FUNC(JsiSkImage, makeNonTextureImage),
377
- JSI_EXPORT_FUNC(JsiSkImage, getNativeTextureUnstable),
378
- JSI_EXPORT_FUNC(JsiSkImage, isTextureBacked),
379
- JSI_EXPORT_FUNC(JsiSkImage, dispose))
362
+ /**
363
+ Returns the underlying object from a host object of this type
364
+ */
365
+ static sk_sp<SkImage> fromValue(jsi::Runtime &runtime,
366
+ const jsi::Value &obj) {
367
+ return objectFromValue(runtime, obj);
368
+ }
369
+
370
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
371
+ installCommon(runtime, prototype);
372
+ installHostMethod(runtime, prototype, "width", &JsiSkImage::width);
373
+ installHostMethod(runtime, prototype, "height", &JsiSkImage::height);
374
+ installHostMethod(runtime, prototype, "getImageInfo",
375
+ &JsiSkImage::getImageInfo);
376
+ installHostMethod(runtime, prototype, "makeShaderOptions",
377
+ &JsiSkImage::makeShaderOptions);
378
+ installHostMethod(runtime, prototype, "makeShaderCubic",
379
+ &JsiSkImage::makeShaderCubic);
380
+ installHostMethod(runtime, prototype, "encodeToBytes",
381
+ &JsiSkImage::encodeToBytes);
382
+ installHostMethod(runtime, prototype, "encodeToBase64",
383
+ &JsiSkImage::encodeToBase64);
384
+ installHostMethod(runtime, prototype, "readPixels",
385
+ &JsiSkImage::readPixels);
386
+ installHostMethod(runtime, prototype, "makeNonTextureImage",
387
+ &JsiSkImage::makeNonTextureImage);
388
+ installHostMethod(runtime, prototype, "getNativeTextureUnstable",
389
+ &JsiSkImage::getNativeTextureUnstable);
390
+ installHostMethod(runtime, prototype, "isTextureBacked",
391
+ &JsiSkImage::isTextureBacked);
392
+ }
380
393
 
381
394
  JsiSkImage(std::shared_ptr<RNSkPlatformContext> context,
382
395
  const sk_sp<SkImage> image)
383
- : JsiSkWrappingSkPtrHostObject<SkImage>(std::move(context),
384
- std::move(image)) {
396
+ : JsiSkWrappingSkPtrNativeObject<JsiSkImage, SkImage>(std::move(context),
397
+ std::move(image)) {
385
398
  // Get the dispatcher for the current thread
386
399
  _dispatcher = Dispatcher::getDispatcher();
387
400
  // Process any pending operations (e.g. deletions of previous resources)
@@ -406,7 +419,7 @@ public:
406
419
  }
407
420
  }
408
421
 
409
- size_t getMemoryPressure() const override {
422
+ size_t getMemoryPressure() override {
410
423
  if (isDisposed()) {
411
424
  return 0;
412
425
  }
@@ -420,8 +433,6 @@ public:
420
433
  }
421
434
  return 0;
422
435
  }
423
-
424
- std::string getObjectType() const override { return "JsiSkImage"; }
425
436
  };
426
437
 
427
438
  } // namespace RNSkia
@@ -5,11 +5,11 @@
5
5
 
6
6
  #include <jsi/jsi.h>
7
7
 
8
- #include "jsi/JsiPromises.h"
9
8
  #include "JsiSkData.h"
10
- #include "JsiSkHostObjects.h"
11
9
  #include "JsiSkImage.h"
12
10
  #include "JsiSkImageInfo.h"
11
+ #include "JsiSkNativeObjects.h"
12
+ #include "jsi/JsiPromises.h"
13
13
 
14
14
  #ifdef SK_GRAPHITE
15
15
  #include "rnskia/RNDawnContext.h"
@@ -20,13 +20,13 @@ namespace RNSkia {
20
20
 
21
21
  namespace jsi = facebook::jsi;
22
22
 
23
- class JsiSkImageFactory : public JsiSkHostObject {
23
+ class JsiSkImageFactory : public JsiSkNativeObject<JsiSkImageFactory> {
24
24
  public:
25
+ static constexpr const char *CLASS_NAME = "ImageFactory";
26
+
25
27
  JSI_HOST_FUNCTION(MakeNull) {
26
- auto hostObjectInstance =
27
- std::make_shared<JsiSkImage>(getContext(), nullptr);
28
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
29
- runtime, hostObjectInstance, getContext());
28
+ return makeJsiObject(runtime,
29
+ std::make_shared<JsiSkImage>(getContext(), nullptr));
30
30
  }
31
31
 
32
32
  JSI_HOST_FUNCTION(MakeImageFromEncoded) {
@@ -35,10 +35,8 @@ public:
35
35
  if (image == nullptr) {
36
36
  return jsi::Value::null();
37
37
  }
38
- auto hostObjectInstance =
39
- std::make_shared<JsiSkImage>(getContext(), std::move(image));
40
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
41
- runtime, hostObjectInstance, getContext());
38
+ return makeJsiObject(
39
+ runtime, std::make_shared<JsiSkImage>(getContext(), std::move(image)));
42
40
  }
43
41
 
44
42
  JSI_HOST_FUNCTION(MakeImageFromNativeBuffer) {
@@ -49,10 +47,8 @@ public:
49
47
  if (image == nullptr) {
50
48
  throw std::runtime_error("Failed to convert NativeBuffer to SkImage!");
51
49
  }
52
- auto hostObjectInstance =
53
- std::make_shared<JsiSkImage>(getContext(), std::move(image));
54
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
55
- runtime, hostObjectInstance, getContext());
50
+ return makeJsiObject(
51
+ runtime, std::make_shared<JsiSkImage>(getContext(), std::move(image)));
56
52
  }
57
53
 
58
54
  JSI_HOST_FUNCTION(MakeImage) {
@@ -63,10 +59,8 @@ public:
63
59
  if (image == nullptr) {
64
60
  return jsi::Value::null();
65
61
  }
66
- auto hostObjectInstance =
67
- std::make_shared<JsiSkImage>(getContext(), std::move(image));
68
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
69
- runtime, hostObjectInstance, getContext());
62
+ return makeJsiObject(
63
+ runtime, std::make_shared<JsiSkImage>(getContext(), std::move(image)));
70
64
  }
71
65
 
72
66
  JSI_HOST_FUNCTION(MakeImageFromViewTag) {
@@ -88,10 +82,9 @@ public:
88
82
  promise->reject("Failed to create image from view tag");
89
83
  return;
90
84
  }
91
- auto hostObjectInstance =
92
- std::make_shared<JsiSkImage>(context, std::move(result));
93
- promise->resolve(JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
94
- runtime, hostObjectInstance, context));
85
+ promise->resolve(
86
+ makeJsiObject(runtime, std::make_shared<JsiSkImage>(
87
+ context, std::move(result))));
95
88
  });
96
89
  });
97
90
  });
@@ -105,17 +98,15 @@ public:
105
98
  if (image == nullptr) {
106
99
  throw std::runtime_error("Failed to convert native texture to SkImage!");
107
100
  }
108
- if (count > 4 && arguments[4].isObject() &&
109
- arguments[4].asObject(runtime).isHostObject(runtime)) {
110
- auto jsiImage =
111
- arguments[4].asObject(runtime).asHostObject<JsiSkImage>(runtime);
112
- jsiImage->setObject(image);
113
- return jsi::Value(runtime, arguments[4]);
101
+ if (count > 4) {
102
+ auto jsiImage = tryGetJsiObject<JsiSkImage>(runtime, arguments[4]);
103
+ if (jsiImage) {
104
+ jsiImage->setObject(image);
105
+ return jsi::Value(runtime, arguments[4]);
106
+ }
114
107
  }
115
- auto hostObjectInstance =
116
- std::make_shared<JsiSkImage>(getContext(), std::move(image));
117
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
118
- runtime, hostObjectInstance, getContext());
108
+ return makeJsiObject(
109
+ runtime, std::make_shared<JsiSkImage>(getContext(), std::move(image)));
119
110
  }
120
111
 
121
112
  JSI_HOST_FUNCTION(MakeImageFromTexture) {
@@ -141,10 +132,8 @@ public:
141
132
  if (image == nullptr) {
142
133
  throw std::runtime_error("Failed to create SkImage from GPUTexture!");
143
134
  }
144
- auto hostObjectInstance =
145
- std::make_shared<JsiSkImage>(getContext(), std::move(image));
146
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
147
- runtime, hostObjectInstance, getContext());
135
+ return makeJsiObject(
136
+ runtime, std::make_shared<JsiSkImage>(getContext(), std::move(image)));
148
137
  #else
149
138
  throw std::runtime_error(
150
139
  "MakeImageFromTexture is only available with the Graphite backend. "
@@ -179,23 +168,29 @@ public:
179
168
  #endif
180
169
  }
181
170
 
182
- size_t getMemoryPressure() const override { return 1024; }
183
-
184
- std::string getObjectType() const override { return "JsiSkImageFactory"; }
185
-
186
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkImageFactory, MakeImageFromEncoded),
187
- JSI_EXPORT_FUNC(JsiSkImageFactory, MakeImageFromViewTag),
188
- JSI_EXPORT_FUNC(JsiSkImageFactory,
189
- MakeImageFromNativeBuffer),
190
- JSI_EXPORT_FUNC(JsiSkImageFactory,
191
- MakeImageFromNativeTextureUnstable),
192
- JSI_EXPORT_FUNC(JsiSkImageFactory, MakeImage),
193
- JSI_EXPORT_FUNC(JsiSkImageFactory, MakeNull),
194
- JSI_EXPORT_FUNC(JsiSkImageFactory, MakeImageFromTexture),
195
- JSI_EXPORT_FUNC(JsiSkImageFactory, MakeTextureFromImage))
171
+ size_t getMemoryPressure() override { return 1024; }
172
+
173
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
174
+ installHostMethod(runtime, prototype, "MakeImageFromEncoded",
175
+ &JsiSkImageFactory::MakeImageFromEncoded);
176
+ installHostMethod(runtime, prototype, "MakeImageFromViewTag",
177
+ &JsiSkImageFactory::MakeImageFromViewTag);
178
+ installHostMethod(runtime, prototype, "MakeImageFromNativeBuffer",
179
+ &JsiSkImageFactory::MakeImageFromNativeBuffer);
180
+ installHostMethod(runtime, prototype, "MakeImageFromNativeTextureUnstable",
181
+ &JsiSkImageFactory::MakeImageFromNativeTextureUnstable);
182
+ installHostMethod(runtime, prototype, "MakeImage",
183
+ &JsiSkImageFactory::MakeImage);
184
+ installHostMethod(runtime, prototype, "MakeNull",
185
+ &JsiSkImageFactory::MakeNull);
186
+ installHostMethod(runtime, prototype, "MakeImageFromTexture",
187
+ &JsiSkImageFactory::MakeImageFromTexture);
188
+ installHostMethod(runtime, prototype, "MakeTextureFromImage",
189
+ &JsiSkImageFactory::MakeTextureFromImage);
190
+ }
196
191
 
197
192
  explicit JsiSkImageFactory(std::shared_ptr<RNSkPlatformContext> context)
198
- : JsiSkHostObject(std::move(context)) {}
193
+ : JsiSkNativeObject<JsiSkImageFactory>(std::move(context)) {}
199
194
  };
200
195
 
201
196
  } // 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,19 +18,29 @@ namespace RNSkia {
18
18
 
19
19
  namespace jsi = facebook::jsi;
20
20
 
21
- class JsiSkImageFilter : public JsiSkWrappingSkPtrHostObject<SkImageFilter> {
21
+ class JsiSkImageFilter
22
+ : public JsiSkWrappingSkPtrNativeObject<JsiSkImageFilter, SkImageFilter> {
22
23
  public:
24
+ static constexpr const char *CLASS_NAME = "ImageFilter";
25
+
23
26
  JsiSkImageFilter(std::shared_ptr<RNSkPlatformContext> context,
24
27
  sk_sp<SkImageFilter> imageFilter)
25
- : JsiSkWrappingSkPtrHostObject<SkImageFilter>(std::move(context),
26
- std::move(imageFilter)) {}
27
-
28
- size_t getMemoryPressure() const override { return 1024 * 1024; }
29
-
30
- std::string getObjectType() const override { return "JsiSkImageFilter"; }
31
-
32
- EXPORT_JSI_API_TYPENAME(JsiSkImageFilter, ImageFilter)
33
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkImageFilter, dispose))
28
+ : JsiSkWrappingSkPtrNativeObject<JsiSkImageFilter, SkImageFilter>(
29
+ std::move(context), std::move(imageFilter)) {}
30
+
31
+ size_t getMemoryPressure() override { return 1024 * 1024; }
32
+
33
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
34
+ installCommon(runtime, prototype);
35
+ }
36
+
37
+ /**
38
+ Returns the underlying object from a host object of this type
39
+ */
40
+ static sk_sp<SkImageFilter> fromValue(jsi::Runtime &runtime,
41
+ const jsi::Value &obj) {
42
+ return objectFromValue(runtime, obj);
43
+ }
34
44
  };
35
45
 
36
46
  } // namespace RNSkia