@shopify/react-native-skia 2.9.1 → 2.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. package/android/CMakeLists.txt +8 -46
  2. package/android/build.gradle +33 -0
  3. package/android/src/main/java/com/shopify/reactnative/skia/RNSkiaPackage.java +1 -2
  4. package/cpp/api/JsiNativeBuffer.h +23 -24
  5. package/cpp/api/JsiSkAnimatedImage.h +24 -25
  6. package/cpp/api/JsiSkAnimatedImageFactory.h +18 -17
  7. package/cpp/api/JsiSkApi.h +254 -96
  8. package/cpp/api/JsiSkCanvas.h +141 -266
  9. package/cpp/api/JsiSkColor.h +7 -5
  10. package/cpp/api/JsiSkColorFilter.h +15 -8
  11. package/cpp/api/JsiSkColorFilterFactory.h +49 -67
  12. package/cpp/api/JsiSkContourMeasure.h +31 -38
  13. package/cpp/api/JsiSkContourMeasureIter.h +20 -23
  14. package/cpp/api/JsiSkConverters.h +410 -0
  15. package/cpp/api/JsiSkData.h +13 -7
  16. package/cpp/api/JsiSkDataFactory.h +27 -32
  17. package/cpp/api/JsiSkFont.h +123 -192
  18. package/cpp/api/JsiSkFontMgr.h +33 -26
  19. package/cpp/api/JsiSkFontMgrFactory.h +12 -11
  20. package/cpp/api/JsiSkFontStyle.h +14 -12
  21. package/cpp/api/JsiSkImage.h +90 -79
  22. package/cpp/api/JsiSkImageFactory.h +93 -95
  23. package/cpp/api/JsiSkImageFilter.h +21 -11
  24. package/cpp/api/JsiSkImageFilterFactory.h +375 -629
  25. package/cpp/api/JsiSkImageInfo.h +25 -25
  26. package/cpp/api/JsiSkMaskFilter.h +21 -11
  27. package/cpp/api/JsiSkMaskFilterFactory.h +17 -17
  28. package/cpp/api/JsiSkMatrix.h +51 -88
  29. package/cpp/api/JsiSkNativeObjects.h +387 -0
  30. package/cpp/api/JsiSkPaint.h +104 -142
  31. package/cpp/api/JsiSkParagraph.h +54 -64
  32. package/cpp/api/JsiSkParagraphBuilder.h +43 -68
  33. package/cpp/api/JsiSkParagraphBuilderFactory.h +20 -24
  34. package/cpp/api/JsiSkPath.h +242 -350
  35. package/cpp/api/JsiSkPathBuilder.h +153 -273
  36. package/cpp/api/JsiSkPathBuilderFactory.h +19 -20
  37. package/cpp/api/JsiSkPathEffect.h +21 -11
  38. package/cpp/api/JsiSkPathEffectFactory.h +61 -80
  39. package/cpp/api/JsiSkPathFactory.h +148 -238
  40. package/cpp/api/JsiSkPicture.h +32 -27
  41. package/cpp/api/JsiSkPictureFactory.h +21 -26
  42. package/cpp/api/JsiSkPictureRecorder.h +27 -29
  43. package/cpp/api/JsiSkPoint.h +20 -23
  44. package/cpp/api/JsiSkRRect.h +24 -32
  45. package/cpp/api/JsiSkRSXform.h +31 -48
  46. package/cpp/api/JsiSkRect.h +40 -50
  47. package/cpp/api/JsiSkRuntimeEffect.h +85 -92
  48. package/cpp/api/JsiSkRuntimeEffectFactory.h +14 -18
  49. package/cpp/api/JsiSkRuntimeShaderBuilder.h +28 -30
  50. package/cpp/api/JsiSkSVG.h +15 -15
  51. package/cpp/api/JsiSkSVGFactory.h +17 -20
  52. package/cpp/api/JsiSkShader.h +15 -8
  53. package/cpp/api/JsiSkShaderFactory.h +159 -238
  54. package/cpp/api/JsiSkSkottie.h +131 -143
  55. package/cpp/api/JsiSkSurface.h +29 -32
  56. package/cpp/api/JsiSkSurfaceFactory.h +18 -20
  57. package/cpp/api/JsiSkTextBlob.h +15 -8
  58. package/cpp/api/JsiSkTextBlobFactory.h +40 -66
  59. package/cpp/api/JsiSkTypeface.h +25 -22
  60. package/cpp/api/JsiSkTypefaceFactory.h +17 -15
  61. package/cpp/api/JsiSkTypefaceFontProvider.h +43 -39
  62. package/cpp/api/JsiSkTypefaceFontProviderFactory.h +13 -12
  63. package/cpp/api/JsiSkVertices.h +23 -22
  64. package/cpp/api/JsiSkiaContext.h +22 -23
  65. package/cpp/api/JsiSkottieFactory.h +16 -17
  66. package/cpp/api/JsiVideo.h +43 -81
  67. package/cpp/api/recorder/Convertor.h +31 -61
  68. package/cpp/api/recorder/DataTypes.h +8 -16
  69. package/cpp/api/recorder/JsiRecorder.h +83 -55
  70. package/cpp/api/recorder/RNRecorder.h +1 -1
  71. package/cpp/jsi/BoxedNativeObject.h +146 -0
  72. package/cpp/{jsi2 → jsi}/EnumMapper.h +4 -1
  73. package/cpp/{jsi2 → jsi}/JSIConverter.h +0 -31
  74. package/cpp/{jsi2 → jsi}/NativeObject.h +131 -152
  75. package/cpp/jsi/RuntimeAwareCache.cpp +1 -1
  76. package/cpp/jsi/RuntimeAwareCache.h +26 -8
  77. package/cpp/jsi/ViewProperty.h +5 -11
  78. package/cpp/rnskia/RNDawnContext.h +18 -2
  79. package/cpp/rnskia/RNDawnInterop.cpp +19 -0
  80. package/cpp/rnskia/RNDawnUtils.h +18 -1
  81. package/cpp/rnskia/RNSkJsiViewApi.h +20 -11
  82. package/cpp/rnskia/RNSkManager.cpp +9 -168
  83. package/cpp/rnskia/RNSkPictureView.h +1 -1
  84. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +2 -0
  85. package/lib/commonjs/external/reanimated/renderHelpers.d.ts +15 -0
  86. package/lib/commonjs/external/reanimated/renderHelpers.js +30 -1
  87. package/lib/commonjs/external/reanimated/renderHelpers.js.map +1 -1
  88. package/lib/commonjs/mock/index.js +0 -1
  89. package/lib/commonjs/mock/index.js.map +1 -1
  90. package/lib/commonjs/skia/NativeSetup.js +4 -0
  91. package/lib/commonjs/skia/NativeSetup.js.map +1 -1
  92. package/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +1 -0
  93. package/lib/commonjs/skia/SkiaWorkletSerialization.js +66 -0
  94. package/lib/commonjs/skia/SkiaWorkletSerialization.js.map +1 -0
  95. package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +15 -6
  96. package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
  97. package/lib/commonjs/skia/types/Skia.d.ts +5 -15
  98. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  99. package/lib/commonjs/skia/types/index.d.ts +0 -1
  100. package/lib/commonjs/skia/types/index.js +0 -11
  101. package/lib/commonjs/skia/types/index.js.map +1 -1
  102. package/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  103. package/lib/commonjs/skia/web/JsiSkImageFactory.js +2 -2
  104. package/lib/commonjs/skia/web/JsiSkImageFactory.js.map +1 -1
  105. package/lib/commonjs/skia/web/JsiSkia.js +1 -4
  106. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  107. package/lib/commonjs/sksg/Container.native.js +20 -1
  108. package/lib/commonjs/sksg/Container.native.js.map +1 -1
  109. package/lib/commonjs/views/index.d.ts +0 -1
  110. package/lib/commonjs/views/index.js +0 -11
  111. package/lib/commonjs/views/index.js.map +1 -1
  112. package/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  113. package/lib/module/external/reanimated/renderHelpers.js +29 -0
  114. package/lib/module/external/reanimated/renderHelpers.js.map +1 -1
  115. package/lib/module/mock/index.js +0 -1
  116. package/lib/module/mock/index.js.map +1 -1
  117. package/lib/module/skia/NativeSetup.js +4 -0
  118. package/lib/module/skia/NativeSetup.js.map +1 -1
  119. package/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  120. package/lib/module/skia/SkiaWorkletSerialization.js +59 -0
  121. package/lib/module/skia/SkiaWorkletSerialization.js.map +1 -0
  122. package/lib/module/skia/types/Image/ImageFactory.d.ts +15 -6
  123. package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
  124. package/lib/module/skia/types/Skia.d.ts +5 -15
  125. package/lib/module/skia/types/Skia.js.map +1 -1
  126. package/lib/module/skia/types/index.d.ts +0 -1
  127. package/lib/module/skia/types/index.js +0 -1
  128. package/lib/module/skia/types/index.js.map +1 -1
  129. package/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  130. package/lib/module/skia/web/JsiSkImageFactory.js +2 -2
  131. package/lib/module/skia/web/JsiSkImageFactory.js.map +1 -1
  132. package/lib/module/skia/web/JsiSkia.js +1 -4
  133. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  134. package/lib/module/sksg/Container.native.js +21 -2
  135. package/lib/module/sksg/Container.native.js.map +1 -1
  136. package/lib/module/views/index.d.ts +0 -1
  137. package/lib/module/views/index.js +0 -1
  138. package/lib/module/views/index.js.map +1 -1
  139. package/lib/typescript/lib/commonjs/external/reanimated/renderHelpers.d.ts +2 -0
  140. package/lib/typescript/lib/commonjs/mock/index.d.ts +0 -1
  141. package/lib/typescript/lib/commonjs/skia/SkiaWorkletSerialization.d.ts +2 -0
  142. package/lib/typescript/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  143. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -2
  144. package/lib/typescript/lib/module/external/reanimated/renderHelpers.d.ts +15 -0
  145. package/lib/typescript/lib/module/mock/index.d.ts +0 -2
  146. package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -2
  147. package/lib/typescript/lib/module/skia/SkiaWorkletSerialization.d.ts +1 -0
  148. package/lib/typescript/lib/module/skia/types/index.d.ts +0 -1
  149. package/lib/typescript/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  150. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -2
  151. package/lib/typescript/lib/module/views/index.d.ts +0 -1
  152. package/lib/typescript/src/external/reanimated/renderHelpers.d.ts +15 -0
  153. package/lib/typescript/src/skia/SkiaWorkletSerialization.d.ts +1 -0
  154. package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +15 -6
  155. package/lib/typescript/src/skia/types/Skia.d.ts +5 -15
  156. package/lib/typescript/src/skia/types/index.d.ts +0 -1
  157. package/lib/typescript/src/skia/web/JsiSkImageFactory.d.ts +2 -2
  158. package/lib/typescript/src/views/index.d.ts +0 -1
  159. package/package.json +8 -5
  160. package/react-native-skia.podspec +38 -5
  161. package/src/external/reanimated/renderHelpers.ts +30 -0
  162. package/src/mock/index.ts +0 -1
  163. package/src/skia/NativeSetup.ts +5 -0
  164. package/src/skia/SkiaWorkletSerialization.ts +67 -0
  165. package/src/skia/types/Image/ImageFactory.ts +15 -6
  166. package/src/skia/types/Skia.ts +5 -15
  167. package/src/skia/types/index.ts +0 -1
  168. package/src/skia/web/JsiSkImageFactory.ts +3 -3
  169. package/src/skia/web/JsiSkia.ts +2 -5
  170. package/src/sksg/Container.native.ts +40 -2
  171. package/src/views/index.ts +0 -1
  172. package/android/cpp/jni/JniWebGPUView.cpp +0 -112
  173. package/android/cpp/rnskia-android/SkiaPlatformContext.h +0 -26
  174. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUSurfaceView.java +0 -43
  175. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUTextureView.java +0 -50
  176. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUView.java +0 -98
  177. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewAPI.java +0 -19
  178. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewManager.java +0 -58
  179. package/apple/RNWebGPUAppleNativeBuffer.mm +0 -33
  180. package/apple/SkiaPlatformContext.h +0 -20
  181. package/apple/SkiaPlatformContext.mm +0 -21
  182. package/apple/SkiaWebGPUView.mm +0 -81
  183. package/apple/WebGPUMetalView.mm +0 -136
  184. package/cpp/api/JsiSkHostObjects.h +0 -257
  185. package/cpp/jsi/JsiHostObject.cpp +0 -137
  186. package/cpp/jsi/JsiHostObject.h +0 -385
  187. package/cpp/rnwgpu/ArrayBuffer.h +0 -117
  188. package/cpp/rnwgpu/Canvas.h +0 -50
  189. package/cpp/rnwgpu/PlatformContext.h +0 -18
  190. package/cpp/rnwgpu/SurfaceRegistry.h +0 -605
  191. package/cpp/rnwgpu/api/AppleNativeBuffer.h +0 -22
  192. package/cpp/rnwgpu/api/Convertors.h +0 -783
  193. package/cpp/rnwgpu/api/External.h +0 -12
  194. package/cpp/rnwgpu/api/GPU.cpp +0 -162
  195. package/cpp/rnwgpu/api/GPU.h +0 -60
  196. package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -240
  197. package/cpp/rnwgpu/api/GPUAdapter.h +0 -60
  198. package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -57
  199. package/cpp/rnwgpu/api/GPUBindGroup.cpp +0 -3
  200. package/cpp/rnwgpu/api/GPUBindGroup.h +0 -51
  201. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +0 -52
  202. package/cpp/rnwgpu/api/GPUBuffer.cpp +0 -107
  203. package/cpp/rnwgpu/api/GPUBuffer.h +0 -88
  204. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -75
  205. package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -70
  206. package/cpp/rnwgpu/api/GPUCommandBuffer.h +0 -45
  207. package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +0 -179
  208. package/cpp/rnwgpu/api/GPUCommandEncoder.h +0 -111
  209. package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -79
  210. package/cpp/rnwgpu/api/GPUCompilationMessage.h +0 -36
  211. package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +0 -60
  212. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +0 -85
  213. package/cpp/rnwgpu/api/GPUComputePipeline.cpp +0 -12
  214. package/cpp/rnwgpu/api/GPUComputePipeline.h +0 -60
  215. package/cpp/rnwgpu/api/GPUDevice.cpp +0 -614
  216. package/cpp/rnwgpu/api/GPUDevice.h +0 -258
  217. package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +0 -7
  218. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +0 -40
  219. package/cpp/rnwgpu/api/GPUError.h +0 -35
  220. package/cpp/rnwgpu/api/GPUExtent3D.h +0 -66
  221. package/cpp/rnwgpu/api/GPUExternalTexture.cpp +0 -139
  222. package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -95
  223. package/cpp/rnwgpu/api/GPUFeatures.h +0 -203
  224. package/cpp/rnwgpu/api/GPUInternalError.h +0 -31
  225. package/cpp/rnwgpu/api/GPUOrigin2D.h +0 -55
  226. package/cpp/rnwgpu/api/GPUOrigin3D.h +0 -62
  227. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +0 -33
  228. package/cpp/rnwgpu/api/GPUPipelineLayout.h +0 -45
  229. package/cpp/rnwgpu/api/GPUQuerySet.cpp +0 -11
  230. package/cpp/rnwgpu/api/GPUQuerySet.h +0 -73
  231. package/cpp/rnwgpu/api/GPUQueue.cpp +0 -179
  232. package/cpp/rnwgpu/api/GPUQueue.h +0 -84
  233. package/cpp/rnwgpu/api/GPURenderBundle.h +0 -44
  234. package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +0 -131
  235. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +0 -110
  236. package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +0 -165
  237. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +0 -130
  238. package/cpp/rnwgpu/api/GPURenderPipeline.cpp +0 -13
  239. package/cpp/rnwgpu/api/GPURenderPipeline.h +0 -61
  240. package/cpp/rnwgpu/api/GPUSampler.h +0 -44
  241. package/cpp/rnwgpu/api/GPUShaderModule.cpp +0 -56
  242. package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
  243. package/cpp/rnwgpu/api/GPUSharedFence.cpp +0 -80
  244. package/cpp/rnwgpu/api/GPUSharedFence.h +0 -53
  245. package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -135
  246. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -75
  247. package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +0 -129
  248. package/cpp/rnwgpu/api/GPUSupportedLimits.h +0 -131
  249. package/cpp/rnwgpu/api/GPUTexture.cpp +0 -47
  250. package/cpp/rnwgpu/api/GPUTexture.h +0 -162
  251. package/cpp/rnwgpu/api/GPUTextureView.h +0 -44
  252. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +0 -60
  253. package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
  254. package/cpp/rnwgpu/api/ImageBitmap.h +0 -62
  255. package/cpp/rnwgpu/api/NativeBufferUtils.h +0 -87
  256. package/cpp/rnwgpu/api/RNWebGPU.h +0 -82
  257. package/cpp/rnwgpu/api/WebGPUConstants.h +0 -36
  258. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -64
  259. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -78
  260. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -56
  261. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -97
  262. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -57
  263. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -52
  264. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -56
  265. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -56
  266. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -59
  267. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +0 -39
  268. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +0 -76
  269. package/cpp/rnwgpu/api/descriptors/GPUColor.h +0 -66
  270. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -58
  271. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
  272. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -45
  273. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -45
  274. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -56
  275. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -58
  276. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -67
  277. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -56
  278. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -103
  279. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -109
  280. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -38
  281. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -90
  282. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -73
  283. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -62
  284. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
  285. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -65
  286. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -81
  287. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -54
  288. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
  289. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -54
  290. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -57
  291. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -69
  292. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -61
  293. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -55
  294. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -43
  295. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -45
  296. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -80
  297. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -81
  298. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -101
  299. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -92
  300. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -58
  301. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -103
  302. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -51
  303. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -45
  304. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -110
  305. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -60
  306. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -62
  307. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
  308. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +0 -58
  309. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +0 -51
  310. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -73
  311. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -64
  312. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -59
  313. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -59
  314. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -91
  315. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
  316. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -91
  317. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -64
  318. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -53
  319. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -62
  320. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -73
  321. package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1969
  322. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -214
  323. package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -58
  324. package/cpp/rnwgpu/async/RuntimeContext.cpp +0 -199
  325. package/cpp/rnwgpu/async/RuntimeContext.h +0 -134
  326. package/lib/commonjs/skia/types/WebGPU.d.ts +0 -184
  327. package/lib/commonjs/skia/types/WebGPU.js +0 -105
  328. package/lib/commonjs/skia/types/WebGPU.js.map +0 -1
  329. package/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -8
  330. package/lib/commonjs/specs/WebGPUViewNativeComponent.js +0 -10
  331. package/lib/commonjs/specs/WebGPUViewNativeComponent.js.map +0 -1
  332. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  333. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js +0 -103
  334. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  335. package/lib/commonjs/specs/utils.d.ts +0 -1
  336. package/lib/commonjs/specs/utils.js +0 -11
  337. package/lib/commonjs/specs/utils.js.map +0 -1
  338. package/lib/commonjs/views/WebGPUCanvas.d.ts +0 -33
  339. package/lib/commonjs/views/WebGPUCanvas.js +0 -79
  340. package/lib/commonjs/views/WebGPUCanvas.js.map +0 -1
  341. package/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -23
  342. package/lib/commonjs/views/WebGPUCanvas.web.js +0 -20
  343. package/lib/commonjs/views/WebGPUCanvas.web.js.map +0 -1
  344. package/lib/module/skia/types/WebGPU.d.ts +0 -184
  345. package/lib/module/skia/types/WebGPU.js +0 -99
  346. package/lib/module/skia/types/WebGPU.js.map +0 -1
  347. package/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -8
  348. package/lib/module/specs/WebGPUViewNativeComponent.js +0 -4
  349. package/lib/module/specs/WebGPUViewNativeComponent.js.map +0 -1
  350. package/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  351. package/lib/module/specs/WebGPUViewNativeComponent.web.js +0 -96
  352. package/lib/module/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  353. package/lib/module/specs/utils.d.ts +0 -1
  354. package/lib/module/specs/utils.js +0 -5
  355. package/lib/module/specs/utils.js.map +0 -1
  356. package/lib/module/views/WebGPUCanvas.d.ts +0 -33
  357. package/lib/module/views/WebGPUCanvas.js +0 -70
  358. package/lib/module/views/WebGPUCanvas.js.map +0 -1
  359. package/lib/module/views/WebGPUCanvas.web.d.ts +0 -23
  360. package/lib/module/views/WebGPUCanvas.web.js +0 -12
  361. package/lib/module/views/WebGPUCanvas.web.js.map +0 -1
  362. package/lib/typescript/lib/commonjs/skia/types/WebGPU.d.ts +0 -2
  363. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -4
  364. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -3
  365. package/lib/typescript/lib/commonjs/specs/utils.d.ts +0 -2
  366. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.d.ts +0 -6
  367. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -6
  368. package/lib/typescript/lib/module/skia/types/WebGPU.d.ts +0 -31
  369. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -2
  370. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -2
  371. package/lib/typescript/lib/module/specs/utils.d.ts +0 -1
  372. package/lib/typescript/lib/module/views/WebGPUCanvas.d.ts +0 -7
  373. package/lib/typescript/lib/module/views/WebGPUCanvas.web.d.ts +0 -8
  374. package/lib/typescript/src/skia/types/WebGPU.d.ts +0 -184
  375. package/lib/typescript/src/specs/WebGPUViewNativeComponent.d.ts +0 -8
  376. package/lib/typescript/src/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  377. package/lib/typescript/src/specs/utils.d.ts +0 -1
  378. package/lib/typescript/src/views/WebGPUCanvas.d.ts +0 -33
  379. package/lib/typescript/src/views/WebGPUCanvas.web.d.ts +0 -23
  380. package/src/skia/types/WebGPU.ts +0 -226
  381. package/src/specs/WebGPUViewNativeComponent.ts +0 -11
  382. package/src/specs/WebGPUViewNativeComponent.web.ts +0 -110
  383. package/src/specs/utils.ts +0 -4
  384. package/src/views/WebGPUCanvas.tsx +0 -125
  385. package/src/views/WebGPUCanvas.web.tsx +0 -36
  386. /package/cpp/{jsi2 → jsi}/Promise.cpp +0 -0
  387. /package/cpp/{jsi2 → jsi}/Promise.h +0 -0
@@ -7,7 +7,7 @@
7
7
  #include <jsi/jsi.h>
8
8
 
9
9
  #include "JsiSkData.h"
10
- #include "JsiSkHostObjects.h"
10
+ #include "JsiSkNativeObjects.h"
11
11
  #include "JsiSkSVG.h"
12
12
  #include "JsiSkTypeface.h"
13
13
 
@@ -55,8 +55,10 @@ private:
55
55
  const skresources::ImageDecodeStrategy fStrategy;
56
56
  };
57
57
 
58
- class JsiSkSVGFactory : public JsiSkHostObject {
58
+ class JsiSkSVGFactory : public JsiSkNativeObject<JsiSkSVGFactory> {
59
59
  public:
60
+ static constexpr const char *CLASS_NAME = "SVGFactory";
61
+
60
62
  // Helper function to parse asset map from JS object
61
63
  static SVGAssetProvider::AssetMap parseAssetMap(jsi::Runtime &runtime,
62
64
  const jsi::Value &jsValue) {
@@ -83,15 +85,9 @@ public:
83
85
  continue;
84
86
  }
85
87
 
86
- if (jsValue.isObject()) {
87
- auto jsObject = jsValue.asObject(runtime);
88
- if (jsObject.isHostObject(runtime)) {
89
- auto hostObject = jsObject.getHostObject(runtime);
90
- auto skData = std::dynamic_pointer_cast<JsiSkData>(hostObject);
91
- if (skData) {
92
- assets[key] = skData->getObject();
93
- }
94
- }
88
+ auto skData = tryGetJsiObject<JsiSkData>(runtime, jsValue);
89
+ if (skData) {
90
+ assets[key] = skData->getObject();
95
91
  }
96
92
  }
97
93
 
@@ -120,9 +116,8 @@ private:
120
116
  builder.setResourceProvider(provider);
121
117
 
122
118
  auto svg_dom = builder.make(*stream);
123
- auto svg = std::make_shared<JsiSkSVG>(getContext(), std::move(svg_dom));
124
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, svg,
125
- getContext());
119
+ return makeJsiObject(
120
+ runtime, std::make_shared<JsiSkSVG>(getContext(), std::move(svg_dom)));
126
121
  }
127
122
 
128
123
  public:
@@ -160,15 +155,17 @@ public:
160
155
  std::move(assets));
161
156
  }
162
157
 
163
- size_t getMemoryPressure() const override { return kMinMemoryPressure; }
164
-
165
- std::string getObjectType() const override { return "JsiSkSVGFactory"; }
158
+ size_t getMemoryPressure() override { return kMinMemoryPressure; }
166
159
 
167
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkSVGFactory, MakeFromData),
168
- JSI_EXPORT_FUNC(JsiSkSVGFactory, MakeFromString))
160
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
161
+ installHostMethod(runtime, prototype, "MakeFromData",
162
+ &JsiSkSVGFactory::MakeFromData);
163
+ installHostMethod(runtime, prototype, "MakeFromString",
164
+ &JsiSkSVGFactory::MakeFromString);
165
+ }
169
166
 
170
167
  explicit JsiSkSVGFactory(std::shared_ptr<RNSkPlatformContext> context)
171
- : JsiSkHostObject(std::move(context)) {}
168
+ : JsiSkNativeObject<JsiSkSVGFactory>(std::move(context)) {}
172
169
  };
173
170
 
174
171
  } // 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"
@@ -19,18 +19,25 @@ namespace RNSkia {
19
19
 
20
20
  namespace jsi = facebook::jsi;
21
21
 
22
- class JsiSkShader : public JsiSkWrappingSkPtrHostObject<SkShader> {
22
+ class JsiSkShader
23
+ : public JsiSkWrappingSkPtrNativeObject<JsiSkShader, SkShader> {
23
24
  public:
25
+ static constexpr const char *CLASS_NAME = "Shader";
26
+
24
27
  JsiSkShader(std::shared_ptr<RNSkPlatformContext> context,
25
28
  sk_sp<SkShader> shader)
26
- : JsiSkWrappingSkPtrHostObject<SkShader>(std::move(context),
27
- std::move(shader)) {}
29
+ : JsiSkWrappingSkPtrNativeObject<JsiSkShader, SkShader>(
30
+ std::move(context), std::move(shader)) {}
28
31
 
29
- size_t getMemoryPressure() const override { return 1024 * 1024; }
32
+ size_t getMemoryPressure() override { return 1024 * 1024; }
30
33
 
31
- std::string getObjectType() const override { return "JsiSkShader"; }
34
+ static sk_sp<SkShader> fromValue(jsi::Runtime &runtime,
35
+ const jsi::Value &obj) {
36
+ return objectFromValue(runtime, obj);
37
+ }
32
38
 
33
- EXPORT_JSI_API_TYPENAME(JsiSkShader, Shader)
34
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkShader, dispose))
39
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
40
+ installCommon(runtime, prototype);
41
+ }
35
42
  };
36
43
  } // namespace RNSkia
@@ -6,8 +6,13 @@
6
6
 
7
7
  #include <jsi/jsi.h>
8
8
 
9
+ #include "JsiSkColor.h"
9
10
  #include "JsiSkColorFilter.h"
10
- #include "JsiSkHostObjects.h"
11
+ #include "JsiSkConverters.h"
12
+ #include "JsiSkMatrix.h"
13
+ #include "JsiSkNativeObjects.h"
14
+ #include "JsiSkPoint.h"
15
+ #include "JsiSkShader.h"
11
16
 
12
17
  #pragma clang diagnostic push
13
18
  #pragma clang diagnostic ignored "-Wdocumentation"
@@ -22,276 +27,192 @@ namespace RNSkia {
22
27
 
23
28
  namespace jsi = facebook::jsi;
24
29
 
25
- int getFlag(const jsi::Value *values, int i, size_t size) {
26
- if (i >= size || values[i].isUndefined()) {
27
- return 0;
30
+ class JsiSkShaderFactory : public JsiSkNativeObject<JsiSkShaderFactory> {
31
+ public:
32
+ static constexpr const char *CLASS_NAME = "ShaderFactory";
33
+
34
+ std::shared_ptr<JsiSkShader>
35
+ MakeLinearGradient(SkPoint p1, SkPoint p2,
36
+ JsiOptional<std::vector<JsiColor>> jsiColors,
37
+ JsiOptional<std::vector<float>> jsiPositions,
38
+ JsiOptional<double> tileMode,
39
+ JsiOptional<std::shared_ptr<SkMatrix>> matrix,
40
+ JsiOptional<double> flag) {
41
+ SkPoint pts[] = {p1, p2};
42
+ auto colors = toColors(jsiColors);
43
+ auto positions = toPositions(jsiPositions, colors.size());
44
+ SkGradient::Colors gradColors(SkSpan(colors), toSpan(positions),
45
+ toTileMode(tileMode));
46
+ SkGradient grad(gradColors,
47
+ SkGradient::Interpolation::FromFlags(toFlag(flag)));
48
+ sk_sp<SkShader> gradient =
49
+ SkShaders::LinearGradient(pts, grad, toLocalMatrix(matrix));
50
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
28
51
  }
29
- return values[i].asNumber();
30
- }
31
52
 
32
- SkMatrix *getLocalMatrix(jsi::Runtime &runtime, const jsi::Value *values, int i,
33
- size_t size) {
34
- if (i >= size || values[i].isUndefined()) {
35
- return nullptr;
53
+ std::shared_ptr<JsiSkShader>
54
+ MakeRadialGradient(SkPoint center, double r,
55
+ JsiOptional<std::vector<JsiColor>> jsiColors,
56
+ JsiOptional<std::vector<float>> jsiPositions,
57
+ JsiOptional<double> tileMode,
58
+ JsiOptional<std::shared_ptr<SkMatrix>> matrix,
59
+ JsiOptional<double> flag) {
60
+ auto colors = toColors(jsiColors);
61
+ auto positions = toPositions(jsiPositions, colors.size());
62
+ SkGradient::Colors gradColors(SkSpan(colors), toSpan(positions),
63
+ toTileMode(tileMode));
64
+ SkGradient grad(gradColors,
65
+ SkGradient::Interpolation::FromFlags(toFlag(flag)));
66
+ sk_sp<SkShader> gradient =
67
+ SkShaders::RadialGradient(center, r, grad, toLocalMatrix(matrix));
68
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
36
69
  }
37
- return JsiSkMatrix::fromValue(runtime, values[i]).get();
38
- }
39
70
 
40
- SkTileMode getTileMode(const jsi::Value *values, int i, size_t size) {
41
- if (i >= size || values[i].isUndefined()) {
42
- return SkTileMode::kClamp;
71
+ std::shared_ptr<JsiSkShader>
72
+ MakeSweepGradient(double x, double y,
73
+ JsiOptional<std::vector<JsiColor>> jsiColors,
74
+ JsiOptional<std::vector<float>> jsiPositions,
75
+ JsiOptional<double> tileMode,
76
+ JsiOptional<std::shared_ptr<SkMatrix>> matrix,
77
+ JsiOptional<double> flag, JsiOptional<double> start,
78
+ JsiOptional<double> end) {
79
+ auto colors = toColors(jsiColors);
80
+ auto positions = toPositions(jsiPositions, colors.size());
81
+ auto startAngle =
82
+ start.has_value() ? static_cast<float>(*start) : 0.0f;
83
+ auto endAngle = end.has_value() ? static_cast<float>(*end) : 360.0f;
84
+ SkGradient::Colors gradColors(SkSpan(colors), toSpan(positions),
85
+ toTileMode(tileMode));
86
+ SkGradient grad(gradColors,
87
+ SkGradient::Interpolation::FromFlags(toFlag(flag)));
88
+ sk_sp<SkShader> gradient =
89
+ SkShaders::SweepGradient(SkPoint::Make(x, y), startAngle, endAngle,
90
+ grad, toLocalMatrix(matrix));
91
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
43
92
  }
44
- return static_cast<SkTileMode>(values[i].asNumber());
45
- }
46
93
 
47
- std::vector<SkColor4f> getColors(jsi::Runtime &runtime,
48
- const jsi::Value &value) {
49
- std::vector<SkColor4f> colors;
50
- if (!value.isNull()) {
51
- auto jsiColors = value.asObject(runtime).asArray(runtime);
52
- auto size = jsiColors.size(runtime);
53
- colors.reserve(size);
54
- for (int i = 0; i < size; i++) {
55
- SkColor color =
56
- JsiSkColor::fromValue(runtime, jsiColors.getValueAtIndex(runtime, i));
57
- colors.push_back(SkColor4f::FromColor(color));
58
- }
94
+ std::shared_ptr<JsiSkShader>
95
+ MakeTwoPointConicalGradient(SkPoint start, double startRadius, SkPoint end,
96
+ double endRadius,
97
+ JsiOptional<std::vector<JsiColor>> jsiColors,
98
+ JsiOptional<std::vector<float>> jsiPositions,
99
+ JsiOptional<double> tileMode,
100
+ JsiOptional<std::shared_ptr<SkMatrix>> matrix,
101
+ JsiOptional<double> flag) {
102
+ auto colors = toColors(jsiColors);
103
+ auto positions = toPositions(jsiPositions, colors.size());
104
+ SkGradient::Colors gradColors(SkSpan(colors), toSpan(positions),
105
+ toTileMode(tileMode));
106
+ SkGradient grad(gradColors,
107
+ SkGradient::Interpolation::FromFlags(toFlag(flag)));
108
+ sk_sp<SkShader> gradient = SkShaders::TwoPointConicalGradient(
109
+ start, startRadius, end, endRadius, grad, toLocalMatrix(matrix));
110
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
59
111
  }
60
- return colors;
61
- }
62
112
 
63
- std::vector<SkScalar> getPositions(jsi::Runtime &runtime,
64
- const jsi::Value &value) {
65
- std::vector<SkScalar> positions;
66
- if (!value.isNull()) {
67
- auto jsiPositions = value.asObject(runtime).asArray(runtime);
68
- auto size = jsiPositions.size(runtime);
69
- positions.reserve(size);
70
- for (int i = 0; i < size; i++) {
71
- SkScalar position = jsiPositions.getValueAtIndex(runtime, i).asNumber();
72
- positions.push_back(position);
73
- }
113
+ std::shared_ptr<JsiSkShader> MakeTurbulence(double baseFreqX,
114
+ double baseFreqY, double octaves,
115
+ double seed, double tileW,
116
+ double tileH) {
117
+ SkISize size = SkISize::Make(tileW, tileH);
118
+ sk_sp<SkShader> gradient =
119
+ SkShaders::MakeTurbulence(baseFreqX, baseFreqY, octaves, seed, &size);
120
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
74
121
  }
75
- return positions;
76
- }
77
-
78
- class JsiSkShaderFactory : public JsiSkHostObject {
79
- public:
80
- JSI_HOST_FUNCTION(MakeLinearGradient) {
81
- auto p1 =
82
- *JsiSkPoint::fromValue(runtime, arguments[0].asObject(runtime)).get();
83
- auto p2 =
84
- *JsiSkPoint::fromValue(runtime, arguments[1].asObject(runtime)).get();
85
- SkPoint pts[] = {p1, p2};
86
-
87
- std::vector<SkColor4f> colors = getColors(runtime, arguments[2]);
88
- auto colorsSize = colors.size();
89
- if (colorsSize < 2) {
90
- throw std::invalid_argument("colors must have at least 2 colors");
91
- }
92
- std::vector<SkScalar> positions = getPositions(runtime, arguments[3]);
93
- if (!positions.empty() && positions.size() != colorsSize) {
94
- throw std::invalid_argument(
95
- "positions must be empty or have the same size as colors");
96
- }
97
- auto tileMode = getTileMode(arguments, 4, count);
98
- auto flag = getFlag(arguments, 6, count);
99
- auto localMatrix = getLocalMatrix(runtime, arguments, 5, count);
100
122
 
101
- SkGradient::Colors gradColors(
102
- SkSpan(colors),
103
- !positions.empty()
104
- ? SkSpan<const float>(positions.data(), positions.size())
105
- : SkSpan<const float>(),
106
- tileMode);
107
- SkGradient grad(gradColors, SkGradient::Interpolation::FromFlags(flag));
123
+ std::shared_ptr<JsiSkShader> MakeFractalNoise(double baseFreqX,
124
+ double baseFreqY,
125
+ double octaves, double seed,
126
+ double tileW, double tileH) {
127
+ SkISize size = SkISize::Make(tileW, tileH);
108
128
  sk_sp<SkShader> gradient =
109
- SkShaders::LinearGradient(pts, grad, localMatrix);
110
- auto shader =
111
- std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
112
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shader,
113
- getContext());
129
+ SkShaders::MakeFractalNoise(baseFreqX, baseFreqY, octaves, seed, &size);
130
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
114
131
  }
115
132
 
116
- JSI_HOST_FUNCTION(MakeRadialGradient) {
117
- auto center =
118
- *JsiSkPoint::fromValue(runtime, arguments[0].asObject(runtime)).get();
119
- auto r = arguments[1].asNumber();
120
-
121
- std::vector<SkColor4f> colors = getColors(runtime, arguments[2]);
122
- auto colorsSize = colors.size();
123
- if (colorsSize < 2) {
124
- throw std::invalid_argument("colors must have at least 2 colors");
125
- }
126
- std::vector<SkScalar> positions = getPositions(runtime, arguments[3]);
127
- if (!positions.empty() && positions.size() != colorsSize) {
128
- throw std::invalid_argument(
129
- "positions must be empty or the same size as colors");
130
- }
131
- auto tileMode = getTileMode(arguments, 4, count);
132
- auto flag = getFlag(arguments, 6, count);
133
- auto localMatrix = getLocalMatrix(runtime, arguments, 5, count);
134
-
135
- SkGradient::Colors gradColors(
136
- SkSpan(colors),
137
- !positions.empty()
138
- ? SkSpan<const float>(positions.data(), positions.size())
139
- : SkSpan<const float>(),
140
- tileMode);
141
- SkGradient grad(gradColors, SkGradient::Interpolation::FromFlags(flag));
133
+ std::shared_ptr<JsiSkShader> MakeBlend(double blendMode, sk_sp<SkShader> one,
134
+ sk_sp<SkShader> two) {
142
135
  sk_sp<SkShader> gradient =
143
- SkShaders::RadialGradient(center, r, grad, localMatrix);
144
- auto shader =
145
- std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
146
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shader,
147
- getContext());
136
+ SkShaders::Blend(static_cast<SkBlendMode>(blendMode), one, two);
137
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
148
138
  }
149
139
 
150
- JSI_HOST_FUNCTION(MakeSweepGradient) {
151
- auto x = arguments[0].asNumber();
152
- auto y = arguments[1].asNumber();
153
- std::vector<SkColor4f> colors = getColors(runtime, arguments[2]);
154
- auto colorsSize = colors.size();
155
- if (colorsSize < 2) {
156
- throw std::invalid_argument("colors must have at least 2 colors");
157
- }
158
- std::vector<SkScalar> positions = getPositions(runtime, arguments[3]);
159
- if (!positions.empty() && positions.size() != colorsSize) {
160
- throw std::invalid_argument(
161
- "positions must be empty or the same size as colors");
162
- }
163
- auto tileMode = getTileMode(arguments, 4, count);
164
- auto localMatrix = getLocalMatrix(runtime, arguments, 5, count);
165
- auto flag = getFlag(arguments, 6, count);
166
- auto startAngle = (count < 8 || arguments[7].isUndefined())
167
- ? 0.0f
168
- : static_cast<float>(arguments[7].asNumber());
169
- auto endAngle = (count < 9 || arguments[8].isUndefined())
170
- ? 360.0f
171
- : static_cast<float>(arguments[8].asNumber());
172
-
173
- SkGradient::Colors gradColors(
174
- SkSpan(colors),
175
- !positions.empty()
176
- ? SkSpan<const float>(positions.data(), positions.size())
177
- : SkSpan<const float>(),
178
- tileMode);
179
- SkGradient grad(gradColors, SkGradient::Interpolation::FromFlags(flag));
180
- sk_sp<SkShader> gradient = SkShaders::SweepGradient(
181
- SkPoint::Make(x, y), startAngle, endAngle, grad, localMatrix);
182
- auto shader =
183
- std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
184
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shader,
185
- getContext());
140
+ std::shared_ptr<JsiSkShader> MakeColor(JsiColor color) {
141
+ sk_sp<SkShader> gradient = SkShaders::Color(color);
142
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
186
143
  }
187
144
 
188
- JSI_HOST_FUNCTION(MakeTwoPointConicalGradient) {
189
- auto start =
190
- *JsiSkPoint::fromValue(runtime, arguments[0].asObject(runtime)).get();
191
- auto startRadius = arguments[1].asNumber();
192
-
193
- auto end =
194
- *JsiSkPoint::fromValue(runtime, arguments[2].asObject(runtime)).get();
195
- auto endRadius = arguments[3].asNumber();
145
+ size_t getMemoryPressure() override { return 1024; }
146
+
147
+ static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
148
+ installMethod(runtime, prototype, "MakeLinearGradient",
149
+ &JsiSkShaderFactory::MakeLinearGradient);
150
+ installMethod(runtime, prototype, "MakeRadialGradient",
151
+ &JsiSkShaderFactory::MakeRadialGradient);
152
+ installMethod(runtime, prototype, "MakeSweepGradient",
153
+ &JsiSkShaderFactory::MakeSweepGradient);
154
+ installMethod(runtime, prototype, "MakeTwoPointConicalGradient",
155
+ &JsiSkShaderFactory::MakeTwoPointConicalGradient);
156
+ installMethod(runtime, prototype, "MakeTurbulence",
157
+ &JsiSkShaderFactory::MakeTurbulence);
158
+ installMethod(runtime, prototype, "MakeFractalNoise",
159
+ &JsiSkShaderFactory::MakeFractalNoise);
160
+ installMethod(runtime, prototype, "MakeBlend",
161
+ &JsiSkShaderFactory::MakeBlend);
162
+ installMethod(runtime, prototype, "MakeColor",
163
+ &JsiSkShaderFactory::MakeColor);
164
+ }
196
165
 
197
- std::vector<SkColor4f> colors = getColors(runtime, arguments[4]);
198
- auto colorsSize = colors.size();
199
- if (colorsSize < 2) {
166
+ explicit JsiSkShaderFactory(std::shared_ptr<RNSkPlatformContext> context)
167
+ : JsiSkNativeObject<JsiSkShaderFactory>(std::move(context)) {}
168
+
169
+ private:
170
+ static std::vector<SkColor4f>
171
+ toColors(const JsiOptional<std::vector<JsiColor>> &jsiColors) {
172
+ std::vector<SkColor4f> colors;
173
+ if (jsiColors.has_value()) {
174
+ colors.reserve(jsiColors->size());
175
+ for (const auto &color : *jsiColors) {
176
+ colors.push_back(SkColor4f::FromColor(color));
177
+ }
178
+ }
179
+ if (colors.size() < 2) {
200
180
  throw std::invalid_argument("colors must have at least 2 colors");
201
181
  }
202
- std::vector<SkScalar> positions = getPositions(runtime, arguments[5]);
182
+ return colors;
183
+ }
184
+
185
+ static std::vector<float>
186
+ toPositions(const JsiOptional<std::vector<float>> &jsiPositions,
187
+ size_t colorsSize) {
188
+ std::vector<float> positions =
189
+ jsiPositions.has_value() ? *jsiPositions : std::vector<float>{};
203
190
  if (!positions.empty() && positions.size() != colorsSize) {
204
191
  throw std::invalid_argument(
205
- "positions must be empty or the same size as colors");
192
+ "positions must be empty or have the same size as colors");
206
193
  }
207
- auto tileMode = getTileMode(arguments, 6, count);
208
- auto localMatrix = getLocalMatrix(runtime, arguments, 7, count);
209
- auto flag = getFlag(arguments, 8, count);
210
-
211
- SkGradient::Colors gradColors(
212
- SkSpan(colors),
213
- !positions.empty()
214
- ? SkSpan<const float>(positions.data(), positions.size())
215
- : SkSpan<const float>(),
216
- tileMode);
217
- SkGradient grad(gradColors, SkGradient::Interpolation::FromFlags(flag));
218
- sk_sp<SkShader> gradient = SkShaders::TwoPointConicalGradient(
219
- start, startRadius, end, endRadius, grad, localMatrix);
220
-
221
- auto shader =
222
- std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
223
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shader,
224
- getContext());
194
+ return positions;
225
195
  }
226
196
 
227
- JSI_HOST_FUNCTION(MakeTurbulence) {
228
- auto baseFreqX = arguments[0].asNumber();
229
- auto baseFreqY = arguments[1].asNumber();
230
- auto octaves = arguments[2].asNumber();
231
- auto seed = arguments[3].asNumber();
232
- auto tileW = arguments[4].asNumber();
233
- auto tileH = arguments[5].asNumber();
234
- SkISize size = SkISize::Make(tileW, tileH);
235
- sk_sp<SkShader> gradient =
236
- SkShaders::MakeTurbulence(baseFreqX, baseFreqY, octaves, seed, &size);
237
- auto shader =
238
- std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
239
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shader,
240
- getContext());
197
+ static SkSpan<const float> toSpan(const std::vector<float> &positions) {
198
+ return !positions.empty()
199
+ ? SkSpan<const float>(positions.data(), positions.size())
200
+ : SkSpan<const float>();
241
201
  }
242
202
 
243
- JSI_HOST_FUNCTION(MakeFractalNoise) {
244
- auto baseFreqX = arguments[0].asNumber();
245
- auto baseFreqY = arguments[1].asNumber();
246
- auto octaves = arguments[2].asNumber();
247
- auto seed = arguments[3].asNumber();
248
- auto tileW = arguments[4].asNumber();
249
- auto tileH = arguments[5].asNumber();
250
- SkISize size = SkISize::Make(tileW, tileH);
251
- sk_sp<SkShader> gradient =
252
- SkShaders::MakeFractalNoise(baseFreqX, baseFreqY, octaves, seed, &size);
253
- auto shader =
254
- std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
255
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shader,
256
- getContext());
203
+ static SkTileMode toTileMode(const JsiOptional<double> &tileMode) {
204
+ return tileMode.has_value() ? static_cast<SkTileMode>(*tileMode)
205
+ : SkTileMode::kClamp;
257
206
  }
258
207
 
259
- JSI_HOST_FUNCTION(MakeBlend) {
260
- auto blendMode = (SkBlendMode)arguments[0].asNumber();
261
- auto one = JsiSkShader::fromValue(runtime, arguments[1]);
262
- auto two = JsiSkShader::fromValue(runtime, arguments[2]);
263
- sk_sp<SkShader> gradient = SkShaders::Blend(blendMode, one, two);
264
- auto shader =
265
- std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
266
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shader,
267
- getContext());
208
+ static int toFlag(const JsiOptional<double> &flag) {
209
+ return flag.has_value() ? static_cast<int>(*flag) : 0;
268
210
  }
269
211
 
270
- JSI_HOST_FUNCTION(MakeColor) {
271
- auto color = JsiSkColor::fromValue(runtime, arguments[0]);
272
- sk_sp<SkShader> gradient = SkShaders::Color(color);
273
- auto shader =
274
- std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
275
- return JSI_CREATE_HOST_OBJECT_WITH_MEMORY_PRESSURE(runtime, shader,
276
- getContext());
212
+ static SkMatrix *
213
+ toLocalMatrix(const JsiOptional<std::shared_ptr<SkMatrix>> &matrix) {
214
+ return matrix.has_value() ? matrix->get() : nullptr;
277
215
  }
278
-
279
- size_t getMemoryPressure() const override { return 1024; }
280
-
281
- std::string getObjectType() const override { return "JsiSkShaderFactory"; }
282
-
283
- JSI_EXPORT_FUNCTIONS(JSI_EXPORT_FUNC(JsiSkShaderFactory, MakeLinearGradient),
284
- JSI_EXPORT_FUNC(JsiSkShaderFactory, MakeRadialGradient),
285
- JSI_EXPORT_FUNC(JsiSkShaderFactory, MakeSweepGradient),
286
- JSI_EXPORT_FUNC(JsiSkShaderFactory,
287
- MakeTwoPointConicalGradient),
288
- JSI_EXPORT_FUNC(JsiSkShaderFactory, MakeTurbulence),
289
- JSI_EXPORT_FUNC(JsiSkShaderFactory, MakeFractalNoise),
290
- JSI_EXPORT_FUNC(JsiSkShaderFactory, MakeBlend),
291
- JSI_EXPORT_FUNC(JsiSkShaderFactory, MakeColor))
292
-
293
- explicit JsiSkShaderFactory(std::shared_ptr<RNSkPlatformContext> context)
294
- : JsiSkHostObject(std::move(context)) {}
295
216
  };
296
217
 
297
218
  } // namespace RNSkia