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