@nativescript/canvas 2.0.0-alpha.0 → 2.0.0-alpha.10

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 (658) hide show
  1. package/Canvas/common.js +8 -15
  2. package/Canvas/common.js.map +1 -1
  3. package/Canvas/index.android.d.ts +2 -0
  4. package/Canvas/index.android.js +21 -13
  5. package/Canvas/index.android.js.map +1 -1
  6. package/Canvas/index.d.ts +5 -0
  7. package/Canvas/index.ios.d.ts +8 -2
  8. package/Canvas/index.ios.js +129 -75
  9. package/Canvas/index.ios.js.map +1 -1
  10. package/Canvas2D/CanvasGradient/index.d.ts +9 -2
  11. package/Canvas2D/CanvasGradient/index.js +23 -2
  12. package/Canvas2D/CanvasGradient/index.js.map +1 -1
  13. package/Canvas2D/CanvasPattern/index.d.ts +9 -2
  14. package/Canvas2D/CanvasPattern/index.js +20 -2
  15. package/Canvas2D/CanvasPattern/index.js.map +1 -1
  16. package/Canvas2D/CanvasRenderingContext2D/index.d.ts +120 -132
  17. package/Canvas2D/CanvasRenderingContext2D/{index.android.js → index.js} +143 -108
  18. package/Canvas2D/CanvasRenderingContext2D/index.js.map +1 -0
  19. package/Canvas2D/DOMMatrix/index.d.ts +74 -2
  20. package/Canvas2D/DOMMatrix/index.js +180 -2
  21. package/Canvas2D/DOMMatrix/index.js.map +1 -1
  22. package/Canvas2D/ImageData/index.d.ts +15 -2
  23. package/Canvas2D/ImageData/index.js +66 -2
  24. package/Canvas2D/ImageData/index.js.map +1 -1
  25. package/Canvas2D/Path2D/index.d.ts +21 -2
  26. package/Canvas2D/Path2D/index.js +87 -2
  27. package/Canvas2D/Path2D/index.js.map +1 -1
  28. package/Canvas2D/TextMetrics/index.d.ts +17 -2
  29. package/Canvas2D/TextMetrics/index.js +44 -2
  30. package/Canvas2D/TextMetrics/index.js.map +1 -1
  31. package/Dom/Dom.d.ts +10 -0
  32. package/Dom/Dom.js +36 -0
  33. package/Dom/Dom.js.map +1 -0
  34. package/Dom/Fill.d.ts +4 -0
  35. package/Dom/Fill.js +8 -0
  36. package/Dom/Fill.js.map +1 -0
  37. package/Dom/Group.d.ts +21 -0
  38. package/Dom/Group.js +179 -0
  39. package/Dom/Group.js.map +1 -0
  40. package/Dom/Image.d.ts +12 -0
  41. package/Dom/Image.js +33 -0
  42. package/Dom/Image.js.map +1 -0
  43. package/Dom/Paint.d.ts +15 -0
  44. package/Dom/Paint.js +58 -0
  45. package/Dom/Paint.js.map +1 -0
  46. package/Dom/Shadow.d.ts +10 -0
  47. package/Dom/Shadow.js +26 -0
  48. package/Dom/Shadow.js.map +1 -0
  49. package/Dom/Text.d.ts +9 -0
  50. package/Dom/Text.js +50 -0
  51. package/Dom/Text.js.map +1 -0
  52. package/Dom/index.d.ts +8 -0
  53. package/Dom/index.js +9 -0
  54. package/Dom/index.js.map +1 -0
  55. package/Dom/shapes/Circle.d.ts +21 -0
  56. package/Dom/shapes/Circle.js +99 -0
  57. package/Dom/shapes/Circle.js.map +1 -0
  58. package/Dom/shapes/Line.d.ts +9 -0
  59. package/Dom/shapes/Line.js +37 -0
  60. package/Dom/shapes/Line.js.map +1 -0
  61. package/Dom/shapes/Path.d.ts +8 -0
  62. package/Dom/shapes/Path.js +31 -0
  63. package/Dom/shapes/Path.js.map +1 -0
  64. package/Dom/shapes/Points.d.ts +15 -0
  65. package/Dom/shapes/Points.js +21 -0
  66. package/Dom/shapes/Points.js.map +1 -0
  67. package/Dom/shapes/Rect.d.ts +15 -0
  68. package/Dom/shapes/Rect.js +63 -0
  69. package/Dom/shapes/Rect.js.map +1 -0
  70. package/Dom/shapes/RoundedRect.d.ts +12 -0
  71. package/Dom/shapes/RoundedRect.js +96 -0
  72. package/Dom/shapes/RoundedRect.js.map +1 -0
  73. package/Dom/shapes/index.d.ts +6 -0
  74. package/Dom/shapes/index.js +7 -0
  75. package/Dom/shapes/index.js.map +1 -0
  76. package/ImageAsset/index.d.ts +28 -2
  77. package/ImageAsset/index.js +158 -2
  78. package/ImageAsset/index.js.map +1 -1
  79. package/ImageBitmap/{index.android.d.ts → index.d.ts} +3 -2
  80. package/ImageBitmap/{index.android.js → index.js} +6 -4
  81. package/ImageBitmap/index.js.map +1 -0
  82. package/TextDecoder/index.d.ts +9 -2
  83. package/TextDecoder/index.js +53 -2
  84. package/TextDecoder/index.js.map +1 -1
  85. package/TextEncoder/index.d.ts +9 -2
  86. package/TextEncoder/index.js +51 -2
  87. package/TextEncoder/index.js.map +1 -1
  88. package/WebGL/WebGLExtensions/index.d.ts +159 -242
  89. package/WebGL/WebGLExtensions/{index.android.js → index.js} +1 -1
  90. package/WebGL/WebGLExtensions/index.js.map +1 -0
  91. package/WebGL/WebGLRenderingContext/common.d.ts +3 -1
  92. package/WebGL/WebGLRenderingContext/common.js +188 -178
  93. package/WebGL/WebGLRenderingContext/common.js.map +1 -1
  94. package/WebGL/WebGLRenderingContext/index.d.ts +163 -306
  95. package/WebGL/WebGLRenderingContext/{index.android.js → index.js} +862 -24
  96. package/WebGL/WebGLRenderingContext/index.js.map +1 -0
  97. package/WebGL2/WebGL2RenderingContext/common.d.ts +1 -0
  98. package/WebGL2/WebGL2RenderingContext/common.js +3 -0
  99. package/WebGL2/WebGL2RenderingContext/common.js.map +1 -1
  100. package/WebGL2/WebGL2RenderingContext/index.d.ts +101 -455
  101. package/WebGL2/WebGL2RenderingContext/{index.android.js → index.js} +20 -17
  102. package/WebGL2/WebGL2RenderingContext/index.js.map +1 -0
  103. package/helpers.js +3 -0
  104. package/helpers.js.map +1 -1
  105. package/package.json +1 -1
  106. package/platforms/android/canvas-release.aar +0 -0
  107. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative +0 -0
  108. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h +131 -1722
  109. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative.h +1 -3
  110. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +96 -0
  111. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist +0 -0
  112. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  113. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.abi.json +5121 -0
  114. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.private.swiftinterface +150 -0
  115. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  116. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +88 -3202
  117. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/module.modulemap +2 -2
  118. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/{TNSCanvas.nib → NSCCanvas.nib} +0 -0
  119. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  120. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/CanvasNative +0 -0
  121. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h +252 -3444
  122. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative.h +1 -3
  123. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +96 -0
  124. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Info.plist +0 -0
  125. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  126. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  127. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.abi.json +5121 -0
  128. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +150 -0
  129. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  130. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftinterface +88 -3202
  131. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.abi.json +5121 -0
  132. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +150 -0
  133. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  134. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +88 -3202
  135. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/module.modulemap +2 -2
  136. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/{TNSCanvas.nib → NSCCanvas.nib} +0 -0
  137. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +49 -93
  138. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  139. package/platforms/ios/Podfile +2 -1
  140. package/platforms/ios/build.xcconfig +5 -0
  141. package/platforms/ios/src/CanvasModule.h +10 -0
  142. package/platforms/ios/src/CanvasModule.mm +14 -0
  143. package/platforms/ios/src/cpp/CanvasJSIModule.h +60 -0
  144. package/platforms/ios/src/cpp/CanvasJSIModule.mm +1105 -0
  145. package/platforms/ios/src/cpp/Helpers.h +63 -0
  146. package/platforms/ios/src/cpp/ImageAssetImpl.h +30 -0
  147. package/platforms/ios/src/cpp/ImageAssetImpl.mm +417 -0
  148. package/platforms/ios/src/cpp/ImageBitmapImpl.h +41 -0
  149. package/platforms/ios/src/cpp/ImageBitmapImpl.mm +126 -0
  150. package/platforms/ios/src/cpp/JSICallback.h +15 -0
  151. package/platforms/ios/src/cpp/JSIReadFileCallback.h +16 -0
  152. package/platforms/ios/src/cpp/OnRafCallback.h +24 -0
  153. package/platforms/ios/src/cpp/OnRafCallback.mm +25 -0
  154. package/platforms/ios/src/cpp/RafImpl.h +27 -0
  155. package/platforms/ios/src/cpp/RafImpl.mm +10 -0
  156. package/platforms/ios/src/cpp/TextDecoderImpl.h +28 -0
  157. package/platforms/ios/src/cpp/TextDecoderImpl.mm +97 -0
  158. package/platforms/ios/src/cpp/TextEncoderImpl.h +28 -0
  159. package/platforms/ios/src/cpp/TextEncoderImpl.mm +60 -0
  160. package/platforms/ios/src/cpp/VecMutableBuffer.h +46 -0
  161. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.cc +6156 -0
  162. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.h +2867 -0
  163. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.h +28 -0
  164. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.mm +42 -0
  165. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.h +29 -0
  166. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.mm +49 -0
  167. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.h +75 -0
  168. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.mm +1972 -0
  169. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.h +29 -0
  170. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.mm +68 -0
  171. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.h +29 -0
  172. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.mm +149 -0
  173. package/platforms/ios/src/cpp/canvas2d/Path2D.h +27 -0
  174. package/platforms/ios/src/cpp/canvas2d/Path2D.mm +335 -0
  175. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.h +29 -0
  176. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.mm +68 -0
  177. package/platforms/ios/src/cpp/gl.h +29 -0
  178. package/platforms/ios/src/cpp/rust/cxx.cc +793 -0
  179. package/platforms/ios/src/cpp/rust/cxx.h +1111 -0
  180. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.h +28 -0
  181. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.mm +39 -0
  182. package/platforms/ios/src/cpp/webgl/WebGLBuffer.h +24 -0
  183. package/platforms/ios/src/cpp/webgl/WebGLFramebuffer.h +24 -0
  184. package/platforms/ios/src/cpp/webgl/WebGLProgram.h +24 -0
  185. package/platforms/ios/src/cpp/webgl/WebGLRenderbuffer.h +24 -0
  186. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.h +517 -0
  187. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.mm +5958 -0
  188. package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.h +90 -0
  189. package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.mm +118 -0
  190. package/platforms/ios/src/cpp/webgl/WebGLShader.h +24 -0
  191. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.h +28 -0
  192. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.mm +40 -0
  193. package/platforms/ios/src/cpp/webgl/WebGLTexture.h +23 -0
  194. package/platforms/ios/src/cpp/webgl/WebGLUniformLocation.h +28 -0
  195. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.h +28 -0
  196. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.mm +108 -0
  197. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.h +16 -0
  198. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.mm +28 -0
  199. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.h +17 -0
  200. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.mm +42 -0
  201. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.h +28 -0
  202. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.mm +295 -0
  203. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.h +18 -0
  204. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.mm +40 -0
  205. package/platforms/ios/src/cpp/webgl/extensions/EXT_shader_texture_lodImpl.h +29 -0
  206. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.h +18 -0
  207. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.mm +37 -0
  208. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.h +18 -0
  209. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.mm +28 -0
  210. package/platforms/ios/src/cpp/webgl/extensions/OES_fbo_render_mipmap.h +30 -0
  211. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.h +18 -0
  212. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.mm +31 -0
  213. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_floatImpl.h +30 -0
  214. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_float_linearImpl.h +31 -0
  215. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.h +18 -0
  216. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.mm +28 -0
  217. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_float_linearImpl.h +30 -0
  218. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.h +32 -0
  219. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.mm +127 -0
  220. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.h +20 -0
  221. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.mm +45 -0
  222. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.h +18 -0
  223. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.mm +45 -0
  224. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.h +18 -0
  225. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.mm +31 -0
  226. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.h +18 -0
  227. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.mm +70 -0
  228. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.h +18 -0
  229. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.mm +47 -0
  230. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.h +18 -0
  231. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.mm +46 -0
  232. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.h +19 -0
  233. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.mm +49 -0
  234. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.h +19 -0
  235. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.mm +30 -0
  236. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.h +31 -0
  237. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.mm +177 -0
  238. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.h +31 -0
  239. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.mm +64 -0
  240. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.h +431 -0
  241. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.mm +4543 -0
  242. package/platforms/ios/src/cpp/webgl2/WebGLQuery.h +21 -0
  243. package/platforms/ios/src/cpp/webgl2/WebGLSampler.h +21 -0
  244. package/platforms/ios/src/cpp/webgl2/WebGLSyncImpl.h +24 -0
  245. package/platforms/ios/src/cpp/webgl2/WebGLTransformFeedback.h +21 -0
  246. package/platforms/ios/src/cpp/webgl2/WebGLVertexArrayObject.h +21 -0
  247. package/platforms/ios/src/module.modulemap +4 -0
  248. package/pods/Headers/include/APIDesign.md +72 -0
  249. package/pods/Headers/include/DEPS +10 -0
  250. package/pods/Headers/include/DIR_METADATA +11 -0
  251. package/pods/Headers/include/OWNERS +23 -0
  252. package/pods/Headers/include/cppgc/DEPS +8 -0
  253. package/pods/Headers/include/cppgc/OWNERS +2 -0
  254. package/pods/Headers/include/cppgc/README.md +133 -0
  255. package/pods/Headers/include/cppgc/allocation.h +310 -0
  256. package/pods/Headers/include/cppgc/common.h +29 -0
  257. package/pods/Headers/include/cppgc/cross-thread-persistent.h +465 -0
  258. package/pods/Headers/include/cppgc/custom-space.h +97 -0
  259. package/pods/Headers/include/cppgc/default-platform.h +67 -0
  260. package/pods/Headers/include/cppgc/ephemeron-pair.h +30 -0
  261. package/pods/Headers/include/cppgc/explicit-management.h +100 -0
  262. package/pods/Headers/include/cppgc/garbage-collected.h +106 -0
  263. package/pods/Headers/include/cppgc/heap-consistency.h +266 -0
  264. package/pods/Headers/include/cppgc/heap-state.h +82 -0
  265. package/pods/Headers/include/cppgc/heap-statistics.h +120 -0
  266. package/pods/Headers/include/cppgc/heap.h +206 -0
  267. package/pods/Headers/include/cppgc/internal/api-constants.h +55 -0
  268. package/pods/Headers/include/cppgc/internal/atomic-entry-flag.h +48 -0
  269. package/pods/Headers/include/cppgc/internal/caged-heap-local-data.h +79 -0
  270. package/pods/Headers/include/cppgc/internal/compiler-specific.h +38 -0
  271. package/pods/Headers/include/cppgc/internal/finalizer-trait.h +93 -0
  272. package/pods/Headers/include/cppgc/internal/gc-info.h +156 -0
  273. package/pods/Headers/include/cppgc/internal/logging.h +50 -0
  274. package/pods/Headers/include/cppgc/internal/name-trait.h +122 -0
  275. package/pods/Headers/include/cppgc/internal/persistent-node.h +216 -0
  276. package/pods/Headers/include/cppgc/internal/pointer-policies.h +186 -0
  277. package/pods/Headers/include/cppgc/internal/write-barrier.h +435 -0
  278. package/pods/Headers/include/cppgc/liveness-broker.h +77 -0
  279. package/pods/Headers/include/cppgc/macros.h +26 -0
  280. package/pods/Headers/include/cppgc/member.h +291 -0
  281. package/pods/Headers/include/cppgc/name-provider.h +65 -0
  282. package/pods/Headers/include/cppgc/object-size-trait.h +58 -0
  283. package/pods/Headers/include/cppgc/persistent.h +370 -0
  284. package/pods/Headers/include/cppgc/platform.h +156 -0
  285. package/pods/Headers/include/cppgc/prefinalizer.h +75 -0
  286. package/pods/Headers/include/cppgc/process-heap-statistics.h +36 -0
  287. package/pods/Headers/include/cppgc/sentinel-pointer.h +32 -0
  288. package/pods/Headers/include/cppgc/source-location.h +92 -0
  289. package/pods/Headers/include/cppgc/testing.h +106 -0
  290. package/pods/Headers/include/cppgc/trace-trait.h +116 -0
  291. package/pods/Headers/include/cppgc/type-traits.h +240 -0
  292. package/pods/Headers/include/cppgc/visitor.h +379 -0
  293. package/pods/Headers/include/js_protocol-1.2.json +936 -0
  294. package/pods/Headers/include/js_protocol-1.3.json +1112 -0
  295. package/pods/Headers/include/js_protocol.pdl +1709 -0
  296. package/pods/Headers/include/libffi/arm64/ffi.h +524 -0
  297. package/pods/Headers/include/libffi/arm64/ffitarget.h +92 -0
  298. package/pods/Headers/include/libffi/x86_64/ffi.h +524 -0
  299. package/pods/Headers/include/libffi/x86_64/ffitarget.h +147 -0
  300. package/pods/Headers/include/libffi.h +12 -0
  301. package/pods/Headers/include/libplatform/DEPS +9 -0
  302. package/pods/Headers/include/libplatform/libplatform-export.h +29 -0
  303. package/pods/Headers/include/libplatform/libplatform.h +106 -0
  304. package/pods/Headers/include/libplatform/v8-tracing.h +333 -0
  305. package/pods/Headers/include/v8-array-buffer.h +433 -0
  306. package/pods/Headers/include/v8-callbacks.h +397 -0
  307. package/pods/Headers/include/v8-container.h +129 -0
  308. package/pods/Headers/include/v8-context.h +407 -0
  309. package/pods/Headers/include/v8-cppgc.h +215 -0
  310. package/pods/Headers/include/v8-data.h +80 -0
  311. package/pods/Headers/include/v8-date.h +43 -0
  312. package/pods/Headers/include/v8-debug.h +168 -0
  313. package/pods/Headers/include/v8-embedder-heap.h +218 -0
  314. package/pods/Headers/include/v8-embedder-state-scope.h +51 -0
  315. package/pods/Headers/include/v8-exception.h +217 -0
  316. package/pods/Headers/include/v8-extension.h +62 -0
  317. package/pods/Headers/include/v8-external.h +37 -0
  318. package/pods/Headers/include/v8-fast-api-calls.h +939 -0
  319. package/pods/Headers/include/v8-forward.h +81 -0
  320. package/pods/Headers/include/v8-function-callback.h +475 -0
  321. package/pods/Headers/include/v8-function.h +125 -0
  322. package/pods/Headers/include/v8-initialization.h +315 -0
  323. package/pods/Headers/include/v8-inspector-protocol.h +13 -0
  324. package/pods/Headers/include/v8-inspector.h +376 -0
  325. package/pods/Headers/include/v8-internal.h +661 -0
  326. package/pods/Headers/include/v8-isolate.h +1709 -0
  327. package/pods/Headers/include/v8-json.h +47 -0
  328. package/pods/Headers/include/v8-local-handle.h +455 -0
  329. package/pods/Headers/include/v8-locker.h +149 -0
  330. package/pods/Headers/include/v8-maybe.h +137 -0
  331. package/pods/Headers/include/v8-memory-span.h +43 -0
  332. package/pods/Headers/include/v8-message.h +216 -0
  333. package/pods/Headers/include/v8-metrics.h +255 -0
  334. package/pods/Headers/include/v8-microtask-queue.h +152 -0
  335. package/pods/Headers/include/v8-microtask.h +28 -0
  336. package/pods/Headers/include/v8-object.h +775 -0
  337. package/pods/Headers/include/v8-persistent-handle.h +590 -0
  338. package/pods/Headers/include/v8-platform.h +1092 -0
  339. package/pods/Headers/include/v8-primitive-object.h +118 -0
  340. package/pods/Headers/include/v8-primitive.h +866 -0
  341. package/pods/Headers/include/v8-profiler.h +1198 -0
  342. package/pods/Headers/include/v8-promise.h +174 -0
  343. package/pods/Headers/include/v8-proxy.h +50 -0
  344. package/pods/Headers/include/v8-regexp.h +105 -0
  345. package/pods/Headers/include/v8-script.h +748 -0
  346. package/pods/Headers/include/v8-snapshot.h +196 -0
  347. package/pods/Headers/include/v8-statistics.h +217 -0
  348. package/pods/Headers/include/v8-template.h +1079 -0
  349. package/pods/Headers/include/v8-traced-handle.h +420 -0
  350. package/pods/Headers/include/v8-typed-array.h +282 -0
  351. package/pods/Headers/include/v8-unwinder-state.h +31 -0
  352. package/pods/Headers/include/v8-unwinder.h +132 -0
  353. package/pods/Headers/include/v8-util.h +658 -0
  354. package/pods/Headers/include/v8-value-serializer-version.h +24 -0
  355. package/pods/Headers/include/v8-value-serializer.h +279 -0
  356. package/pods/Headers/include/v8-value.h +526 -0
  357. package/pods/Headers/include/v8-version-string.h +38 -0
  358. package/pods/Headers/include/v8-version.h +20 -0
  359. package/pods/Headers/include/v8-wasm-trap-handler-posix.h +31 -0
  360. package/pods/Headers/include/v8-wasm-trap-handler-win.h +28 -0
  361. package/pods/Headers/include/v8-wasm.h +257 -0
  362. package/pods/Headers/include/v8-weak-callback-info.h +86 -0
  363. package/pods/Headers/include/v8.h +88 -0
  364. package/pods/Headers/include/v8config.h +605 -0
  365. package/pods/Headers/inspector/InspectorServer.h +20 -0
  366. package/pods/Headers/inspector/JsV8InspectorClient.h +66 -0
  367. package/pods/Headers/inspector/base/trace_event/common/trace_event_common.h +1123 -0
  368. package/pods/Headers/inspector/base64.h +9 -0
  369. package/pods/Headers/inspector/src/base/address-region.h +95 -0
  370. package/pods/Headers/inspector/src/base/atomic-utils.h +219 -0
  371. package/pods/Headers/inspector/src/base/atomicops.h +332 -0
  372. package/pods/Headers/inspector/src/base/atomicops_internals_atomicword_compat.h +89 -0
  373. package/pods/Headers/inspector/src/base/base-export.h +31 -0
  374. package/pods/Headers/inspector/src/base/bits.h +343 -0
  375. package/pods/Headers/inspector/src/base/build_config.h +234 -0
  376. package/pods/Headers/inspector/src/base/compiler-specific.h +136 -0
  377. package/pods/Headers/inspector/src/base/export-template.h +163 -0
  378. package/pods/Headers/inspector/src/base/flags.h +130 -0
  379. package/pods/Headers/inspector/src/base/immediate-crash.h +162 -0
  380. package/pods/Headers/inspector/src/base/lazy-instance.h +258 -0
  381. package/pods/Headers/inspector/src/base/logging.h +417 -0
  382. package/pods/Headers/inspector/src/base/macros.h +423 -0
  383. package/pods/Headers/inspector/src/base/memory.h +89 -0
  384. package/pods/Headers/inspector/src/base/once.h +108 -0
  385. package/pods/Headers/inspector/src/base/optional.h +882 -0
  386. package/pods/Headers/inspector/src/base/platform/mutex.h +370 -0
  387. package/pods/Headers/inspector/src/base/platform/platform.h +476 -0
  388. package/pods/Headers/inspector/src/base/platform/semaphore.h +108 -0
  389. package/pods/Headers/inspector/src/base/platform/v8-time.h +513 -0
  390. package/pods/Headers/inspector/src/base/platform/wrappers.h +73 -0
  391. package/pods/Headers/inspector/src/base/safe_conversions.h +389 -0
  392. package/pods/Headers/inspector/src/base/safe_conversions_impl.h +822 -0
  393. package/pods/Headers/inspector/src/base/template-utils.h +113 -0
  394. package/pods/Headers/inspector/src/base/v8-fallthrough.h +21 -0
  395. package/pods/Headers/inspector/src/common/checks.h +38 -0
  396. package/pods/Headers/inspector/src/common/globals.h +1842 -0
  397. package/pods/Headers/inspector/src/debug/debug-interface.h +667 -0
  398. package/pods/Headers/inspector/src/debug/interface-types.h +175 -0
  399. package/pods/Headers/inspector/src/init/v8.h +52 -0
  400. package/pods/Headers/inspector/src/inspector/custom-preview.h +24 -0
  401. package/pods/Headers/inspector/src/inspector/injected-script.h +251 -0
  402. package/pods/Headers/inspector/src/inspector/inspected-context.h +79 -0
  403. package/pods/Headers/inspector/src/inspector/protocol/CSS.h +2148 -0
  404. package/pods/Headers/inspector/src/inspector/protocol/Console.h +211 -0
  405. package/pods/Headers/inspector/src/inspector/protocol/DOM.h +1008 -0
  406. package/pods/Headers/inspector/src/inspector/protocol/Debugger.h +892 -0
  407. package/pods/Headers/inspector/src/inspector/protocol/Forward.h +75 -0
  408. package/pods/Headers/inspector/src/inspector/protocol/HeapProfiler.h +346 -0
  409. package/pods/Headers/inspector/src/inspector/protocol/Log.h +342 -0
  410. package/pods/Headers/inspector/src/inspector/protocol/Network.h +2528 -0
  411. package/pods/Headers/inspector/src/inspector/protocol/Overlay.h +281 -0
  412. package/pods/Headers/inspector/src/inspector/protocol/Page.h +1189 -0
  413. package/pods/Headers/inspector/src/inspector/protocol/Profiler.h +1001 -0
  414. package/pods/Headers/inspector/src/inspector/protocol/Protocol.h +617 -0
  415. package/pods/Headers/inspector/src/inspector/protocol/Runtime.h +1696 -0
  416. package/pods/Headers/inspector/src/inspector/protocol/Schema.h +146 -0
  417. package/pods/Headers/inspector/src/inspector/protocol/Security.h +793 -0
  418. package/pods/Headers/inspector/src/inspector/remote-object-id.h +54 -0
  419. package/pods/Headers/inspector/src/inspector/search-util.h +26 -0
  420. package/pods/Headers/inspector/src/inspector/string-16.h +180 -0
  421. package/pods/Headers/inspector/src/inspector/string-util.h +128 -0
  422. package/pods/Headers/inspector/src/inspector/v8-console-agent-impl.h +48 -0
  423. package/pods/Headers/inspector/src/inspector/v8-console-message.h +147 -0
  424. package/pods/Headers/inspector/src/inspector/v8-console.h +173 -0
  425. package/pods/Headers/inspector/src/inspector/v8-css-agent-impl.h +62 -0
  426. package/pods/Headers/inspector/src/inspector/v8-debugger-agent-impl.h +248 -0
  427. package/pods/Headers/inspector/src/inspector/v8-debugger-id.h +44 -0
  428. package/pods/Headers/inspector/src/inspector/v8-debugger-script.h +123 -0
  429. package/pods/Headers/inspector/src/inspector/v8-debugger.h +257 -0
  430. package/pods/Headers/inspector/src/inspector/v8-dom-agent-impl.h +91 -0
  431. package/pods/Headers/inspector/src/inspector/v8-heap-profiler-agent-impl.h +80 -0
  432. package/pods/Headers/inspector/src/inspector/v8-inspector-impl.h +191 -0
  433. package/pods/Headers/inspector/src/inspector/v8-inspector-session-impl.h +156 -0
  434. package/pods/Headers/inspector/src/inspector/v8-log-agent-impl.h +34 -0
  435. package/pods/Headers/inspector/src/inspector/v8-network-agent-impl.h +71 -0
  436. package/pods/Headers/inspector/src/inspector/v8-ns-debugger-agent-impl.h +24 -0
  437. package/pods/Headers/inspector/src/inspector/v8-overlay-agent-impl.h +70 -0
  438. package/pods/Headers/inspector/src/inspector/v8-page-agent-impl.h +88 -0
  439. package/pods/Headers/inspector/src/inspector/v8-profiler-agent-impl.h +104 -0
  440. package/pods/Headers/inspector/src/inspector/v8-regex.h +38 -0
  441. package/pods/Headers/inspector/src/inspector/v8-runtime-agent-impl.h +157 -0
  442. package/pods/Headers/inspector/src/inspector/v8-schema-agent-impl.h +38 -0
  443. package/pods/Headers/inspector/src/inspector/v8-stack-trace-impl.h +164 -0
  444. package/pods/Headers/inspector/src/inspector/v8-string-conversions.h +17 -0
  445. package/pods/Headers/inspector/src/inspector/v8-value-utils.h +23 -0
  446. package/pods/Headers/inspector/src/inspector/value-mirror.h +87 -0
  447. package/pods/Headers/inspector/src/libplatform/default-platform.h +92 -0
  448. package/pods/Headers/inspector/src/logging/tracing-flags.h +50 -0
  449. package/pods/Headers/inspector/src/numbers/conversions.h +183 -0
  450. package/pods/Headers/inspector/src/tracing/trace-event.h +664 -0
  451. package/pods/Headers/inspector/src/utils/allocation.h +367 -0
  452. package/pods/Headers/inspector/src/utils/vector.h +324 -0
  453. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/cbor.h +305 -0
  454. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/dispatch.h +314 -0
  455. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/error_support.h +62 -0
  456. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/export.h +6 -0
  457. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/find_by_first.h +58 -0
  458. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/frontend_channel.h +47 -0
  459. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/glue.h +80 -0
  460. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/json.h +52 -0
  461. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/json_platform.h +26 -0
  462. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/maybe.h +104 -0
  463. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/parser_handler.h +39 -0
  464. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/protocol_core.h +406 -0
  465. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/serializable.h +32 -0
  466. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/serializer_traits.h +158 -0
  467. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/span.h +99 -0
  468. package/pods/Headers/inspector/third_party/inspector_protocol/crdtp/status.h +139 -0
  469. package/pods/Headers/inspector/utils.h +32 -0
  470. package/pods/Headers/inspector/v8-inspector-platform.h +44 -0
  471. package/pods/Headers/jsi/decorator.h +770 -0
  472. package/pods/Headers/jsi/instrumentation.h +117 -0
  473. package/pods/Headers/jsi/jsi-inl.h +338 -0
  474. package/pods/Headers/jsi/jsi.h +1571 -0
  475. package/pods/Headers/jsi/jsilib.h +59 -0
  476. package/pods/Headers/jsi/threadsafe.h +79 -0
  477. package/pods/Headers/runtime/ArgConverter.h +61 -0
  478. package/pods/Headers/runtime/ArrayAdapter.h +13 -0
  479. package/pods/Headers/runtime/Caches.h +98 -0
  480. package/pods/Headers/runtime/ClassBuilder.h +61 -0
  481. package/pods/Headers/runtime/Common.h +9 -0
  482. package/pods/Headers/runtime/ConcurrentMap.h +55 -0
  483. package/pods/Headers/runtime/ConcurrentQueue.h +28 -0
  484. package/pods/Headers/runtime/Console.h +27 -0
  485. package/pods/Headers/runtime/Constants.h +15 -0
  486. package/pods/Headers/runtime/DataWrapper.h +671 -0
  487. package/pods/Headers/runtime/DictionaryAdapter.h +13 -0
  488. package/pods/Headers/runtime/ExtVector.h +21 -0
  489. package/pods/Headers/runtime/FFICall.h +105 -0
  490. package/pods/Headers/runtime/FastEnumerationAdapter.h +13 -0
  491. package/pods/Headers/runtime/FunctionReference.h +18 -0
  492. package/pods/Headers/runtime/Helpers.h +84 -0
  493. package/pods/Headers/runtime/InlineFunctions.h +16 -0
  494. package/pods/Headers/runtime/Interop.h +202 -0
  495. package/pods/Headers/runtime/KnownUnknownClassPair.h +35 -0
  496. package/pods/Headers/runtime/Metadata.h +981 -0
  497. package/pods/Headers/runtime/MetadataBuilder.h +72 -0
  498. package/pods/Headers/runtime/MetadataInlines.h +157 -0
  499. package/pods/Headers/runtime/ModuleInternal.h +59 -0
  500. package/pods/Headers/runtime/NSDataAdapter.h +13 -0
  501. package/pods/Headers/runtime/NativeScriptException.h +27 -0
  502. package/pods/Headers/runtime/ObjectManager.h +31 -0
  503. package/pods/Headers/runtime/OneByteStringResource.h +21 -0
  504. package/pods/Headers/runtime/Pointer.h +26 -0
  505. package/pods/Headers/runtime/PromiseProxy.h +15 -0
  506. package/pods/Headers/runtime/Reference.h +38 -0
  507. package/pods/Headers/runtime/Runtime.h +67 -0
  508. package/pods/Headers/runtime/RuntimeConfig.h +17 -0
  509. package/pods/Headers/runtime/SetTimeout.h +34 -0
  510. package/pods/Headers/runtime/SimpleAllocator.h +23 -0
  511. package/pods/Headers/runtime/StringHasher.h +315 -0
  512. package/pods/Headers/runtime/SymbolIterator.h +18 -0
  513. package/pods/Headers/runtime/SymbolLoader.h +27 -0
  514. package/pods/Headers/runtime/TNSDerivedClass.h +8 -0
  515. package/pods/Headers/runtime/TSHelpers.h +15 -0
  516. package/pods/Headers/runtime/Tasks.h +19 -0
  517. package/pods/Headers/runtime/UnmanagedType.h +21 -0
  518. package/pods/Headers/runtime/WeakRef.h +15 -0
  519. package/pods/Headers/runtime/Worker.h +26 -0
  520. package/pods/Headers/runtime/robin_hood.h +2184 -0
  521. package/pods/Headers/v8runtime/HostProxy.h +71 -0
  522. package/pods/Headers/v8runtime/JSIV8ValueConverter.h +74 -0
  523. package/pods/Headers/v8runtime/V8PointerValue.h +44 -0
  524. package/pods/Headers/v8runtime/V8Runtime.h +240 -0
  525. package/pods/Headers/v8runtime/V8RuntimeConfig.h +26 -0
  526. package/pods/Headers/v8runtime/V8RuntimeFactory.h +21 -0
  527. package/pods/NativeScript.podspec +68 -0
  528. package/Canvas2D/CanvasGradient/CanvasGradient.android.d.ts +0 -10
  529. package/Canvas2D/CanvasGradient/CanvasGradient.android.js +0 -26
  530. package/Canvas2D/CanvasGradient/CanvasGradient.android.js.map +0 -1
  531. package/Canvas2D/CanvasGradient/CanvasGradient.d.ts +0 -12
  532. package/Canvas2D/CanvasGradient/CanvasGradient.ios.d.ts +0 -8
  533. package/Canvas2D/CanvasGradient/CanvasGradient.ios.js +0 -19
  534. package/Canvas2D/CanvasGradient/CanvasGradient.ios.js.map +0 -1
  535. package/Canvas2D/CanvasGradient/common.d.ts +0 -3
  536. package/Canvas2D/CanvasGradient/common.js +0 -3
  537. package/Canvas2D/CanvasGradient/common.js.map +0 -1
  538. package/Canvas2D/CanvasPattern/CanvasPattern.android.d.ts +0 -8
  539. package/Canvas2D/CanvasPattern/CanvasPattern.android.js +0 -20
  540. package/Canvas2D/CanvasPattern/CanvasPattern.android.js.map +0 -1
  541. package/Canvas2D/CanvasPattern/CanvasPattern.d.ts +0 -8
  542. package/Canvas2D/CanvasPattern/CanvasPattern.ios.d.ts +0 -6
  543. package/Canvas2D/CanvasPattern/CanvasPattern.ios.js +0 -10
  544. package/Canvas2D/CanvasPattern/CanvasPattern.ios.js.map +0 -1
  545. package/Canvas2D/CanvasPattern/common.d.ts +0 -7
  546. package/Canvas2D/CanvasPattern/common.js +0 -9
  547. package/Canvas2D/CanvasPattern/common.js.map +0 -1
  548. package/Canvas2D/CanvasRenderingContext2D/common.d.ts +0 -87
  549. package/Canvas2D/CanvasRenderingContext2D/common.js +0 -12
  550. package/Canvas2D/CanvasRenderingContext2D/common.js.map +0 -1
  551. package/Canvas2D/CanvasRenderingContext2D/index.android.d.ts +0 -112
  552. package/Canvas2D/CanvasRenderingContext2D/index.android.js.map +0 -1
  553. package/Canvas2D/CanvasRenderingContext2D/index.ios.d.ts +0 -110
  554. package/Canvas2D/CanvasRenderingContext2D/index.ios.js +0 -897
  555. package/Canvas2D/CanvasRenderingContext2D/index.ios.js.map +0 -1
  556. package/Canvas2D/DOMMatrix/DOMMatrix.android.d.ts +0 -72
  557. package/Canvas2D/DOMMatrix/DOMMatrix.android.js +0 -177
  558. package/Canvas2D/DOMMatrix/DOMMatrix.android.js.map +0 -1
  559. package/Canvas2D/DOMMatrix/DOMMatrix.d.ts +0 -30
  560. package/Canvas2D/DOMMatrix/DOMMatrix.ios.d.ts +0 -48
  561. package/Canvas2D/DOMMatrix/DOMMatrix.ios.js +0 -142
  562. package/Canvas2D/DOMMatrix/DOMMatrix.ios.js.map +0 -1
  563. package/Canvas2D/DOMMatrix/common.d.ts +0 -27
  564. package/Canvas2D/DOMMatrix/common.js +0 -9
  565. package/Canvas2D/DOMMatrix/common.js.map +0 -1
  566. package/Canvas2D/ImageData/ImageData.android.d.ts +0 -9
  567. package/Canvas2D/ImageData/ImageData.android.js +0 -65
  568. package/Canvas2D/ImageData/ImageData.android.js.map +0 -1
  569. package/Canvas2D/ImageData/ImageData.d.ts +0 -11
  570. package/Canvas2D/ImageData/ImageData.ios.d.ts +0 -10
  571. package/Canvas2D/ImageData/ImageData.ios.js +0 -45
  572. package/Canvas2D/ImageData/ImageData.ios.js.map +0 -1
  573. package/Canvas2D/ImageData/common.d.ts +0 -9
  574. package/Canvas2D/ImageData/common.js +0 -13
  575. package/Canvas2D/ImageData/common.js.map +0 -1
  576. package/Canvas2D/Path2D/Path2D.android.d.ts +0 -18
  577. package/Canvas2D/Path2D/Path2D.android.js +0 -83
  578. package/Canvas2D/Path2D/Path2D.android.js.map +0 -1
  579. package/Canvas2D/Path2D/Path2D.d.ts +0 -26
  580. package/Canvas2D/Path2D/Path2D.ios.d.ts +0 -15
  581. package/Canvas2D/Path2D/Path2D.ios.js +0 -55
  582. package/Canvas2D/Path2D/Path2D.ios.js.map +0 -1
  583. package/Canvas2D/Path2D/common.d.ts +0 -17
  584. package/Canvas2D/Path2D/common.js +0 -12
  585. package/Canvas2D/Path2D/common.js.map +0 -1
  586. package/Canvas2D/TextMetrics/TextMetrics.android.d.ts +0 -16
  587. package/Canvas2D/TextMetrics/TextMetrics.android.js +0 -43
  588. package/Canvas2D/TextMetrics/TextMetrics.android.js.map +0 -1
  589. package/Canvas2D/TextMetrics/TextMetrics.d.ts +0 -7
  590. package/Canvas2D/TextMetrics/TextMetrics.ios.d.ts +0 -16
  591. package/Canvas2D/TextMetrics/TextMetrics.ios.js +0 -43
  592. package/Canvas2D/TextMetrics/TextMetrics.ios.js.map +0 -1
  593. package/Canvas2D/TextMetrics/common.d.ts +0 -18
  594. package/Canvas2D/TextMetrics/common.js +0 -13
  595. package/Canvas2D/TextMetrics/common.js.map +0 -1
  596. package/ImageAsset/ImageAsset.android.d.ts +0 -20
  597. package/ImageAsset/ImageAsset.android.js +0 -149
  598. package/ImageAsset/ImageAsset.android.js.map +0 -1
  599. package/ImageAsset/ImageAsset.d.ts +0 -31
  600. package/ImageAsset/ImageAsset.ios.d.ts +0 -22
  601. package/ImageAsset/ImageAsset.ios.js +0 -114
  602. package/ImageAsset/ImageAsset.ios.js.map +0 -1
  603. package/ImageAsset/common.d.ts +0 -13
  604. package/ImageAsset/common.js +0 -21
  605. package/ImageAsset/common.js.map +0 -1
  606. package/ImageBitmap/common.d.ts +0 -8
  607. package/ImageBitmap/common.js +0 -9
  608. package/ImageBitmap/common.js.map +0 -1
  609. package/ImageBitmap/index.android.js.map +0 -1
  610. package/ImageBitmap/index.ios.d.ts +0 -12
  611. package/ImageBitmap/index.ios.js +0 -283
  612. package/ImageBitmap/index.ios.js.map +0 -1
  613. package/TextDecoder/TextDecoder.android.d.ts +0 -8
  614. package/TextDecoder/TextDecoder.android.js +0 -36
  615. package/TextDecoder/TextDecoder.android.js.map +0 -1
  616. package/TextDecoder/TextDecoder.d.ts +0 -10
  617. package/TextDecoder/TextDecoder.ios.d.ts +0 -6
  618. package/TextDecoder/TextDecoder.ios.js +0 -37
  619. package/TextDecoder/TextDecoder.ios.js.map +0 -1
  620. package/TextDecoder/common.d.ts +0 -8
  621. package/TextDecoder/common.js +0 -13
  622. package/TextDecoder/common.js.map +0 -1
  623. package/TextEncoder/TextEncoder.android.d.ts +0 -8
  624. package/TextEncoder/TextEncoder.android.js +0 -34
  625. package/TextEncoder/TextEncoder.android.js.map +0 -1
  626. package/TextEncoder/TextEncoder.d.ts +0 -10
  627. package/TextEncoder/TextEncoder.ios.d.ts +0 -6
  628. package/TextEncoder/TextEncoder.ios.js +0 -14
  629. package/TextEncoder/TextEncoder.ios.js.map +0 -1
  630. package/TextEncoder/common.d.ts +0 -7
  631. package/TextEncoder/common.js +0 -9
  632. package/TextEncoder/common.js.map +0 -1
  633. package/WebGL/WebGLExtensions/index.android.d.ts +0 -209
  634. package/WebGL/WebGLExtensions/index.android.js.map +0 -1
  635. package/WebGL/WebGLExtensions/index.ios.d.ts +0 -192
  636. package/WebGL/WebGLExtensions/index.ios.js +0 -250
  637. package/WebGL/WebGLExtensions/index.ios.js.map +0 -1
  638. package/WebGL/WebGLRenderingContext/index.android.d.ts +0 -167
  639. package/WebGL/WebGLRenderingContext/index.android.js.map +0 -1
  640. package/WebGL/WebGLRenderingContext/index.ios.d.ts +0 -163
  641. package/WebGL/WebGLRenderingContext/index.ios.js +0 -1168
  642. package/WebGL/WebGLRenderingContext/index.ios.js.map +0 -1
  643. package/WebGL2/WebGL2RenderingContext/index.android.d.ts +0 -105
  644. package/WebGL2/WebGL2RenderingContext/index.android.js.map +0 -1
  645. package/WebGL2/WebGL2RenderingContext/index.ios.d.ts +0 -102
  646. package/WebGL2/WebGL2RenderingContext/index.ios.js +0 -618
  647. package/WebGL2/WebGL2RenderingContext/index.ios.js.map +0 -1
  648. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/Utils.h +0 -26
  649. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64.swiftsourceinfo +0 -0
  650. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftdoc +0 -0
  651. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftinterface +0 -3264
  652. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/Utils.h +0 -26
  653. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64.swiftsourceinfo +0 -0
  654. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64.swiftsourceinfo +0 -0
  655. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftdoc +0 -0
  656. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftinterface +0 -3264
  657. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64.swiftdoc +0 -0
  658. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64.swiftinterface +0 -3264
@@ -0,0 +1,1972 @@
1
+ //
2
+ // Created by Osei Fortune on 22/03/2022.
3
+ //
4
+
5
+ #include "CanvasRenderingContext2DImpl.h"
6
+
7
+ CanvasRenderingContext2DImpl::CanvasRenderingContext2DImpl(
8
+ rust::Box<CanvasRenderingContext2D> context) : context_(
9
+ std::move(context)) {
10
+
11
+ auto ctx_ptr = reinterpret_cast<intptr_t>(reinterpret_cast<intptr_t *>(this));
12
+ auto raf_callback = new OnRafCallback(ctx_ptr, 0);
13
+ auto raf_callback_ptr = reinterpret_cast<intptr_t>(reinterpret_cast<intptr_t *>(raf_callback));
14
+ auto raf = canvas_native_raf_create(raf_callback_ptr);
15
+ this->SetRaf(std::make_shared<RafImpl>(raf_callback, raf_callback_ptr, std::move(raf)));
16
+
17
+ auto _raf = this->GetRaf();
18
+
19
+ if (_raf != nullptr) {
20
+ canvas_native_raf_start(_raf->GetRaf());
21
+ }
22
+
23
+ }
24
+
25
+ void CanvasRenderingContext2DImpl::SetRaf(std::shared_ptr<RafImpl> raf) {
26
+ this->raf_ = std::move(raf);
27
+ }
28
+
29
+ RafImpl *CanvasRenderingContext2DImpl::GetRaf() {
30
+ return this->raf_.get();
31
+ }
32
+
33
+
34
+ void CanvasRenderingContext2DImpl::StartRaf() {
35
+ auto raf = this->GetRaf();
36
+ if (raf != nullptr) {
37
+ if (!canvas_native_raf_get_started(raf->GetRaf())) {
38
+ canvas_native_raf_start(raf->GetRaf());
39
+ }
40
+ }
41
+ }
42
+
43
+ void CanvasRenderingContext2DImpl::StopRaf() {
44
+ auto raf = this->GetRaf();
45
+ if (raf != nullptr) {
46
+ if (canvas_native_raf_get_started(raf->GetRaf())) {
47
+ canvas_native_raf_stop(raf->GetRaf());
48
+ }
49
+ }
50
+ }
51
+
52
+
53
+ std::vector<jsi::PropNameID> CanvasRenderingContext2DImpl::getPropertyNames(jsi::Runtime &rt) {
54
+ std::vector<jsi::PropNameID> ret;
55
+ ret.reserve(70);
56
+
57
+ /* Non Standard 2D */
58
+
59
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("drawPoint")));
60
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("drawPoints")));
61
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("drawPaint")));
62
+
63
+ /* Non Standard 2D */
64
+
65
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("__makeDirty")));
66
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("__getPointer")));
67
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("__resize")));
68
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "__startRaf"));
69
+ ret.push_back(jsi::PropNameID::forUtf8(rt, "__stopRaf"));
70
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("filter")));
71
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("font")));
72
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("globalAlpha")));
73
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("imageSmoothingEnabled")));
74
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("imageSmoothingQuality")));
75
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("lineDashOffset")));
76
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("lineJoin")));
77
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("lineCap")));
78
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("miterLimit")));
79
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("shadowColor")));
80
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("shadowBlur")));
81
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("shadowOffsetX")));
82
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("shadowOffsetY")));
83
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("textAlign")));
84
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("globalCompositeOperation")));
85
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("fillStyle")));
86
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("strokeStyle")));
87
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("lineWidth")));
88
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("lineDash")));
89
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("addHitRegion")));
90
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("arc")));
91
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("arcTo")));
92
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("beginPath")));
93
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("bezierCurveTo")));
94
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("clearHitRegions")));
95
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("clearRect")));
96
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("clip")));
97
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("closePath")));
98
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("createImageData")));
99
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("createLinearGradient")));
100
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("createRadialGradient")));
101
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("createPattern")));
102
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("__createPatternWithNative")));
103
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("drawImage")));
104
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("ellipse")));
105
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("fill")));
106
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("fillRect")));
107
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("fillText")));
108
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getImageData")));
109
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("getLineDash")));
110
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("isPointInPath")));
111
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("isPointInStroke")));
112
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("lineTo")));
113
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("measureText")));
114
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("moveTo")));
115
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("putImageData")));
116
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("quadraticCurveTo")));
117
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("rect")));
118
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("roundRect")));
119
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("removeHitRegion")));
120
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("resetTransform")));
121
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("restore")));
122
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("rotate")));
123
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("save")));
124
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("scale")));
125
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("scrollPathIntoView")));
126
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("setLineDash")));
127
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("setTransform")));
128
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("stroke")));
129
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("strokeRect")));
130
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("strokeText")));
131
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("transform")));
132
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("translate")));
133
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("__toDataURL")));
134
+ return ret;
135
+ }
136
+
137
+
138
+ void
139
+ CanvasRenderingContext2DImpl::set(jsi::Runtime &runtime, const jsi::PropNameID &name,
140
+ const jsi::Value &value) {
141
+ auto methodName = name.utf8(runtime);
142
+
143
+ if (methodName == "filter") {
144
+ auto val = value.asString(runtime).utf8(runtime);
145
+ canvas_native_context_set_filter(this->GetContext(), rust::Str(val.c_str()));
146
+ } else if (methodName == "font") {
147
+ auto val = value.asString(runtime).utf8(runtime);
148
+ canvas_native_context_set_font(this->GetContext(), rust::Str(val.c_str()));
149
+ } else if (methodName == "globalAlpha") {
150
+ auto alpha = (float) value.asNumber();
151
+ canvas_native_context_set_global_alpha(this->GetContext(), alpha);
152
+ } else if (methodName == "imageSmoothingEnabled") {
153
+ auto imageSmoothingEnabled = value.asBool();
154
+ canvas_native_context_set_image_smoothing_enabled(this->GetContext(),
155
+ imageSmoothingEnabled);
156
+ } else if (methodName == "imageSmoothingQuality") {
157
+ auto imageSmoothingQuality = value.asString(runtime).utf8(runtime);
158
+ canvas_native_context_set_image_smoothing_quality(this->GetContext(),
159
+ rust::Str(imageSmoothingQuality));
160
+ } else if (methodName == "lineDashOffset") {
161
+ auto lineDashOffset = (float) value.asNumber();
162
+ canvas_native_context_set_line_dash_offset(this->GetContext(), lineDashOffset);
163
+ } else if (methodName == "lineJoin") {
164
+ auto join = value.asString(runtime).utf8(runtime);
165
+ canvas_native_context_set_line_join(this->GetContext(),
166
+ rust::Str(join.c_str()));
167
+ } else if (methodName == "lineCap") {
168
+ auto cap = value.asString(runtime).utf8(runtime);
169
+ canvas_native_context_set_line_cap(this->GetContext(),
170
+ rust::Str(cap.c_str()));
171
+ } else if (methodName == "miterLimit") {
172
+ auto miterLimit = (float) value.asNumber();
173
+ canvas_native_context_set_miter_limit(this->GetContext(), miterLimit);
174
+ } else if (methodName == "shadowColor") {
175
+ auto shadowColor = value.asString(runtime).utf8(runtime);
176
+ canvas_native_context_set_shadow_color(this->GetContext(),
177
+ rust::Str(shadowColor.c_str()));
178
+ } else if (methodName == "shadowBlur") {
179
+ auto shadowBlur = (float) value.asNumber();
180
+ canvas_native_context_set_shadow_blur(this->GetContext(), shadowBlur);
181
+ } else if (methodName == "shadowOffsetX") {
182
+ auto shadowOffsetX = (float) value.asNumber();
183
+ canvas_native_context_set_shadow_offset_x(this->GetContext(), shadowOffsetX);
184
+ } else if (methodName == "shadowOffsetY") {
185
+ auto shadowOffsetY = (float) value.asNumber();
186
+ canvas_native_context_set_shadow_offset_y(this->GetContext(), shadowOffsetY);
187
+ } else if (methodName == "textAlign") {
188
+ auto textAlign = value.asString(runtime).utf8(runtime);
189
+ canvas_native_context_set_text_align(this->GetContext(),
190
+ rust::Str(textAlign.c_str()));
191
+ } else if (methodName == "globalCompositeOperation") {
192
+ auto globalCompositeOperation = value.asString(runtime).utf8(runtime);
193
+ canvas_native_context_set_global_composition(this->GetContext(),
194
+ rust::Str(globalCompositeOperation.c_str()));
195
+ } else if (methodName == "fillStyle") {
196
+ if (value.isString()) {
197
+ auto style = value.asString(runtime).utf8(runtime);
198
+ canvas_native_paint_style_set_fill_color_with_c_string(this->GetContext(), style.c_str());
199
+ } else if (value.isObject()) {
200
+
201
+ try {
202
+ auto gradient = getHostObject<CanvasGradient>(runtime, value);
203
+ if (gradient != nullptr) {
204
+ canvas_native_context_set_fill_style(this->GetContext(),
205
+ gradient->GetPaintStyle());
206
+ return;
207
+ }
208
+ } catch (...) {}
209
+
210
+ try {
211
+ auto pattern = getHostObject<CanvasPattern>(runtime, value);
212
+
213
+ if (pattern != nullptr) {
214
+ canvas_native_context_set_fill_style(this->GetContext(),
215
+ pattern->GetPaintStyle());
216
+ return;
217
+ }
218
+ } catch (...) {}
219
+ }
220
+ } else if (methodName == "strokeStyle") {
221
+ if (value.isString()) {
222
+ auto style = value.asString(runtime).utf8(runtime);
223
+ canvas_native_paint_style_set_stroke_color_with_c_string(this->GetContext(), style.c_str());
224
+ } else if (value.isObject()) {
225
+
226
+ try {
227
+ auto gradient = getHostObject<CanvasGradient>(runtime, value);
228
+ if (gradient != nullptr) {
229
+ canvas_native_context_set_stroke_style(this->GetContext(),
230
+ gradient->GetPaintStyle());
231
+ return;
232
+ }
233
+ } catch (...) {}
234
+
235
+ try {
236
+ auto pattern = getHostObject<CanvasPattern>(runtime, value);
237
+
238
+ if (pattern != nullptr) {
239
+ canvas_native_context_set_stroke_style(this->GetContext(),
240
+ pattern->GetPaintStyle());
241
+ return;
242
+ }
243
+ } catch (...) {}
244
+ }
245
+ } else if (methodName == "lineWidth") {
246
+ auto lineWidth = (float) value.asNumber();
247
+ canvas_native_context_set_line_width(this->GetContext(), lineWidth);
248
+ } else if (methodName == "lineDash") {
249
+ if (!value.isNull() && !value.isUndefined() && value.isObject()) {
250
+ auto lineDashObject = value.asObject(runtime);
251
+ if (lineDashObject.isArray(runtime)) {
252
+ auto lineDash = lineDashObject.asArray(runtime);
253
+ auto size = lineDash.size(runtime);
254
+ std::vector<float> dash;
255
+ dash.reserve(size);
256
+ for (size_t i = 0; i < size; ++i) {
257
+ auto val = lineDash.getValueAtIndex(runtime, i);
258
+ dash[i] = (float) value.asNumber();
259
+ }
260
+ canvas_native_context_set_line_dash(this->GetContext(),
261
+ rust::Slice<const float>(dash.data(),
262
+ dash.size()));
263
+ }
264
+ }
265
+ }
266
+
267
+
268
+ }
269
+
270
+
271
+ jsi::Value CanvasRenderingContext2DImpl::get(jsi::Runtime &runtime, const jsi::PropNameID &name) {
272
+ auto methodName = name.utf8(runtime);
273
+
274
+
275
+ if (methodName == "drawPaint") {
276
+ return jsi::Function::createFromHostFunction(runtime,
277
+ jsi::PropNameID::forAscii(runtime, methodName),
278
+ 2,
279
+ [this](jsi::Runtime &runtime,
280
+ const jsi::Value &thisValue,
281
+ const jsi::Value *arguments,
282
+ size_t count) -> jsi::Value {
283
+ auto color = arguments[0].asString(
284
+ runtime).utf8(runtime);
285
+ canvas_native_context_draw_paint(
286
+ this->GetContext(),
287
+ rust::Str(color));
288
+ this->UpdateInvalidateState();
289
+ return jsi::Value::undefined();
290
+ }
291
+ );
292
+ } else if (methodName == "drawPoint") {
293
+ return jsi::Function::createFromHostFunction(runtime,
294
+ jsi::PropNameID::forAscii(runtime, methodName),
295
+ 2,
296
+ [this](jsi::Runtime &runtime,
297
+ const jsi::Value &thisValue,
298
+ const jsi::Value *arguments,
299
+ size_t count) -> jsi::Value {
300
+ auto x = (float) arguments[0].asNumber();
301
+ auto y = (float) arguments[1].asNumber();
302
+ canvas_native_context_draw_point(
303
+ this->GetContext(), x, y);
304
+ this->UpdateInvalidateState();
305
+ return jsi::Value::undefined();
306
+ }
307
+ );
308
+ } else if (methodName == "drawPoints") {
309
+ return jsi::Function::createFromHostFunction(runtime,
310
+ jsi::PropNameID::forAscii(runtime, methodName),
311
+ 2,
312
+ [this](jsi::Runtime &runtime,
313
+ const jsi::Value &thisValue,
314
+ const jsi::Value *arguments,
315
+ size_t count) -> jsi::Value {
316
+ auto mode = arguments[0].asString(
317
+ runtime).utf8(
318
+ runtime);
319
+ auto points = arguments[1].asObject(
320
+ runtime).getArray(
321
+ runtime);
322
+ auto size = points.size(runtime);
323
+
324
+
325
+ if ((size % 2) == 0) {
326
+ int32_t pointMode = -1;
327
+ if (mode == "points") {
328
+ pointMode = 0;
329
+ } else if (mode == "lines") {
330
+ pointMode = 1;
331
+ } else if (mode == "polygon") {
332
+ pointMode = 2;
333
+ }
334
+ if (pointMode == -1) {
335
+ return jsi::Value::undefined();
336
+ }
337
+ rust::Vec<float> store;
338
+ store.reserve(size);
339
+ size_t next = 0;
340
+ for (size_t i = 0; i < size; i++) {
341
+
342
+ auto object = points.getValueAtIndex(
343
+ runtime, i).asObject(
344
+ runtime);
345
+
346
+ auto x = object.getProperty(
347
+ runtime, "x").asNumber();
348
+ auto y = object.getProperty(
349
+ runtime, "y").asNumber();
350
+ store[next] = (float) x;
351
+ store[next + 1] = (float) y;
352
+
353
+ next = i + 2;
354
+ }
355
+
356
+ rust::Slice<const float> buf(
357
+ store.data(),
358
+ store.size());
359
+
360
+ canvas_native_context_draw_points(
361
+ this->GetContext(), pointMode,
362
+ buf);
363
+ this->UpdateInvalidateState();
364
+ }
365
+ return jsi::Value::undefined();
366
+ }
367
+ );
368
+ }
369
+
370
+ if (methodName == "filter") {
371
+ auto filter = canvas_native_context_get_filter(this->GetContext());
372
+ return jsi::String::createFromAscii(runtime, filter.data(), filter.length());
373
+ }
374
+
375
+ if (methodName == "__makeDirty") {
376
+ return jsi::Function::createFromHostFunction(runtime,
377
+ jsi::PropNameID::forAscii(runtime, methodName),
378
+ 0,
379
+ [this](jsi::Runtime &runtime,
380
+ const jsi::Value &thisValue,
381
+ const jsi::Value *arguments,
382
+ size_t count) -> jsi::Value {
383
+ this->UpdateInvalidateState();
384
+ return jsi::Value::undefined();
385
+ }
386
+ );
387
+ }
388
+
389
+ if (methodName == "__getPointer") {
390
+ auto ptr = (intptr_t *) &this->GetContext();
391
+ auto ret = std::to_string((intptr_t) ptr);
392
+ return jsi::String::createFromAscii(runtime, ret);
393
+ }
394
+
395
+ if (methodName == "__resize") {
396
+ return jsi::Function::createFromHostFunction(runtime,
397
+ jsi::PropNameID::forAscii(runtime, methodName),
398
+ 2,
399
+ [this](jsi::Runtime &runtime,
400
+ const jsi::Value &thisValue,
401
+ const jsi::Value *arguments,
402
+ size_t count) -> jsi::Value {
403
+ auto width = arguments[0].asNumber();
404
+ auto height = arguments[1].asNumber();
405
+ canvas_native_context_resize(
406
+ this->GetContext(),
407
+ static_cast<float>(width),
408
+ static_cast<float>(height));
409
+ return jsi::Value::undefined();
410
+ }
411
+ );
412
+ } else if (methodName == "font") {
413
+ auto font = canvas_native_context_get_font(this->GetContext());
414
+ return jsi::String::createFromAscii(runtime, font.data(), font.length());
415
+ } else if (methodName == "globalAlpha") {
416
+ return {(double) canvas_native_context_get_global_alpha(this->GetContext())};
417
+ } else if (methodName == "imageSmoothingEnabled") {
418
+ return {canvas_native_context_get_image_smoothing_enabled(this->GetContext())};
419
+ } else if (methodName == "imageSmoothingQuality") {
420
+ auto quality = canvas_native_context_get_image_smoothing_quality(this->GetContext());
421
+ return jsi::String::createFromAscii(runtime, quality.data(), quality.length());
422
+ } else if (methodName == "lineDashOffset") {
423
+ auto lineDashOffset = canvas_native_context_get_line_dash_offset(this->GetContext());
424
+ return {(double) lineDashOffset};
425
+ } else if (methodName == "lineJoin") {
426
+ auto join = canvas_native_context_get_line_join(this->GetContext());
427
+ return jsi::String::createFromAscii(runtime, join.data(), join.size());
428
+ } else if (methodName == "lineCap") {
429
+ auto cap = canvas_native_context_get_line_cap(this->GetContext());
430
+ return jsi::String::createFromAscii(runtime, cap.data(), cap.size());
431
+ } else if (methodName == "miterLimit") {
432
+ auto miterLimit = canvas_native_context_get_miter_limit(this->GetContext());
433
+ return {(double) miterLimit};
434
+ } else if (methodName == "shadowColor") {
435
+ auto shadowColor = canvas_native_context_get_shadow_color(this->GetContext());
436
+ return jsi::String::createFromAscii(runtime, shadowColor.data(), shadowColor.size());
437
+ } else if (methodName == "shadowBlur") {
438
+ return {(double) canvas_native_context_get_shadow_blur(this->GetContext())};
439
+ } else if (methodName == "shadowOffsetX") {
440
+ return {(double) canvas_native_context_get_shadow_offset_x(this->GetContext())};
441
+ } else if (methodName == "shadowOffsetY") {
442
+ return {(double) canvas_native_context_get_shadow_offset_y(this->GetContext())};
443
+ } else if (methodName == "textAlign") {
444
+ auto textAlign = canvas_native_context_get_text_align(this->GetContext());
445
+ return jsi::String::createFromAscii(runtime, textAlign.data(), textAlign.size());
446
+ } else if (methodName == "globalCompositeOperation") {
447
+ auto globalCompositeOperation = canvas_native_context_get_global_composition(
448
+ this->GetContext());
449
+ return jsi::String::createFromAscii(runtime, globalCompositeOperation.data(),
450
+ globalCompositeOperation.size());
451
+ } else if (methodName == "fillStyle") {
452
+ PaintStyleType type = canvas_native_context_get_current_fill_style_type(this->GetContext());
453
+ switch (type) {
454
+ case PaintStyleType::Color: {
455
+ auto color = canvas_native_paint_style_get_current_fill_color_string(
456
+ this->GetContext());
457
+ return jsi::String::createFromAscii(runtime, color.data(), color.size());
458
+ }
459
+ case PaintStyleType::Gradient: {
460
+ auto style = std::make_shared<CanvasGradient>(
461
+ canvas_native_context_get_fill_style(this->GetContext()));
462
+ return jsi::Object::createFromHostObject(runtime, style);
463
+ }
464
+ case PaintStyleType::Pattern: {
465
+ auto style = std::make_shared<CanvasPattern>(
466
+ canvas_native_context_get_fill_style(this->GetContext()));
467
+ return jsi::Object::createFromHostObject(runtime, style);
468
+ }
469
+ case PaintStyleType::None: {
470
+ return jsi::Value::undefined();
471
+ }
472
+ }
473
+ } else if (methodName == "strokeStyle") {
474
+ PaintStyleType type = canvas_native_context_get_current_stroke_style_type(
475
+ this->GetContext());
476
+ switch (type) {
477
+ case PaintStyleType::Color: {
478
+ auto color = canvas_native_paint_style_get_current_stroke_color_string(
479
+ this->GetContext());
480
+ return jsi::String::createFromAscii(runtime, color.data(), color.size());
481
+ }
482
+ case PaintStyleType::Gradient: {
483
+ auto style = std::make_shared<CanvasGradient>(
484
+ canvas_native_context_get_stroke_style(this->GetContext()));
485
+ return jsi::Object::createFromHostObject(runtime, style);
486
+ }
487
+ case PaintStyleType::Pattern: {
488
+ auto style = std::make_shared<CanvasPattern>(
489
+ canvas_native_context_get_stroke_style(this->GetContext()));
490
+ return jsi::Object::createFromHostObject(runtime, style);
491
+ }
492
+ case PaintStyleType::None: {
493
+ return jsi::Value::undefined();
494
+ }
495
+ }
496
+ } else if (methodName == "lineWidth") {
497
+ auto lineWidth = canvas_native_context_get_line_width(this->GetContext());
498
+ return {(double) lineWidth};
499
+ } else if (methodName == "lineDash") {
500
+ auto lineDash = canvas_native_context_get_line_dash(this->GetContext());
501
+ auto size = lineDash.size();
502
+ auto ret = jsi::Array(runtime, size);
503
+ for (size_t i = 0; i < size; i++) {
504
+ auto item = lineDash[i];
505
+ ret.setValueAtIndex(runtime, i, jsi::Value((double) item));
506
+ }
507
+ return ret;
508
+ } else if (methodName == "addHitRegion") {
509
+ return jsi::Function::createFromHostFunction(runtime,
510
+ jsi::PropNameID::forAscii(runtime, methodName),
511
+ 0,
512
+ [](jsi::Runtime &runtime,
513
+ const jsi::Value &thisValue,
514
+ const jsi::Value *arguments,
515
+ size_t count) -> jsi::Value {
516
+ return jsi::Value::undefined();
517
+ }
518
+ );
519
+ } else if (methodName == "arc") {
520
+ return jsi::Function::createFromHostFunction(runtime,
521
+ jsi::PropNameID::forAscii(runtime, methodName),
522
+ 6,
523
+ [this](jsi::Runtime &runtime,
524
+ const jsi::Value &thisValue,
525
+ const jsi::Value *arguments,
526
+ size_t count) -> jsi::Value {
527
+
528
+
529
+ auto anti_clockwise = false;
530
+ if (count == 6) {
531
+ anti_clockwise = arguments[5].asBool();
532
+ }
533
+ canvas_native_context_arc(
534
+ this->GetContext(),
535
+ static_cast<float>(arguments[0].asNumber()),
536
+ static_cast<float>(arguments[1].asNumber()),
537
+ static_cast<float>(arguments[2].asNumber()),
538
+ static_cast<float>(arguments[3].asNumber()),
539
+ static_cast<float>(arguments[4].asNumber()),
540
+ anti_clockwise
541
+ );
542
+
543
+ return jsi::Value::undefined();
544
+ }
545
+ );
546
+ } else if (methodName == "arcTo") {
547
+ return jsi::Function::createFromHostFunction(runtime,
548
+ jsi::PropNameID::forAscii(runtime, methodName),
549
+ 5,
550
+ [this](jsi::Runtime &runtime,
551
+ const jsi::Value &thisValue,
552
+ const jsi::Value *arguments,
553
+ size_t count) -> jsi::Value {
554
+
555
+
556
+ auto x1 = static_cast<float>(arguments[0].asNumber());
557
+ auto y1 = static_cast<float>(arguments[1].asNumber());
558
+ auto x2 = static_cast<float>(arguments[2].asNumber());
559
+ auto y2 = static_cast<float>(arguments[3].asNumber());
560
+ auto radius = static_cast<float>(arguments[4].asNumber());
561
+ canvas_native_context_arc_to(
562
+ this->GetContext(),
563
+ x1,
564
+ y1,
565
+ x2,
566
+ y2,
567
+ radius
568
+ );
569
+
570
+ return jsi::Value::undefined();
571
+ }
572
+ );
573
+ } else if (methodName == "beginPath") {
574
+ return jsi::Function::createFromHostFunction(runtime,
575
+ jsi::PropNameID::forAscii(runtime, methodName),
576
+ 0,
577
+ [this](jsi::Runtime &runtime,
578
+ const jsi::Value &thisValue,
579
+ const jsi::Value *arguments,
580
+ size_t count) -> jsi::Value {
581
+ canvas_native_context_begin_path(
582
+ this->GetContext());
583
+ return jsi::Value::undefined();
584
+ }
585
+ );
586
+ } else if (methodName == "bezierCurveTo") {
587
+ return jsi::Function::createFromHostFunction(runtime,
588
+ jsi::PropNameID::forAscii(runtime, methodName),
589
+ 6,
590
+ [this](jsi::Runtime &runtime,
591
+ const jsi::Value &thisValue,
592
+ const jsi::Value *arguments,
593
+ size_t count) -> jsi::Value {
594
+ canvas_native_context_bezier_curve_to(
595
+ this->GetContext(),
596
+ static_cast<float>(arguments[0].asNumber()),
597
+ static_cast<float>(arguments[1].asNumber()),
598
+ static_cast<float>(arguments[2].asNumber()),
599
+ static_cast<float>(arguments[3].asNumber()),
600
+ static_cast<float>(arguments[4].asNumber()),
601
+ static_cast<float>(arguments[5].asNumber())
602
+ );
603
+ return jsi::Value::undefined();
604
+ }
605
+ );
606
+ } else if (methodName == "clearHitRegions") {
607
+ return jsi::Function::createFromHostFunction(runtime,
608
+ jsi::PropNameID::forAscii(runtime, methodName),
609
+ 0,
610
+ [](jsi::Runtime &runtime,
611
+ const jsi::Value &thisValue,
612
+ const jsi::Value *arguments,
613
+ size_t count) -> jsi::Value {
614
+ return jsi::Value::undefined();
615
+ }
616
+ );
617
+ } else if (methodName == "clearRect") {
618
+ return jsi::Function::createFromHostFunction(runtime,
619
+ jsi::PropNameID::forAscii(runtime, methodName),
620
+ 4,
621
+ [this](jsi::Runtime &runtime,
622
+ const jsi::Value &thisValue,
623
+ const jsi::Value *arguments,
624
+ size_t count) -> jsi::Value {
625
+
626
+ canvas_native_context_clear_rect(
627
+ this->GetContext(),
628
+ static_cast<float>(arguments[0].asNumber()),
629
+ static_cast<float>(arguments[1].asNumber()),
630
+ static_cast<float>(arguments[2].asNumber()),
631
+ static_cast<float>(arguments[3].asNumber())
632
+ );
633
+ this->UpdateInvalidateState();
634
+
635
+ return jsi::Value::undefined();
636
+ }
637
+ );
638
+ } else if (methodName == "clip") {
639
+ return jsi::Function::createFromHostFunction(runtime,
640
+ jsi::PropNameID::forAscii(runtime, methodName),
641
+ 1,
642
+ [this](jsi::Runtime &runtime,
643
+ const jsi::Value &thisValue,
644
+ const jsi::Value *arguments,
645
+ size_t count) -> jsi::Value {
646
+
647
+ if (count == 0) {
648
+ std::string rule("nonzero");
649
+ canvas_native_context_clip_rule(
650
+ this->GetContext(),
651
+ rust::Str(rule.c_str()));
652
+ } else if (arguments[0].isString()) {
653
+ auto val = arguments[0].asString(
654
+ runtime).utf8(runtime);
655
+ canvas_native_context_clip_rule(
656
+ this->GetContext(),
657
+ rust::Str(val.c_str()));
658
+ }
659
+
660
+ return jsi::Value::undefined();
661
+ }
662
+ );
663
+ } else if (methodName == "closePath") {
664
+ return jsi::Function::createFromHostFunction(runtime,
665
+ jsi::PropNameID::forAscii(runtime, methodName),
666
+ 0,
667
+ [this](jsi::Runtime &runtime,
668
+ const jsi::Value &thisValue,
669
+ const jsi::Value *arguments,
670
+ size_t count) -> jsi::Value {
671
+
672
+ canvas_native_context_close_path(
673
+ this->GetContext());
674
+ return jsi::Value::undefined();
675
+ }
676
+ );
677
+ } else if (methodName == "createImageData") {
678
+ return jsi::Function::createFromHostFunction(runtime,
679
+ jsi::PropNameID::forAscii(runtime, methodName),
680
+ 2,
681
+ [](jsi::Runtime &runtime,
682
+ const jsi::Value &thisValue,
683
+ const jsi::Value *arguments,
684
+ size_t count) -> jsi::Value {
685
+
686
+
687
+ if (count == 1 &&
688
+ arguments[0].isObject()) {
689
+
690
+ auto object = getHostObject<ImageDataImpl>(
691
+ runtime, arguments[0]);
692
+
693
+ if (object != nullptr) {
694
+ auto width = canvas_native_image_data_get_width(
695
+ object->GetImageData());
696
+ auto height = canvas_native_image_data_get_height(
697
+ object->GetImageData());
698
+ auto data = std::make_shared<ImageDataImpl>(
699
+ canvas_native_image_data_create(
700
+ width, height));
701
+ return jsi::Object::createFromHostObject(
702
+ runtime, data);
703
+ }
704
+
705
+ } else if (count > 1) {
706
+
707
+ auto width = (int) arguments[0].asNumber();
708
+ auto height = (int) arguments[1].asNumber();
709
+ auto data = std::make_shared<ImageDataImpl>(
710
+ canvas_native_image_data_create(
711
+ width, height));
712
+ return jsi::Object::createFromHostObject(
713
+ runtime, data);
714
+ }
715
+
716
+ // todo throw ?
717
+ return jsi::Value::undefined();
718
+
719
+ }
720
+ );
721
+ } else if (methodName == "createLinearGradient") {
722
+ return jsi::Function::createFromHostFunction(runtime,
723
+ jsi::PropNameID::forAscii(runtime, methodName),
724
+ 4,
725
+ [this](jsi::Runtime &runtime,
726
+ const jsi::Value &thisValue,
727
+ const jsi::Value *arguments,
728
+ size_t count) -> jsi::Value {
729
+
730
+
731
+ if (count == 4) {
732
+ auto x0 = static_cast<float>(arguments[0].asNumber());
733
+ auto y0 = static_cast<float>(arguments[1].asNumber());
734
+ auto x1 = static_cast<float>(arguments[2].asNumber());
735
+ auto y1 = static_cast<float>(arguments[3].asNumber());
736
+
737
+ auto gradient = canvas_native_context_create_linear_gradient(
738
+ this->GetContext(), x0, y0, x1,
739
+ y1);
740
+ auto ret = std::make_shared<CanvasGradient>(
741
+ std::move(gradient));
742
+ return jsi::Object::createFromHostObject(
743
+ runtime,
744
+ ret);
745
+ }
746
+
747
+ return jsi::Value::undefined();
748
+ }
749
+ );
750
+ } else if (methodName == "createPattern") {
751
+ return jsi::Function::createFromHostFunction(runtime,
752
+ jsi::PropNameID::forAscii(runtime, methodName),
753
+ 2,
754
+ [this](jsi::Runtime &runtime,
755
+ const jsi::Value &thisValue,
756
+ const jsi::Value *arguments,
757
+ size_t count) -> jsi::Value {
758
+
759
+ if (count > 1) {
760
+ if (arguments[0].isNull() ||
761
+ arguments[0].isUndefined()) { return jsi::Value::undefined(); }
762
+
763
+ auto object = arguments[0].asObject(
764
+ runtime);
765
+
766
+ try {
767
+ auto image_asset = getHostObject<ImageAssetImpl>(
768
+ runtime, object);
769
+
770
+ if (image_asset != nullptr) {
771
+ auto rep = arguments[1].asString(
772
+ runtime).utf8(runtime);
773
+ rust::Box<PaintStyle> pattern = canvas_native_context_create_pattern_asset(
774
+ this->GetContext(),
775
+ image_asset->GetImageAsset(),
776
+ rust::Str(
777
+ rep.c_str()));
778
+ auto type = canvas_native_context_get_style_type(
779
+ *pattern);
780
+ if (type ==
781
+ PaintStyleType::None) {
782
+ return jsi::Value::undefined();
783
+ } else {
784
+ auto ret = std::make_shared<CanvasPattern>(
785
+ std::move(
786
+ pattern));
787
+ return jsi::Object::createFromHostObject(
788
+ runtime, ret);
789
+ }
790
+ }
791
+ } catch (...) {}
792
+
793
+ try {
794
+ auto canvas_2d = getHostObject<CanvasRenderingContext2DImpl>(
795
+ runtime, object);
796
+ if (canvas_2d != nullptr) {
797
+ auto rep = arguments[1].asString(
798
+ runtime).utf8(runtime);
799
+ rust::Box<PaintStyle> pattern = canvas_native_context_create_pattern_canvas2d(
800
+ canvas_2d->GetContext(),
801
+ this->GetContext(),
802
+ rust::Str(
803
+ rep.c_str()));
804
+ auto type = canvas_native_context_get_style_type(
805
+ *pattern);
806
+ if (type ==
807
+ PaintStyleType::None) {
808
+ return jsi::Value::undefined();
809
+ } else {
810
+ auto ret = std::make_shared<CanvasPattern>(
811
+ std::move(
812
+ pattern));
813
+ return jsi::Object::createFromHostObject(
814
+ runtime, ret);
815
+ }
816
+ }
817
+ } catch (...) {}
818
+
819
+ try {
820
+ auto webgl = getHostObject<WebGLRenderingContextBase>(
821
+ runtime, object);
822
+ if (webgl != nullptr) {
823
+ auto rep = arguments[1].asString(
824
+ runtime).utf8(runtime);
825
+ auto pattern = canvas_native_context_create_pattern_webgl(
826
+ webgl->GetState(),
827
+ this->GetContext(),
828
+ rust::Str(
829
+ rep.c_str()));
830
+ auto type = canvas_native_context_get_style_type(
831
+ *pattern);
832
+ if (type ==
833
+ PaintStyleType::None) {
834
+ return jsi::Value::undefined();
835
+ } else {
836
+ auto ret = std::make_shared<CanvasPattern>(
837
+ std::move(
838
+ pattern));
839
+ return jsi::Object::createFromHostObject(
840
+ runtime, ret);
841
+ }
842
+ }
843
+ } catch (...) {}
844
+
845
+ }
846
+
847
+
848
+ return jsi::Value::undefined();
849
+ }
850
+ );
851
+
852
+ } else if (methodName == "__createPatternWithNative") {
853
+ return jsi::Function::createFromHostFunction(runtime,
854
+ jsi::PropNameID::forAscii(runtime, methodName),
855
+ 1,
856
+ [](jsi::Runtime &runtime,
857
+ const jsi::Value &thisValue,
858
+ const jsi::Value *arguments,
859
+ size_t count) -> jsi::Value {
860
+
861
+ auto ptr = getPointerValue(runtime,
862
+ arguments[0]);
863
+
864
+ auto pattern = canvas_native_pattern_from_ptr(
865
+ ptr);
866
+ auto type = canvas_native_context_get_style_type(
867
+ *pattern);
868
+ if (type == PaintStyleType::None) {
869
+ return jsi::Value::undefined();
870
+ } else {
871
+ auto ret = std::make_shared<CanvasPattern>(
872
+ std::move(pattern));
873
+ return jsi::Object::createFromHostObject(
874
+ runtime, ret);
875
+ }
876
+
877
+ }
878
+ );
879
+
880
+ } else if (methodName == "createRadialGradient") {
881
+ return jsi::Function::createFromHostFunction(runtime,
882
+ jsi::PropNameID::forAscii(runtime, methodName),
883
+ 6,
884
+ [this](jsi::Runtime &runtime,
885
+ const jsi::Value &thisValue,
886
+ const jsi::Value *arguments,
887
+ size_t count) -> jsi::Value {
888
+
889
+
890
+ if (count == 6) {
891
+ auto x0 = static_cast<float>(arguments[0].asNumber());
892
+ auto y0 = static_cast<float>(arguments[1].asNumber());
893
+ auto r0 = static_cast<float>(arguments[2].asNumber());
894
+ auto x1 = static_cast<float>(arguments[3].asNumber());
895
+ auto y1 = static_cast<float>(arguments[4].asNumber());
896
+ auto r1 = static_cast<float>(arguments[5].asNumber());
897
+
898
+ auto gradient = canvas_native_context_create_radial_gradient(
899
+ this->GetContext(), x0, y0, r0,
900
+ x1, y1, r1);
901
+ auto ret = std::make_shared<CanvasGradient>(
902
+ std::move(gradient));
903
+ return jsi::Object::createFromHostObject(
904
+ runtime, ret);
905
+ }
906
+
907
+ return jsi::Value::undefined();
908
+ }
909
+ );
910
+ } else if (methodName == "drawFocusIfNeeded") {
911
+ return jsi::Function::createFromHostFunction(runtime,
912
+ jsi::PropNameID::forAscii(runtime, methodName),
913
+ 0,
914
+ [](jsi::Runtime &runtime,
915
+ const jsi::Value &thisValue,
916
+ const jsi::Value *arguments,
917
+ size_t count) -> jsi::Value {
918
+
919
+ return jsi::Value::undefined();
920
+ }
921
+ );
922
+ } else if (methodName == "drawImage") {
923
+ return jsi::Function::createFromHostFunction(runtime,
924
+ jsi::PropNameID::forAscii(runtime, methodName),
925
+ 9,
926
+ [this](jsi::Runtime &runtime,
927
+ const jsi::Value &thisValue,
928
+ const jsi::Value *arguments,
929
+ size_t count) -> jsi::Value {
930
+
931
+
932
+ if (count == 3) {
933
+ auto image = arguments[0].asObject(
934
+ runtime);
935
+ auto dx = static_cast<float>(arguments[1].asNumber());
936
+ auto dy = static_cast<float>(arguments[2].asNumber());
937
+
938
+
939
+ try {
940
+ auto image_asset = getHostObject<ImageAssetImpl>(
941
+ runtime, image);
942
+
943
+ if (image_asset != nullptr) {
944
+ canvas_native_context_draw_image_dx_dy_asset(
945
+ this->GetContext(),
946
+ image_asset->GetImageAsset(),
947
+ dx, dy);
948
+ this->UpdateInvalidateState();
949
+ return jsi::Value::undefined();
950
+ }
951
+ } catch (...) {}
952
+
953
+
954
+ try {
955
+ auto image_bitmap = getHostObject<ImageBitmapImpl>(
956
+ runtime, image);
957
+ if (image_bitmap != nullptr) {
958
+ canvas_native_context_draw_image_dx_dy_asset(
959
+ this->GetContext(),
960
+ image_bitmap->GetImageAsset(),
961
+ dx, dy);
962
+ this->UpdateInvalidateState();
963
+ }
964
+ } catch (...) {}
965
+
966
+
967
+ try {
968
+ auto image_canvas = getHostObject<CanvasRenderingContext2DImpl>(
969
+ runtime, image);
970
+ if (image_canvas != nullptr) {
971
+ canvas_native_context_draw_image_dx_dy_context(
972
+ this->GetContext(),
973
+ image_canvas->GetContext(),
974
+ dx, dy);
975
+ this->UpdateInvalidateState();
976
+ }
977
+ } catch (...) {}
978
+
979
+
980
+ } else if (count == 5) {
981
+ auto image = arguments[0].asObject(
982
+ runtime);
983
+ auto dx = (float) arguments[1].asNumber();
984
+ auto dy = (float) arguments[2].asNumber();
985
+ auto dWidth = (float) arguments[3].asNumber();
986
+ auto dHeight = (float) arguments[4].asNumber();
987
+
988
+ try {
989
+ auto image_asset = getHostObject<ImageAssetImpl>(
990
+ runtime, image);
991
+ if (image_asset != nullptr) {
992
+ canvas_native_context_draw_image_dx_dy_dw_dh_asset(
993
+ this->GetContext(),
994
+ image_asset->GetImageAsset(),
995
+ dx, dy,
996
+ dWidth,
997
+ dHeight);
998
+ this->UpdateInvalidateState();
999
+ return jsi::Value::undefined();
1000
+ }
1001
+ } catch (...) {}
1002
+
1003
+ try {
1004
+ auto image_bitmap = getHostObject<ImageBitmapImpl>(
1005
+ runtime, image);
1006
+ if (image_bitmap != nullptr) {
1007
+ canvas_native_context_draw_image_dx_dy_dw_dh_asset(
1008
+ this->GetContext(),
1009
+ image_bitmap->GetImageAsset(),
1010
+ dx, dy,
1011
+ dWidth,
1012
+ dHeight);
1013
+ this->UpdateInvalidateState();
1014
+ return jsi::Value::undefined();
1015
+ }
1016
+ } catch (...) {}
1017
+
1018
+ try {
1019
+ auto image_canvas = getHostObject<CanvasRenderingContext2DImpl>(
1020
+ runtime, image);
1021
+ if (image_canvas != nullptr) {
1022
+ canvas_native_context_draw_image_dx_dy_dw_dh_context(
1023
+ this->GetContext(),
1024
+ image_canvas->GetContext(),
1025
+ dx, dy,
1026
+ dWidth,
1027
+ dHeight);
1028
+ this->UpdateInvalidateState();
1029
+ return jsi::Value::undefined();
1030
+ }
1031
+ } catch (...) {}
1032
+
1033
+
1034
+ } else if (count == 9) {
1035
+ auto image = arguments[0].asObject(
1036
+ runtime);
1037
+ auto sx = (float) arguments[1].asNumber();
1038
+ auto sy = (float) arguments[2].asNumber();
1039
+ auto sWidth = (float) arguments[3].asNumber();
1040
+ auto sHeight = (float) arguments[4].asNumber();
1041
+ auto dx = (float) arguments[5].asNumber();
1042
+ auto dy = (float) arguments[6].asNumber();
1043
+ auto dWidth = (float) arguments[7].asNumber();
1044
+ auto dHeight = (float) arguments[8].asNumber();
1045
+
1046
+ try {
1047
+ auto image_asset = getHostObject<ImageAssetImpl>(
1048
+ runtime, image);
1049
+ if (image_asset != nullptr) {
1050
+ canvas_native_context_draw_image_asset(
1051
+ this->GetContext(),
1052
+ image_asset->GetImageAsset(),
1053
+ sx,
1054
+ sy, sWidth, sHeight,
1055
+ dx,
1056
+ dy, dWidth, dHeight);
1057
+ this->UpdateInvalidateState();
1058
+ return jsi::Value::undefined();
1059
+ }
1060
+ } catch (...) {}
1061
+
1062
+ try {
1063
+ auto image_bitmap = getHostObject<ImageBitmapImpl>(
1064
+ runtime, image);
1065
+ if (image_bitmap != nullptr) {
1066
+ canvas_native_context_draw_image_asset(
1067
+ this->GetContext(),
1068
+ image_bitmap->GetImageAsset(),
1069
+ sx,
1070
+ sy, sWidth, sHeight,
1071
+ dx,
1072
+ dy, dWidth, dHeight);
1073
+ this->UpdateInvalidateState();
1074
+ return jsi::Value::undefined();
1075
+ }
1076
+ } catch (...) {}
1077
+
1078
+ try {
1079
+ auto image_canvas = getHostObject<CanvasRenderingContext2DImpl>(
1080
+ runtime, image);
1081
+ if (image_canvas != nullptr) {
1082
+ canvas_native_context_draw_image_context(
1083
+ this->GetContext(),
1084
+ image_canvas->GetContext(),
1085
+ sx,
1086
+ sy, sWidth, sHeight,
1087
+ dx,
1088
+ dy, dWidth, dHeight);
1089
+ this->UpdateInvalidateState();
1090
+ return jsi::Value::undefined();
1091
+ }
1092
+ } catch (...) {}
1093
+
1094
+
1095
+ }
1096
+
1097
+ return jsi::Value::undefined();
1098
+ }
1099
+ );
1100
+ } else if (methodName == "ellipse") {
1101
+ return jsi::Function::createFromHostFunction(runtime,
1102
+ jsi::PropNameID::forAscii(runtime, methodName),
1103
+ 8,
1104
+ [this](jsi::Runtime &runtime,
1105
+ const jsi::Value &thisValue,
1106
+ const jsi::Value *arguments,
1107
+ size_t count) -> jsi::Value {
1108
+ if (count == 8) {
1109
+ auto x = static_cast<float>(arguments[0].asNumber());
1110
+ auto y = static_cast<float>(arguments[1].asNumber());
1111
+ auto radiusX = static_cast<float>(arguments[2].asNumber());
1112
+ auto radiusY = static_cast<float>(arguments[3].asNumber());
1113
+ auto rotation = static_cast<float>(arguments[4].asNumber());
1114
+ auto startAngle = static_cast<float>(arguments[5].asNumber());
1115
+ auto endAngle = static_cast<float>(arguments[6].asNumber());
1116
+ auto anticlockwise = false;
1117
+ if (arguments[7].isBool()) {
1118
+ anticlockwise = arguments[7].asBool();
1119
+ }
1120
+ canvas_native_context_ellipse(
1121
+ this->GetContext(), x, y,
1122
+ radiusX,
1123
+ radiusY, rotation,
1124
+ startAngle, endAngle,
1125
+ anticlockwise);
1126
+ }
1127
+
1128
+ return jsi::Value::undefined();
1129
+ }
1130
+ );
1131
+ } else if (methodName == "fill") {
1132
+ return jsi::Function::createFromHostFunction(runtime,
1133
+ jsi::PropNameID::forAscii(runtime, methodName),
1134
+ 2,
1135
+ [this](jsi::Runtime &runtime,
1136
+ const jsi::Value &thisValue,
1137
+ const jsi::Value *arguments,
1138
+ size_t count) -> jsi::Value {
1139
+ if (count == 2) {
1140
+ auto object = getHostObject<Path2D>(
1141
+ runtime, arguments[0]);
1142
+
1143
+ if (object != nullptr) {
1144
+ auto value = arguments[1].asString(
1145
+ runtime).utf8(runtime);
1146
+ canvas_native_context_fill_with_path(
1147
+ this->GetContext(),
1148
+ object->GetPath(),
1149
+ rust::Str(value.c_str()));
1150
+ this->UpdateInvalidateState();
1151
+ }
1152
+ } else if (count == 1) {
1153
+ if (arguments[0].isString()) {
1154
+ auto value = arguments[0].asString(
1155
+ runtime).utf8(runtime);
1156
+ canvas_native_context_fill(
1157
+ this->GetContext(),
1158
+ rust::Str(value.c_str()));
1159
+ this->UpdateInvalidateState();
1160
+ } else if (arguments[0].isObject()) {
1161
+ auto object = getHostObject<Path2D>(
1162
+ runtime, arguments[0]);
1163
+ if (object != nullptr) {
1164
+ std::string rule("nonzero");
1165
+ canvas_native_context_fill_with_path(
1166
+ this->GetContext(),
1167
+ object->GetPath(),
1168
+ rust::Str(
1169
+ rule.c_str()));
1170
+ this->UpdateInvalidateState();
1171
+ }
1172
+ }
1173
+ } else {
1174
+ std::string rule("nonzero");
1175
+ canvas_native_context_fill(
1176
+ this->GetContext(),
1177
+ rust::Str(rule.c_str()));
1178
+ this->UpdateInvalidateState();
1179
+ }
1180
+ return jsi::Value::undefined();
1181
+ }
1182
+ );
1183
+ } else if (methodName == "fillRect") {
1184
+ return jsi::Function::createFromHostFunction(runtime,
1185
+ jsi::PropNameID::forAscii(runtime, methodName),
1186
+ 4,
1187
+ [this](jsi::Runtime &runtime,
1188
+ const jsi::Value &thisValue,
1189
+ const jsi::Value *arguments,
1190
+ size_t count) -> jsi::Value {
1191
+
1192
+ auto x = static_cast<float>(arguments[0].asNumber());
1193
+ auto y = static_cast<float>(arguments[1].asNumber());
1194
+ auto width = static_cast<float>(arguments[2].asNumber());
1195
+ auto height = static_cast<float>(arguments[3].asNumber());
1196
+ canvas_native_context_fill_rect(
1197
+ this->GetContext(), x, y, width,
1198
+ height);
1199
+ this->UpdateInvalidateState();
1200
+
1201
+ return jsi::Value::undefined();
1202
+ }
1203
+ );
1204
+ } else if (methodName == "fillText") {
1205
+ return jsi::Function::createFromHostFunction(runtime,
1206
+ jsi::PropNameID::forAscii(runtime, methodName),
1207
+ 4,
1208
+ [this](jsi::Runtime &runtime,
1209
+ const jsi::Value &thisValue,
1210
+ const jsi::Value *arguments,
1211
+ size_t count) -> jsi::Value {
1212
+
1213
+ auto text = arguments[0].asString(
1214
+ runtime).utf8(
1215
+ runtime);
1216
+ auto x = static_cast<float>(arguments[1].asNumber());
1217
+ auto y = static_cast<float>(arguments[2].asNumber());
1218
+ float width = -1;
1219
+ if (arguments[3].isNumber()) {
1220
+ width = static_cast<float>(arguments[3].asNumber());
1221
+ }
1222
+ canvas_native_context_fill_text(
1223
+ this->GetContext(),
1224
+ rust::Str(text.c_str()), x,
1225
+ y, width);
1226
+ this->UpdateInvalidateState();
1227
+
1228
+ return jsi::Value::undefined();
1229
+ }
1230
+ );
1231
+ } else if (methodName == "getImageData") {
1232
+ return jsi::Function::createFromHostFunction(runtime,
1233
+ jsi::PropNameID::forAscii(runtime, methodName),
1234
+ 4,
1235
+ [this](jsi::Runtime &runtime,
1236
+ const jsi::Value &thisValue,
1237
+ const jsi::Value *arguments,
1238
+ size_t count) -> jsi::Value {
1239
+
1240
+ if (count == 4) {
1241
+ auto sx = static_cast<float>(arguments[0].asNumber());
1242
+ auto sy = static_cast<float>(arguments[1].asNumber());
1243
+ auto sw = static_cast<float>(arguments[2].asNumber());
1244
+ auto sh = static_cast<float>(arguments[3].asNumber());
1245
+ auto data = canvas_native_context_get_image_data(
1246
+ this->GetContext(), sx, sy, sw,
1247
+ sh);
1248
+ auto object = std::make_shared<ImageDataImpl>(
1249
+ std::move(data));
1250
+ return jsi::Object::createFromHostObject(
1251
+ runtime, object);
1252
+ }
1253
+
1254
+ return jsi::Value::undefined();
1255
+ }
1256
+ );
1257
+ } else if (methodName == "getLineDash") {
1258
+ return jsi::Function::createFromHostFunction(runtime,
1259
+ jsi::PropNameID::forAscii(runtime, methodName),
1260
+ 4,
1261
+ [this](jsi::Runtime &runtime,
1262
+ const jsi::Value &thisValue,
1263
+ const jsi::Value *arguments,
1264
+ size_t count) -> jsi::Value {
1265
+
1266
+ auto dash = canvas_native_context_get_line_dash(
1267
+ this->GetContext());
1268
+ auto size = dash.size();
1269
+ auto array = jsi::Array(runtime, size);
1270
+ for (int i = 0; i < size; ++i) {
1271
+ array.setValueAtIndex(runtime, i,
1272
+ jsi::Value(
1273
+ (double) dash[i]));
1274
+ }
1275
+ return array;
1276
+ }
1277
+ );
1278
+ } else if (methodName == "isPointInPath") {
1279
+ return jsi::Function::createFromHostFunction(runtime,
1280
+ jsi::PropNameID::forAscii(runtime, methodName),
1281
+ 4,
1282
+ [this](jsi::Runtime &runtime,
1283
+ const jsi::Value &thisValue,
1284
+ const jsi::Value *arguments,
1285
+ size_t count) -> jsi::Value {
1286
+
1287
+ if (count == 2) {
1288
+ auto x = static_cast<float>(arguments[0].asNumber());
1289
+ auto y = static_cast<float>(arguments[1].asNumber());
1290
+ std::string rule("nonzero");
1291
+ auto ret = canvas_native_context_is_point_in_path(
1292
+ this->GetContext(), x, y,
1293
+ rust::Str(rule.c_str()));
1294
+ return {ret};
1295
+ } else if (count == 3 &&
1296
+ arguments[2].isString()) {
1297
+ auto x = static_cast<float>(arguments[0].asNumber());
1298
+ auto y = static_cast<float>(arguments[1].asNumber());
1299
+ auto rule = arguments[2].asString(
1300
+ runtime).utf8(runtime);
1301
+ auto ret = canvas_native_context_is_point_in_path(
1302
+ this->GetContext(), x, y,
1303
+ rust::Str(rule.c_str()));
1304
+ return {ret};
1305
+ } else if (count == 4 &&
1306
+ arguments[0].isObject() &&
1307
+ arguments[3].isString()) {
1308
+ auto path = getHostObject<Path2D>(
1309
+ runtime, arguments[0]);
1310
+ auto x = static_cast<float>(arguments[1].asNumber());
1311
+ auto y = static_cast<float>(arguments[2].asNumber());
1312
+ auto rule = arguments[3].asString(
1313
+ runtime).utf8(runtime);
1314
+
1315
+
1316
+ if (path != nullptr) {
1317
+ auto ret = canvas_native_context_is_point_in_path_with_path(
1318
+ this->GetContext(),
1319
+ path->GetPath(), x, y,
1320
+ rust::Str(rule.c_str()));
1321
+ return {ret};
1322
+ }
1323
+ }
1324
+
1325
+ return {false};
1326
+
1327
+ }
1328
+ );
1329
+ } else if (methodName == "isPointInStroke") {
1330
+ return jsi::Function::createFromHostFunction(runtime,
1331
+ jsi::PropNameID::forAscii(runtime, methodName),
1332
+ 3,
1333
+ [this](jsi::Runtime &runtime,
1334
+ const jsi::Value &thisValue,
1335
+ const jsi::Value *arguments,
1336
+ size_t count) -> jsi::Value {
1337
+
1338
+ if (count == 2) {
1339
+ auto x = static_cast<float>(arguments[0].asNumber());
1340
+ auto y = static_cast<float>(arguments[1].asNumber());
1341
+ auto ret = canvas_native_context_is_point_in_stroke(
1342
+ this->GetContext(), x, y);
1343
+ return {ret};
1344
+ } else if (count == 3 &&
1345
+ arguments[0].isObject()) {
1346
+ auto path = getHostObject<Path2D>(
1347
+ runtime, arguments[0]);
1348
+ auto x = static_cast<float>(arguments[1].asNumber());
1349
+ auto y = static_cast<float>(arguments[2].asNumber());
1350
+ if (path != nullptr) {
1351
+ auto ret = canvas_native_context_is_point_in_stroke_with_path(
1352
+ this->GetContext(),
1353
+ path->GetPath(), x,
1354
+ y);
1355
+ return {ret};
1356
+ }
1357
+ }
1358
+
1359
+ return {false};
1360
+
1361
+ }
1362
+ );
1363
+ } else if (methodName == "lineTo") {
1364
+ return jsi::Function::createFromHostFunction(runtime,
1365
+ jsi::PropNameID::forAscii(runtime, methodName),
1366
+ 2,
1367
+ [this](jsi::Runtime &runtime,
1368
+ const jsi::Value &thisValue,
1369
+ const jsi::Value *arguments,
1370
+ size_t count) -> jsi::Value {
1371
+
1372
+ if (count > 1) {
1373
+ auto x = static_cast<float>(arguments[0].asNumber());
1374
+ auto y = static_cast<float>(arguments[1].asNumber());
1375
+ canvas_native_context_line_to(
1376
+ this->GetContext(), x, y);
1377
+ }
1378
+
1379
+ return jsi::Value::undefined();
1380
+
1381
+ }
1382
+ );
1383
+ } else if (methodName == "measureText") {
1384
+ return jsi::Function::createFromHostFunction(runtime,
1385
+ jsi::PropNameID::forAscii(runtime, methodName),
1386
+ 2,
1387
+ [this](jsi::Runtime &runtime,
1388
+ const jsi::Value &thisValue,
1389
+ const jsi::Value *arguments,
1390
+ size_t count) -> jsi::Value {
1391
+
1392
+ auto text = arguments[0].asString(
1393
+ runtime).utf8(
1394
+ runtime);
1395
+ auto metrics = canvas_native_context_measure_text(
1396
+ this->GetContext(),
1397
+ rust::Str(text.c_str()));
1398
+
1399
+ auto object = std::make_shared<TextMetricsImpl>(
1400
+ std::move(metrics));
1401
+
1402
+ return jsi::Object::createFromHostObject(
1403
+ runtime, object);
1404
+ }
1405
+ );
1406
+ } else if (methodName == "moveTo") {
1407
+ return jsi::Function::createFromHostFunction(runtime,
1408
+ jsi::PropNameID::forAscii(runtime, methodName),
1409
+ 2,
1410
+ [this](jsi::Runtime &runtime,
1411
+ const jsi::Value &thisValue,
1412
+ const jsi::Value *arguments,
1413
+ size_t count) -> jsi::Value {
1414
+
1415
+ if (count > 1) {
1416
+ auto x = static_cast<float>(arguments[0].asNumber());
1417
+ auto y = static_cast<float>(arguments[1].asNumber());
1418
+ canvas_native_context_move_to(
1419
+ this->GetContext(), x, y);
1420
+ }
1421
+
1422
+ return jsi::Value::undefined();
1423
+
1424
+ }
1425
+ );
1426
+ } else if (methodName == "putImageData") {
1427
+ return jsi::Function::createFromHostFunction(runtime,
1428
+ jsi::PropNameID::forAscii(runtime, methodName),
1429
+ 7,
1430
+ [this](jsi::Runtime &runtime,
1431
+ const jsi::Value &thisValue,
1432
+ const jsi::Value *arguments,
1433
+ size_t count) -> jsi::Value {
1434
+
1435
+ auto imageData = getHostObject<ImageDataImpl>(
1436
+ runtime, arguments[0]);
1437
+ if (count == 3) {
1438
+ auto dx = static_cast<float>(arguments[1].asNumber());
1439
+ auto dy = static_cast<float>(arguments[2].asNumber());
1440
+ float dirtyX = 0;
1441
+ float dirtyY = 0;
1442
+ auto dirtyWidth = (float) canvas_native_image_data_get_width(
1443
+ imageData->GetImageData());
1444
+ auto dirtyHeight = (float) canvas_native_image_data_get_height(
1445
+ imageData->GetImageData());
1446
+ canvas_native_context_put_image_data(
1447
+ this->GetContext(),
1448
+ imageData->GetImageData(), dx,
1449
+ dy, dirtyX, dirtyY,
1450
+ dirtyWidth, dirtyHeight);
1451
+ this->UpdateInvalidateState();
1452
+ } else if (count == 7) {
1453
+ auto dx = static_cast<float>(arguments[1].asNumber());
1454
+ auto dy = static_cast<float>(arguments[2].asNumber());
1455
+ auto dirtyX = static_cast<float>(arguments[3].asNumber());
1456
+ auto dirtyY = static_cast<float>(arguments[4].asNumber());
1457
+ auto dirtyWidth = static_cast<float>(arguments[5].asNumber());
1458
+ auto dirtyHeight = static_cast<float>(arguments[6].asNumber());
1459
+ canvas_native_context_put_image_data(
1460
+ this->GetContext(),
1461
+ imageData->GetImageData(), dx,
1462
+ dy, dirtyX, dirtyY,
1463
+ dirtyWidth, dirtyHeight);
1464
+ this->UpdateInvalidateState();
1465
+ }
1466
+
1467
+ return jsi::Value::undefined();
1468
+
1469
+ }
1470
+ );
1471
+ } else if (methodName == "quadraticCurveTo") {
1472
+ return jsi::Function::createFromHostFunction(runtime,
1473
+ jsi::PropNameID::forAscii(runtime, methodName),
1474
+ 4,
1475
+ [this](jsi::Runtime &runtime,
1476
+ const jsi::Value &thisValue,
1477
+ const jsi::Value *arguments,
1478
+ size_t count) -> jsi::Value {
1479
+
1480
+ if (count == 4) {
1481
+ auto cpx = static_cast<float>(arguments[0].asNumber());
1482
+ auto cpy = static_cast<float>(arguments[1].asNumber());
1483
+ auto x = static_cast<float>(arguments[2].asNumber());
1484
+ auto y = static_cast<float>(arguments[3].asNumber());
1485
+ canvas_native_context_quadratic_curve_to(
1486
+ this->GetContext(), cpx, cpy,
1487
+ x, y);
1488
+ }
1489
+
1490
+ return jsi::Value::undefined();
1491
+
1492
+ }
1493
+ );
1494
+ } else if (methodName == "roundRect") {
1495
+ return jsi::Function::createFromHostFunction(runtime,
1496
+ jsi::PropNameID::forAscii(runtime, methodName),
1497
+ 4,
1498
+ [this](jsi::Runtime &runtime,
1499
+ const jsi::Value &thisValue,
1500
+ const jsi::Value *arguments,
1501
+ size_t count) -> jsi::Value {
1502
+
1503
+ if (count == 5) {
1504
+ auto x = static_cast<float>(arguments[0].asNumber());
1505
+ auto y = static_cast<float>(arguments[1].asNumber());
1506
+ auto width = static_cast<float>(arguments[2].asNumber());
1507
+ auto height = static_cast<float>(arguments[3].asNumber());
1508
+ if (arguments[4].isObject()) {
1509
+ auto radii = arguments[4].asObject(
1510
+ runtime);
1511
+ if (radii.isArray(runtime)) {
1512
+ auto array = radii.getArray(
1513
+ runtime);
1514
+ auto size = array.size(
1515
+ runtime);
1516
+ if (size > 1) {
1517
+ rust::Vec<float> store;
1518
+ store.reserve(size);
1519
+ for (int i = 0;
1520
+ i < size; i++) {
1521
+ store[i] = (float) array.getValueAtIndex(
1522
+ runtime,
1523
+ i).asNumber();
1524
+ }
1525
+
1526
+ rust::Slice<const float> buf(
1527
+ store.data(),
1528
+ store.size());
1529
+ canvas_native_context_round_rect(
1530
+ this->GetContext(),
1531
+ x, y,
1532
+ width,
1533
+ height, buf);
1534
+
1535
+ }
1536
+ }
1537
+ } else {
1538
+ auto radii = (float) arguments[4].asNumber();
1539
+ canvas_native_context_round_rect_tl_tr_br_bl(
1540
+ this->GetContext(), x, y,
1541
+ width,
1542
+ height, radii, radii,
1543
+ radii, radii);
1544
+
1545
+ }
1546
+ }
1547
+
1548
+ return jsi::Value::undefined();
1549
+
1550
+ }
1551
+ );
1552
+ } else if (methodName == "rect") {
1553
+ return jsi::Function::createFromHostFunction(runtime,
1554
+ jsi::PropNameID::forAscii(runtime, methodName),
1555
+ 4,
1556
+ [this](jsi::Runtime &runtime,
1557
+ const jsi::Value &thisValue,
1558
+ const jsi::Value *arguments,
1559
+ size_t count) -> jsi::Value {
1560
+
1561
+ if (count == 4) {
1562
+ auto x = static_cast<float>(arguments[0].asNumber());
1563
+ auto y = static_cast<float>(arguments[1].asNumber());
1564
+ auto width = static_cast<float>(arguments[2].asNumber());
1565
+ auto height = static_cast<float>(arguments[3].asNumber());
1566
+ canvas_native_context_rect(
1567
+ this->GetContext(), x, y,
1568
+ width,
1569
+ height);
1570
+ }
1571
+
1572
+ return jsi::Value::undefined();
1573
+
1574
+ }
1575
+ );
1576
+ } else if (methodName == "removeHitRegion") {
1577
+ return jsi::Function::createFromHostFunction(runtime,
1578
+ jsi::PropNameID::forAscii(runtime, methodName),
1579
+ 0,
1580
+ [](jsi::Runtime &runtime,
1581
+ const jsi::Value &thisValue,
1582
+ const jsi::Value *arguments,
1583
+ size_t count) -> jsi::Value {
1584
+
1585
+ return jsi::Value::undefined();
1586
+
1587
+ }
1588
+ );
1589
+ } else if (methodName == "resetTransform") {
1590
+ return jsi::Function::createFromHostFunction(runtime,
1591
+ jsi::PropNameID::forAscii(runtime, methodName),
1592
+ 0,
1593
+ [this](jsi::Runtime &runtime,
1594
+ const jsi::Value &thisValue,
1595
+ const jsi::Value *arguments,
1596
+ size_t count) -> jsi::Value {
1597
+ canvas_native_context_reset_transform(
1598
+ this->GetContext());
1599
+ return jsi::Value::undefined();
1600
+
1601
+ }
1602
+ );
1603
+ } else if (methodName == "restore") {
1604
+ return jsi::Function::createFromHostFunction(runtime,
1605
+ jsi::PropNameID::forAscii(runtime, methodName),
1606
+ 0,
1607
+ [this](jsi::Runtime &runtime,
1608
+ const jsi::Value &thisValue,
1609
+ const jsi::Value *arguments,
1610
+ size_t count) -> jsi::Value {
1611
+ canvas_native_context_restore(
1612
+ this->GetContext());
1613
+ return jsi::Value::undefined();
1614
+
1615
+ }
1616
+ );
1617
+ } else if (methodName == "rotate") {
1618
+ return jsi::Function::createFromHostFunction(runtime,
1619
+ jsi::PropNameID::forAscii(runtime, methodName),
1620
+ 1,
1621
+ [this](jsi::Runtime &runtime,
1622
+ const jsi::Value &thisValue,
1623
+ const jsi::Value *arguments,
1624
+ size_t count) -> jsi::Value {
1625
+
1626
+ if (count == 1 &&
1627
+ arguments[0].isNumber()) {
1628
+ canvas_native_context_rotate(
1629
+ this->GetContext(),
1630
+ (float) arguments[0].asNumber());
1631
+ }
1632
+
1633
+ return jsi::Value::undefined();
1634
+
1635
+ }
1636
+ );
1637
+ } else if (methodName == "save") {
1638
+ return jsi::Function::createFromHostFunction(runtime,
1639
+ jsi::PropNameID::forAscii(runtime, methodName),
1640
+ 0,
1641
+ [this](jsi::Runtime &runtime,
1642
+ const jsi::Value &thisValue,
1643
+ const jsi::Value *arguments,
1644
+ size_t count) -> jsi::Value {
1645
+ canvas_native_context_save(
1646
+ this->GetContext());
1647
+ return jsi::Value::undefined();
1648
+
1649
+ }
1650
+ );
1651
+ } else if (methodName == "scale") {
1652
+ return jsi::Function::createFromHostFunction(runtime,
1653
+ jsi::PropNameID::forAscii(runtime, methodName),
1654
+ 2,
1655
+ [this](jsi::Runtime &runtime,
1656
+ const jsi::Value &thisValue,
1657
+ const jsi::Value *arguments,
1658
+ size_t count) -> jsi::Value {
1659
+
1660
+ if (count == 2) {
1661
+ auto x = static_cast<float>(arguments[0].asNumber());
1662
+ auto y = static_cast<float>(arguments[1].asNumber());
1663
+ canvas_native_context_scale(
1664
+ this->GetContext(), x, y);
1665
+ }
1666
+
1667
+ return jsi::Value::undefined();
1668
+ }
1669
+ );
1670
+ } else if (methodName == "scrollPathIntoView") {
1671
+ return jsi::Function::createFromHostFunction(runtime,
1672
+ jsi::PropNameID::forAscii(runtime, methodName),
1673
+ 0,
1674
+ [](jsi::Runtime &runtime,
1675
+ const jsi::Value &thisValue,
1676
+ const jsi::Value *arguments,
1677
+ size_t count) -> jsi::Value {
1678
+ return jsi::Value::undefined();
1679
+
1680
+ }
1681
+ );
1682
+ } else if (methodName == "setLineDash") {
1683
+ return jsi::Function::createFromHostFunction(runtime,
1684
+ jsi::PropNameID::forAscii(runtime, methodName),
1685
+ 1,
1686
+ [this](jsi::Runtime &runtime,
1687
+ const jsi::Value &thisValue,
1688
+ const jsi::Value *arguments,
1689
+ size_t count) -> jsi::Value {
1690
+
1691
+ if (count == 1 &&
1692
+ arguments[0].isObject()) {
1693
+ auto vecObject = arguments[0].asObject(
1694
+ runtime);
1695
+ if (vecObject.isArray(
1696
+ runtime)) {
1697
+ auto segments = vecObject.getArray(
1698
+ runtime);
1699
+ auto len = segments.size(runtime);
1700
+ std::vector<float> data;
1701
+ for (int i = 0; i < len; ++i) {
1702
+ auto item = segments.getValueAtIndex(
1703
+ runtime, i);
1704
+ data.push_back(
1705
+ static_cast<float>(item.asNumber()));
1706
+ }
1707
+ rust::Slice<const float> slice{
1708
+ data.data(), data.size()};
1709
+ canvas_native_context_set_line_dash(
1710
+ this->GetContext(), slice);
1711
+ }
1712
+ }
1713
+ return jsi::Value::undefined();
1714
+
1715
+ }
1716
+ );
1717
+ } else if (methodName == "setTransform") {
1718
+ return jsi::Function::createFromHostFunction(runtime,
1719
+ jsi::PropNameID::forAscii(runtime, methodName),
1720
+ 6,
1721
+ [this](jsi::Runtime &runtime,
1722
+ const jsi::Value &thisValue,
1723
+ const jsi::Value *arguments,
1724
+ size_t count) -> jsi::Value {
1725
+
1726
+
1727
+ if (count == 1 &&
1728
+ arguments[0].isObject()) {
1729
+ auto matrix = getHostObject<MatrixImpl>(
1730
+ runtime, arguments[0]);
1731
+ if (matrix != nullptr) {
1732
+ canvas_native_context_set_transform_matrix(
1733
+ this->GetContext(),
1734
+ matrix->GetMatrix());
1735
+ }
1736
+ } else if (count == 6) {
1737
+ auto a = static_cast<float>(arguments[0].asNumber());
1738
+ auto b = static_cast<float>(arguments[1].asNumber());
1739
+ auto c = static_cast<float>(arguments[2].asNumber());
1740
+ auto d = static_cast<float>(arguments[3].asNumber());
1741
+ auto e = static_cast<float>(arguments[4].asNumber());
1742
+ auto f = static_cast<float>(arguments[5].asNumber());
1743
+ canvas_native_context_set_transform(
1744
+ this->GetContext(), a, b, c, d,
1745
+ e,
1746
+ f);
1747
+ }
1748
+
1749
+ return jsi::Value::undefined();
1750
+
1751
+ }
1752
+ );
1753
+ } else if (methodName == "stroke") {
1754
+ return jsi::Function::createFromHostFunction(runtime,
1755
+ jsi::PropNameID::forAscii(runtime, methodName),
1756
+ 1,
1757
+ [this](jsi::Runtime &runtime,
1758
+ const jsi::Value &thisValue,
1759
+ const jsi::Value *arguments,
1760
+ size_t count) -> jsi::Value {
1761
+
1762
+ if (count == 1 &&
1763
+ arguments[0].isObject()) {
1764
+ auto path = getHostObject<Path2D>(
1765
+ runtime, arguments[0]);
1766
+ if (path != nullptr) {
1767
+ canvas_native_context_stroke_with_path(
1768
+ this->GetContext(),
1769
+ path->GetPath());
1770
+ this->UpdateInvalidateState();
1771
+ }
1772
+ } else {
1773
+ canvas_native_context_stroke(
1774
+ this->GetContext());
1775
+ this->UpdateInvalidateState();
1776
+ }
1777
+
1778
+ return jsi::Value::undefined();
1779
+
1780
+ }
1781
+ );
1782
+ } else if (methodName == "strokeRect") {
1783
+ return jsi::Function::createFromHostFunction(runtime,
1784
+ jsi::PropNameID::forAscii(runtime, methodName),
1785
+ 4,
1786
+ [this](jsi::Runtime &runtime,
1787
+ const jsi::Value &thisValue,
1788
+ const jsi::Value *arguments,
1789
+ size_t count) -> jsi::Value {
1790
+
1791
+ if (count == 4) {
1792
+ auto x = static_cast<float>(arguments[0].asNumber());
1793
+ auto y = static_cast<float>(arguments[1].asNumber());
1794
+ auto width = static_cast<float>(arguments[2].asNumber());
1795
+ auto height = static_cast<float>(arguments[3].asNumber());
1796
+ canvas_native_context_stroke_rect(
1797
+ this->GetContext(), x, y,
1798
+ width,
1799
+ height);
1800
+ this->UpdateInvalidateState();
1801
+ }
1802
+
1803
+ return jsi::Value::undefined();
1804
+
1805
+ }
1806
+ );
1807
+ } else if (methodName == "strokeText") {
1808
+ return jsi::Function::createFromHostFunction(runtime,
1809
+ jsi::PropNameID::forAscii(runtime, methodName),
1810
+ 4,
1811
+ [this](jsi::Runtime &runtime,
1812
+ const jsi::Value &thisValue,
1813
+ const jsi::Value *arguments,
1814
+ size_t count) -> jsi::Value {
1815
+
1816
+ if (count >= 3) {
1817
+ auto text = arguments[0].asString(
1818
+ runtime).utf8(runtime);
1819
+ auto x = static_cast<float>(arguments[1].asNumber());
1820
+ auto y = static_cast<float>(arguments[2].asNumber());
1821
+ float maxWidth = -1;
1822
+
1823
+ if (count > 3) {
1824
+ maxWidth = static_cast<float>(arguments[3].asNumber());
1825
+ }
1826
+
1827
+ canvas_native_context_stroke_text(
1828
+ this->GetContext(),
1829
+ rust::Str(text.c_str()),
1830
+ x, y, maxWidth);
1831
+ this->UpdateInvalidateState();
1832
+ }
1833
+ return jsi::Value::undefined();
1834
+
1835
+ }
1836
+ );
1837
+ } else if (methodName == "transform") {
1838
+ return jsi::Function::createFromHostFunction(runtime,
1839
+ jsi::PropNameID::forAscii(runtime, methodName),
1840
+ 6,
1841
+ [this](jsi::Runtime &runtime,
1842
+ const jsi::Value &thisValue,
1843
+ const jsi::Value *arguments,
1844
+ size_t count) -> jsi::Value {
1845
+
1846
+ if (count == 6) {
1847
+ auto a = static_cast<float>(arguments[0].asNumber());
1848
+ auto b = static_cast<float>(arguments[1].asNumber());
1849
+ auto c = static_cast<float>(arguments[2].asNumber());
1850
+ auto d = static_cast<float>(arguments[3].asNumber());
1851
+ auto e = static_cast<float>(arguments[4].asNumber());
1852
+ auto f = static_cast<float>(arguments[5].asNumber());
1853
+ canvas_native_context_transform(
1854
+ this->GetContext(), a, b, c, d,
1855
+ e,
1856
+ f);
1857
+ }
1858
+
1859
+ return jsi::Value::undefined();
1860
+
1861
+ }
1862
+ );
1863
+ } else if (methodName == "translate") {
1864
+ return jsi::Function::createFromHostFunction(runtime,
1865
+ jsi::PropNameID::forAscii(runtime, methodName),
1866
+ 2,
1867
+ [this](jsi::Runtime &runtime,
1868
+ const jsi::Value &thisValue,
1869
+ const jsi::Value *arguments,
1870
+ size_t count) -> jsi::Value {
1871
+
1872
+ if (count == 2) {
1873
+ auto x = static_cast<float>(arguments[0].asNumber());
1874
+ auto y = static_cast<float>(arguments[1].asNumber());
1875
+ canvas_native_context_translate(
1876
+ this->GetContext(), x, y);
1877
+ }
1878
+
1879
+ return jsi::Value::undefined();
1880
+
1881
+ }
1882
+ );
1883
+ } else if (methodName == "__toDataURL") {
1884
+
1885
+ return jsi::Function::createFromHostFunction(runtime,
1886
+ jsi::PropNameID::forAscii(runtime, methodName),
1887
+ 2,
1888
+ [this](jsi::Runtime &runtime,
1889
+ const jsi::Value &thisValue,
1890
+ const jsi::Value *arguments,
1891
+ size_t count) -> jsi::Value {
1892
+
1893
+ auto format = arguments[0].asString(
1894
+ runtime).utf8(
1895
+ runtime);
1896
+ auto quality = static_cast<int>(arguments[1].getNumber());
1897
+
1898
+
1899
+
1900
+ // auto data = canvas_native_to_data_url(
1901
+ // this->GetContext(), rust::Str(format.c_str()),quality);
1902
+
1903
+
1904
+ auto data = canvas_native_to_data_url_c_string(this->GetContext(), format.c_str(),quality);
1905
+ return jsi::String::createFromAscii(
1906
+ runtime,
1907
+ data.data(),
1908
+ data.size());
1909
+ }
1910
+ );
1911
+ }
1912
+
1913
+
1914
+ return jsi::Value::undefined();
1915
+ }
1916
+
1917
+ CanvasRenderingContext2DImpl::~CanvasRenderingContext2DImpl() {
1918
+ auto raf = this->raf_.get();
1919
+ if (raf != nullptr) {
1920
+ canvas_native_raf_stop(raf->GetRaf());
1921
+ }
1922
+ }
1923
+
1924
+ void CanvasRenderingContext2DImpl::UpdateInvalidateState() {
1925
+ auto raf = this->GetRaf();
1926
+ if (raf != nullptr) {
1927
+ if (!canvas_native_raf_get_started(raf->GetRaf())) {
1928
+ canvas_native_raf_start(raf->GetRaf());
1929
+ }
1930
+ }
1931
+
1932
+ auto state = this->GetInvalidateState();
1933
+ this->SetInvalidateState((int) state | (int) InvalidateState::PENDING);
1934
+ }
1935
+
1936
+ InvalidateState CanvasRenderingContext2DImpl::GetInvalidateState() const {
1937
+ return (InvalidateState)
1938
+ this->invalidateState_;
1939
+ }
1940
+
1941
+ void CanvasRenderingContext2DImpl::SetInvalidateState(InvalidateState state) {
1942
+ this->invalidateState_ = (int) state;
1943
+ }
1944
+
1945
+ void CanvasRenderingContext2DImpl::SetInvalidateState(int state) {
1946
+ this->invalidateState_ = state;
1947
+ }
1948
+
1949
+
1950
+ void CanvasRenderingContext2DImpl::Flush() {
1951
+ auto state = (int) this->GetInvalidateState() & (int) InvalidateState::PENDING;
1952
+ if (state == (int) InvalidateState::PENDING) {
1953
+ // canvas_native_context_flush(this->GetContext());
1954
+ this->SetInvalidateState(InvalidateState::INVALIDATING);
1955
+ canvas_native_context_render(this->GetContext());
1956
+ // canvas_native_context_gl_make_current(this->GetContext());
1957
+ // canvas_native_context_gl_swap_buffers(this->GetContext());
1958
+ this->SetInvalidateState(InvalidateState::NONE);
1959
+ }
1960
+ }
1961
+
1962
+ void CanvasRenderingContext2DImpl::Flush(intptr_t context) {
1963
+ auto ctx = reinterpret_cast<CanvasRenderingContext2DImpl *>(reinterpret_cast<intptr_t *>(context));
1964
+ if (ctx != nullptr) {
1965
+ ctx->Flush();
1966
+ }
1967
+ }
1968
+
1969
+
1970
+ CanvasRenderingContext2D &CanvasRenderingContext2DImpl::GetContext() {
1971
+ return *this->context_;
1972
+ }