@shopify/react-native-skia 2.9.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 (220) hide show
  1. package/android/CMakeLists.txt +1 -5
  2. package/cpp/api/JsiNativeBuffer.h +15 -10
  3. package/cpp/api/JsiSkAnimatedImage.h +21 -19
  4. package/cpp/api/JsiSkAnimatedImageFactory.h +13 -14
  5. package/cpp/api/JsiSkApi.h +246 -92
  6. package/cpp/api/JsiSkCanvas.h +76 -58
  7. package/cpp/api/JsiSkColor.h +7 -5
  8. package/cpp/api/JsiSkColorFilter.h +15 -8
  9. package/cpp/api/JsiSkColorFilterFactory.h +45 -45
  10. package/cpp/api/JsiSkContourMeasure.h +24 -21
  11. package/cpp/api/JsiSkContourMeasureIter.h +18 -21
  12. package/cpp/api/JsiSkData.h +13 -7
  13. package/cpp/api/JsiSkDataFactory.h +22 -21
  14. package/cpp/api/JsiSkFont.h +56 -44
  15. package/cpp/api/JsiSkFontMgr.h +22 -13
  16. package/cpp/api/JsiSkFontMgrFactory.h +12 -10
  17. package/cpp/api/JsiSkFontStyle.h +14 -12
  18. package/cpp/api/JsiSkImage.h +45 -34
  19. package/cpp/api/JsiSkImageFactory.h +47 -52
  20. package/cpp/api/JsiSkImageFilter.h +21 -11
  21. package/cpp/api/JsiSkImageFilterFactory.h +96 -96
  22. package/cpp/api/JsiSkImageInfo.h +22 -19
  23. package/cpp/api/JsiSkMaskFilter.h +21 -11
  24. package/cpp/api/JsiSkMaskFilterFactory.h +16 -13
  25. package/cpp/api/JsiSkMatrix.h +31 -31
  26. package/cpp/api/JsiSkNativeObjects.h +419 -0
  27. package/cpp/api/JsiSkPaint.h +59 -39
  28. package/cpp/api/JsiSkParagraph.h +39 -32
  29. package/cpp/api/JsiSkParagraphBuilder.h +24 -21
  30. package/cpp/api/JsiSkParagraphBuilderFactory.h +13 -12
  31. package/cpp/api/JsiSkPath.h +95 -70
  32. package/cpp/api/JsiSkPathBuilder.h +83 -67
  33. package/cpp/api/JsiSkPathBuilderFactory.h +16 -17
  34. package/cpp/api/JsiSkPathEffect.h +21 -11
  35. package/cpp/api/JsiSkPathEffectFactory.h +33 -32
  36. package/cpp/api/JsiSkPathFactory.h +79 -103
  37. package/cpp/api/JsiSkPicture.h +24 -13
  38. package/cpp/api/JsiSkPictureFactory.h +21 -26
  39. package/cpp/api/JsiSkPictureRecorder.h +21 -22
  40. package/cpp/api/JsiSkPoint.h +19 -22
  41. package/cpp/api/JsiSkRRect.h +22 -29
  42. package/cpp/api/JsiSkRSXform.h +26 -30
  43. package/cpp/api/JsiSkRect.h +28 -30
  44. package/cpp/api/JsiSkRuntimeEffect.h +39 -30
  45. package/cpp/api/JsiSkRuntimeEffectFactory.h +12 -12
  46. package/cpp/api/JsiSkRuntimeShaderBuilder.h +25 -18
  47. package/cpp/api/JsiSkSVG.h +13 -13
  48. package/cpp/api/JsiSkSVGFactory.h +17 -20
  49. package/cpp/api/JsiSkShader.h +15 -8
  50. package/cpp/api/JsiSkShaderFactory.h +41 -48
  51. package/cpp/api/JsiSkSkottie.h +49 -39
  52. package/cpp/api/JsiSkSurface.h +24 -24
  53. package/cpp/api/JsiSkSurfaceFactory.h +15 -16
  54. package/cpp/api/JsiSkTextBlob.h +15 -8
  55. package/cpp/api/JsiSkTextBlobFactory.h +25 -28
  56. package/cpp/api/JsiSkTypeface.h +19 -12
  57. package/cpp/api/JsiSkTypefaceFactory.h +12 -12
  58. package/cpp/api/JsiSkTypefaceFontProvider.h +30 -25
  59. package/cpp/api/JsiSkTypefaceFontProviderFactory.h +14 -12
  60. package/cpp/api/JsiSkVertices.h +21 -18
  61. package/cpp/api/JsiSkiaContext.h +17 -17
  62. package/cpp/api/JsiSkottieFactory.h +16 -17
  63. package/cpp/api/JsiVideo.h +27 -25
  64. package/cpp/api/recorder/Convertor.h +31 -61
  65. package/cpp/api/recorder/DataTypes.h +8 -16
  66. package/cpp/api/recorder/JsiRecorder.h +83 -55
  67. package/cpp/api/recorder/RNRecorder.h +1 -1
  68. package/cpp/jsi/BoxedNativeObject.h +146 -0
  69. package/cpp/{jsi2 → jsi}/EnumMapper.h +4 -1
  70. package/cpp/{jsi2 → jsi}/NativeObject.h +120 -146
  71. package/cpp/jsi/RuntimeAwareCache.cpp +1 -1
  72. package/cpp/jsi/RuntimeAwareCache.h +26 -8
  73. package/cpp/jsi/ViewProperty.h +5 -11
  74. package/cpp/rnskia/RNSkJsiViewApi.h +20 -11
  75. package/cpp/rnskia/RNSkManager.cpp +23 -25
  76. package/cpp/rnskia/RNSkPictureView.h +1 -1
  77. package/cpp/rnwgpu/ArrayBuffer.h +5 -6
  78. package/cpp/rnwgpu/Canvas.h +4 -2
  79. package/cpp/rnwgpu/api/GPU.cpp +4 -4
  80. package/cpp/rnwgpu/api/GPU.h +1 -1
  81. package/cpp/rnwgpu/api/GPUAdapter.cpp +2 -3
  82. package/cpp/rnwgpu/api/GPUAdapter.h +4 -4
  83. package/cpp/rnwgpu/api/GPUAdapterInfo.h +1 -1
  84. package/cpp/rnwgpu/api/GPUBindGroup.h +1 -1
  85. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +1 -1
  86. package/cpp/rnwgpu/api/GPUBuffer.h +1 -1
  87. package/cpp/rnwgpu/api/GPUCanvasContext.h +1 -1
  88. package/cpp/rnwgpu/api/GPUCommandBuffer.h +1 -1
  89. package/cpp/rnwgpu/api/GPUCommandEncoder.h +1 -1
  90. package/cpp/rnwgpu/api/GPUCompilationInfo.h +1 -1
  91. package/cpp/rnwgpu/api/GPUCompilationMessage.h +1 -1
  92. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +1 -1
  93. package/cpp/rnwgpu/api/GPUComputePipeline.h +1 -1
  94. package/cpp/rnwgpu/api/GPUDevice.cpp +6 -7
  95. package/cpp/rnwgpu/api/GPUDevice.h +3 -3
  96. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +1 -1
  97. package/cpp/rnwgpu/api/GPUError.h +1 -1
  98. package/cpp/rnwgpu/api/GPUExtent3D.h +1 -1
  99. package/cpp/rnwgpu/api/GPUExternalTexture.h +1 -1
  100. package/cpp/rnwgpu/api/GPUInternalError.h +1 -1
  101. package/cpp/rnwgpu/api/GPUOrigin2D.h +1 -1
  102. package/cpp/rnwgpu/api/GPUOrigin3D.h +1 -1
  103. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +1 -1
  104. package/cpp/rnwgpu/api/GPUPipelineLayout.h +1 -1
  105. package/cpp/rnwgpu/api/GPUQuerySet.h +1 -1
  106. package/cpp/rnwgpu/api/GPUQueue.h +1 -1
  107. package/cpp/rnwgpu/api/GPURenderBundle.h +1 -1
  108. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +1 -1
  109. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +1 -1
  110. package/cpp/rnwgpu/api/GPURenderPipeline.h +1 -1
  111. package/cpp/rnwgpu/api/GPUSampler.h +1 -1
  112. package/cpp/rnwgpu/api/GPUShaderModule.cpp +1 -1
  113. package/cpp/rnwgpu/api/GPUShaderModule.h +1 -1
  114. package/cpp/rnwgpu/api/GPUSharedFence.h +1 -1
  115. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +1 -1
  116. package/cpp/rnwgpu/api/GPUSupportedLimits.h +1 -1
  117. package/cpp/rnwgpu/api/GPUTexture.h +1 -1
  118. package/cpp/rnwgpu/api/GPUTextureView.h +1 -1
  119. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +1 -1
  120. package/cpp/rnwgpu/api/GPUValidationError.h +1 -1
  121. package/cpp/rnwgpu/api/ImageBitmap.h +1 -1
  122. package/cpp/rnwgpu/api/RNWebGPU.h +1 -1
  123. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +1 -1
  124. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +1 -1
  125. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +1 -1
  126. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +1 -1
  127. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +1 -1
  128. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +1 -1
  129. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +1 -1
  130. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +1 -1
  131. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +1 -1
  132. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +1 -1
  133. package/cpp/rnwgpu/api/descriptors/GPUColor.h +1 -1
  134. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +1 -1
  135. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +1 -1
  136. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +1 -1
  137. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +1 -1
  138. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +1 -1
  139. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +1 -1
  140. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +1 -1
  141. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +1 -1
  142. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +1 -1
  143. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +1 -1
  144. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +1 -1
  145. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +1 -1
  146. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +1 -1
  147. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +1 -1
  148. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +1 -1
  149. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +1 -1
  150. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +1 -1
  151. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +1 -1
  152. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +1 -1
  153. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +1 -1
  154. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +1 -1
  155. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +1 -1
  156. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +1 -1
  157. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +1 -1
  158. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +1 -1
  159. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +1 -1
  160. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +1 -1
  161. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +1 -1
  162. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +1 -1
  163. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +1 -1
  164. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +1 -1
  165. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +1 -1
  166. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +1 -1
  167. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +1 -1
  168. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +1 -1
  169. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +1 -1
  170. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +1 -1
  171. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +1 -1
  172. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +1 -1
  173. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +1 -1
  174. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +1 -1
  175. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +1 -1
  176. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +1 -1
  177. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +1 -1
  178. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +1 -1
  179. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +1 -1
  180. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +1 -1
  181. package/cpp/rnwgpu/api/descriptors/Unions.h +1 -1
  182. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +20 -21
  183. package/lib/commonjs/external/reanimated/renderHelpers.d.ts +15 -0
  184. package/lib/commonjs/external/reanimated/renderHelpers.js +30 -1
  185. package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
  186. package/lib/commonjs/skia/NativeSetup.js +4 -0
  187. package/lib/commonjs/skia/NativeSetup.js.map +1 -1
  188. package/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +1 -0
  189. package/lib/commonjs/skia/SkiaWorkletSerialization.js +66 -0
  190. package/lib/commonjs/skia/SkiaWorkletSerialization.js.map +1 -0
  191. package/lib/commonjs/sksg/Container.native.js +20 -1
  192. package/lib/commonjs/sksg/Container.native.js.map +1 -1
  193. package/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  194. package/lib/module/external/reanimated/renderHelpers.js +29 -0
  195. package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
  196. package/lib/module/skia/NativeSetup.js +4 -0
  197. package/lib/module/skia/NativeSetup.js.map +1 -1
  198. package/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  199. package/lib/module/skia/SkiaWorkletSerialization.js +59 -0
  200. package/lib/module/skia/SkiaWorkletSerialization.js.map +1 -0
  201. package/lib/module/sksg/Container.native.js +21 -2
  202. package/lib/module/sksg/Container.native.js.map +1 -1
  203. package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
  204. package/lib/typescript/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +2 -0
  205. package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  206. package/lib/typescript/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  207. package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +15 -0
  208. package/lib/typescript/src/skia/SkiaWorkletSerialization.d.ts +1 -0
  209. package/package.json +6 -2
  210. package/react-native-skia.podspec +1 -2
  211. package/src/external/reanimated/renderHelpers.ts +30 -0
  212. package/src/skia/NativeSetup.ts +5 -0
  213. package/src/skia/SkiaWorkletSerialization.ts +67 -0
  214. package/src/sksg/Container.native.ts +40 -2
  215. package/cpp/api/JsiSkHostObjects.h +0 -257
  216. package/cpp/jsi/JsiHostObject.cpp +0 -137
  217. package/cpp/jsi/JsiHostObject.h +0 -385
  218. /package/cpp/{jsi2 → jsi}/JSIConverter.h +0 -0
  219. /package/cpp/{jsi2 → jsi}/Promise.cpp +0 -0
  220. /package/cpp/{jsi2 → jsi}/Promise.h +0 -0
@@ -8,7 +8,7 @@
8
8
  #include <jsi/jsi.h>
9
9
 
10
10
  #include "JsiSkDispatcher.h"
11
- #include "JsiSkHostObjects.h"
11
+ #include "JsiSkNativeObjects.h"
12
12
  #include "JsiTextureInfo.h"
13
13
 
14
14
  #include "JsiSkCanvas.h"
@@ -30,15 +30,18 @@ namespace RNSkia {
30
30
 
31
31
  namespace jsi = facebook::jsi;
32
32
 
33
- class JsiSkSurface : public JsiSkWrappingSkPtrHostObject<SkSurface> {
33
+ class JsiSkSurface
34
+ : public JsiSkWrappingSkPtrNativeObject<JsiSkSurface, SkSurface> {
34
35
  private:
35
36
  std::shared_ptr<Dispatcher> _dispatcher;
36
37
 
37
38
  public:
39
+ static constexpr const char *CLASS_NAME = "Surface";
40
+
38
41
  JsiSkSurface(std::shared_ptr<RNSkPlatformContext> context,
39
42
  sk_sp<SkSurface> surface)
40
- : JsiSkWrappingSkPtrHostObject<SkSurface>(std::move(context),
41
- std::move(surface)) {
43
+ : JsiSkWrappingSkPtrNativeObject<JsiSkSurface, SkSurface>(
44
+ std::move(context), std::move(surface)) {
42
45
  // Get the dispatcher for the current thread
43
46
  _dispatcher = Dispatcher::getDispatcher();
44
47
  // Process any pending operations
@@ -63,8 +66,6 @@ public:
63
66
  }
64
67
  }
65
68
 
66
- EXPORT_JSI_API_TYPENAME(JsiSkSurface, Surface)
67
-
68
69
  // TODO-API: Properties?
69
70
  JSI_HOST_FUNCTION(width) { return static_cast<double>(getObject()->width()); }
70
71
  JSI_HOST_FUNCTION(height) {
@@ -78,8 +79,7 @@ public:
78
79
  // Keep a reference to the owning surface so the canvas can read pixels back
79
80
  // through a snapshot on Graphite (which lacks synchronous canvas readback).
80
81
  canvas->setSurface(surface);
81
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, canvas,
82
- getContext());
82
+ return makeJsiObject(runtime, std::move(canvas));
83
83
  }
84
84
 
85
85
  JSI_HOST_FUNCTION(flush) {
@@ -124,15 +124,12 @@ public:
124
124
  }
125
125
  #endif
126
126
  if (count > 1 && arguments[1].isObject()) {
127
- auto jsiImage =
128
- arguments[1].asObject(runtime).asHostObject<JsiSkImage>(runtime);
127
+ auto jsiImage = getJsiObject<JsiSkImage>(runtime, arguments[1]);
129
128
  jsiImage->setObject(image);
130
129
  return jsi::Value(runtime, arguments[1]);
131
130
  }
132
- auto hostObjectInstance =
133
- std::make_shared<JsiSkImage>(getContext(), std::move(image));
134
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
135
- runtime, hostObjectInstance, getContext());
131
+ return makeJsiObject(
132
+ runtime, std::make_shared<JsiSkImage>(getContext(), std::move(image)));
136
133
  }
137
134
 
138
135
  JSI_HOST_FUNCTION(getNativeTextureUnstable) {
@@ -140,7 +137,7 @@ public:
140
137
  return JsiTextureInfo::toValue(runtime, texInfo);
141
138
  }
142
139
 
143
- size_t getMemoryPressure() const override {
140
+ size_t getMemoryPressure() override {
144
141
  if (isDisposed()) {
145
142
  return 0;
146
143
  }
@@ -196,15 +193,18 @@ public:
196
193
  return estimated;
197
194
  }
198
195
 
199
- std::string getObjectType() const override { return "JsiSkSurface"; }
200
-
201
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkSurface, width),
202
- JSI_EXPORT_FUNC(JsiSkSurface, height),
203
- JSI_EXPORT_FUNC(JsiSkSurface, getCanvas),
204
- JSI_EXPORT_FUNC(JsiSkSurface, makeImageSnapshot),
205
- JSI_EXPORT_FUNC(JsiSkSurface, flush),
206
- JSI_EXPORT_FUNC(JsiSkSurface, getNativeTextureUnstable),
207
- JSI_EXPORT_FUNC(JsiSkSurface, dispose))
196
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
197
+ installCommon(runtime, prototype);
198
+ installHostMethod(runtime, prototype, "width", &JsiSkSurface::width);
199
+ installHostMethod(runtime, prototype, "height", &JsiSkSurface::height);
200
+ installHostMethod(runtime, prototype, "getCanvas",
201
+ &JsiSkSurface::getCanvas);
202
+ installHostMethod(runtime, prototype, "makeImageSnapshot",
203
+ &JsiSkSurface::makeImageSnapshot);
204
+ installHostMethod(runtime, prototype, "flush", &JsiSkSurface::flush);
205
+ installHostMethod(runtime, prototype, "getNativeTextureUnstable",
206
+ &JsiSkSurface::getNativeTextureUnstable);
207
+ }
208
208
  };
209
209
 
210
210
  } // 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
  #include "JsiSkSurface.h"
11
11
 
@@ -20,8 +20,10 @@ namespace RNSkia {
20
20
 
21
21
  namespace jsi = facebook::jsi;
22
22
 
23
- class JsiSkSurfaceFactory : public JsiSkHostObject {
23
+ class JsiSkSurfaceFactory : public JsiSkNativeObject<JsiSkSurfaceFactory> {
24
24
  public:
25
+ static constexpr const char *CLASS_NAME = "SurfaceFactory";
26
+
25
27
  JSI_HOST_FUNCTION(Make) {
26
28
  auto width = static_cast<int>(arguments[0].asNumber());
27
29
  auto height = static_cast<int>(arguments[1].asNumber());
@@ -30,10 +32,8 @@ public:
30
32
  if (surface == nullptr) {
31
33
  return jsi::Value::null();
32
34
  }
33
- auto hostObjectInstance =
34
- std::make_shared<JsiSkSurface>(getContext(), std::move(surface));
35
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
36
- runtime, hostObjectInstance, getContext());
35
+ return makeJsiObject(runtime, std::make_shared<JsiSkSurface>(
36
+ getContext(), std::move(surface)));
37
37
  }
38
38
 
39
39
  JSI_HOST_FUNCTION(MakeOffscreen) {
@@ -56,21 +56,20 @@ public:
56
56
  if (surface == nullptr) {
57
57
  return jsi::Value::null();
58
58
  }
59
- auto hostObjectInstance =
60
- std::make_shared<JsiSkSurface>(getContext(), std::move(surface));
61
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
62
- runtime, hostObjectInstance, getContext());
59
+ return makeJsiObject(runtime, std::make_shared<JsiSkSurface>(
60
+ getContext(), std::move(surface)));
63
61
  }
64
62
 
65
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkSurfaceFactory, Make),
66
- JSI_EXPORT_FUNC(JsiSkSurfaceFactory, MakeOffscreen))
67
-
68
- size_t getMemoryPressure() const override { return 2048; }
63
+ size_t getMemoryPressure() override { return 2048; }
69
64
 
70
- std::string getObjectType() const override { return "JsiSkSurfaceFactory"; }
65
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
66
+ installHostMethod(runtime, prototype, "Make", &JsiSkSurfaceFactory::Make);
67
+ installHostMethod(runtime, prototype, "MakeOffscreen",
68
+ &JsiSkSurfaceFactory::MakeOffscreen);
69
+ }
71
70
 
72
71
  explicit JsiSkSurfaceFactory(std::shared_ptr<RNSkPlatformContext> context)
73
- : JsiSkHostObject(std::move(context)) {}
72
+ : JsiSkNativeObject<JsiSkSurfaceFactory>(std::move(context)) {}
74
73
  };
75
74
 
76
75
  } // 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,14 +18,17 @@ namespace RNSkia {
18
18
 
19
19
  namespace jsi = facebook::jsi;
20
20
 
21
- class JsiSkTextBlob : public JsiSkWrappingSkPtrHostObject<SkTextBlob> {
21
+ class JsiSkTextBlob
22
+ : public JsiSkWrappingSkPtrNativeObject<JsiSkTextBlob, SkTextBlob> {
22
23
  public:
24
+ static constexpr const char *CLASS_NAME = "TextBlob";
25
+
23
26
  JsiSkTextBlob(std::shared_ptr<RNSkPlatformContext> context,
24
27
  sk_sp<SkTextBlob> shader)
25
- : JsiSkWrappingSkPtrHostObject<SkTextBlob>(std::move(context),
26
- std::move(shader)) {}
28
+ : JsiSkWrappingSkPtrNativeObject<JsiSkTextBlob, SkTextBlob>(
29
+ std::move(context), std::move(shader)) {}
27
30
 
28
- size_t getMemoryPressure() const override {
31
+ size_t getMemoryPressure() override {
29
32
  auto textBlob = getObject();
30
33
  if (!textBlob)
31
34
  return 0;
@@ -37,9 +40,13 @@ public:
37
40
  1024; // Area estimation + base overhead
38
41
  }
39
42
 
40
- std::string getObjectType() const override { return "JsiSkTextBlob"; }
43
+ static sk_sp<SkTextBlob> fromValue(jsi::Runtime &runtime,
44
+ const jsi::Value &obj) {
45
+ return objectFromValue(runtime, obj);
46
+ }
41
47
 
42
- EXPORT_JSI_API_TYPENAME(JsiSkTextBlob, TextBlob)
43
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkTextBlob, dispose))
48
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
49
+ installCommon(runtime, prototype);
50
+ }
44
51
  };
45
52
  } // namespace RNSkia
@@ -7,7 +7,7 @@
7
7
  #include <jsi/jsi.h>
8
8
 
9
9
  #include "JsiSkFont.h"
10
- #include "JsiSkHostObjects.h"
10
+ #include "JsiSkNativeObjects.h"
11
11
  #include "JsiSkRSXform.h"
12
12
  #include "JsiSkTextBlob.h"
13
13
 
@@ -22,16 +22,16 @@ namespace RNSkia {
22
22
 
23
23
  namespace jsi = facebook::jsi;
24
24
 
25
- class JsiSkTextBlobFactory : public JsiSkHostObject {
25
+ class JsiSkTextBlobFactory : public JsiSkNativeObject<JsiSkTextBlobFactory> {
26
26
  public:
27
+ static constexpr const char *CLASS_NAME = "TextBlobFactory";
28
+
27
29
  JSI_HOST_FUNCTION(MakeFromText) {
28
30
  auto str = arguments[0].asString(runtime).utf8(runtime);
29
31
  auto font = JsiSkFont::fromValue(runtime, arguments[1]);
30
32
  auto textBlob = SkTextBlob::MakeFromString(str.c_str(), *font);
31
- auto hostObjectInstance =
32
- std::make_shared<JsiSkTextBlob>(getContext(), std::move(textBlob));
33
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
34
- runtime, hostObjectInstance, getContext());
33
+ return makeJsiObject(runtime, std::make_shared<JsiSkTextBlob>(
34
+ getContext(), std::move(textBlob)));
35
35
  }
36
36
 
37
37
  JSI_HOST_FUNCTION(MakeFromGlyphs) {
@@ -47,10 +47,8 @@ public:
47
47
  auto textBlob =
48
48
  SkTextBlob::MakeFromText(glyphs.data(), glyphs.size() * bytesPerGlyph,
49
49
  *font, SkTextEncoding::kGlyphID);
50
- auto hostObjectInstance =
51
- std::make_shared<JsiSkTextBlob>(getContext(), std::move(textBlob));
52
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
53
- runtime, hostObjectInstance, getContext());
50
+ return makeJsiObject(runtime, std::make_shared<JsiSkTextBlob>(
51
+ getContext(), std::move(textBlob)));
54
52
  }
55
53
 
56
54
  JSI_HOST_FUNCTION(MakeFromRSXform) {
@@ -68,10 +66,8 @@ public:
68
66
  auto x = SkSpan(rsxforms.data(), rsxforms.size());
69
67
  auto textBlob =
70
68
  SkTextBlob::MakeFromRSXform(str.c_str(), str.length(), x, *font);
71
- auto hostObjectInstance =
72
- std::make_shared<JsiSkTextBlob>(getContext(), std::move(textBlob));
73
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
74
- runtime, hostObjectInstance, getContext());
69
+ return makeJsiObject(runtime, std::make_shared<JsiSkTextBlob>(
70
+ getContext(), std::move(textBlob)));
75
71
  }
76
72
 
77
73
  JSI_HOST_FUNCTION(MakeFromRSXformGlyphs) {
@@ -97,24 +93,25 @@ public:
97
93
  auto textBlob = SkTextBlob::MakeFromRSXform(
98
94
  glyphs.data(), glyphs.size() * bytesPerGlyph, x, *font,
99
95
  SkTextEncoding::kGlyphID);
100
- auto hostObjectInstance =
101
- std::make_shared<JsiSkTextBlob>(getContext(), std::move(textBlob));
102
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
103
- runtime, hostObjectInstance, getContext());
96
+ return makeJsiObject(runtime, std::make_shared<JsiSkTextBlob>(
97
+ getContext(), std::move(textBlob)));
104
98
  }
105
99
 
106
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkTextBlobFactory, MakeFromText),
107
- JSI_EXPORT_FUNC(JsiSkTextBlobFactory, MakeFromGlyphs),
108
- JSI_EXPORT_FUNC(JsiSkTextBlobFactory, MakeFromRSXform),
109
- JSI_EXPORT_FUNC(JsiSkTextBlobFactory,
110
- MakeFromRSXformGlyphs), )
111
-
112
- size_t getMemoryPressure() const override { return 2048; }
113
-
114
- std::string getObjectType() const override { return "JsiSkTextBlobFactory"; }
100
+ size_t getMemoryPressure() override { return 2048; }
101
+
102
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
103
+ installHostMethod(runtime, prototype, "MakeFromText",
104
+ &JsiSkTextBlobFactory::MakeFromText);
105
+ installHostMethod(runtime, prototype, "MakeFromGlyphs",
106
+ &JsiSkTextBlobFactory::MakeFromGlyphs);
107
+ installHostMethod(runtime, prototype, "MakeFromRSXform",
108
+ &JsiSkTextBlobFactory::MakeFromRSXform);
109
+ installHostMethod(runtime, prototype, "MakeFromRSXformGlyphs",
110
+ &JsiSkTextBlobFactory::MakeFromRSXformGlyphs);
111
+ }
115
112
 
116
113
  explicit JsiSkTextBlobFactory(std::shared_ptr<RNSkPlatformContext> context)
117
- : JsiSkHostObject(std::move(context)) {}
114
+ : JsiSkNativeObject<JsiSkTextBlobFactory>(std::move(context)) {}
118
115
  };
119
116
 
120
117
  } // namespace RNSkia
@@ -6,7 +6,7 @@
6
6
 
7
7
  #include <jsi/jsi.h>
8
8
 
9
- #include "JsiSkHostObjects.h"
9
+ #include "JsiSkNativeObjects.h"
10
10
  #include "utils/RNSkLog.h"
11
11
 
12
12
  #pragma clang diagnostic push
@@ -22,15 +22,15 @@ namespace RNSkia {
22
22
 
23
23
  namespace jsi = facebook::jsi;
24
24
 
25
- class JsiSkTypeface : public JsiSkWrappingSkPtrHostObject<SkTypeface> {
25
+ class JsiSkTypeface
26
+ : public JsiSkWrappingSkPtrNativeObject<JsiSkTypeface, SkTypeface> {
26
27
  public:
27
- EXPORT_JSI_API_TYPENAME(JsiSkTypeface, Typeface)
28
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkTypeface, getGlyphIDs),
29
- JSI_EXPORT_FUNC(JsiSkTypeface, dispose))
28
+ static constexpr const char *CLASS_NAME = "Typeface";
30
29
 
31
30
  JsiSkTypeface(std::shared_ptr<RNSkPlatformContext> context,
32
31
  sk_sp<SkTypeface> typeface)
33
- : JsiSkWrappingSkPtrHostObject(std::move(context), std::move(typeface)) {}
32
+ : JsiSkWrappingSkPtrNativeObject<JsiSkTypeface, SkTypeface>(
33
+ std::move(context), std::move(typeface)) {}
34
34
 
35
35
  JSI_HOST_FUNCTION(getGlyphIDs) {
36
36
  auto str = arguments[0].asString(runtime).utf8(runtime);
@@ -53,7 +53,7 @@ public:
53
53
  return jsiGlyphIDs;
54
54
  }
55
55
 
56
- size_t getMemoryPressure() const override {
56
+ size_t getMemoryPressure() override {
57
57
  auto typeface = getObject();
58
58
  if (!typeface) {
59
59
  return 0;
@@ -74,13 +74,20 @@ public:
74
74
  static jsi::Value toValue(jsi::Runtime &runtime,
75
75
  std::shared_ptr<RNSkPlatformContext> context,
76
76
  sk_sp<SkTypeface> tf) {
77
- auto hostObjectInstance =
78
- std::make_shared<JsiSkTypeface>(context, std::move(tf));
79
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
80
- runtime, hostObjectInstance, context);
77
+ return makeJsiObject(
78
+ runtime, std::make_shared<JsiSkTypeface>(context, std::move(tf)));
81
79
  }
82
80
 
83
- std::string getObjectType() const override { return "JsiSkTypeface"; }
81
+ static sk_sp<SkTypeface> fromValue(jsi::Runtime &runtime,
82
+ const jsi::Value &obj) {
83
+ return objectFromValue(runtime, obj);
84
+ }
85
+
86
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
87
+ installCommon(runtime, prototype);
88
+ installHostMethod(runtime, prototype, "getGlyphIDs",
89
+ &JsiSkTypeface::getGlyphIDs);
90
+ }
84
91
  };
85
92
 
86
93
  } // namespace RNSkia
@@ -6,15 +6,17 @@
6
6
  #include <jsi/jsi.h>
7
7
 
8
8
  #include "JsiSkData.h"
9
- #include "JsiSkHostObjects.h"
9
+ #include "JsiSkNativeObjects.h"
10
10
  #include "JsiSkTypeface.h"
11
11
 
12
12
  namespace RNSkia {
13
13
 
14
14
  namespace jsi = facebook::jsi;
15
15
 
16
- class JsiSkTypefaceFactory : public JsiSkHostObject {
16
+ class JsiSkTypefaceFactory : public JsiSkNativeObject<JsiSkTypefaceFactory> {
17
17
  public:
18
+ static constexpr const char *CLASS_NAME = "TypefaceFactory";
19
+
18
20
  JSI_HOST_FUNCTION(MakeFreeTypeFaceFromData) {
19
21
  auto data = JsiSkData::fromValue(runtime, arguments[0]);
20
22
  auto fontMgr = JsiSkFontMgrFactory::getFontMgr(getContext());
@@ -22,21 +24,19 @@ public:
22
24
  if (typeface == nullptr) {
23
25
  return jsi::Value::null();
24
26
  }
25
- auto hostObjectInstance =
26
- std::make_shared<JsiSkTypeface>(getContext(), std::move(typeface));
27
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
28
- runtime, hostObjectInstance, getContext());
27
+ return makeJsiObject(runtime, std::make_shared<JsiSkTypeface>(
28
+ getContext(), std::move(typeface)));
29
29
  }
30
30
 
31
- size_t getMemoryPressure() const override { return 1024; }
32
-
33
- std::string getObjectType() const override { return "JsiSkTypefaceFactory"; }
31
+ size_t getMemoryPressure() override { return 1024; }
34
32
 
35
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkTypefaceFactory,
36
- MakeFreeTypeFaceFromData))
33
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
34
+ installHostMethod(runtime, prototype, "MakeFreeTypeFaceFromData",
35
+ &JsiSkTypefaceFactory::MakeFreeTypeFaceFromData);
36
+ }
37
37
 
38
38
  explicit JsiSkTypefaceFactory(std::shared_ptr<RNSkPlatformContext> context)
39
- : JsiSkHostObject(std::move(context)) {}
39
+ : JsiSkNativeObject<JsiSkTypefaceFactory>(std::move(context)) {}
40
40
  };
41
41
 
42
42
  } // namespace RNSkia
@@ -6,7 +6,7 @@
6
6
  #include <jsi/jsi.h>
7
7
 
8
8
  #include "JsiSkFontStyle.h"
9
- #include "JsiSkHostObjects.h"
9
+ #include "JsiSkNativeObjects.h"
10
10
  #include "JsiSkTypeface.h"
11
11
 
12
12
  #include "utils/RNSkLog.h"
@@ -25,16 +25,10 @@ namespace jsi = facebook::jsi;
25
25
  namespace para = skia::textlayout;
26
26
 
27
27
  class JsiSkTypefaceFontProvider
28
- : public JsiSkWrappingSkPtrHostObject<para::TypefaceFontProvider> {
28
+ : public JsiSkWrappingSkPtrNativeObject<JsiSkTypefaceFontProvider,
29
+ para::TypefaceFontProvider> {
29
30
  public:
30
- EXPORT_JSI_API_TYPENAME(JsiSkTypefaceFontProvider, TypefaceFontProvider)
31
-
32
- JSI_EXPORT_FUNCTIONS(
33
- JSI_EXPORT_FUNC(JsiSkTypefaceFontProvider, dispose),
34
- JSI_EXPORT_FUNC(JsiSkTypefaceFontProvider, registerFont),
35
- JSI_EXPORT_FUNC(JsiSkTypefaceFontProvider, matchFamilyStyle),
36
- JSI_EXPORT_FUNC(JsiSkTypefaceFontProvider, countFamilies),
37
- JSI_EXPORT_FUNC(JsiSkTypefaceFontProvider, getFamilyName))
31
+ static constexpr const char *CLASS_NAME = "TypefaceFontProvider";
38
32
 
39
33
  JSI_HOST_FUNCTION(registerFont) {
40
34
  sk_sp<SkTypeface> typeface =
@@ -59,10 +53,8 @@ public:
59
53
  if (!typeface) {
60
54
  throw std::runtime_error("Could not find font style for " + name);
61
55
  }
62
- auto hostObjectInstance =
63
- std::make_shared<JsiSkTypeface>(getContext(), std::move(typeface));
64
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
65
- runtime, hostObjectInstance, getContext());
56
+ return makeJsiObject(runtime, std::make_shared<JsiSkTypeface>(
57
+ getContext(), std::move(typeface)));
66
58
  }
67
59
 
68
60
  JSI_HOST_FUNCTION(countFamilies) { return getObject()->countFamilies(); }
@@ -76,14 +68,11 @@ public:
76
68
 
77
69
  JsiSkTypefaceFontProvider(std::shared_ptr<RNSkPlatformContext> context,
78
70
  sk_sp<para::TypefaceFontProvider> tfProvider)
79
- : JsiSkWrappingSkPtrHostObject(std::move(context),
80
- std::move(tfProvider)) {}
81
-
82
- size_t getMemoryPressure() const override { return 4096; }
71
+ : JsiSkWrappingSkPtrNativeObject<JsiSkTypefaceFontProvider,
72
+ para::TypefaceFontProvider>(
73
+ std::move(context), std::move(tfProvider)) {}
83
74
 
84
- std::string getObjectType() const override {
85
- return "JsiSkTypefaceFontProvider";
86
- }
75
+ size_t getMemoryPressure() override { return 4096; }
87
76
 
88
77
  /**
89
78
  Returns the jsi object from a host object of this type
@@ -91,10 +80,26 @@ public:
91
80
  static jsi::Value toValue(jsi::Runtime &runtime,
92
81
  std::shared_ptr<RNSkPlatformContext> context,
93
82
  sk_sp<para::TypefaceFontProvider> tfProvider) {
94
- auto provider = std::make_shared<JsiSkTypefaceFontProvider>(
95
- std::move(context), std::move(tfProvider));
96
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, provider,
97
- context);
83
+ return makeJsiObject(runtime,
84
+ std::make_shared<JsiSkTypefaceFontProvider>(
85
+ std::move(context), std::move(tfProvider)));
86
+ }
87
+
88
+ static sk_sp<para::TypefaceFontProvider> fromValue(jsi::Runtime &runtime,
89
+ const jsi::Value &obj) {
90
+ return objectFromValue(runtime, obj);
91
+ }
92
+
93
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
94
+ installCommon(runtime, prototype);
95
+ installHostMethod(runtime, prototype, "registerFont",
96
+ &JsiSkTypefaceFontProvider::registerFont);
97
+ installHostMethod(runtime, prototype, "matchFamilyStyle",
98
+ &JsiSkTypefaceFontProvider::matchFamilyStyle);
99
+ installHostMethod(runtime, prototype, "countFamilies",
100
+ &JsiSkTypefaceFontProvider::countFamilies);
101
+ installHostMethod(runtime, prototype, "getFamilyName",
102
+ &JsiSkTypefaceFontProvider::getFamilyName);
98
103
  }
99
104
  };
100
105
 
@@ -6,7 +6,7 @@
6
6
  #include <jsi/jsi.h>
7
7
 
8
8
  #include "JsiSkData.h"
9
- #include "JsiSkHostObjects.h"
9
+ #include "JsiSkNativeObjects.h"
10
10
  #include "JsiSkTypefaceFontProvider.h"
11
11
 
12
12
  namespace RNSkia {
@@ -14,26 +14,28 @@ namespace RNSkia {
14
14
  namespace jsi = facebook::jsi;
15
15
  namespace para = skia::textlayout;
16
16
 
17
- class JsiSkTypefaceFontProviderFactory : public JsiSkHostObject {
17
+ class JsiSkTypefaceFontProviderFactory
18
+ : public JsiSkNativeObject<JsiSkTypefaceFontProviderFactory> {
18
19
  public:
20
+ static constexpr const char *CLASS_NAME = "TypefaceFontProviderFactory";
21
+
19
22
  JSI_HOST_FUNCTION(Make) {
20
- auto provider = std::make_shared<JsiSkTypefaceFontProvider>(
21
- getContext(), sk_make_sp<para::TypefaceFontProvider>());
22
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, provider,
23
- getContext());
23
+ return makeJsiObject(
24
+ runtime, std::make_shared<JsiSkTypefaceFontProvider>(
25
+ getContext(), sk_make_sp<para::TypefaceFontProvider>()));
24
26
  }
25
27
 
26
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkTypefaceFontProviderFactory, Make))
27
-
28
- size_t getMemoryPressure() const override { return 2048; }
28
+ size_t getMemoryPressure() override { return 2048; }
29
29
 
30
- std::string getObjectType() const override {
31
- return "JsiSkTypefaceFontProviderFactory";
30
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
31
+ installHostMethod(runtime, prototype, "Make",
32
+ &JsiSkTypefaceFontProviderFactory::Make);
32
33
  }
33
34
 
34
35
  explicit JsiSkTypefaceFontProviderFactory(
35
36
  std::shared_ptr<RNSkPlatformContext> context)
36
- : JsiSkHostObject(std::move(context)) {}
37
+ : JsiSkNativeObject<JsiSkTypefaceFontProviderFactory>(
38
+ std::move(context)) {}
37
39
  };
38
40
 
39
41
  } // namespace RNSkia
@@ -5,7 +5,7 @@
5
5
  #include <utility>
6
6
  #include <vector>
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,27 +18,27 @@ namespace RNSkia {
18
18
 
19
19
  namespace jsi = facebook::jsi;
20
20
 
21
- class JsiSkVertices : public JsiSkWrappingSkPtrHostObject<SkVertices> {
21
+ class JsiSkVertices
22
+ : public JsiSkWrappingSkPtrNativeObject<JsiSkVertices, SkVertices> {
22
23
  public:
24
+ static constexpr const char *CLASS_NAME = "Vertices";
25
+
23
26
  JsiSkVertices(std::shared_ptr<RNSkPlatformContext> context,
24
27
  sk_sp<SkVertices> vertices)
25
- : JsiSkWrappingSkPtrHostObject<SkVertices>(std::move(context),
26
- std::move(vertices)) {}
27
-
28
- EXPORT_JSI_API_TYPENAME(JsiSkVertices, Vertices)
28
+ : JsiSkWrappingSkPtrNativeObject<JsiSkVertices, SkVertices>(
29
+ std::move(context), std::move(vertices)) {}
29
30
 
30
31
  JSI_HOST_FUNCTION(bounds) {
31
32
  const auto &result = getObject()->bounds();
32
- auto hostObjectInstance = std::make_shared<JsiSkRect>(getContext(), result);
33
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
34
- runtime, hostObjectInstance, getContext());
33
+ return makeJsiObject(runtime,
34
+ std::make_shared<JsiSkRect>(getContext(), result));
35
35
  }
36
36
 
37
37
  JSI_HOST_FUNCTION(uniqueID) {
38
38
  return static_cast<double>(getObject()->uniqueID());
39
39
  }
40
40
 
41
- size_t getMemoryPressure() const override {
41
+ size_t getMemoryPressure() override {
42
42
  auto vertices = getObject();
43
43
  if (!vertices)
44
44
  return 0;
@@ -47,11 +47,16 @@ public:
47
47
  return vertices->approximateSize();
48
48
  }
49
49
 
50
- std::string getObjectType() const override { return "JsiSkVertices"; }
50
+ static sk_sp<SkVertices> fromValue(jsi::Runtime &runtime,
51
+ const jsi::Value &obj) {
52
+ return objectFromValue(runtime, obj);
53
+ }
51
54
 
52
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkVertices, bounds),
53
- JSI_EXPORT_FUNC(JsiSkVertices, uniqueID),
54
- JSI_EXPORT_FUNC(JsiSkVertices, dispose))
55
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
56
+ installCommon(runtime, prototype);
57
+ installHostMethod(runtime, prototype, "bounds", &JsiSkVertices::bounds);
58
+ installHostMethod(runtime, prototype, "uniqueID", &JsiSkVertices::uniqueID);
59
+ }
55
60
 
56
61
  /**
57
62
  * Creates the function for construction a new instance of the SkVertices
@@ -158,10 +163,8 @@ public:
158
163
  texs.size() > 0 ? texs.data() : nullptr,
159
164
  colors.size() > 0 ? colors.data() : nullptr,
160
165
  indicesSize, indices.data());
161
- auto hostObjectInstance =
162
- std::make_shared<JsiSkVertices>(context, std::move(vertices));
163
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(
164
- runtime, hostObjectInstance, context);
166
+ return makeJsiObject(runtime, std::make_shared<JsiSkVertices>(
167
+ context, std::move(vertices)));
165
168
  };
166
169
  }
167
170
  };