@shopify/react-native-skia 2.10.0 → 2.11.0-next.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 (358) hide show
  1. package/android/CMakeLists.txt +7 -41
  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 +14 -20
  5. package/cpp/api/JsiSkAnimatedImage.h +13 -16
  6. package/cpp/api/JsiSkAnimatedImageFactory.h +9 -7
  7. package/cpp/api/JsiSkApi.h +94 -90
  8. package/cpp/api/JsiSkCanvas.h +108 -251
  9. package/cpp/api/JsiSkColorFilterFactory.h +45 -63
  10. package/cpp/api/JsiSkContourMeasure.h +19 -29
  11. package/cpp/api/JsiSkContourMeasureIter.h +6 -6
  12. package/cpp/api/JsiSkConverters.h +410 -0
  13. package/cpp/api/JsiSkDataFactory.h +9 -15
  14. package/cpp/api/JsiSkFont.h +99 -180
  15. package/cpp/api/JsiSkFontMgr.h +19 -21
  16. package/cpp/api/JsiSkFontMgrFactory.h +4 -5
  17. package/cpp/api/JsiSkImage.h +66 -66
  18. package/cpp/api/JsiSkImageFactory.h +66 -63
  19. package/cpp/api/JsiSkImageFilterFactory.h +354 -608
  20. package/cpp/api/JsiSkImageInfo.h +10 -13
  21. package/cpp/api/JsiSkMaskFilterFactory.h +8 -11
  22. package/cpp/api/JsiSkMatrix.h +36 -73
  23. package/cpp/api/JsiSkNativeObjects.h +60 -92
  24. package/cpp/api/JsiSkPaint.h +73 -131
  25. package/cpp/api/JsiSkParagraph.h +36 -53
  26. package/cpp/api/JsiSkParagraphBuilder.h +36 -64
  27. package/cpp/api/JsiSkParagraphBuilderFactory.h +11 -16
  28. package/cpp/api/JsiSkPath.h +216 -349
  29. package/cpp/api/JsiSkPathBuilder.h +133 -269
  30. package/cpp/api/JsiSkPathBuilderFactory.h +11 -11
  31. package/cpp/api/JsiSkPathEffectFactory.h +52 -72
  32. package/cpp/api/JsiSkPathFactory.h +129 -195
  33. package/cpp/api/JsiSkPicture.h +12 -18
  34. package/cpp/api/JsiSkPictureRecorder.h +14 -15
  35. package/cpp/api/JsiSkPoint.h +4 -4
  36. package/cpp/api/JsiSkRRect.h +7 -8
  37. package/cpp/api/JsiSkRSXform.h +10 -23
  38. package/cpp/api/JsiSkRect.h +23 -31
  39. package/cpp/api/JsiSkRuntimeEffect.h +67 -83
  40. package/cpp/api/JsiSkRuntimeEffectFactory.h +6 -10
  41. package/cpp/api/JsiSkRuntimeShaderBuilder.h +5 -14
  42. package/cpp/api/JsiSkSVG.h +4 -4
  43. package/cpp/api/JsiSkShaderFactory.h +153 -225
  44. package/cpp/api/JsiSkSkottie.h +104 -126
  45. package/cpp/api/JsiSkSurface.h +11 -14
  46. package/cpp/api/JsiSkSurfaceFactory.h +6 -7
  47. package/cpp/api/JsiSkTextBlobFactory.h +31 -54
  48. package/cpp/api/JsiSkTypeface.h +8 -12
  49. package/cpp/api/JsiSkTypefaceFactory.h +9 -7
  50. package/cpp/api/JsiSkTypefaceFontProvider.h +22 -23
  51. package/cpp/api/JsiSkTypefaceFontProviderFactory.h +5 -6
  52. package/cpp/api/JsiSkVertices.h +6 -8
  53. package/cpp/api/JsiSkiaContext.h +10 -11
  54. package/cpp/api/JsiVideo.h +31 -71
  55. package/cpp/dawn/include/dawn/dawn_proc.h +53 -0
  56. package/cpp/dawn/include/dawn/dawn_proc_table.h +330 -0
  57. package/cpp/dawn/include/dawn/dawn_thread_dispatch_proc.h +47 -0
  58. package/cpp/dawn/include/dawn/dawn_version.h +41 -0
  59. package/cpp/dawn/include/dawn/native/D3D11Backend.h +65 -0
  60. package/cpp/dawn/include/dawn/native/D3D12Backend.h +86 -0
  61. package/cpp/dawn/include/dawn/native/D3DBackend.h +56 -0
  62. package/cpp/dawn/include/dawn/native/DawnNative.h +369 -0
  63. package/cpp/dawn/include/dawn/native/MetalBackend.h +56 -0
  64. package/cpp/dawn/include/dawn/native/NullBackend.h +39 -0
  65. package/cpp/dawn/include/dawn/native/OpenGLBackend.h +89 -0
  66. package/cpp/dawn/include/dawn/native/VulkanBackend.h +183 -0
  67. package/cpp/dawn/include/dawn/native/WebGPUBackend.h +49 -0
  68. package/cpp/dawn/include/dawn/native/dawn_native_export.h +49 -0
  69. package/cpp/dawn/include/dawn/platform/DawnPlatform.h +210 -0
  70. package/cpp/dawn/include/dawn/platform/dawn_platform_export.h +49 -0
  71. package/cpp/dawn/include/dawn/replay/Replay.h +99 -0
  72. package/cpp/dawn/include/dawn/replay/dawn_replay_export.h +49 -0
  73. package/cpp/dawn/include/dawn/webgpu_cpp_print.h +2844 -0
  74. package/cpp/dawn/include/tint/tint.h +90 -0
  75. package/cpp/dawn/include/webgpu/webgpu.h +4987 -0
  76. package/cpp/dawn/include/webgpu/webgpu_cpp.h +10080 -0
  77. package/cpp/dawn/include/webgpu/webgpu_cpp_chained_struct.h +57 -0
  78. package/cpp/dawn/include/webgpu/webgpu_enum_class_bitmasks.h +161 -0
  79. package/cpp/dawn/include/webgpu/webgpu_glfw.h +88 -0
  80. package/cpp/jsi/JSIConverter.h +0 -31
  81. package/cpp/jsi/NativeObject.h +11 -6
  82. package/cpp/rnskia/RNDawnContext.h +18 -2
  83. package/cpp/rnskia/RNDawnInterop.cpp +19 -0
  84. package/cpp/rnskia/RNDawnUtils.h +18 -1
  85. package/cpp/rnskia/RNSkManager.cpp +5 -162
  86. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +2 -0
  87. package/cpp/skia/src/gpu/graphite/ContextOptionsPriv.h +45 -0
  88. package/cpp/skia/src/gpu/graphite/ResourceTypes.h +360 -0
  89. package/cpp/skia/src/gpu/graphite/TextureProxyView.h +105 -0
  90. package/lib/commonjs/mock/index.js +0 -1
  91. package/lib/commonjs/mock/index.js.map +1 -1
  92. package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +15 -6
  93. package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
  94. package/lib/commonjs/skia/types/Skia.d.ts +5 -15
  95. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  96. package/lib/commonjs/skia/types/index.d.ts +0 -1
  97. package/lib/commonjs/skia/types/index.js +0 -11
  98. package/lib/commonjs/skia/types/index.js.map +1 -1
  99. package/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  100. package/lib/commonjs/skia/web/JsiSkImageFactory.js +2 -2
  101. package/lib/commonjs/skia/web/JsiSkImageFactory.js.map +1 -1
  102. package/lib/commonjs/skia/web/JsiSkia.js +1 -4
  103. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  104. package/lib/commonjs/views/index.d.ts +0 -1
  105. package/lib/commonjs/views/index.js +0 -11
  106. package/lib/commonjs/views/index.js.map +1 -1
  107. package/lib/module/mock/index.js +0 -1
  108. package/lib/module/mock/index.js.map +1 -1
  109. package/lib/module/skia/types/Image/ImageFactory.d.ts +15 -6
  110. package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
  111. package/lib/module/skia/types/Skia.d.ts +5 -15
  112. package/lib/module/skia/types/Skia.js.map +1 -1
  113. package/lib/module/skia/types/index.d.ts +0 -1
  114. package/lib/module/skia/types/index.js +0 -1
  115. package/lib/module/skia/types/index.js.map +1 -1
  116. package/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  117. package/lib/module/skia/web/JsiSkImageFactory.js +2 -2
  118. package/lib/module/skia/web/JsiSkImageFactory.js.map +1 -1
  119. package/lib/module/skia/web/JsiSkia.js +1 -4
  120. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  121. package/lib/module/views/index.d.ts +0 -1
  122. package/lib/module/views/index.js +0 -1
  123. package/lib/module/views/index.js.map +1 -1
  124. package/lib/typescript/lib/commonjs/mock/index.d.ts +0 -1
  125. package/lib/typescript/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  126. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -2
  127. package/lib/typescript/lib/module/mock/index.d.ts +0 -2
  128. package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -2
  129. package/lib/typescript/lib/module/skia/types/index.d.ts +0 -1
  130. package/lib/typescript/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  131. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -2
  132. package/lib/typescript/lib/module/views/index.d.ts +0 -1
  133. package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +15 -6
  134. package/lib/typescript/src/skia/types/Skia.d.ts +5 -15
  135. package/lib/typescript/src/skia/types/index.d.ts +0 -1
  136. package/lib/typescript/src/skia/web/JsiSkImageFactory.d.ts +2 -2
  137. package/lib/typescript/src/views/index.d.ts +0 -1
  138. package/libs/.graphite +1 -0
  139. package/package.json +8 -9
  140. package/react-native-skia.podspec +38 -4
  141. package/src/mock/index.ts +0 -1
  142. package/src/skia/types/Image/ImageFactory.ts +15 -6
  143. package/src/skia/types/Skia.ts +5 -15
  144. package/src/skia/types/index.ts +0 -1
  145. package/src/skia/web/JsiSkImageFactory.ts +3 -3
  146. package/src/skia/web/JsiSkia.ts +2 -5
  147. package/src/views/index.ts +0 -1
  148. package/android/cpp/jni/JniWebGPUView.cpp +0 -112
  149. package/android/cpp/rnskia-android/SkiaPlatformContext.h +0 -26
  150. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUSurfaceView.java +0 -43
  151. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUTextureView.java +0 -50
  152. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUView.java +0 -98
  153. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewAPI.java +0 -19
  154. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewManager.java +0 -58
  155. package/apple/RNWebGPUAppleNativeBuffer.mm +0 -33
  156. package/apple/SkiaPlatformContext.h +0 -20
  157. package/apple/SkiaPlatformContext.mm +0 -21
  158. package/apple/SkiaWebGPUView.mm +0 -81
  159. package/apple/WebGPUMetalView.mm +0 -136
  160. package/cpp/rnwgpu/ArrayBuffer.h +0 -116
  161. package/cpp/rnwgpu/Canvas.h +0 -52
  162. package/cpp/rnwgpu/PlatformContext.h +0 -18
  163. package/cpp/rnwgpu/SurfaceRegistry.h +0 -605
  164. package/cpp/rnwgpu/api/AppleNativeBuffer.h +0 -22
  165. package/cpp/rnwgpu/api/Convertors.h +0 -783
  166. package/cpp/rnwgpu/api/External.h +0 -12
  167. package/cpp/rnwgpu/api/GPU.cpp +0 -162
  168. package/cpp/rnwgpu/api/GPU.h +0 -60
  169. package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -239
  170. package/cpp/rnwgpu/api/GPUAdapter.h +0 -60
  171. package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -57
  172. package/cpp/rnwgpu/api/GPUBindGroup.cpp +0 -3
  173. package/cpp/rnwgpu/api/GPUBindGroup.h +0 -51
  174. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +0 -52
  175. package/cpp/rnwgpu/api/GPUBuffer.cpp +0 -107
  176. package/cpp/rnwgpu/api/GPUBuffer.h +0 -88
  177. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -75
  178. package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -70
  179. package/cpp/rnwgpu/api/GPUCommandBuffer.h +0 -45
  180. package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +0 -179
  181. package/cpp/rnwgpu/api/GPUCommandEncoder.h +0 -111
  182. package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -79
  183. package/cpp/rnwgpu/api/GPUCompilationMessage.h +0 -36
  184. package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +0 -60
  185. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +0 -85
  186. package/cpp/rnwgpu/api/GPUComputePipeline.cpp +0 -12
  187. package/cpp/rnwgpu/api/GPUComputePipeline.h +0 -60
  188. package/cpp/rnwgpu/api/GPUDevice.cpp +0 -613
  189. package/cpp/rnwgpu/api/GPUDevice.h +0 -258
  190. package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +0 -7
  191. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +0 -40
  192. package/cpp/rnwgpu/api/GPUError.h +0 -35
  193. package/cpp/rnwgpu/api/GPUExtent3D.h +0 -66
  194. package/cpp/rnwgpu/api/GPUExternalTexture.cpp +0 -139
  195. package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -95
  196. package/cpp/rnwgpu/api/GPUFeatures.h +0 -203
  197. package/cpp/rnwgpu/api/GPUInternalError.h +0 -31
  198. package/cpp/rnwgpu/api/GPUOrigin2D.h +0 -55
  199. package/cpp/rnwgpu/api/GPUOrigin3D.h +0 -62
  200. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +0 -33
  201. package/cpp/rnwgpu/api/GPUPipelineLayout.h +0 -45
  202. package/cpp/rnwgpu/api/GPUQuerySet.cpp +0 -11
  203. package/cpp/rnwgpu/api/GPUQuerySet.h +0 -73
  204. package/cpp/rnwgpu/api/GPUQueue.cpp +0 -179
  205. package/cpp/rnwgpu/api/GPUQueue.h +0 -84
  206. package/cpp/rnwgpu/api/GPURenderBundle.h +0 -44
  207. package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +0 -131
  208. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +0 -110
  209. package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +0 -165
  210. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +0 -130
  211. package/cpp/rnwgpu/api/GPURenderPipeline.cpp +0 -13
  212. package/cpp/rnwgpu/api/GPURenderPipeline.h +0 -61
  213. package/cpp/rnwgpu/api/GPUSampler.h +0 -44
  214. package/cpp/rnwgpu/api/GPUShaderModule.cpp +0 -56
  215. package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
  216. package/cpp/rnwgpu/api/GPUSharedFence.cpp +0 -80
  217. package/cpp/rnwgpu/api/GPUSharedFence.h +0 -53
  218. package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -135
  219. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -75
  220. package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +0 -129
  221. package/cpp/rnwgpu/api/GPUSupportedLimits.h +0 -131
  222. package/cpp/rnwgpu/api/GPUTexture.cpp +0 -47
  223. package/cpp/rnwgpu/api/GPUTexture.h +0 -162
  224. package/cpp/rnwgpu/api/GPUTextureView.h +0 -44
  225. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +0 -60
  226. package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
  227. package/cpp/rnwgpu/api/ImageBitmap.h +0 -62
  228. package/cpp/rnwgpu/api/NativeBufferUtils.h +0 -87
  229. package/cpp/rnwgpu/api/RNWebGPU.h +0 -82
  230. package/cpp/rnwgpu/api/WebGPUConstants.h +0 -36
  231. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -64
  232. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -78
  233. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -56
  234. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -97
  235. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -57
  236. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -52
  237. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -56
  238. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -56
  239. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -59
  240. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +0 -39
  241. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +0 -76
  242. package/cpp/rnwgpu/api/descriptors/GPUColor.h +0 -66
  243. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -58
  244. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
  245. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -45
  246. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -45
  247. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -56
  248. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -58
  249. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -67
  250. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -56
  251. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -103
  252. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -109
  253. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -38
  254. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -90
  255. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -73
  256. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -62
  257. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
  258. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -65
  259. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -81
  260. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -54
  261. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
  262. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -54
  263. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -57
  264. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -69
  265. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -61
  266. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -55
  267. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -43
  268. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -45
  269. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -80
  270. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -81
  271. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -101
  272. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -92
  273. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -58
  274. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -103
  275. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -51
  276. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -45
  277. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -110
  278. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -60
  279. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -62
  280. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
  281. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +0 -58
  282. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +0 -51
  283. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -73
  284. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -64
  285. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -59
  286. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -59
  287. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -91
  288. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
  289. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -91
  290. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -64
  291. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -53
  292. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -62
  293. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -73
  294. package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1969
  295. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -213
  296. package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -58
  297. package/cpp/rnwgpu/async/RuntimeContext.cpp +0 -199
  298. package/cpp/rnwgpu/async/RuntimeContext.h +0 -134
  299. package/lib/commonjs/skia/types/WebGPU.d.ts +0 -184
  300. package/lib/commonjs/skia/types/WebGPU.js +0 -105
  301. package/lib/commonjs/skia/types/WebGPU.js.map +0 -1
  302. package/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -8
  303. package/lib/commonjs/specs/WebGPUViewNativeComponent.js +0 -10
  304. package/lib/commonjs/specs/WebGPUViewNativeComponent.js.map +0 -1
  305. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  306. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js +0 -103
  307. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  308. package/lib/commonjs/specs/utils.d.ts +0 -1
  309. package/lib/commonjs/specs/utils.js +0 -11
  310. package/lib/commonjs/specs/utils.js.map +0 -1
  311. package/lib/commonjs/views/WebGPUCanvas.d.ts +0 -33
  312. package/lib/commonjs/views/WebGPUCanvas.js +0 -79
  313. package/lib/commonjs/views/WebGPUCanvas.js.map +0 -1
  314. package/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -23
  315. package/lib/commonjs/views/WebGPUCanvas.web.js +0 -20
  316. package/lib/commonjs/views/WebGPUCanvas.web.js.map +0 -1
  317. package/lib/module/skia/types/WebGPU.d.ts +0 -184
  318. package/lib/module/skia/types/WebGPU.js +0 -99
  319. package/lib/module/skia/types/WebGPU.js.map +0 -1
  320. package/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -8
  321. package/lib/module/specs/WebGPUViewNativeComponent.js +0 -4
  322. package/lib/module/specs/WebGPUViewNativeComponent.js.map +0 -1
  323. package/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  324. package/lib/module/specs/WebGPUViewNativeComponent.web.js +0 -96
  325. package/lib/module/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  326. package/lib/module/specs/utils.d.ts +0 -1
  327. package/lib/module/specs/utils.js +0 -5
  328. package/lib/module/specs/utils.js.map +0 -1
  329. package/lib/module/views/WebGPUCanvas.d.ts +0 -33
  330. package/lib/module/views/WebGPUCanvas.js +0 -70
  331. package/lib/module/views/WebGPUCanvas.js.map +0 -1
  332. package/lib/module/views/WebGPUCanvas.web.d.ts +0 -23
  333. package/lib/module/views/WebGPUCanvas.web.js +0 -12
  334. package/lib/module/views/WebGPUCanvas.web.js.map +0 -1
  335. package/lib/typescript/lib/commonjs/skia/types/WebGPU.d.ts +0 -2
  336. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -4
  337. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -3
  338. package/lib/typescript/lib/commonjs/specs/utils.d.ts +0 -2
  339. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.d.ts +0 -6
  340. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -6
  341. package/lib/typescript/lib/module/skia/types/WebGPU.d.ts +0 -31
  342. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -2
  343. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -2
  344. package/lib/typescript/lib/module/specs/utils.d.ts +0 -1
  345. package/lib/typescript/lib/module/views/WebGPUCanvas.d.ts +0 -7
  346. package/lib/typescript/lib/module/views/WebGPUCanvas.web.d.ts +0 -8
  347. package/lib/typescript/src/skia/types/WebGPU.d.ts +0 -184
  348. package/lib/typescript/src/specs/WebGPUViewNativeComponent.d.ts +0 -8
  349. package/lib/typescript/src/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  350. package/lib/typescript/src/specs/utils.d.ts +0 -1
  351. package/lib/typescript/src/views/WebGPUCanvas.d.ts +0 -33
  352. package/lib/typescript/src/views/WebGPUCanvas.web.d.ts +0 -23
  353. package/src/skia/types/WebGPU.ts +0 -226
  354. package/src/specs/WebGPUViewNativeComponent.ts +0 -11
  355. package/src/specs/WebGPUViewNativeComponent.web.ts +0 -110
  356. package/src/specs/utils.ts +0 -4
  357. package/src/views/WebGPUCanvas.tsx +0 -125
  358. package/src/views/WebGPUCanvas.web.tsx +0 -36
@@ -6,8 +6,13 @@
6
6
 
7
7
  #include <jsi/jsi.h>
8
8
 
9
+ #include "JsiSkColor.h"
9
10
  #include "JsiSkColorFilter.h"
11
+ #include "JsiSkConverters.h"
12
+ #include "JsiSkMatrix.h"
10
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,269 +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;
28
- }
29
- return values[i].asNumber();
30
- }
31
-
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;
36
- }
37
- return JsiSkMatrix::fromValue(runtime, values[i]).get();
38
- }
39
-
40
- SkTileMode getTileMode(const jsi::Value *values, int i, size_t size) {
41
- if (i >= size || values[i].isUndefined()) {
42
- return SkTileMode::kClamp;
43
- }
44
- return static_cast<SkTileMode>(values[i].asNumber());
45
- }
46
-
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
- }
59
- }
60
- return colors;
61
- }
62
-
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
- }
74
- }
75
- return positions;
76
- }
77
-
78
30
  class JsiSkShaderFactory : public JsiSkNativeObject<JsiSkShaderFactory> {
79
31
  public:
80
32
  static constexpr const char *CLASS_NAME = "ShaderFactory";
81
33
 
82
- JSI_HOST_FUNCTION(MakeLinearGradient) {
83
- auto p1 =
84
- *JsiSkPoint::fromValue(runtime, arguments[0].asObject(runtime)).get();
85
- auto p2 =
86
- *JsiSkPoint::fromValue(runtime, arguments[1].asObject(runtime)).get();
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) {
87
41
  SkPoint pts[] = {p1, p2};
88
-
89
- std::vector<SkColor4f> colors = getColors(runtime, arguments[2]);
90
- auto colorsSize = colors.size();
91
- if (colorsSize < 2) {
92
- throw std::invalid_argument("colors must have at least 2 colors");
93
- }
94
- std::vector<SkScalar> positions = getPositions(runtime, arguments[3]);
95
- if (!positions.empty() && positions.size() != colorsSize) {
96
- throw std::invalid_argument(
97
- "positions must be empty or have the same size as colors");
98
- }
99
- auto tileMode = getTileMode(arguments, 4, count);
100
- auto flag = getFlag(arguments, 6, count);
101
- auto localMatrix = getLocalMatrix(runtime, arguments, 5, count);
102
-
103
- SkGradient::Colors gradColors(
104
- SkSpan(colors),
105
- !positions.empty()
106
- ? SkSpan<const float>(positions.data(), positions.size())
107
- : SkSpan<const float>(),
108
- tileMode);
109
- SkGradient grad(gradColors, SkGradient::Interpolation::FromFlags(flag));
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)));
110
48
  sk_sp<SkShader> gradient =
111
- SkShaders::LinearGradient(pts, grad, localMatrix);
112
- return makeJsiObject(runtime, std::make_shared<JsiSkShader>(
113
- getContext(), std::move(gradient)));
49
+ SkShaders::LinearGradient(pts, grad, toLocalMatrix(matrix));
50
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
114
51
  }
115
52
 
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));
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)));
142
66
  sk_sp<SkShader> gradient =
143
- SkShaders::RadialGradient(center, r, grad, localMatrix);
144
- return makeJsiObject(runtime, std::make_shared<JsiSkShader>(
145
- getContext(), std::move(gradient)));
67
+ SkShaders::RadialGradient(center, r, grad, toLocalMatrix(matrix));
68
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
146
69
  }
147
70
 
148
- JSI_HOST_FUNCTION(MakeSweepGradient) {
149
- auto x = arguments[0].asNumber();
150
- auto y = arguments[1].asNumber();
151
- std::vector<SkColor4f> colors = getColors(runtime, arguments[2]);
152
- auto colorsSize = colors.size();
153
- if (colorsSize < 2) {
154
- throw std::invalid_argument("colors must have at least 2 colors");
155
- }
156
- std::vector<SkScalar> positions = getPositions(runtime, arguments[3]);
157
- if (!positions.empty() && positions.size() != colorsSize) {
158
- throw std::invalid_argument(
159
- "positions must be empty or the same size as colors");
160
- }
161
- auto tileMode = getTileMode(arguments, 4, count);
162
- auto localMatrix = getLocalMatrix(runtime, arguments, 5, count);
163
- auto flag = getFlag(arguments, 6, count);
164
- auto startAngle = (count < 8 || arguments[7].isUndefined())
165
- ? 0.0f
166
- : static_cast<float>(arguments[7].asNumber());
167
- auto endAngle = (count < 9 || arguments[8].isUndefined())
168
- ? 360.0f
169
- : static_cast<float>(arguments[8].asNumber());
170
-
171
- SkGradient::Colors gradColors(
172
- SkSpan(colors),
173
- !positions.empty()
174
- ? SkSpan<const float>(positions.data(), positions.size())
175
- : SkSpan<const float>(),
176
- tileMode);
177
- SkGradient grad(gradColors, SkGradient::Interpolation::FromFlags(flag));
178
- sk_sp<SkShader> gradient = SkShaders::SweepGradient(
179
- SkPoint::Make(x, y), startAngle, endAngle, grad, localMatrix);
180
- return makeJsiObject(runtime, std::make_shared<JsiSkShader>(
181
- getContext(), std::move(gradient)));
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));
182
92
  }
183
93
 
184
- JSI_HOST_FUNCTION(MakeTwoPointConicalGradient) {
185
- auto start =
186
- *JsiSkPoint::fromValue(runtime, arguments[0].asObject(runtime)).get();
187
- auto startRadius = arguments[1].asNumber();
188
-
189
- auto end =
190
- *JsiSkPoint::fromValue(runtime, arguments[2].asObject(runtime)).get();
191
- auto endRadius = arguments[3].asNumber();
192
-
193
- std::vector<SkColor4f> colors = getColors(runtime, arguments[4]);
194
- auto colorsSize = colors.size();
195
- if (colorsSize < 2) {
196
- throw std::invalid_argument("colors must have at least 2 colors");
197
- }
198
- std::vector<SkScalar> positions = getPositions(runtime, arguments[5]);
199
- if (!positions.empty() && positions.size() != colorsSize) {
200
- throw std::invalid_argument(
201
- "positions must be empty or the same size as colors");
202
- }
203
- auto tileMode = getTileMode(arguments, 6, count);
204
- auto localMatrix = getLocalMatrix(runtime, arguments, 7, count);
205
- auto flag = getFlag(arguments, 8, count);
206
-
207
- SkGradient::Colors gradColors(
208
- SkSpan(colors),
209
- !positions.empty()
210
- ? SkSpan<const float>(positions.data(), positions.size())
211
- : SkSpan<const float>(),
212
- tileMode);
213
- SkGradient grad(gradColors, SkGradient::Interpolation::FromFlags(flag));
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)));
214
108
  sk_sp<SkShader> gradient = SkShaders::TwoPointConicalGradient(
215
- start, startRadius, end, endRadius, grad, localMatrix);
216
-
217
- return makeJsiObject(runtime, std::make_shared<JsiSkShader>(
218
- getContext(), std::move(gradient)));
109
+ start, startRadius, end, endRadius, grad, toLocalMatrix(matrix));
110
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
219
111
  }
220
112
 
221
- JSI_HOST_FUNCTION(MakeTurbulence) {
222
- auto baseFreqX = arguments[0].asNumber();
223
- auto baseFreqY = arguments[1].asNumber();
224
- auto octaves = arguments[2].asNumber();
225
- auto seed = arguments[3].asNumber();
226
- auto tileW = arguments[4].asNumber();
227
- auto tileH = arguments[5].asNumber();
113
+ std::shared_ptr<JsiSkShader> MakeTurbulence(double baseFreqX,
114
+ double baseFreqY, double octaves,
115
+ double seed, double tileW,
116
+ double tileH) {
228
117
  SkISize size = SkISize::Make(tileW, tileH);
229
118
  sk_sp<SkShader> gradient =
230
119
  SkShaders::MakeTurbulence(baseFreqX, baseFreqY, octaves, seed, &size);
231
- return makeJsiObject(runtime, std::make_shared<JsiSkShader>(
232
- getContext(), std::move(gradient)));
120
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
233
121
  }
234
122
 
235
- JSI_HOST_FUNCTION(MakeFractalNoise) {
236
- auto baseFreqX = arguments[0].asNumber();
237
- auto baseFreqY = arguments[1].asNumber();
238
- auto octaves = arguments[2].asNumber();
239
- auto seed = arguments[3].asNumber();
240
- auto tileW = arguments[4].asNumber();
241
- auto tileH = arguments[5].asNumber();
123
+ std::shared_ptr<JsiSkShader> MakeFractalNoise(double baseFreqX,
124
+ double baseFreqY,
125
+ double octaves, double seed,
126
+ double tileW, double tileH) {
242
127
  SkISize size = SkISize::Make(tileW, tileH);
243
128
  sk_sp<SkShader> gradient =
244
129
  SkShaders::MakeFractalNoise(baseFreqX, baseFreqY, octaves, seed, &size);
245
- return makeJsiObject(runtime, std::make_shared<JsiSkShader>(
246
- getContext(), std::move(gradient)));
130
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
247
131
  }
248
132
 
249
- JSI_HOST_FUNCTION(MakeBlend) {
250
- auto blendMode = (SkBlendMode)arguments[0].asNumber();
251
- auto one = JsiSkShader::fromValue(runtime, arguments[1]);
252
- auto two = JsiSkShader::fromValue(runtime, arguments[2]);
253
- sk_sp<SkShader> gradient = SkShaders::Blend(blendMode, one, two);
254
- return makeJsiObject(runtime, std::make_shared<JsiSkShader>(
255
- getContext(), std::move(gradient)));
133
+ std::shared_ptr<JsiSkShader> MakeBlend(double blendMode, sk_sp<SkShader> one,
134
+ sk_sp<SkShader> two) {
135
+ sk_sp<SkShader> gradient =
136
+ SkShaders::Blend(static_cast<SkBlendMode>(blendMode), one, two);
137
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
256
138
  }
257
139
 
258
- JSI_HOST_FUNCTION(MakeColor) {
259
- auto color = JsiSkColor::fromValue(runtime, arguments[0]);
140
+ std::shared_ptr<JsiSkShader> MakeColor(JsiColor color) {
260
141
  sk_sp<SkShader> gradient = SkShaders::Color(color);
261
- return makeJsiObject(runtime, std::make_shared<JsiSkShader>(
262
- getContext(), std::move(gradient)));
142
+ return std::make_shared<JsiSkShader>(getContext(), std::move(gradient));
263
143
  }
264
144
 
265
145
  size_t getMemoryPressure() override { return 1024; }
266
146
 
267
147
  static void definePrototype(jsi::Runtime &runtime, jsi::Object &prototype) {
268
- installHostMethod(runtime, prototype, "MakeLinearGradient",
269
- &JsiSkShaderFactory::MakeLinearGradient);
270
- installHostMethod(runtime, prototype, "MakeRadialGradient",
271
- &JsiSkShaderFactory::MakeRadialGradient);
272
- installHostMethod(runtime, prototype, "MakeSweepGradient",
273
- &JsiSkShaderFactory::MakeSweepGradient);
274
- installHostMethod(runtime, prototype, "MakeTwoPointConicalGradient",
275
- &JsiSkShaderFactory::MakeTwoPointConicalGradient);
276
- installHostMethod(runtime, prototype, "MakeTurbulence",
277
- &JsiSkShaderFactory::MakeTurbulence);
278
- installHostMethod(runtime, prototype, "MakeFractalNoise",
279
- &JsiSkShaderFactory::MakeFractalNoise);
280
- installHostMethod(runtime, prototype, "MakeBlend",
281
- &JsiSkShaderFactory::MakeBlend);
282
- installHostMethod(runtime, prototype, "MakeColor",
283
- &JsiSkShaderFactory::MakeColor);
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);
284
164
  }
285
165
 
286
166
  explicit JsiSkShaderFactory(std::shared_ptr<RNSkPlatformContext> context)
287
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) {
180
+ throw std::invalid_argument("colors must have at least 2 colors");
181
+ }
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>{};
190
+ if (!positions.empty() && positions.size() != colorsSize) {
191
+ throw std::invalid_argument(
192
+ "positions must be empty or have the same size as colors");
193
+ }
194
+ return positions;
195
+ }
196
+
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>();
201
+ }
202
+
203
+ static SkTileMode toTileMode(const JsiOptional<double> &tileMode) {
204
+ return tileMode.has_value() ? static_cast<SkTileMode>(*tileMode)
205
+ : SkTileMode::kClamp;
206
+ }
207
+
208
+ static int toFlag(const JsiOptional<double> &flag) {
209
+ return flag.has_value() ? static_cast<int>(*flag) : 0;
210
+ }
211
+
212
+ static SkMatrix *
213
+ toLocalMatrix(const JsiOptional<std::shared_ptr<SkMatrix>> &matrix) {
214
+ return matrix.has_value() ? matrix->get() : nullptr;
215
+ }
288
216
  };
289
217
 
290
218
  } // namespace RNSkia