@shopify/react-native-skia 2.10.0 → 2.10.2

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 (332) 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 +64 -96
  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/jsi/EnumMapper.h +2 -2
  56. package/cpp/jsi/JSIConverter.h +2 -33
  57. package/cpp/jsi/NativeObject.h +24 -19
  58. package/cpp/jsi/Promise.cpp +2 -2
  59. package/cpp/jsi/Promise.h +2 -2
  60. package/cpp/rnskia/RNDawnContext.h +18 -2
  61. package/cpp/rnskia/RNDawnInterop.cpp +19 -0
  62. package/cpp/rnskia/RNDawnUtils.h +18 -1
  63. package/cpp/rnskia/RNSkManager.cpp +5 -162
  64. package/cpp/skia/include/gpu/ganesh/GrDriverBugWorkaroundsAutogen.h +2 -0
  65. package/lib/commonjs/mock/index.js +0 -1
  66. package/lib/commonjs/mock/index.js.map +1 -1
  67. package/lib/commonjs/skia/types/Image/ImageFactory.d.ts +15 -6
  68. package/lib/commonjs/skia/types/Image/ImageFactory.js.map +1 -1
  69. package/lib/commonjs/skia/types/Skia.d.ts +5 -15
  70. package/lib/commonjs/skia/types/Skia.js.map +1 -1
  71. package/lib/commonjs/skia/types/index.d.ts +0 -1
  72. package/lib/commonjs/skia/types/index.js +0 -11
  73. package/lib/commonjs/skia/types/index.js.map +1 -1
  74. package/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  75. package/lib/commonjs/skia/web/JsiSkImageFactory.js +2 -2
  76. package/lib/commonjs/skia/web/JsiSkImageFactory.js.map +1 -1
  77. package/lib/commonjs/skia/web/JsiSkia.js +1 -4
  78. package/lib/commonjs/skia/web/JsiSkia.js.map +1 -1
  79. package/lib/commonjs/views/index.d.ts +0 -1
  80. package/lib/commonjs/views/index.js +0 -11
  81. package/lib/commonjs/views/index.js.map +1 -1
  82. package/lib/module/mock/index.js +0 -1
  83. package/lib/module/mock/index.js.map +1 -1
  84. package/lib/module/skia/types/Image/ImageFactory.d.ts +15 -6
  85. package/lib/module/skia/types/Image/ImageFactory.js.map +1 -1
  86. package/lib/module/skia/types/Skia.d.ts +5 -15
  87. package/lib/module/skia/types/Skia.js.map +1 -1
  88. package/lib/module/skia/types/index.d.ts +0 -1
  89. package/lib/module/skia/types/index.js +0 -1
  90. package/lib/module/skia/types/index.js.map +1 -1
  91. package/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  92. package/lib/module/skia/web/JsiSkImageFactory.js +2 -2
  93. package/lib/module/skia/web/JsiSkImageFactory.js.map +1 -1
  94. package/lib/module/skia/web/JsiSkia.js +1 -4
  95. package/lib/module/skia/web/JsiSkia.js.map +1 -1
  96. package/lib/module/views/index.d.ts +0 -1
  97. package/lib/module/views/index.js +0 -1
  98. package/lib/module/views/index.js.map +1 -1
  99. package/lib/typescript/lib/commonjs/mock/index.d.ts +0 -1
  100. package/lib/typescript/lib/commonjs/skia/web/JsiSkImageFactory.d.ts +2 -2
  101. package/lib/typescript/lib/commonjs/skia/web/JsiSkia.d.ts +1 -2
  102. package/lib/typescript/lib/module/mock/index.d.ts +0 -2
  103. package/lib/typescript/lib/module/skia/Skia.web.d.ts +1 -2
  104. package/lib/typescript/lib/module/skia/types/index.d.ts +0 -1
  105. package/lib/typescript/lib/module/skia/web/JsiSkImageFactory.d.ts +2 -2
  106. package/lib/typescript/lib/module/skia/web/JsiSkia.d.ts +1 -2
  107. package/lib/typescript/lib/module/views/index.d.ts +0 -1
  108. package/lib/typescript/src/skia/types/Image/ImageFactory.d.ts +15 -6
  109. package/lib/typescript/src/skia/types/Skia.d.ts +5 -15
  110. package/lib/typescript/src/skia/types/index.d.ts +0 -1
  111. package/lib/typescript/src/skia/web/JsiSkImageFactory.d.ts +2 -2
  112. package/lib/typescript/src/views/index.d.ts +0 -1
  113. package/package.json +3 -4
  114. package/react-native-skia.podspec +38 -4
  115. package/src/mock/index.ts +0 -1
  116. package/src/skia/types/Image/ImageFactory.ts +15 -6
  117. package/src/skia/types/Skia.ts +5 -15
  118. package/src/skia/types/index.ts +0 -1
  119. package/src/skia/web/JsiSkImageFactory.ts +3 -3
  120. package/src/skia/web/JsiSkia.ts +2 -5
  121. package/src/views/index.ts +0 -1
  122. package/android/cpp/jni/JniWebGPUView.cpp +0 -112
  123. package/android/cpp/rnskia-android/SkiaPlatformContext.h +0 -26
  124. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUSurfaceView.java +0 -43
  125. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUTextureView.java +0 -50
  126. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUView.java +0 -98
  127. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewAPI.java +0 -19
  128. package/android/src/main/java/com/shopify/reactnative/skia/WebGPUViewManager.java +0 -58
  129. package/apple/RNWebGPUAppleNativeBuffer.mm +0 -33
  130. package/apple/SkiaPlatformContext.h +0 -20
  131. package/apple/SkiaPlatformContext.mm +0 -21
  132. package/apple/SkiaWebGPUView.mm +0 -81
  133. package/apple/WebGPUMetalView.mm +0 -136
  134. package/cpp/rnwgpu/ArrayBuffer.h +0 -116
  135. package/cpp/rnwgpu/Canvas.h +0 -52
  136. package/cpp/rnwgpu/PlatformContext.h +0 -18
  137. package/cpp/rnwgpu/SurfaceRegistry.h +0 -605
  138. package/cpp/rnwgpu/api/AppleNativeBuffer.h +0 -22
  139. package/cpp/rnwgpu/api/Convertors.h +0 -783
  140. package/cpp/rnwgpu/api/External.h +0 -12
  141. package/cpp/rnwgpu/api/GPU.cpp +0 -162
  142. package/cpp/rnwgpu/api/GPU.h +0 -60
  143. package/cpp/rnwgpu/api/GPUAdapter.cpp +0 -239
  144. package/cpp/rnwgpu/api/GPUAdapter.h +0 -60
  145. package/cpp/rnwgpu/api/GPUAdapterInfo.h +0 -57
  146. package/cpp/rnwgpu/api/GPUBindGroup.cpp +0 -3
  147. package/cpp/rnwgpu/api/GPUBindGroup.h +0 -51
  148. package/cpp/rnwgpu/api/GPUBindGroupLayout.h +0 -52
  149. package/cpp/rnwgpu/api/GPUBuffer.cpp +0 -107
  150. package/cpp/rnwgpu/api/GPUBuffer.h +0 -88
  151. package/cpp/rnwgpu/api/GPUCanvasContext.cpp +0 -75
  152. package/cpp/rnwgpu/api/GPUCanvasContext.h +0 -70
  153. package/cpp/rnwgpu/api/GPUCommandBuffer.h +0 -45
  154. package/cpp/rnwgpu/api/GPUCommandEncoder.cpp +0 -179
  155. package/cpp/rnwgpu/api/GPUCommandEncoder.h +0 -111
  156. package/cpp/rnwgpu/api/GPUCompilationInfo.h +0 -79
  157. package/cpp/rnwgpu/api/GPUCompilationMessage.h +0 -36
  158. package/cpp/rnwgpu/api/GPUComputePassEncoder.cpp +0 -60
  159. package/cpp/rnwgpu/api/GPUComputePassEncoder.h +0 -85
  160. package/cpp/rnwgpu/api/GPUComputePipeline.cpp +0 -12
  161. package/cpp/rnwgpu/api/GPUComputePipeline.h +0 -60
  162. package/cpp/rnwgpu/api/GPUDevice.cpp +0 -613
  163. package/cpp/rnwgpu/api/GPUDevice.h +0 -258
  164. package/cpp/rnwgpu/api/GPUDeviceLostInfo.cpp +0 -7
  165. package/cpp/rnwgpu/api/GPUDeviceLostInfo.h +0 -40
  166. package/cpp/rnwgpu/api/GPUError.h +0 -35
  167. package/cpp/rnwgpu/api/GPUExtent3D.h +0 -66
  168. package/cpp/rnwgpu/api/GPUExternalTexture.cpp +0 -139
  169. package/cpp/rnwgpu/api/GPUExternalTexture.h +0 -95
  170. package/cpp/rnwgpu/api/GPUFeatures.h +0 -203
  171. package/cpp/rnwgpu/api/GPUInternalError.h +0 -31
  172. package/cpp/rnwgpu/api/GPUOrigin2D.h +0 -55
  173. package/cpp/rnwgpu/api/GPUOrigin3D.h +0 -62
  174. package/cpp/rnwgpu/api/GPUOutOfMemoryError.h +0 -33
  175. package/cpp/rnwgpu/api/GPUPipelineLayout.h +0 -45
  176. package/cpp/rnwgpu/api/GPUQuerySet.cpp +0 -11
  177. package/cpp/rnwgpu/api/GPUQuerySet.h +0 -73
  178. package/cpp/rnwgpu/api/GPUQueue.cpp +0 -179
  179. package/cpp/rnwgpu/api/GPUQueue.h +0 -84
  180. package/cpp/rnwgpu/api/GPURenderBundle.h +0 -44
  181. package/cpp/rnwgpu/api/GPURenderBundleEncoder.cpp +0 -131
  182. package/cpp/rnwgpu/api/GPURenderBundleEncoder.h +0 -110
  183. package/cpp/rnwgpu/api/GPURenderPassEncoder.cpp +0 -165
  184. package/cpp/rnwgpu/api/GPURenderPassEncoder.h +0 -130
  185. package/cpp/rnwgpu/api/GPURenderPipeline.cpp +0 -13
  186. package/cpp/rnwgpu/api/GPURenderPipeline.h +0 -61
  187. package/cpp/rnwgpu/api/GPUSampler.h +0 -44
  188. package/cpp/rnwgpu/api/GPUShaderModule.cpp +0 -56
  189. package/cpp/rnwgpu/api/GPUShaderModule.h +0 -66
  190. package/cpp/rnwgpu/api/GPUSharedFence.cpp +0 -80
  191. package/cpp/rnwgpu/api/GPUSharedFence.h +0 -53
  192. package/cpp/rnwgpu/api/GPUSharedTextureMemory.cpp +0 -135
  193. package/cpp/rnwgpu/api/GPUSharedTextureMemory.h +0 -75
  194. package/cpp/rnwgpu/api/GPUSupportedLimits.cpp +0 -129
  195. package/cpp/rnwgpu/api/GPUSupportedLimits.h +0 -131
  196. package/cpp/rnwgpu/api/GPUTexture.cpp +0 -47
  197. package/cpp/rnwgpu/api/GPUTexture.h +0 -162
  198. package/cpp/rnwgpu/api/GPUTextureView.h +0 -44
  199. package/cpp/rnwgpu/api/GPUUncapturedErrorEvent.h +0 -60
  200. package/cpp/rnwgpu/api/GPUValidationError.h +0 -32
  201. package/cpp/rnwgpu/api/ImageBitmap.h +0 -62
  202. package/cpp/rnwgpu/api/NativeBufferUtils.h +0 -87
  203. package/cpp/rnwgpu/api/RNWebGPU.h +0 -82
  204. package/cpp/rnwgpu/api/WebGPUConstants.h +0 -36
  205. package/cpp/rnwgpu/api/descriptors/GPUBindGroupDescriptor.h +0 -64
  206. package/cpp/rnwgpu/api/descriptors/GPUBindGroupEntry.h +0 -78
  207. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutDescriptor.h +0 -56
  208. package/cpp/rnwgpu/api/descriptors/GPUBindGroupLayoutEntry.h +0 -97
  209. package/cpp/rnwgpu/api/descriptors/GPUBlendComponent.h +0 -57
  210. package/cpp/rnwgpu/api/descriptors/GPUBlendState.h +0 -52
  211. package/cpp/rnwgpu/api/descriptors/GPUBufferBinding.h +0 -56
  212. package/cpp/rnwgpu/api/descriptors/GPUBufferBindingLayout.h +0 -56
  213. package/cpp/rnwgpu/api/descriptors/GPUBufferDescriptor.h +0 -59
  214. package/cpp/rnwgpu/api/descriptors/GPUBufferUsage.h +0 -39
  215. package/cpp/rnwgpu/api/descriptors/GPUCanvasConfiguration.h +0 -76
  216. package/cpp/rnwgpu/api/descriptors/GPUColor.h +0 -66
  217. package/cpp/rnwgpu/api/descriptors/GPUColorTargetState.h +0 -58
  218. package/cpp/rnwgpu/api/descriptors/GPUColorWrite.h +0 -29
  219. package/cpp/rnwgpu/api/descriptors/GPUCommandBufferDescriptor.h +0 -45
  220. package/cpp/rnwgpu/api/descriptors/GPUCommandEncoderDescriptor.h +0 -45
  221. package/cpp/rnwgpu/api/descriptors/GPUComputePassDescriptor.h +0 -56
  222. package/cpp/rnwgpu/api/descriptors/GPUComputePassTimestampWrites.h +0 -58
  223. package/cpp/rnwgpu/api/descriptors/GPUComputePipelineDescriptor.h +0 -67
  224. package/cpp/rnwgpu/api/descriptors/GPUDawnTogglesDescriptor.h +0 -56
  225. package/cpp/rnwgpu/api/descriptors/GPUDepthStencilState.h +0 -103
  226. package/cpp/rnwgpu/api/descriptors/GPUDeviceDescriptor.h +0 -109
  227. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureBindingLayout.h +0 -38
  228. package/cpp/rnwgpu/api/descriptors/GPUExternalTextureDescriptor.h +0 -90
  229. package/cpp/rnwgpu/api/descriptors/GPUFragmentState.h +0 -73
  230. package/cpp/rnwgpu/api/descriptors/GPUImageCopyBuffer.h +0 -62
  231. package/cpp/rnwgpu/api/descriptors/GPUImageCopyExternalImage.h +0 -63
  232. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTexture.h +0 -65
  233. package/cpp/rnwgpu/api/descriptors/GPUImageCopyTextureTagged.h +0 -81
  234. package/cpp/rnwgpu/api/descriptors/GPUImageDataLayout.h +0 -54
  235. package/cpp/rnwgpu/api/descriptors/GPUMapMode.h +0 -22
  236. package/cpp/rnwgpu/api/descriptors/GPUMultisampleState.h +0 -54
  237. package/cpp/rnwgpu/api/descriptors/GPUPipelineLayoutDescriptor.h +0 -57
  238. package/cpp/rnwgpu/api/descriptors/GPUPrimitiveState.h +0 -69
  239. package/cpp/rnwgpu/api/descriptors/GPUProgrammableStage.h +0 -61
  240. package/cpp/rnwgpu/api/descriptors/GPUQuerySetDescriptor.h +0 -55
  241. package/cpp/rnwgpu/api/descriptors/GPUQueueDescriptor.h +0 -43
  242. package/cpp/rnwgpu/api/descriptors/GPURenderBundleDescriptor.h +0 -45
  243. package/cpp/rnwgpu/api/descriptors/GPURenderBundleEncoderDescriptor.h +0 -80
  244. package/cpp/rnwgpu/api/descriptors/GPURenderPassColorAttachment.h +0 -81
  245. package/cpp/rnwgpu/api/descriptors/GPURenderPassDepthStencilAttachment.h +0 -101
  246. package/cpp/rnwgpu/api/descriptors/GPURenderPassDescriptor.h +0 -92
  247. package/cpp/rnwgpu/api/descriptors/GPURenderPassTimestampWrites.h +0 -58
  248. package/cpp/rnwgpu/api/descriptors/GPURenderPipelineDescriptor.h +0 -103
  249. package/cpp/rnwgpu/api/descriptors/GPURequestAdapterOptions.h +0 -51
  250. package/cpp/rnwgpu/api/descriptors/GPUSamplerBindingLayout.h +0 -45
  251. package/cpp/rnwgpu/api/descriptors/GPUSamplerDescriptor.h +0 -110
  252. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleCompilationHint.h +0 -60
  253. package/cpp/rnwgpu/api/descriptors/GPUShaderModuleDescriptor.h +0 -62
  254. package/cpp/rnwgpu/api/descriptors/GPUShaderStage.h +0 -25
  255. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceDescriptor.h +0 -58
  256. package/cpp/rnwgpu/api/descriptors/GPUSharedFenceState.h +0 -51
  257. package/cpp/rnwgpu/api/descriptors/GPUSharedTextureMemoryDescriptor.h +0 -73
  258. package/cpp/rnwgpu/api/descriptors/GPUStencilFaceState.h +0 -64
  259. package/cpp/rnwgpu/api/descriptors/GPUStorageTextureBindingLayout.h +0 -59
  260. package/cpp/rnwgpu/api/descriptors/GPUTextureBindingLayout.h +0 -59
  261. package/cpp/rnwgpu/api/descriptors/GPUTextureDescriptor.h +0 -91
  262. package/cpp/rnwgpu/api/descriptors/GPUTextureUsage.h +0 -29
  263. package/cpp/rnwgpu/api/descriptors/GPUTextureViewDescriptor.h +0 -91
  264. package/cpp/rnwgpu/api/descriptors/GPUUncapturedErrorEventInit.h +0 -64
  265. package/cpp/rnwgpu/api/descriptors/GPUVertexAttribute.h +0 -53
  266. package/cpp/rnwgpu/api/descriptors/GPUVertexBufferLayout.h +0 -62
  267. package/cpp/rnwgpu/api/descriptors/GPUVertexState.h +0 -73
  268. package/cpp/rnwgpu/api/descriptors/Unions.h +0 -1969
  269. package/cpp/rnwgpu/async/AsyncTaskHandle.cpp +0 -213
  270. package/cpp/rnwgpu/async/AsyncTaskHandle.h +0 -58
  271. package/cpp/rnwgpu/async/RuntimeContext.cpp +0 -199
  272. package/cpp/rnwgpu/async/RuntimeContext.h +0 -134
  273. package/lib/commonjs/skia/types/WebGPU.d.ts +0 -184
  274. package/lib/commonjs/skia/types/WebGPU.js +0 -105
  275. package/lib/commonjs/skia/types/WebGPU.js.map +0 -1
  276. package/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -8
  277. package/lib/commonjs/specs/WebGPUViewNativeComponent.js +0 -10
  278. package/lib/commonjs/specs/WebGPUViewNativeComponent.js.map +0 -1
  279. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  280. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js +0 -103
  281. package/lib/commonjs/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  282. package/lib/commonjs/specs/utils.d.ts +0 -1
  283. package/lib/commonjs/specs/utils.js +0 -11
  284. package/lib/commonjs/specs/utils.js.map +0 -1
  285. package/lib/commonjs/views/WebGPUCanvas.d.ts +0 -33
  286. package/lib/commonjs/views/WebGPUCanvas.js +0 -79
  287. package/lib/commonjs/views/WebGPUCanvas.js.map +0 -1
  288. package/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -23
  289. package/lib/commonjs/views/WebGPUCanvas.web.js +0 -20
  290. package/lib/commonjs/views/WebGPUCanvas.web.js.map +0 -1
  291. package/lib/module/skia/types/WebGPU.d.ts +0 -184
  292. package/lib/module/skia/types/WebGPU.js +0 -99
  293. package/lib/module/skia/types/WebGPU.js.map +0 -1
  294. package/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -8
  295. package/lib/module/specs/WebGPUViewNativeComponent.js +0 -4
  296. package/lib/module/specs/WebGPUViewNativeComponent.js.map +0 -1
  297. package/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  298. package/lib/module/specs/WebGPUViewNativeComponent.web.js +0 -96
  299. package/lib/module/specs/WebGPUViewNativeComponent.web.js.map +0 -1
  300. package/lib/module/specs/utils.d.ts +0 -1
  301. package/lib/module/specs/utils.js +0 -5
  302. package/lib/module/specs/utils.js.map +0 -1
  303. package/lib/module/views/WebGPUCanvas.d.ts +0 -33
  304. package/lib/module/views/WebGPUCanvas.js +0 -70
  305. package/lib/module/views/WebGPUCanvas.js.map +0 -1
  306. package/lib/module/views/WebGPUCanvas.web.d.ts +0 -23
  307. package/lib/module/views/WebGPUCanvas.web.js +0 -12
  308. package/lib/module/views/WebGPUCanvas.web.js.map +0 -1
  309. package/lib/typescript/lib/commonjs/skia/types/WebGPU.d.ts +0 -2
  310. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.d.ts +0 -4
  311. package/lib/typescript/lib/commonjs/specs/WebGPUViewNativeComponent.web.d.ts +0 -3
  312. package/lib/typescript/lib/commonjs/specs/utils.d.ts +0 -2
  313. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.d.ts +0 -6
  314. package/lib/typescript/lib/commonjs/views/WebGPUCanvas.web.d.ts +0 -6
  315. package/lib/typescript/lib/module/skia/types/WebGPU.d.ts +0 -31
  316. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.d.ts +0 -2
  317. package/lib/typescript/lib/module/specs/WebGPUViewNativeComponent.web.d.ts +0 -2
  318. package/lib/typescript/lib/module/specs/utils.d.ts +0 -1
  319. package/lib/typescript/lib/module/views/WebGPUCanvas.d.ts +0 -7
  320. package/lib/typescript/lib/module/views/WebGPUCanvas.web.d.ts +0 -8
  321. package/lib/typescript/src/skia/types/WebGPU.d.ts +0 -184
  322. package/lib/typescript/src/specs/WebGPUViewNativeComponent.d.ts +0 -8
  323. package/lib/typescript/src/specs/WebGPUViewNativeComponent.web.d.ts +0 -8
  324. package/lib/typescript/src/specs/utils.d.ts +0 -1
  325. package/lib/typescript/src/views/WebGPUCanvas.d.ts +0 -33
  326. package/lib/typescript/src/views/WebGPUCanvas.web.d.ts +0 -23
  327. package/src/skia/types/WebGPU.ts +0 -226
  328. package/src/specs/WebGPUViewNativeComponent.ts +0 -11
  329. package/src/specs/WebGPUViewNativeComponent.web.ts +0 -110
  330. package/src/specs/utils.ts +0 -4
  331. package/src/views/WebGPUCanvas.tsx +0 -125
  332. 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