@nativescript/canvas 2.0.0-alpha.3 → 2.0.0-alpha.31

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