@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
@@ -5,10 +5,10 @@
5
5
  #include <vector>
6
6
 
7
7
  #include "JsiSkFont.h"
8
- #include "JsiSkHostObjects.h"
9
8
  #include "JsiSkImage.h"
10
9
  #include "JsiSkImageInfo.h"
11
10
  #include "JsiSkMatrix.h"
11
+ #include "JsiSkNativeObjects.h"
12
12
  #include "JsiSkPaint.h"
13
13
  #include "JsiSkPath.h"
14
14
  #include "JsiSkPicture.h"
@@ -49,8 +49,10 @@ namespace RNSkia {
49
49
 
50
50
  namespace jsi = facebook::jsi;
51
51
 
52
- class JsiSkCanvas : public JsiSkHostObject {
52
+ class JsiSkCanvas : public JsiSkNativeObject<JsiSkCanvas> {
53
53
  public:
54
+ static constexpr const char *CLASS_NAME = "Canvas";
55
+
54
56
  JSI_HOST_FUNCTION(drawPaint) {
55
57
  auto paint = JsiSkPaint::fromValue(runtime, arguments[0]);
56
58
  _canvas->drawPaint(*paint);
@@ -246,10 +248,8 @@ public:
246
248
  }
247
249
 
248
250
  JSI_HOST_FUNCTION(getTotalMatrix) {
249
- auto matrix =
250
- std::make_shared<JsiSkMatrix>(getContext(), _canvas->getTotalMatrix());
251
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, matrix,
252
- getContext());
251
+ return makeJsiObject(runtime, std::make_shared<JsiSkMatrix>(
252
+ getContext(), _canvas->getTotalMatrix()));
253
253
  }
254
254
 
255
255
  JSI_HOST_FUNCTION(drawPoints) {
@@ -651,9 +651,10 @@ public:
651
651
  #if defined(SK_GRAPHITE)
652
652
  // Graphite records draws lazily and offers no synchronous GPU readback. If
653
653
  // this canvas belongs to a surface, snap & submit its recording, snapshot
654
- // it to a CPU raster image and read from that (mirroring makeImageSnapshot).
655
- // A canvas without an owning surface (e.g. a picture-recording canvas) has
656
- // no texture to read back, so fall through to the raster canvas read below.
654
+ // it to a CPU raster image and read from that (mirroring
655
+ // makeImageSnapshot). A canvas without an owning surface (e.g. a
656
+ // picture-recording canvas) has no texture to read back, so fall through to
657
+ // the raster canvas read below.
657
658
  if (_surface) {
658
659
  // Snapshot first: makeImageSnapshot records a copy task into the recorder
659
660
  // that must be submitted before the texture can be read back (this is the
@@ -663,8 +664,8 @@ public:
663
664
  DawnContext::getInstance().submitRecording(recorder->snap().get());
664
665
  }
665
666
  auto raster = DawnContext::getInstance().MakeRasterImage(snapshot);
666
- if (!raster ||
667
- !raster->readPixels(nullptr, *info, bfrPtr, bytesPerRow, srcX, srcY)) {
667
+ if (!raster || !raster->readPixels(nullptr, *info, bfrPtr, bytesPerRow,
668
+ srcX, srcY)) {
668
669
  return jsi::Value::null();
669
670
  }
670
671
  return dest;
@@ -677,55 +678,72 @@ public:
677
678
  return dest;
678
679
  }
679
680
 
680
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkCanvas, drawPaint),
681
- JSI_EXPORT_FUNC(JsiSkCanvas, drawLine),
682
- JSI_EXPORT_FUNC(JsiSkCanvas, drawRect),
683
- JSI_EXPORT_FUNC(JsiSkCanvas, drawImage),
684
- JSI_EXPORT_FUNC(JsiSkCanvas, drawImageRect),
685
- JSI_EXPORT_FUNC(JsiSkCanvas, drawImageCubic),
686
- JSI_EXPORT_FUNC(JsiSkCanvas, drawImageOptions),
687
- JSI_EXPORT_FUNC(JsiSkCanvas, drawImageNine),
688
- JSI_EXPORT_FUNC(JsiSkCanvas, drawImageRectCubic),
689
- JSI_EXPORT_FUNC(JsiSkCanvas, drawImageRectOptions),
690
- JSI_EXPORT_FUNC(JsiSkCanvas, drawCircle),
691
- JSI_EXPORT_FUNC(JsiSkCanvas, drawArc),
692
- JSI_EXPORT_FUNC(JsiSkCanvas, drawRRect),
693
- JSI_EXPORT_FUNC(JsiSkCanvas, drawDRRect),
694
- JSI_EXPORT_FUNC(JsiSkCanvas, drawOval),
695
- JSI_EXPORT_FUNC(JsiSkCanvas, restoreToCount),
696
- JSI_EXPORT_FUNC(JsiSkCanvas, getSaveCount),
697
- JSI_EXPORT_FUNC(JsiSkCanvas, getTotalMatrix),
698
- JSI_EXPORT_FUNC(JsiSkCanvas, drawPoints),
699
- JSI_EXPORT_FUNC(JsiSkCanvas, drawPatch),
700
- JSI_EXPORT_FUNC(JsiSkCanvas, drawPath),
701
- JSI_EXPORT_FUNC(JsiSkCanvas, drawVertices),
702
- JSI_EXPORT_FUNC(JsiSkCanvas, drawText),
703
- JSI_EXPORT_FUNC(JsiSkCanvas, drawTextBlob),
704
- JSI_EXPORT_FUNC(JsiSkCanvas, drawGlyphs),
705
- JSI_EXPORT_FUNC(JsiSkCanvas, drawSvg),
706
- JSI_EXPORT_FUNC(JsiSkCanvas, clipPath),
707
- JSI_EXPORT_FUNC(JsiSkCanvas, clipRect),
708
- JSI_EXPORT_FUNC(JsiSkCanvas, clipRRect),
709
- JSI_EXPORT_FUNC(JsiSkCanvas, save),
710
- JSI_EXPORT_FUNC(JsiSkCanvas, saveLayer),
711
- JSI_EXPORT_FUNC(JsiSkCanvas, restore),
712
- JSI_EXPORT_FUNC(JsiSkCanvas, rotate),
713
- JSI_EXPORT_FUNC(JsiSkCanvas, translate),
714
- JSI_EXPORT_FUNC(JsiSkCanvas, scale),
715
- JSI_EXPORT_FUNC(JsiSkCanvas, skew),
716
- JSI_EXPORT_FUNC(JsiSkCanvas, drawColor),
717
- JSI_EXPORT_FUNC(JsiSkCanvas, clear),
718
- JSI_EXPORT_FUNC(JsiSkCanvas, concat),
719
- JSI_EXPORT_FUNC(JsiSkCanvas, drawPicture),
720
- JSI_EXPORT_FUNC(JsiSkCanvas, drawAtlas),
721
- JSI_EXPORT_FUNC(JsiSkCanvas, readPixels))
722
-
723
- size_t getMemoryPressure() const override { return 1024; }
724
-
725
- std::string getObjectType() const override { return "JsiSkCanvas"; }
681
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
682
+ installHostMethod(runtime, prototype, "drawPaint", &JsiSkCanvas::drawPaint);
683
+ installHostMethod(runtime, prototype, "drawLine", &JsiSkCanvas::drawLine);
684
+ installHostMethod(runtime, prototype, "drawRect", &JsiSkCanvas::drawRect);
685
+ installHostMethod(runtime, prototype, "drawImage", &JsiSkCanvas::drawImage);
686
+ installHostMethod(runtime, prototype, "drawImageRect",
687
+ &JsiSkCanvas::drawImageRect);
688
+ installHostMethod(runtime, prototype, "drawImageCubic",
689
+ &JsiSkCanvas::drawImageCubic);
690
+ installHostMethod(runtime, prototype, "drawImageOptions",
691
+ &JsiSkCanvas::drawImageOptions);
692
+ installHostMethod(runtime, prototype, "drawImageNine",
693
+ &JsiSkCanvas::drawImageNine);
694
+ installHostMethod(runtime, prototype, "drawImageRectCubic",
695
+ &JsiSkCanvas::drawImageRectCubic);
696
+ installHostMethod(runtime, prototype, "drawImageRectOptions",
697
+ &JsiSkCanvas::drawImageRectOptions);
698
+ installHostMethod(runtime, prototype, "drawCircle",
699
+ &JsiSkCanvas::drawCircle);
700
+ installHostMethod(runtime, prototype, "drawArc", &JsiSkCanvas::drawArc);
701
+ installHostMethod(runtime, prototype, "drawRRect", &JsiSkCanvas::drawRRect);
702
+ installHostMethod(runtime, prototype, "drawDRRect",
703
+ &JsiSkCanvas::drawDRRect);
704
+ installHostMethod(runtime, prototype, "drawOval", &JsiSkCanvas::drawOval);
705
+ installHostMethod(runtime, prototype, "restoreToCount",
706
+ &JsiSkCanvas::restoreToCount);
707
+ installHostMethod(runtime, prototype, "getSaveCount",
708
+ &JsiSkCanvas::getSaveCount);
709
+ installHostMethod(runtime, prototype, "getTotalMatrix",
710
+ &JsiSkCanvas::getTotalMatrix);
711
+ installHostMethod(runtime, prototype, "drawPoints",
712
+ &JsiSkCanvas::drawPoints);
713
+ installHostMethod(runtime, prototype, "drawPatch", &JsiSkCanvas::drawPatch);
714
+ installHostMethod(runtime, prototype, "drawPath", &JsiSkCanvas::drawPath);
715
+ installHostMethod(runtime, prototype, "drawVertices",
716
+ &JsiSkCanvas::drawVertices);
717
+ installHostMethod(runtime, prototype, "drawText", &JsiSkCanvas::drawText);
718
+ installHostMethod(runtime, prototype, "drawTextBlob",
719
+ &JsiSkCanvas::drawTextBlob);
720
+ installHostMethod(runtime, prototype, "drawGlyphs",
721
+ &JsiSkCanvas::drawGlyphs);
722
+ installHostMethod(runtime, prototype, "drawSvg", &JsiSkCanvas::drawSvg);
723
+ installHostMethod(runtime, prototype, "clipPath", &JsiSkCanvas::clipPath);
724
+ installHostMethod(runtime, prototype, "clipRect", &JsiSkCanvas::clipRect);
725
+ installHostMethod(runtime, prototype, "clipRRect", &JsiSkCanvas::clipRRect);
726
+ installHostMethod(runtime, prototype, "save", &JsiSkCanvas::save);
727
+ installHostMethod(runtime, prototype, "saveLayer", &JsiSkCanvas::saveLayer);
728
+ installHostMethod(runtime, prototype, "restore", &JsiSkCanvas::restore);
729
+ installHostMethod(runtime, prototype, "rotate", &JsiSkCanvas::rotate);
730
+ installHostMethod(runtime, prototype, "translate", &JsiSkCanvas::translate);
731
+ installHostMethod(runtime, prototype, "scale", &JsiSkCanvas::scale);
732
+ installHostMethod(runtime, prototype, "skew", &JsiSkCanvas::skew);
733
+ installHostMethod(runtime, prototype, "drawColor", &JsiSkCanvas::drawColor);
734
+ installHostMethod(runtime, prototype, "clear", &JsiSkCanvas::clear);
735
+ installHostMethod(runtime, prototype, "concat", &JsiSkCanvas::concat);
736
+ installHostMethod(runtime, prototype, "drawPicture",
737
+ &JsiSkCanvas::drawPicture);
738
+ installHostMethod(runtime, prototype, "drawAtlas", &JsiSkCanvas::drawAtlas);
739
+ installHostMethod(runtime, prototype, "readPixels",
740
+ &JsiSkCanvas::readPixels);
741
+ }
742
+
743
+ size_t getMemoryPressure() override { return 1024; }
726
744
 
727
745
  explicit JsiSkCanvas(std::shared_ptr<RNSkPlatformContext> context)
728
- : JsiSkHostObject(std::move(context)) {}
746
+ : JsiSkNativeObject<JsiSkCanvas>(std::move(context)) {}
729
747
 
730
748
  JsiSkCanvas(std::shared_ptr<RNSkPlatformContext> context, SkCanvas *canvas)
731
749
  : JsiSkCanvas(std::move(context)) {
@@ -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 "api/third_party/CSSColorParser.h"
11
11
 
12
12
  #pragma clang diagnostic push
@@ -20,11 +20,13 @@ namespace RNSkia {
20
20
 
21
21
  namespace jsi = facebook::jsi;
22
22
 
23
- class JsiSkColor : public RNJsi::JsiHostObject {
23
+ /**
24
+ * JsiSkColor is a pure utility class — colors are represented as
25
+ * Float32Arrays on the JS side, so there is no wrapper object.
26
+ */
27
+ class JsiSkColor {
24
28
  public:
25
- JsiSkColor() : JsiHostObject() {}
26
-
27
- ~JsiSkColor() override = default;
29
+ JsiSkColor() = default;
28
30
 
29
31
  static jsi::Object toValue(jsi::Runtime &runtime, SkColor color) {
30
32
  auto result = runtime.global()
@@ -1,6 +1,6 @@
1
1
  #pragma once
2
2
 
3
- #include "JsiSkHostObjects.h"
3
+ #include "JsiSkNativeObjects.h"
4
4
  #include <jsi/jsi.h>
5
5
  #include <memory>
6
6
  #include <utility>
@@ -16,19 +16,26 @@ namespace RNSkia {
16
16
 
17
17
  namespace jsi = facebook::jsi;
18
18
 
19
- class JsiSkColorFilter : public JsiSkWrappingSkPtrHostObject<SkColorFilter> {
19
+ class JsiSkColorFilter
20
+ : public JsiSkWrappingSkPtrNativeObject<JsiSkColorFilter, SkColorFilter> {
20
21
  public:
22
+ static constexpr const char *CLASS_NAME = "ColorFilter";
23
+
21
24
  JsiSkColorFilter(std::shared_ptr<RNSkPlatformContext> context,
22
25
  sk_sp<SkColorFilter> colorFilter)
23
- : JsiSkWrappingSkPtrHostObject<SkColorFilter>(std::move(context),
24
- std::move(colorFilter)) {}
26
+ : JsiSkWrappingSkPtrNativeObject<JsiSkColorFilter, SkColorFilter>(
27
+ std::move(context), std::move(colorFilter)) {}
25
28
 
26
- size_t getMemoryPressure() const override { return 2048; }
29
+ size_t getMemoryPressure() override { return 2048; }
27
30
 
28
- std::string getObjectType() const override { return "JsiSkColorFilter"; }
31
+ static sk_sp<SkColorFilter> fromValue(jsi::Runtime &runtime,
32
+ const jsi::Value &obj) {
33
+ return objectFromValue(runtime, obj);
34
+ }
29
35
 
30
- EXPORT_JSI_API_TYPENAME(JsiSkColorFilter, ColorFilter)
31
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkColorFilter, dispose))
36
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
37
+ installCommon(runtime, prototype);
38
+ }
32
39
  };
33
40
 
34
41
  } // namespace RNSkia
@@ -2,7 +2,7 @@
2
2
 
3
3
  #include "JsiSkColor.h"
4
4
  #include "JsiSkColorFilter.h"
5
- #include "JsiSkHostObjects.h"
5
+ #include "JsiSkNativeObjects.h"
6
6
  #include <jsi/jsi.h>
7
7
  #include <memory>
8
8
  #include <utility>
@@ -19,8 +19,11 @@ namespace RNSkia {
19
19
 
20
20
  namespace jsi = facebook::jsi;
21
21
 
22
- class JsiSkColorFilterFactory : public JsiSkHostObject {
22
+ class JsiSkColorFilterFactory
23
+ : public JsiSkNativeObject<JsiSkColorFilterFactory> {
23
24
  public:
25
+ static constexpr const char *CLASS_NAME = "ColorFilterFactory";
26
+
24
27
  JSI_HOST_FUNCTION(MakeMatrix) {
25
28
  auto jsiMatrix = arguments[0].asObject(runtime).asArray(runtime);
26
29
  float matrix[20];
@@ -30,31 +33,28 @@ public:
30
33
  }
31
34
  }
32
35
  // Return the newly constructed object
33
- auto colorFilter = std::make_shared<JsiSkColorFilter>(
34
- getContext(), SkColorFilters::Matrix(std::move(matrix)));
35
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, colorFilter,
36
- getContext());
36
+ return makeJsiObject(
37
+ runtime, std::make_shared<JsiSkColorFilter>(
38
+ getContext(), SkColorFilters::Matrix(std::move(matrix))));
37
39
  }
38
40
 
39
41
  JSI_HOST_FUNCTION(MakeBlend) {
40
42
  auto color = JsiSkColor::fromValue(runtime, arguments[0]);
41
43
  SkBlendMode blend = (SkBlendMode)arguments[1].asNumber();
42
44
  // Return the newly constructed object
43
- auto colorFilter = std::make_shared<JsiSkColorFilter>(
44
- getContext(), SkColorFilters::Blend(color, blend));
45
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, colorFilter,
46
- getContext());
45
+ return makeJsiObject(
46
+ runtime, std::make_shared<JsiSkColorFilter>(
47
+ getContext(), SkColorFilters::Blend(color, blend)));
47
48
  }
48
49
 
49
50
  JSI_HOST_FUNCTION(MakeCompose) {
50
51
  auto outer = JsiSkColorFilter::fromValue(runtime, arguments[0]);
51
52
  auto inner = JsiSkColorFilter::fromValue(runtime, arguments[1]);
52
53
  // Return the newly constructed object
53
- auto colorFilter = std::make_shared<JsiSkColorFilter>(
54
- getContext(),
55
- SkColorFilters::Compose(std::move(outer), std::move(inner)));
56
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, colorFilter,
57
- getContext());
54
+ return makeJsiObject(
55
+ runtime, std::make_shared<JsiSkColorFilter>(
56
+ getContext(), SkColorFilters::Compose(std::move(outer),
57
+ std::move(inner))));
58
58
  }
59
59
 
60
60
  JSI_HOST_FUNCTION(MakeLerp) {
@@ -62,52 +62,52 @@ public:
62
62
  auto dst = JsiSkColorFilter::fromValue(runtime, arguments[1]);
63
63
  auto src = JsiSkColorFilter::fromValue(runtime, arguments[2]);
64
64
  // Return the newly constructed object
65
- auto colorFilter = std::make_shared<JsiSkColorFilter>(
66
- getContext(), SkColorFilters::Lerp(t, std::move(dst), std::move(src)));
67
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, colorFilter,
68
- getContext());
65
+ return makeJsiObject(
66
+ runtime, std::make_shared<JsiSkColorFilter>(
67
+ getContext(),
68
+ SkColorFilters::Lerp(t, std::move(dst), std::move(src))));
69
69
  }
70
70
 
71
71
  JSI_HOST_FUNCTION(MakeSRGBToLinearGamma) {
72
72
  // Return the newly constructed object
73
- auto colorFilter = std::make_shared<JsiSkColorFilter>(
74
- getContext(), SkColorFilters::SRGBToLinearGamma());
75
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, colorFilter,
76
- getContext());
73
+ return makeJsiObject(
74
+ runtime, std::make_shared<JsiSkColorFilter>(
75
+ getContext(), SkColorFilters::SRGBToLinearGamma()));
77
76
  }
78
77
 
79
78
  JSI_HOST_FUNCTION(MakeLinearToSRGBGamma) {
80
79
  // Return the newly constructed object
81
- auto colorFilter = std::make_shared<JsiSkColorFilter>(
82
- getContext(), SkColorFilters::LinearToSRGBGamma());
83
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, colorFilter,
84
- getContext());
80
+ return makeJsiObject(
81
+ runtime, std::make_shared<JsiSkColorFilter>(
82
+ getContext(), SkColorFilters::LinearToSRGBGamma()));
85
83
  }
86
84
 
87
85
  JSI_HOST_FUNCTION(MakeLumaColorFilter) {
88
86
  // Return the newly constructed object
89
- auto colorFilter = std::make_shared<JsiSkColorFilter>(
90
- getContext(), SkLumaColorFilter::Make());
91
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, colorFilter,
92
- getContext());
87
+ return makeJsiObject(runtime, std::make_shared<JsiSkColorFilter>(
88
+ getContext(), SkLumaColorFilter::Make()));
93
89
  }
94
90
 
95
- size_t getMemoryPressure() const override { return 1024; }
96
-
97
- std::string getObjectType() const override {
98
- return "JsiSkColorFilterFactory";
91
+ size_t getMemoryPressure() override { return 1024; }
92
+
93
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
94
+ installHostMethod(runtime, prototype, "MakeMatrix",
95
+ &JsiSkColorFilterFactory::MakeMatrix);
96
+ installHostMethod(runtime, prototype, "MakeBlend",
97
+ &JsiSkColorFilterFactory::MakeBlend);
98
+ installHostMethod(runtime, prototype, "MakeCompose",
99
+ &JsiSkColorFilterFactory::MakeCompose);
100
+ installHostMethod(runtime, prototype, "MakeLerp",
101
+ &JsiSkColorFilterFactory::MakeLerp);
102
+ installHostMethod(runtime, prototype, "MakeSRGBToLinearGamma",
103
+ &JsiSkColorFilterFactory::MakeSRGBToLinearGamma);
104
+ installHostMethod(runtime, prototype, "MakeLinearToSRGBGamma",
105
+ &JsiSkColorFilterFactory::MakeLinearToSRGBGamma);
106
+ installHostMethod(runtime, prototype, "MakeLumaColorFilter",
107
+ &JsiSkColorFilterFactory::MakeLumaColorFilter);
99
108
  }
100
109
 
101
- JSI_EXPORT_FUNCTIONS(
102
- JSI_EXPORT_FUNC(JsiSkColorFilterFactory, MakeMatrix),
103
- JSI_EXPORT_FUNC(JsiSkColorFilterFactory, MakeBlend),
104
- JSI_EXPORT_FUNC(JsiSkColorFilterFactory, MakeCompose),
105
- JSI_EXPORT_FUNC(JsiSkColorFilterFactory, MakeLerp),
106
- JSI_EXPORT_FUNC(JsiSkColorFilterFactory, MakeSRGBToLinearGamma),
107
- JSI_EXPORT_FUNC(JsiSkColorFilterFactory, MakeLinearToSRGBGamma),
108
- JSI_EXPORT_FUNC(JsiSkColorFilterFactory, MakeLumaColorFilter))
109
-
110
110
  explicit JsiSkColorFilterFactory(std::shared_ptr<RNSkPlatformContext> context)
111
- : JsiSkHostObject(std::move(context)) {}
111
+ : JsiSkNativeObject<JsiSkColorFilterFactory>(std::move(context)) {}
112
112
  };
113
113
  } // 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"
@@ -21,12 +21,15 @@ namespace RNSkia {
21
21
  namespace jsi = facebook::jsi;
22
22
 
23
23
  class JsiSkContourMeasure
24
- : public JsiSkWrappingSkPtrHostObject<SkContourMeasure> {
24
+ : public JsiSkWrappingSkPtrNativeObject<JsiSkContourMeasure,
25
+ SkContourMeasure> {
25
26
  public:
27
+ static constexpr const char *CLASS_NAME = "ContourMeasure";
28
+
26
29
  JsiSkContourMeasure(std::shared_ptr<RNSkPlatformContext> context,
27
30
  const sk_sp<SkContourMeasure> contourMeasure)
28
- : JsiSkWrappingSkPtrHostObject(std::move(context),
29
- std::move(contourMeasure)) {}
31
+ : JsiSkWrappingSkPtrNativeObject<JsiSkContourMeasure, SkContourMeasure>(
32
+ std::move(context), std::move(contourMeasure)) {}
30
33
 
31
34
  JSI_HOST_FUNCTION(getPosTan) {
32
35
  auto dist = arguments[0].asNumber();
@@ -37,12 +40,10 @@ public:
37
40
  throw jsi::JSError(runtime, "getPosTan() failed");
38
41
  }
39
42
  auto posTan = jsi::Array(runtime, 2);
40
- auto posPoint = std::make_shared<JsiSkPoint>(getContext(), position);
41
- auto pos = JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, posPoint,
42
- getContext());
43
- auto tanPoint = std::make_shared<JsiSkPoint>(getContext(), tangent);
44
- auto tan = JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, tanPoint,
45
- getContext());
43
+ auto pos = makeJsiObject(
44
+ runtime, std::make_shared<JsiSkPoint>(getContext(), position));
45
+ auto tan = makeJsiObject(
46
+ runtime, std::make_shared<JsiSkPoint>(getContext(), tangent));
46
47
  posTan.setValueAtIndex(runtime, 0, pos);
47
48
  posTan.setValueAtIndex(runtime, 1, tan);
48
49
  return posTan;
@@ -67,16 +68,18 @@ public:
67
68
  return JsiSkPath::toValue(runtime, getContext(), builder.snapshot());
68
69
  }
69
70
 
70
- size_t getMemoryPressure() const override { return 1024; }
71
-
72
- std::string getObjectType() const override { return "JsiSkContourMeasure"; }
73
-
74
- EXPORT_JSI_API_TYPENAME(JsiSkContourMeasure, ContourMeasure)
75
-
76
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkContourMeasure, getPosTan),
77
- JSI_EXPORT_FUNC(JsiSkContourMeasure, length),
78
- JSI_EXPORT_FUNC(JsiSkContourMeasure, isClosed),
79
- JSI_EXPORT_FUNC(JsiSkContourMeasure, getSegment),
80
- JSI_EXPORT_FUNC(JsiSkContourMeasure, dispose))
71
+ size_t getMemoryPressure() override { return 1024; }
72
+
73
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
74
+ installCommon(runtime, prototype);
75
+ installHostMethod(runtime, prototype, "getPosTan",
76
+ &JsiSkContourMeasure::getPosTan);
77
+ installHostMethod(runtime, prototype, "length",
78
+ &JsiSkContourMeasure::length);
79
+ installHostMethod(runtime, prototype, "isClosed",
80
+ &JsiSkContourMeasure::isClosed);
81
+ installHostMethod(runtime, prototype, "getSegment",
82
+ &JsiSkContourMeasure::getSegment);
83
+ }
81
84
  };
82
85
  } // namespace RNSkia
@@ -4,7 +4,7 @@
4
4
  #include <utility>
5
5
 
6
6
  #include "JsiSkContourMeasure.h"
7
- #include "JsiSkHostObjects.h"
7
+ #include "JsiSkNativeObjects.h"
8
8
 
9
9
  #pragma clang diagnostic push
10
10
  #pragma clang diagnostic ignored "-Wdocumentation"
@@ -20,12 +20,16 @@ namespace RNSkia {
20
20
  namespace jsi = facebook::jsi;
21
21
 
22
22
  class JsiSkContourMeasureIter
23
- : public JsiSkWrappingSharedPtrHostObject<SkContourMeasureIter> {
23
+ : public JsiSkWrappingSharedPtrNativeObject<JsiSkContourMeasureIter,
24
+ SkContourMeasureIter> {
24
25
  public:
26
+ static constexpr const char *CLASS_NAME = "ContourMeasureIter";
27
+
25
28
  JsiSkContourMeasureIter(std::shared_ptr<RNSkPlatformContext> context,
26
29
  const SkPath &path, bool forceClosed,
27
30
  SkScalar resScale = 1)
28
- : JsiSkWrappingSharedPtrHostObject<SkContourMeasureIter>(
31
+ : JsiSkWrappingSharedPtrNativeObject<JsiSkContourMeasureIter,
32
+ SkContourMeasureIter>(
29
33
  std::move(context), std::make_shared<SkContourMeasureIter>(
30
34
  path, forceClosed, resScale)) {}
31
35
 
@@ -34,24 +38,18 @@ public:
34
38
  if (next == nullptr) {
35
39
  return jsi::Value::undefined();
36
40
  }
37
- auto nextObject =
38
- std::make_shared<JsiSkContourMeasure>(getContext(), std::move(next));
39
-
40
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, nextObject,
41
- getContext());
41
+ return makeJsiObject(runtime, std::make_shared<JsiSkContourMeasure>(
42
+ getContext(), std::move(next)));
42
43
  }
43
44
 
44
- EXPORT_JSI_API_TYPENAME(JsiSkContourMeasureIter, ContourMeasureIter)
45
-
46
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkContourMeasureIter, next),
47
- JSI_EXPORT_FUNC(JsiSkContourMeasureIter, dispose))
48
-
49
- size_t getMemoryPressure() const override {
50
- return std::max(sizeof(SkContourMeasureIter), kMinMemoryPressure);
45
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
46
+ installCommon(runtime, prototype);
47
+ installHostMethod(runtime, prototype, "next",
48
+ &JsiSkContourMeasureIter::next);
51
49
  }
52
50
 
53
- std::string getObjectType() const override {
54
- return "JsiSkContourMeasureIter";
51
+ size_t getMemoryPressure() override {
52
+ return std::max(sizeof(SkContourMeasureIter), kMinMemoryPressure);
55
53
  }
56
54
 
57
55
  /**
@@ -68,10 +66,9 @@ public:
68
66
  auto forceClosed = arguments[1].getBool();
69
67
  auto resScale = arguments[2].asNumber();
70
68
  // Return the newly constructed object
71
- auto iter = std::make_shared<JsiSkContourMeasureIter>(
72
- std::move(context), path->snapshot(), forceClosed, resScale);
73
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, iter,
74
- context);
69
+ return makeJsiObject(runtime, std::make_shared<JsiSkContourMeasureIter>(
70
+ std::move(context), path->snapshot(),
71
+ forceClosed, resScale));
75
72
  };
76
73
  }
77
74
  };
@@ -5,7 +5,7 @@
5
5
 
6
6
  #include <jsi/jsi.h>
7
7
 
8
- #include "JsiSkHostObjects.h"
8
+ #include "JsiSkNativeObjects.h"
9
9
 
10
10
  #pragma clang diagnostic push
11
11
  #pragma clang diagnostic ignored "-Wdocumentation"
@@ -19,19 +19,25 @@ namespace RNSkia {
19
19
 
20
20
  namespace jsi = facebook::jsi;
21
21
 
22
- class JsiSkData : public JsiSkWrappingSkPtrHostObject<SkData> {
22
+ class JsiSkData : public JsiSkWrappingSkPtrNativeObject<JsiSkData, SkData> {
23
23
  public:
24
+ static constexpr const char *CLASS_NAME = "Data";
25
+
24
26
  JsiSkData(std::shared_ptr<RNSkPlatformContext> context, sk_sp<SkData> asset)
25
- : JsiSkWrappingSkPtrHostObject(std::move(context), std::move(asset)) {}
27
+ : JsiSkWrappingSkPtrNativeObject<JsiSkData, SkData>(std::move(context),
28
+ std::move(asset)) {}
26
29
 
27
- size_t getMemoryPressure() const override {
30
+ size_t getMemoryPressure() override {
28
31
  auto data = getObject();
29
32
  return data ? data->size() : 0;
30
33
  }
31
34
 
32
- std::string getObjectType() const override { return "JsiSkData"; }
35
+ static sk_sp<SkData> fromValue(jsi::Runtime &runtime, const jsi::Value &obj) {
36
+ return objectFromValue(runtime, obj);
37
+ }
33
38
 
34
- EXPORT_JSI_API_TYPENAME(JsiSkData, Data)
35
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkData, dispose))
39
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
40
+ installCommon(runtime, prototype);
41
+ }
36
42
  };
37
43
  } // namespace RNSkia