@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
@@ -0,0 +1,1534 @@
1
+ //
2
+ // Created by Osei Fortune on 25/02/2023.
3
+ //
4
+
5
+ #include "CanvasJSIModule.h"
6
+ #include "JSICallback.h"
7
+ #include "JSIRuntime.h"
8
+ #include "JSIReadFileCallback.h"
9
+ #include "Helpers.h"
10
+
11
+ void CanvasJSIModule::install(v8::Isolate *isolate) {
12
+
13
+ auto context = isolate->GetCurrentContext();
14
+ auto global = context->Global();
15
+
16
+ if (!global->
17
+ HasOwnProperty(context, ConvertToV8String(isolate, "CanvasJSIModule")).FromMaybe(
18
+ false)) {
19
+
20
+
21
+ v8::Locker locker(isolate);
22
+ v8::Isolate::Scope isolate_scope(isolate);
23
+ v8::HandleScope handle_scope(isolate);
24
+
25
+ auto v8Global = context->Global();
26
+
27
+ auto canvasMod = v8::Object::New(isolate);
28
+ TextDecoderImpl::Init(canvasMod, isolate);
29
+ TextEncoderImpl::Init(canvasMod, isolate);
30
+ Path2D::Init(canvasMod, isolate);
31
+ ImageDataImpl::Init(canvasMod, isolate);
32
+ ImageAssetImpl::Init(canvasMod, isolate);
33
+ CanvasGradient::Init(canvasMod, isolate);
34
+ CanvasPattern::Init(canvasMod, isolate);
35
+ MatrixImpl::Init(canvasMod, isolate);
36
+ TextMetricsImpl::Init(canvasMod, isolate);
37
+ URLImpl::Init(canvasMod, isolate);
38
+ v8Global->Set(context, ConvertToV8String(isolate, "CanvasModule"), canvasMod);
39
+ canvasMod->Set(context, ConvertToV8String(isolate, "create2DContext"),
40
+ v8::FunctionTemplate::New(isolate, &Create2DContext)->GetFunction(
41
+ context).ToLocalChecked());
42
+ canvasMod->Set(context, ConvertToV8String(isolate, "createImageBitmap"),
43
+ v8::FunctionTemplate::New(isolate, &CreateImageBitmap)->GetFunction(
44
+ context).ToLocalChecked());
45
+ canvasMod->Set(context, ConvertToV8String(isolate, "create2DContextWithPointer"),
46
+ v8::FunctionTemplate::New(isolate, &Create2DContextWithPointer)->GetFunction(
47
+ context).ToLocalChecked());
48
+ canvasMod->Set(context, ConvertToV8String(isolate, "readFile"),
49
+ v8::FunctionTemplate::New(isolate, &ReadFile)->GetFunction(
50
+ context).ToLocalChecked());
51
+
52
+ canvasMod->Set(context, ConvertToV8String(isolate, "createWebGLContext"),
53
+ v8::FunctionTemplate::New(isolate, &CreateWebGLContext)->GetFunction(
54
+ context).ToLocalChecked());
55
+
56
+ canvasMod->Set(context, ConvertToV8String(isolate, "createWebGL2Context"),
57
+ v8::FunctionTemplate::New(isolate, &CreateWebGL2Context)->GetFunction(
58
+ context).ToLocalChecked());
59
+
60
+ global->Set(context,
61
+ ConvertToV8String(isolate, "CanvasModule"), canvasMod);
62
+
63
+ }
64
+ }
65
+
66
+
67
+ void CanvasJSIModule::Create2DContext(const v8::FunctionCallbackInfo<v8::Value> &args) {
68
+ auto isolate = args.GetIsolate();
69
+ auto context = isolate->GetCurrentContext();
70
+ auto ptr = args[0].As<v8::BigInt>()->Int64Value();
71
+ auto width = (float) args[1]->NumberValue(context).ToChecked();
72
+ auto height = (float) args[2]->NumberValue(context).ToChecked();
73
+ auto density = (float) args[3]->NumberValue(context).ToChecked();
74
+ auto samples = (int) args[4]->NumberValue(context).ToChecked();
75
+ auto alpha = (bool) args[5]->BooleanValue(isolate);
76
+ auto font_color = (int) args[6]->NumberValue(context).ToChecked();
77
+ auto ppi = (float) args[7]->NumberValue(context).ToChecked();
78
+ auto direction = (int) args[8]->NumberValue(context).ToChecked();
79
+
80
+ auto context_2d = canvas_native_context_create_gl(width, height, density,
81
+ ptr,
82
+ samples, alpha,
83
+ font_color, ppi, direction);
84
+
85
+ auto ret = CanvasRenderingContext2DImpl::NewInstance(isolate, new CanvasRenderingContext2DImpl(
86
+ context_2d));
87
+
88
+ args.GetReturnValue().Set(ret);
89
+ }
90
+
91
+ void CanvasJSIModule::CreateImageBitmap(const v8::FunctionCallbackInfo<v8::Value> &args) {
92
+ auto count = args.Length();
93
+ auto isolate = args.GetIsolate();
94
+ auto context = isolate->GetCurrentContext();
95
+
96
+ auto image = args[0];
97
+ auto sx_or_options = args[1];
98
+ auto sy = args[2];
99
+ auto sw = args[3];
100
+ auto sh = args[4];
101
+
102
+ auto len = count - 1;
103
+ auto cb = args[count - 1];
104
+
105
+ if ((len == 1 && !image->IsObject()) || image->IsFunction()) {
106
+ isolate->ThrowError("Illegal constructor");
107
+ return;
108
+ }
109
+
110
+ Options options;
111
+
112
+ if (len == 0) {
113
+ isolate->ThrowError("Illegal constructor");
114
+ return;
115
+ }
116
+
117
+ if (!cb->IsObject() && !cb->IsFunction()) {
118
+ isolate->ThrowError("Illegal constructor");
119
+ return;
120
+ }
121
+
122
+
123
+ if (image->IsNullOrUndefined()) {
124
+ v8::Local<v8::Value> ret[2] = {ConvertToV8String(isolate, "Failed to load image"),
125
+ v8::Undefined(isolate)};
126
+
127
+ cb.As<v8::Function>()->Call(context, context->Global(), 2, ret);
128
+ return;
129
+ }
130
+
131
+ if (len >= 4 && (sw->IsNumber() && sw->IsNumber() == 0)) {
132
+
133
+ v8::Local<v8::Value> ret[2] = {ConvertToV8String(isolate,
134
+ "Failed to execute 'createImageBitmap' : The crop rect width is 0"),
135
+ v8::Undefined(isolate)};
136
+
137
+ cb.As<v8::Function>()->Call(context, context->Global(), 2, ret);
138
+
139
+ return;
140
+ }
141
+ if (len >= 5 && (sh->IsNumber() && sh->IsNumber() == 0)) {
142
+ v8::Local<v8::Value> ret[2] = {ConvertToV8String(isolate,
143
+ "Failed to execute 'createImageBitmap' : The crop rect height is 0"),
144
+ v8::Undefined(isolate)};
145
+
146
+ cb.As<v8::Function>()->Call(context, context->Global(), 2, ret);
147
+ return;
148
+ }
149
+
150
+
151
+ if (image->IsObject()) {
152
+ auto imageObject = image.As<v8::Object>();
153
+ auto isArrayBuffer = imageObject->IsArrayBuffer();
154
+ auto IsArrayBufferView = imageObject->IsArrayBufferView();
155
+ if (isArrayBuffer || IsArrayBufferView) {
156
+
157
+ if (len == 1 || len == 2) {
158
+ if (len == 2) {
159
+ options = ImageBitmapImpl::HandleOptions(isolate, args[1]);
160
+ }
161
+
162
+ auto asset = canvas_native_image_asset_create();
163
+
164
+ auto shared_asset = canvas_native_image_asset_shared_clone(asset);
165
+
166
+ auto ret = new ImageBitmapImpl(asset);
167
+
168
+ auto cbFunc = args[count - 1].As<v8::Function>();
169
+ auto data = v8::External::New(isolate, ret);
170
+
171
+ auto jsi_callback = new JSICallback(isolate, cbFunc, data);
172
+
173
+
174
+ #ifdef __ANDROID__
175
+ ALooper_addFd(jsi_callback->looper_,
176
+ jsi_callback->fd_[0],
177
+ ALOOPER_POLL_CALLBACK,
178
+ ALOOPER_EVENT_INPUT,
179
+ [](int fd, int events,
180
+ void *data) {
181
+ auto cb = static_cast<JSICallback *>(data);
182
+ bool done;
183
+ read(fd, &done,
184
+ sizeof(bool));
185
+
186
+
187
+ v8::Isolate *isolate = cb->isolate_;
188
+ v8::Locker locker(isolate);
189
+ v8::Isolate::Scope isolate_scope(isolate);
190
+ v8::HandleScope handle_scope(isolate);
191
+ v8::Local<v8::Function> callback = cb->callback_->Get(isolate);
192
+ v8::Local<v8::External> cbData = cb->data_->Get(
193
+ isolate).As<v8::External>();
194
+ v8::Local<v8::Context> context = callback->GetCreationContextChecked();
195
+ v8::Context::Scope context_scope(context);
196
+
197
+ auto ret = ImageBitmapImpl::NewInstance(isolate, cbData);
198
+
199
+ v8::Local<v8::Value> args[2];
200
+
201
+ if (done) {
202
+ args[0] = v8::Null(isolate);
203
+ args[1] = ret;
204
+
205
+ } else {
206
+ args[0] = v8::Exception::Error(
207
+ ConvertToV8String(isolate, "Failed to load image"));
208
+ args[1] = v8::Null(isolate);
209
+ }
210
+
211
+
212
+ callback->Call(context, context->Global(), 2, args);
213
+
214
+ delete static_cast<JSICallback *>(data);
215
+ return 0;
216
+ }, jsi_callback);
217
+
218
+ ALooper_wake(jsi_callback->looper_);
219
+
220
+ if (isArrayBuffer) {
221
+ auto arrayBuffer = imageObject.As<v8::ArrayBuffer>();
222
+ auto store = arrayBuffer->GetBackingStore();
223
+ auto dataBuffer = (uint8_t *) store->Data();
224
+ v8::Global<v8::ArrayBuffer> ab(isolate, arrayBuffer);
225
+ std::thread thread(
226
+ [&dataBuffer, jsi_callback, &options, store, shared_asset](
227
+ v8::Global<v8::ArrayBuffer> ab, size_t size) {
228
+
229
+
230
+ auto done = canvas_native_image_bitmap_create_from_encoded_bytes_with_output(
231
+ dataBuffer, size,
232
+ options.flipY,
233
+ options.premultiplyAlpha,
234
+ options.colorSpaceConversion,
235
+ options.resizeQuality,
236
+ options.resizeWidth,
237
+ options.resizeHeight,
238
+ shared_asset);
239
+
240
+ canvas_native_image_asset_destroy(shared_asset);
241
+
242
+ write(jsi_callback->fd_[1],
243
+ &done,
244
+ sizeof(bool));
245
+
246
+
247
+ }, std::move(ab), arrayBuffer->ByteLength());
248
+
249
+ thread.detach();
250
+ return;
251
+ }
252
+
253
+
254
+ auto ta = imageObject.As<v8::ArrayBufferView>();
255
+
256
+
257
+ auto array = ta->Buffer();
258
+ auto offset = ta->ByteOffset();
259
+ auto size = ta->ByteLength();
260
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
261
+
262
+
263
+ v8::Global<v8::ArrayBufferView> ab(isolate, ta);
264
+
265
+ std::thread thread(
266
+ [jsi_callback, &options, shared_asset, data_ptr, size](
267
+ v8::Global<v8::ArrayBufferView> ab) {
268
+
269
+ auto done = canvas_native_image_bitmap_create_from_encoded_bytes_with_output(
270
+ data_ptr, size,
271
+ options.flipY,
272
+ options.premultiplyAlpha,
273
+ options.colorSpaceConversion,
274
+ options.resizeQuality,
275
+ options.resizeWidth,
276
+ options.resizeHeight,
277
+ shared_asset);
278
+
279
+ canvas_native_image_asset_destroy(shared_asset);
280
+
281
+ write(jsi_callback->fd_[1],
282
+ &done,
283
+ sizeof(bool));
284
+
285
+
286
+ }, std::move(ab));
287
+ thread.detach();
288
+
289
+ #endif
290
+
291
+
292
+ #ifdef __APPLE__
293
+
294
+ auto current_queue = new NSOperationQueueWrapper(true);
295
+
296
+
297
+ if (isArrayBuffer) {
298
+ auto arrayBuffer = imageObject.As<v8::ArrayBuffer>();
299
+ auto store = arrayBuffer->GetBackingStore();
300
+ auto dataBuffer = (uint8_t *) store->Data();
301
+ v8::Global<v8::ArrayBuffer> ab(isolate, arrayBuffer);
302
+
303
+ std::thread thread(
304
+ [&dataBuffer, jsi_callback, &options, store, shared_asset, current_queue](
305
+ v8::Global<v8::ArrayBuffer> ab, size_t size
306
+ ) {
307
+
308
+ auto done = canvas_native_image_bitmap_create_from_encoded_bytes_with_output(
309
+ dataBuffer, size,
310
+ options.flipY,
311
+ options.premultiplyAlpha,
312
+ options.colorSpaceConversion,
313
+ options.resizeQuality,
314
+ options.resizeWidth,
315
+ options.resizeHeight,
316
+ shared_asset);
317
+
318
+ canvas_native_image_asset_destroy(shared_asset);
319
+
320
+
321
+ auto main_task = [jsi_callback, current_queue, done]() {
322
+
323
+
324
+ v8::Isolate *isolate = jsi_callback->isolate_;
325
+ v8::Locker locker(isolate);
326
+ v8::Isolate::Scope isolate_scope(isolate);
327
+ v8::HandleScope handle_scope(isolate);
328
+ v8::Local<v8::Function> callback = jsi_callback->callback_->Get(isolate);
329
+ v8::Local<v8::External> cbData = jsi_callback->data_->Get(
330
+ isolate).As<v8::External>();
331
+ v8::Local<v8::Context> context = callback->GetCreationContextChecked();
332
+ v8::Context::Scope context_scope(context);
333
+
334
+ auto ret = ImageBitmapImpl::NewInstance(isolate, cbData);
335
+
336
+ v8::Local<v8::Value> args[2];
337
+
338
+ if (done) {
339
+ args[0] = v8::Null(isolate);
340
+ args[1] = ret;
341
+
342
+ } else {
343
+ args[0] = v8::Exception::Error(
344
+ ConvertToV8String(isolate, "Failed to load image"));
345
+ args[1] = v8::Null(isolate);
346
+ }
347
+
348
+
349
+ callback->Call(context, context->Global(), 2, args);
350
+
351
+
352
+ delete jsi_callback;
353
+ delete current_queue;
354
+
355
+ };
356
+ current_queue->addOperation(main_task);
357
+
358
+ }, std::move(ab), arrayBuffer->ByteLength());
359
+
360
+ thread.detach();
361
+
362
+ return;
363
+ }
364
+
365
+ auto ta = imageObject.As<v8::ArrayBufferView>();
366
+
367
+
368
+ auto array = ta->Buffer();
369
+ auto offset = ta->ByteOffset();
370
+ auto size = ta->ByteLength();
371
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
372
+
373
+
374
+ v8::Global<v8::ArrayBufferView> ab(isolate, ta);
375
+
376
+
377
+ std::thread thread(
378
+ [jsi_callback, &options, shared_asset, data_ptr, size, current_queue](
379
+ v8::Global<v8::ArrayBufferView> ab
380
+ ) {
381
+
382
+ auto done = canvas_native_image_bitmap_create_from_encoded_bytes_with_output(
383
+ data_ptr, size,
384
+ options.flipY,
385
+ options.premultiplyAlpha,
386
+ options.colorSpaceConversion,
387
+ options.resizeQuality,
388
+ options.resizeWidth,
389
+ options.resizeHeight,
390
+ shared_asset);
391
+
392
+ canvas_native_image_asset_destroy(shared_asset);
393
+
394
+ auto main_task = [jsi_callback, current_queue, done]() {
395
+
396
+
397
+ v8::Isolate *isolate = jsi_callback->isolate_;
398
+ v8::Locker locker(isolate);
399
+ v8::Isolate::Scope isolate_scope(isolate);
400
+ v8::HandleScope handle_scope(isolate);
401
+ v8::Local<v8::Function> callback = jsi_callback->callback_->Get(isolate);
402
+ v8::Local<v8::External> cbData = jsi_callback->data_->Get(
403
+ isolate).As<v8::External>();
404
+ v8::Local<v8::Context> context = callback->GetCreationContextChecked();
405
+ v8::Context::Scope context_scope(context);
406
+
407
+ auto ret = ImageBitmapImpl::NewInstance(isolate, cbData);
408
+
409
+ v8::Local<v8::Value> args[2];
410
+
411
+ if (done) {
412
+ args[0] = v8::Null(isolate);
413
+ args[1] = ret;
414
+ } else {
415
+ args[0] = v8::Exception::Error(
416
+ ConvertToV8String(isolate, "Failed to load image"));
417
+ args[1] = v8::Null(isolate);
418
+ }
419
+
420
+ callback->Call(context, context->Global(), 2, args);
421
+
422
+
423
+ delete jsi_callback;
424
+ delete current_queue;
425
+
426
+ };
427
+ current_queue->addOperation(main_task);
428
+
429
+
430
+
431
+ }, std::move(ab));
432
+ thread.detach();
433
+
434
+ #endif
435
+
436
+ return;
437
+ } else if (len == 5 || len == 6) {
438
+ auto asset = canvas_native_image_asset_create();
439
+
440
+ auto shared_asset = canvas_native_image_asset_shared_clone(asset);
441
+
442
+ auto ret = new ImageBitmapImpl(asset);
443
+
444
+ auto cbFunc = args[count - 1].As<v8::Function>();
445
+ auto data = v8::External::New(isolate, ret);
446
+ if (len == 6) {
447
+ options = ImageBitmapImpl::HandleOptions(isolate, args[5]);
448
+ }
449
+
450
+ auto jsi_callback = new JSICallback(isolate, cbFunc, data);
451
+
452
+
453
+ #ifdef __ANDROID__
454
+ ALooper_addFd(jsi_callback->looper_,
455
+ jsi_callback->fd_[0],
456
+ ALOOPER_POLL_CALLBACK,
457
+ ALOOPER_EVENT_INPUT,
458
+ [](int fd, int events,
459
+ void *data) {
460
+ auto cb = static_cast<JSICallback *>(data);
461
+ bool done;
462
+ read(fd, &done,
463
+ sizeof(bool));
464
+
465
+ v8::Isolate *isolate = cb->isolate_;
466
+ v8::Locker locker(isolate);
467
+ v8::Isolate::Scope isolate_scope(isolate);
468
+ v8::HandleScope handle_scope(isolate);
469
+ v8::Local<v8::Function> callback = cb->callback_->Get(isolate);
470
+ v8::Local<v8::External> cbData = cb->data_->Get(
471
+ isolate).As<v8::External>();
472
+ v8::Local<v8::Context> context = callback->GetCreationContextChecked();
473
+ v8::Context::Scope context_scope(context);
474
+
475
+ auto ret = ImageBitmapImpl::NewInstance(isolate, cbData);
476
+
477
+ v8::Local<v8::Value> args[2];
478
+
479
+ if (done) {
480
+ args[0] = v8::Null(isolate);
481
+ args[1] = ret;
482
+ } else {
483
+ args[0] = v8::Exception::Error(
484
+ ConvertToV8String(isolate, "Failed to load image"));
485
+ args[1] = v8::Null(isolate);
486
+ }
487
+
488
+ callback->Call(context, context->Global(), 2, args);
489
+
490
+ delete static_cast<JSICallback *>(data);
491
+ return 0;
492
+ }, jsi_callback);
493
+
494
+ ALooper_wake(jsi_callback->looper_);
495
+
496
+ auto bufferValue = args[0];
497
+
498
+ if (isArrayBuffer) {
499
+ auto arrayBuffer = bufferValue.As<v8::ArrayBuffer>();
500
+ auto dataBuffer = (uint8_t *) arrayBuffer->GetBackingStore()->Data();
501
+ v8::Global<v8::ArrayBuffer> ab(isolate, arrayBuffer);
502
+ std::thread thread(
503
+ [&dataBuffer, jsi_callback, &options, shared_asset](
504
+ float sx_or_options,
505
+ float sy,
506
+ float sw,
507
+ float sh,
508
+ v8::Global<v8::ArrayBuffer> ab,
509
+ size_t size
510
+ ) {
511
+
512
+ auto done = canvas_native_image_bitmap_create_from_encoded_bytes_src_rect_with_output(
513
+ dataBuffer, size,
514
+ sx_or_options,
515
+ sy,
516
+ sw,
517
+ sh,
518
+ options.flipY,
519
+ options.premultiplyAlpha,
520
+ options.colorSpaceConversion,
521
+ options.resizeQuality,
522
+ options.resizeWidth,
523
+ options.resizeHeight, shared_asset);
524
+
525
+ canvas_native_image_asset_destroy(shared_asset);
526
+
527
+
528
+ write(jsi_callback->fd_[1],
529
+ &done,
530
+ sizeof(bool));
531
+
532
+ },
533
+ (float) sx_or_options->NumberValue(context).ToChecked(),
534
+ (float) sy->NumberValue(context).ToChecked(),
535
+ (float) sw->NumberValue(context).ToChecked(),
536
+ (float) sh->NumberValue(context).ToChecked(), std::move(ab),
537
+ arrayBuffer->ByteLength());
538
+
539
+ thread.detach();
540
+
541
+ return;
542
+ }
543
+
544
+ auto ta = bufferValue.As<v8::ArrayBufferView>();
545
+
546
+ auto array = ta->Buffer();
547
+ auto offset = ta->ByteOffset();
548
+ auto size = ta->ByteLength();
549
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
550
+
551
+
552
+ v8::Global<v8::ArrayBufferView> ab(isolate, ta);
553
+ std::thread thread(
554
+ [jsi_callback, &options, shared_asset, data_ptr, size](
555
+ float sx_or_options,
556
+ float sy,
557
+ float sw,
558
+ float sh,
559
+ v8::Global<v8::ArrayBufferView> ab
560
+ ) {
561
+
562
+ auto done = canvas_native_image_bitmap_create_from_encoded_bytes_src_rect_with_output(
563
+ data_ptr, size,
564
+ sx_or_options,
565
+ sy,
566
+ sw,
567
+ sh,
568
+ options.flipY,
569
+ options.premultiplyAlpha,
570
+ options.colorSpaceConversion,
571
+ options.resizeQuality,
572
+ options.resizeWidth,
573
+ options.resizeHeight, shared_asset);
574
+
575
+ canvas_native_image_asset_destroy(shared_asset);
576
+
577
+
578
+ write(jsi_callback->fd_[1],
579
+ &done,
580
+ sizeof(bool));
581
+
582
+ },
583
+ (float) sx_or_options->NumberValue(context).ToChecked(),
584
+ (float) sy->NumberValue(context).ToChecked(),
585
+ (float) sw->NumberValue(context).ToChecked(),
586
+ (float) sh->NumberValue(context).ToChecked(), std::move(ab));
587
+ thread.detach();
588
+
589
+ #endif
590
+
591
+ #ifdef __APPLE__
592
+
593
+ auto current_queue = new NSOperationQueueWrapper(true);
594
+
595
+
596
+ auto bufferValue = args[0];
597
+
598
+ if (isArrayBuffer) {
599
+ auto arrayBuffer = bufferValue.As<v8::ArrayBuffer>();
600
+ auto dataBuffer = (uint8_t *) arrayBuffer->GetBackingStore()->Data();
601
+ v8::Global<v8::ArrayBuffer> ab(isolate, arrayBuffer);
602
+ std::thread thread(
603
+ [&dataBuffer, jsi_callback, &options, shared_asset, current_queue](
604
+ float sx_or_options,
605
+ float sy,
606
+ float sw,
607
+ float sh,
608
+ v8::Global<v8::ArrayBuffer> ab,
609
+ size_t size
610
+ ) {
611
+
612
+ auto done = canvas_native_image_bitmap_create_from_encoded_bytes_src_rect_with_output(
613
+ dataBuffer, size,
614
+ sx_or_options,
615
+ sy,
616
+ sw,
617
+ sh,
618
+ options.flipY,
619
+ options.premultiplyAlpha,
620
+ options.colorSpaceConversion,
621
+ options.resizeQuality,
622
+ options.resizeWidth,
623
+ options.resizeHeight, shared_asset);
624
+
625
+ canvas_native_image_asset_destroy(shared_asset);
626
+
627
+
628
+ auto main_task = [jsi_callback, current_queue, done]() {
629
+
630
+
631
+ v8::Isolate *isolate = jsi_callback->isolate_;
632
+ v8::Locker locker(isolate);
633
+ v8::Isolate::Scope isolate_scope(isolate);
634
+ v8::HandleScope handle_scope(isolate);
635
+ v8::Local<v8::Function> callback = jsi_callback->callback_->Get(isolate);
636
+ v8::Local<v8::External> cbData = jsi_callback->data_->Get(
637
+ isolate).As<v8::External>();
638
+ v8::Local<v8::Context> context = callback->GetCreationContextChecked();
639
+ v8::Context::Scope context_scope(context);
640
+
641
+ auto ret = ImageBitmapImpl::GetCtor(isolate)->GetFunction(
642
+ context).ToLocalChecked()->NewInstance(
643
+ context).ToLocalChecked();
644
+
645
+ SetNativeType(isolate, ret, NativeType::ImageBitmap);
646
+
647
+ ret->SetInternalField(0, cbData);
648
+
649
+ v8::Local<v8::Value> args[2];
650
+
651
+ if (done) {
652
+ args[0] = v8::Null(isolate);
653
+ args[1] = ret;
654
+ } else {
655
+ args[0] = v8::Exception::Error(
656
+ ConvertToV8String(isolate, "Failed to load image"));
657
+ args[1] = v8::Null(isolate);
658
+ }
659
+
660
+ callback->Call(context, context->Global(), 2, args);
661
+
662
+
663
+ delete jsi_callback;
664
+ delete current_queue;
665
+
666
+ };
667
+ current_queue->addOperation(main_task);
668
+
669
+ },
670
+ (float) sx_or_options->NumberValue(context).ToChecked(),
671
+ (float) sy->NumberValue(context).ToChecked(),
672
+ (float) sw->NumberValue(context).ToChecked(),
673
+ (float) sh->NumberValue(context).ToChecked(),
674
+ std::move(ab),
675
+ arrayBuffer->ByteLength());
676
+
677
+ thread.detach();
678
+
679
+ return;
680
+ }
681
+
682
+ auto ta = bufferValue.As<v8::ArrayBufferView>();
683
+
684
+ auto array = ta->Buffer();
685
+ auto offset = ta->ByteOffset();
686
+ auto size = ta->ByteLength();
687
+ auto data_ptr = static_cast<uint8_t*>(array->GetBackingStore()->Data()) + offset;
688
+
689
+
690
+
691
+ v8::Global<v8::ArrayBufferView> ab(isolate, ta);
692
+ std::thread thread(
693
+ [jsi_callback, &options, data_ptr, size, shared_asset, current_queue](
694
+ float sx_or_options,
695
+ float sy,
696
+ float sw,
697
+ float sh,
698
+ v8::Global<v8::ArrayBufferView> ab
699
+ ) {
700
+
701
+ auto done = canvas_native_image_bitmap_create_from_encoded_bytes_src_rect_with_output(
702
+ data_ptr, size,
703
+ sx_or_options,
704
+ sy,
705
+ sw,
706
+ sh,
707
+ options.flipY,
708
+ options.premultiplyAlpha,
709
+ options.colorSpaceConversion,
710
+ options.resizeQuality,
711
+ options.resizeWidth,
712
+ options.resizeHeight, shared_asset);
713
+
714
+ canvas_native_image_asset_destroy(shared_asset);
715
+
716
+ auto main_task = [jsi_callback, current_queue, done]() {
717
+
718
+
719
+ v8::Isolate *isolate = jsi_callback->isolate_;
720
+ v8::Locker locker(isolate);
721
+ v8::Isolate::Scope isolate_scope(isolate);
722
+ v8::HandleScope handle_scope(isolate);
723
+ v8::Local<v8::Function> callback = jsi_callback->callback_->Get(isolate);
724
+ v8::Local<v8::External> cbData = jsi_callback->data_->Get(
725
+ isolate).As<v8::External>();
726
+ v8::Local<v8::Context> context = callback->GetCreationContextChecked();
727
+ v8::Context::Scope context_scope(context);
728
+
729
+ auto ret = ImageBitmapImpl::NewInstance(isolate, cbData);
730
+
731
+ v8::Local<v8::Value> args[2];
732
+
733
+ if (done) {
734
+ args[0] = v8::Null(isolate);
735
+ args[1] = ret;
736
+ } else {
737
+ args[0] = v8::Exception::Error(
738
+ ConvertToV8String(isolate, "Failed to load image"));
739
+ args[1] = v8::Null(isolate);
740
+ }
741
+
742
+ callback->Call(context, context->Global(), 2, args);
743
+
744
+
745
+ delete jsi_callback;
746
+ delete current_queue;
747
+
748
+ };
749
+ current_queue->addOperation(main_task);
750
+
751
+
752
+
753
+ },
754
+ (float) sx_or_options->NumberValue(context).ToChecked(),
755
+ (float) sy->NumberValue(context).ToChecked(),
756
+ (float) sw->NumberValue(context).ToChecked(),
757
+ (float) sh->NumberValue(context).ToChecked(), std::move(ab));
758
+ thread.detach();
759
+
760
+
761
+
762
+ #endif
763
+
764
+
765
+ return;
766
+ }
767
+ }
768
+ }
769
+
770
+ auto type = GetNativeType(isolate, image);
771
+
772
+ if (len == 1 || len == 2) {
773
+ if (len == 2) {
774
+ options = ImageBitmapImpl::HandleOptions(isolate, args[1]);
775
+ }
776
+
777
+ v8::Local<v8::Value> retArgs[2];
778
+ retArgs[0] = v8::Null(isolate);
779
+
780
+ switch (type) {
781
+ case NativeType::ImageAsset: {
782
+ auto image_asset = ImageAssetImpl::GetPointer(image.As<v8::Object>());
783
+ auto ret = canvas_native_image_bitmap_create_from_asset(
784
+ image_asset->GetImageAsset(),
785
+ options.flipY,
786
+ options.premultiplyAlpha,
787
+ options.colorSpaceConversion,
788
+ options.resizeQuality,
789
+ options.resizeWidth,
790
+ options.resizeHeight);
791
+
792
+
793
+ auto bitmap = new ImageBitmapImpl(ret);
794
+ auto data = v8::External::New(isolate, bitmap);
795
+
796
+ auto object = ImageBitmapImpl::NewInstance(isolate, data);
797
+
798
+ retArgs[1] = object;
799
+ }
800
+ break;
801
+ case NativeType::ImageBitmap: {
802
+ auto image_bitmap = ImageBitmapImpl::GetPointer(image.As<v8::Object>());
803
+ auto ret = canvas_native_image_bitmap_create_from_asset(
804
+ image_bitmap->GetImageAsset(),
805
+ options.flipY,
806
+ options.premultiplyAlpha,
807
+ options.colorSpaceConversion,
808
+ options.resizeQuality,
809
+ options.resizeWidth,
810
+ options.resizeHeight);
811
+
812
+
813
+ auto bitmap = new ImageBitmapImpl(ret);
814
+ auto data = v8::External::New(isolate, bitmap);
815
+ auto object = ImageBitmapImpl::NewInstance(isolate, data);
816
+
817
+ retArgs[1] = object;
818
+
819
+ }
820
+ break;
821
+ default:
822
+ break;
823
+ }
824
+
825
+ cb.As<v8::Function>()->Call(context, context->Global(), 2, retArgs);
826
+
827
+ return;
828
+ } else if (len == 5 || len == 6) {
829
+
830
+ if (len == 6) {
831
+ options = ImageBitmapImpl::HandleOptions(isolate, args[5]);
832
+ }
833
+
834
+ v8::Local<v8::Value> retArgs[2];
835
+ retArgs[0] = v8::Null(isolate);
836
+
837
+
838
+ switch (type) {
839
+ case NativeType::ImageAsset: {
840
+ auto image_asset = ImageBitmapImpl::GetPointer(image.As<v8::Object>());
841
+ auto ret = canvas_native_image_bitmap_create_from_asset_src_rect(
842
+ image_asset->GetImageAsset(),
843
+ (float) sx_or_options->NumberValue(context).ToChecked(),
844
+ (float) sy->NumberValue(context).ToChecked(),
845
+ (float) sw->NumberValue(context).ToChecked(),
846
+ (float) sh->NumberValue(context).ToChecked(),
847
+ options.flipY,
848
+ options.premultiplyAlpha,
849
+ options.colorSpaceConversion,
850
+ options.resizeQuality,
851
+ options.resizeWidth,
852
+ options.resizeHeight);
853
+
854
+
855
+ auto bitmap = new ImageBitmapImpl(ret);
856
+ auto data = v8::External::New(isolate, bitmap);
857
+ auto object = ImageBitmapImpl::NewInstance(isolate, data);
858
+
859
+ retArgs[1] = object;
860
+ }
861
+ break;
862
+ case NativeType::ImageBitmap: {
863
+ auto image_bitmap = ImageBitmapImpl::GetPointer(image.As<v8::Object>());
864
+ auto ret = canvas_native_image_bitmap_create_from_asset_src_rect(
865
+ image_bitmap->GetImageAsset(),
866
+ (float) sx_or_options->NumberValue(context).ToChecked(),
867
+ (float) sy->NumberValue(context).ToChecked(),
868
+ (float) sw->NumberValue(context).ToChecked(),
869
+ (float) sh->NumberValue(context).ToChecked(),
870
+ options.flipY,
871
+ options.premultiplyAlpha,
872
+ options.colorSpaceConversion,
873
+ options.resizeQuality,
874
+ options.resizeWidth,
875
+ options.resizeHeight);
876
+
877
+
878
+ auto bitmap = new ImageBitmapImpl(ret);
879
+ auto data = v8::External::New(isolate, bitmap);
880
+ auto object = ImageBitmapImpl::NewInstance(isolate, data);
881
+
882
+ retArgs[1] = object;
883
+
884
+ }
885
+ break;
886
+ default:
887
+ break;
888
+ }
889
+
890
+
891
+ cb.As<v8::Function>()->Call(context, context->Global(), 2, retArgs);
892
+
893
+ return;
894
+ }
895
+
896
+
897
+ args.GetReturnValue().SetUndefined();
898
+
899
+ }
900
+
901
+ void CanvasJSIModule::Create2DContextWithPointer(const v8::FunctionCallbackInfo<v8::Value> &args) {
902
+ auto isolate = args.GetIsolate();
903
+ auto context = isolate->GetCurrentContext();
904
+ auto ptr = args[0]->ToBigInt(context).ToLocalChecked()->Int64Value();
905
+
906
+ auto context_2d = canvas_native_context_create_with_pointer(ptr);
907
+
908
+ auto ret = CanvasRenderingContext2DImpl::NewInstance(isolate, new CanvasRenderingContext2DImpl(
909
+ context_2d));
910
+ args.GetReturnValue().Set(ret);
911
+ }
912
+
913
+ void CanvasJSIModule::ReadFile(const v8::FunctionCallbackInfo<v8::Value> &args) {
914
+ auto isolate = args.GetIsolate();
915
+ auto file = ConvertFromV8String(isolate, args[0]);
916
+ auto cbFunc = args[1].As<v8::Function>();
917
+
918
+ auto jsi_callback = new JSIReadFileCallback(isolate, cbFunc);
919
+
920
+ #ifdef __ANDROID__
921
+ ALooper_addFd(jsi_callback->looper_,
922
+ jsi_callback->fd_[0],
923
+ ALOOPER_POLL_CALLBACK,
924
+ ALOOPER_EVENT_INPUT,
925
+ [](int fd, int events,
926
+ void *data) {
927
+
928
+ auto cb = static_cast<JSIReadFileCallback *>(data);
929
+ bool done;
930
+ read(fd, &done,
931
+ sizeof(bool));
932
+
933
+ if (cb->data_ == nullptr) {
934
+ return 1;
935
+ }
936
+
937
+ v8::Isolate *isolate = cb->isolate_;
938
+ v8::Locker locker(isolate);
939
+ v8::Isolate::Scope isolate_scope(isolate);
940
+ v8::HandleScope handle_scope(isolate);
941
+ v8::Local<v8::Function> callback = cb->callback_.Get(isolate);
942
+ v8::Local<v8::Context> context = callback->GetCreationContextChecked();
943
+ v8::Context::Scope context_scope(context);
944
+
945
+ v8::Local<v8::Value> args[2];
946
+
947
+ if (done) {
948
+ args[0] = v8::Null(isolate);
949
+
950
+ auto vec = cb->data_;
951
+
952
+ auto buf = (void *) canvas_native_u8_buffer_get_bytes_mut(vec);
953
+ auto size = (size_t) canvas_native_u8_buffer_get_length(vec);
954
+
955
+ auto store = v8::ArrayBuffer::NewBackingStore(buf, size,
956
+ [](void *data,
957
+ size_t length,
958
+ void *deleter_data) {
959
+ if (deleter_data !=
960
+ nullptr) {
961
+ // a little extreme :'D
962
+ delete static_cast<JSIReadFileCallback *>(deleter_data);
963
+ }
964
+ },
965
+ data);
966
+
967
+ args[1] = v8::ArrayBuffer::New(isolate, std::move(store));
968
+ } else {
969
+ auto error = cb->error_;
970
+ args[0] = v8::Exception::Error(ConvertToV8String(isolate, error));
971
+ args[1] = v8::Null(isolate);
972
+ }
973
+
974
+ v8::TryCatch tc(isolate);
975
+ v8::Local<v8::Value> result;
976
+ if (!callback->Call(context, context->Global(), 2, args).ToLocal(
977
+ &result)) {
978
+ if (tc.HasCaught()) {
979
+
980
+ v8::Local<v8::Value> stack;
981
+ bool success = tc.StackTrace(context).ToLocal(&stack);
982
+ if (!success || stack.IsEmpty()) {
983
+ if (!done) {
984
+ delete cb;
985
+ }
986
+ return 0;
987
+ }
988
+
989
+ v8::Local<v8::String> stackV8Str;
990
+ success = stack->ToDetailString(context).ToLocal(&stackV8Str);
991
+ if (!success || stackV8Str.IsEmpty()) {
992
+ if (!done) {
993
+ delete cb;
994
+ }
995
+ return 0;
996
+ }
997
+ LogToConsole(ConvertFromV8String(isolate, stackV8Str));
998
+
999
+ }
1000
+ }
1001
+
1002
+ if (!done) {
1003
+ delete cb;
1004
+ }
1005
+ return 0;
1006
+ }, jsi_callback);
1007
+
1008
+ ALooper_wake(jsi_callback->looper_);
1009
+
1010
+ std::thread thread(
1011
+ [jsi_callback](const std::string &file) {
1012
+ bool done = false;
1013
+ auto ret = canvas_native_helper_read_file(file.c_str());
1014
+
1015
+ if (!canvas_native_helper_read_file_has_error(ret)) {
1016
+ auto buf = canvas_native_helper_read_file_get_data(ret);
1017
+
1018
+ jsi_callback->SetData(buf);
1019
+
1020
+ done = true;
1021
+ } else {
1022
+ auto error = canvas_native_helper_read_file_get_error(ret);
1023
+
1024
+ jsi_callback->SetError(const_cast<char *>(error));
1025
+ }
1026
+ canvas_native_helper_destroy(ret);
1027
+
1028
+ write(jsi_callback->fd_[1],
1029
+ &done,
1030
+ sizeof(bool));
1031
+
1032
+ }, std::move(file));
1033
+
1034
+ thread.detach();
1035
+
1036
+ #endif
1037
+
1038
+
1039
+ #ifdef __APPLE__
1040
+
1041
+ auto current_queue = new NSOperationQueueWrapper(true);
1042
+
1043
+ auto queue = new NSOperationQueueWrapper(false);
1044
+
1045
+ auto task = [jsi_callback, current_queue, queue, file]() {
1046
+
1047
+
1048
+
1049
+ bool done = false;
1050
+ auto ret = canvas_native_helper_read_file(file.c_str());
1051
+
1052
+ if (!canvas_native_helper_read_file_has_error(ret)) {
1053
+ auto buf = canvas_native_helper_read_file_get_data(ret);
1054
+
1055
+ jsi_callback->SetData(buf);
1056
+
1057
+ done = true;
1058
+ } else {
1059
+ auto error = canvas_native_helper_read_file_get_error(ret);
1060
+
1061
+ jsi_callback->SetError((char*)error);
1062
+ }
1063
+
1064
+ canvas_native_helper_destroy(ret);
1065
+
1066
+ auto main_task = [jsi_callback, current_queue, queue, done]() {
1067
+
1068
+ v8::Isolate *isolate = jsi_callback->isolate_;
1069
+ v8::Locker locker(isolate);
1070
+ v8::Isolate::Scope isolate_scope(isolate);
1071
+ v8::HandleScope handle_scope(isolate);
1072
+ v8::Local<v8::Function> callback = jsi_callback->callback_.Get(isolate);
1073
+ v8::Local<v8::Context> context = callback->GetCreationContextChecked();
1074
+ v8::Context::Scope context_scope(context);
1075
+
1076
+ v8::Local<v8::Value> args[2];
1077
+
1078
+ if (done) {
1079
+ args[0] = v8::Null(isolate);
1080
+
1081
+ auto vec = jsi_callback->data_;
1082
+
1083
+
1084
+ auto buf = (void*)canvas_native_u8_buffer_get_bytes_mut(vec);
1085
+
1086
+ auto size = (size_t)canvas_native_u8_buffer_get_length(vec);
1087
+
1088
+ auto store = v8::ArrayBuffer::NewBackingStore(buf, size,
1089
+ [](void *data,
1090
+ size_t length,
1091
+ void *deleter_data) {
1092
+ if (deleter_data !=
1093
+ nullptr) {
1094
+ // a little extreme :'D
1095
+ delete static_cast<JSIReadFileCallback *>(deleter_data);
1096
+ }
1097
+ },
1098
+ jsi_callback);
1099
+
1100
+ args[1] = v8::ArrayBuffer::New(isolate, std::move(store));
1101
+ } else {
1102
+ auto error = jsi_callback->error_;
1103
+ args[0] = v8::Exception::Error(ConvertToV8String(isolate, error));
1104
+ args[1] = v8::Null(isolate);
1105
+ }
1106
+
1107
+ v8::TryCatch tc(isolate);
1108
+ v8::Local<v8::Value> result;
1109
+ if (!callback->Call(context, context->Global(), 2, args).ToLocal(
1110
+ &result)) {
1111
+ if (tc.HasCaught()) {
1112
+
1113
+ v8::Local<v8::Value> stack;
1114
+ bool success = tc.StackTrace(context).ToLocal(&stack);
1115
+ if (!success || stack.IsEmpty()) {
1116
+ if (!done) {
1117
+ delete jsi_callback;
1118
+ }
1119
+ return;
1120
+ }
1121
+
1122
+ v8::Local<v8::String> stackV8Str;
1123
+ success = stack->ToDetailString(context).ToLocal(&stackV8Str);
1124
+ if (!success || stackV8Str.IsEmpty()) {
1125
+ if (!done) {
1126
+ delete jsi_callback;
1127
+ }
1128
+ return;
1129
+ }
1130
+ LogToConsole(ConvertFromV8String(isolate, stackV8Str));
1131
+
1132
+ }
1133
+ }
1134
+
1135
+ if (!done) {
1136
+ delete jsi_callback;
1137
+ }
1138
+
1139
+ delete queue;
1140
+ delete current_queue;
1141
+
1142
+ };
1143
+ current_queue->addOperation(main_task);
1144
+ };
1145
+
1146
+ queue->addOperation(task);
1147
+ #endif
1148
+
1149
+
1150
+ }
1151
+
1152
+ void CanvasJSIModule::CreateWebGLContext(const v8::FunctionCallbackInfo<v8::Value> &args) {
1153
+ auto configValue = args[0];
1154
+ auto isolate = args.GetIsolate();
1155
+ auto context = isolate->GetCurrentContext();
1156
+ if (!configValue->IsNullOrUndefined() && configValue->IsObject()) {
1157
+ auto config = configValue.As<v8::Object>();
1158
+ std::string version("none");
1159
+ auto alpha = true;
1160
+ auto antialias = true;
1161
+ auto depth = true;
1162
+ auto fail_if_major_performance_caveat = false;
1163
+ std::string power_preference("default");
1164
+ auto premultiplied_alpha = true;
1165
+ auto preserve_drawing_buffer = false;
1166
+ auto stencil = false;
1167
+ auto desynchronized = false;
1168
+ auto xr_compatible = false;
1169
+
1170
+ v8::Local<v8::Value> versionValue;
1171
+
1172
+ config->Get(context, ConvertToV8String(isolate, "version")).ToLocal(&versionValue);
1173
+
1174
+ if (!versionValue.IsEmpty() && versionValue->IsString()) {
1175
+ version = ConvertFromV8String(isolate, versionValue);
1176
+ }
1177
+
1178
+ v8::Local<v8::Value> alphaValue;
1179
+
1180
+ config->Get(context, ConvertToV8String(isolate, "alpha")).ToLocal(&alphaValue);
1181
+ if (!alphaValue.IsEmpty() && alphaValue->IsBoolean()) {
1182
+ alpha = alphaValue->BooleanValue(isolate);
1183
+ }
1184
+
1185
+ v8::Local<v8::Value> antialiasValue;
1186
+ config->Get(context, ConvertToV8String(isolate, "antialias")).ToLocal(&antialiasValue);
1187
+ if (!antialiasValue.IsEmpty() && antialiasValue->IsBoolean()) {
1188
+ antialias = antialiasValue->BooleanValue(isolate);
1189
+ }
1190
+
1191
+ v8::Local<v8::Value> failIfMajorPerformanceCaveatValue;
1192
+ config->Get(context,
1193
+ ConvertToV8String(isolate, "failIfMajorPerformanceCaveat")).ToLocal(
1194
+ &failIfMajorPerformanceCaveatValue);
1195
+ if (!failIfMajorPerformanceCaveatValue.IsEmpty() &&
1196
+ failIfMajorPerformanceCaveatValue->IsBoolean()) {
1197
+ fail_if_major_performance_caveat = failIfMajorPerformanceCaveatValue->BooleanValue(
1198
+ isolate);
1199
+ }
1200
+
1201
+ v8::Local<v8::Value> powerPreferenceValue;
1202
+ config->Get(context, ConvertToV8String(isolate, "powerPreference")).ToLocal(
1203
+ &powerPreferenceValue);
1204
+ if (!powerPreferenceValue.IsEmpty() && powerPreferenceValue->IsString()) {
1205
+ power_preference = ConvertFromV8String(isolate, powerPreferenceValue);
1206
+ }
1207
+
1208
+ v8::Local<v8::Value> premultipliedAlphaValue;
1209
+ config->Get(context,
1210
+ ConvertToV8String(isolate, "premultipliedAlpha")).ToLocal(
1211
+ &premultipliedAlphaValue);
1212
+ if (!premultipliedAlphaValue.IsEmpty() && premultipliedAlphaValue->IsBoolean()) {
1213
+ premultiplied_alpha = premultipliedAlphaValue->BooleanValue(isolate);
1214
+ }
1215
+
1216
+ v8::Local<v8::Value> preserveDrawingBufferValue;
1217
+ config->Get(context,
1218
+ ConvertToV8String(isolate, "preserveDrawingBuffer")).ToLocal(
1219
+ &preserveDrawingBufferValue);
1220
+ if (!preserveDrawingBufferValue.IsEmpty() && preserveDrawingBufferValue->IsBoolean()) {
1221
+ preserve_drawing_buffer = preserveDrawingBufferValue->BooleanValue(isolate);
1222
+ }
1223
+
1224
+ v8::Local<v8::Value> stencilValue;
1225
+ config->Get(context, ConvertToV8String(isolate, "stencil")).ToLocal(&stencilValue);
1226
+ if (!stencilValue.IsEmpty() && stencilValue->IsBoolean()) {
1227
+ stencil = stencilValue->BooleanValue(isolate);
1228
+ }
1229
+
1230
+ v8::Local<v8::Value> desynchronizedValue;
1231
+ config->Get(context, ConvertToV8String(isolate, "desynchronized")).ToLocal(
1232
+ &desynchronizedValue);
1233
+ if (!desynchronizedValue.IsEmpty() && desynchronizedValue->IsBoolean()) {
1234
+ desynchronized = desynchronizedValue->BooleanValue(isolate);
1235
+ }
1236
+
1237
+ v8::Local<v8::Value> xrCompatibleValue;
1238
+ config->Get(context,
1239
+ ConvertToV8String(isolate, "xrCompatible")).ToLocal(&xrCompatibleValue);
1240
+ if (!xrCompatibleValue.IsEmpty() && xrCompatibleValue->IsBoolean()) {
1241
+ xr_compatible = xrCompatibleValue->BooleanValue(isolate);
1242
+ }
1243
+
1244
+ if (version !=
1245
+ "v1") {
1246
+ args.GetReturnValue().SetNull();
1247
+ return;
1248
+ } else {
1249
+ auto count = args.Length();
1250
+ if (count == 6) {
1251
+ auto ctx = args[1].As<v8::BigInt>()->Int64Value();
1252
+ // auto density = args[2]->NumberValue(context).ToChecked();
1253
+ // auto fontColor = args[3]->NumberValue(context).ToChecked();
1254
+ // auto ppi = args[4]->NumberValue(context).ToChecked();
1255
+ // auto direction = args[5]->NumberValue(context).ToChecked();
1256
+ auto webgl = canvas_native_webgl_create(
1257
+ ctx,
1258
+ version.c_str(),
1259
+ alpha,
1260
+ antialias,
1261
+ depth,
1262
+ fail_if_major_performance_caveat,
1263
+ power_preference.c_str(),
1264
+ premultiplied_alpha,
1265
+ preserve_drawing_buffer,
1266
+ stencil,
1267
+ desynchronized,
1268
+ xr_compatible
1269
+ );
1270
+
1271
+ auto renderingContext = WebGLRenderingContext::NewInstance(isolate,
1272
+ new WebGLRenderingContext(
1273
+ webgl));
1274
+
1275
+ args.GetReturnValue().Set(renderingContext);
1276
+ return;
1277
+ } else if (count == 7) {
1278
+ auto width = args[1]->NumberValue(context).ToChecked();
1279
+ auto height = args[2]->NumberValue(context).ToChecked();
1280
+ // auto density = args[3]->NumberValue(context).ToChecked();
1281
+ // auto fontColor = args[4]->NumberValue(context).ToChecked();
1282
+ // auto ppi = args[5]->NumberValue(context).ToChecked();
1283
+ // auto direction = args[6]->NumberValue(context).ToChecked();
1284
+ auto ctx = canvas_native_webgl_create_no_window(
1285
+ (int32_t) width,
1286
+ (int32_t) height,
1287
+ version.c_str(),
1288
+ alpha,
1289
+ antialias,
1290
+ depth,
1291
+ fail_if_major_performance_caveat,
1292
+ power_preference.c_str(),
1293
+ premultiplied_alpha,
1294
+ preserve_drawing_buffer,
1295
+ stencil,
1296
+ desynchronized,
1297
+ xr_compatible,
1298
+ false
1299
+ );
1300
+
1301
+ auto renderingContext = WebGLRenderingContext::NewInstance(isolate,
1302
+ new WebGLRenderingContext(
1303
+ ctx));
1304
+
1305
+ args.GetReturnValue().Set(renderingContext);
1306
+ return;
1307
+
1308
+ } else {
1309
+ auto width = (int32_t) args[1]->NumberValue(context).ToChecked();
1310
+ auto height = (int32_t) args[2]->NumberValue(context).ToChecked();
1311
+
1312
+ auto ctx = canvas_native_webgl_create_no_window(
1313
+ width,
1314
+ height,
1315
+ version.c_str(),
1316
+ alpha,
1317
+ antialias,
1318
+ depth,
1319
+ fail_if_major_performance_caveat,
1320
+ power_preference.c_str(),
1321
+ premultiplied_alpha,
1322
+ preserve_drawing_buffer,
1323
+ stencil,
1324
+ desynchronized,
1325
+ xr_compatible,
1326
+ false
1327
+ );
1328
+
1329
+ auto renderingContext = WebGLRenderingContext::NewInstance(isolate,
1330
+ new WebGLRenderingContext(
1331
+ ctx));
1332
+
1333
+ args.GetReturnValue().Set(renderingContext);
1334
+ return;
1335
+ }
1336
+
1337
+ }
1338
+ }
1339
+ args.GetReturnValue().SetNull();
1340
+ }
1341
+
1342
+ void CanvasJSIModule::CreateWebGL2Context(const v8::FunctionCallbackInfo<v8::Value> &args) {
1343
+ auto configValue = args[0];
1344
+ auto isolate = args.GetIsolate();
1345
+ auto context = isolate->GetCurrentContext();
1346
+ if (!configValue->IsNullOrUndefined() && configValue->IsObject()) {
1347
+ auto config = configValue.As<v8::Object>();
1348
+ std::string version("none");
1349
+ auto alpha = true;
1350
+ auto antialias = true;
1351
+ auto depth = true;
1352
+ auto fail_if_major_performance_caveat = false;
1353
+ std::string power_preference("default");
1354
+ auto premultiplied_alpha = true;
1355
+ auto preserve_drawing_buffer = false;
1356
+ auto stencil = false;
1357
+ auto desynchronized = false;
1358
+ auto xr_compatible = false;
1359
+
1360
+ v8::Local<v8::Value> versionValue;
1361
+
1362
+ config->Get(context, ConvertToV8String(isolate, "version")).ToLocal(&versionValue);
1363
+
1364
+ if (!versionValue.IsEmpty() && versionValue->IsString()) {
1365
+ version = ConvertFromV8String(isolate, versionValue);
1366
+ }
1367
+
1368
+ v8::Local<v8::Value> alphaValue;
1369
+
1370
+ config->Get(context, ConvertToV8String(isolate, "alpha")).ToLocal(&alphaValue);
1371
+ if (!alphaValue.IsEmpty() && alphaValue->IsBoolean()) {
1372
+ alpha = alphaValue->BooleanValue(isolate);
1373
+ }
1374
+
1375
+ v8::Local<v8::Value> antialiasValue;
1376
+ config->Get(context, ConvertToV8String(isolate, "antialias")).ToLocal(&antialiasValue);
1377
+ if (!antialiasValue.IsEmpty() && antialiasValue->IsBoolean()) {
1378
+ antialias = antialiasValue->BooleanValue(isolate);
1379
+ }
1380
+
1381
+ v8::Local<v8::Value> failIfMajorPerformanceCaveatValue;
1382
+ config->Get(context,
1383
+ ConvertToV8String(isolate, "failIfMajorPerformanceCaveat")).ToLocal(
1384
+ &failIfMajorPerformanceCaveatValue);
1385
+ if (!failIfMajorPerformanceCaveatValue.IsEmpty() &&
1386
+ failIfMajorPerformanceCaveatValue->IsBoolean()) {
1387
+ fail_if_major_performance_caveat = failIfMajorPerformanceCaveatValue->BooleanValue(
1388
+ isolate);
1389
+ }
1390
+
1391
+ v8::Local<v8::Value> powerPreferenceValue;
1392
+ config->Get(context, ConvertToV8String(isolate, "powerPreference")).ToLocal(
1393
+ &powerPreferenceValue);
1394
+ if (!powerPreferenceValue.IsEmpty() && powerPreferenceValue->IsString()) {
1395
+ power_preference = ConvertFromV8String(isolate, powerPreferenceValue);
1396
+ }
1397
+
1398
+ v8::Local<v8::Value> premultipliedAlphaValue;
1399
+ config->Get(context,
1400
+ ConvertToV8String(isolate, "premultipliedAlpha")).ToLocal(
1401
+ &premultipliedAlphaValue);
1402
+ if (!premultipliedAlphaValue.IsEmpty() && premultipliedAlphaValue->IsBoolean()) {
1403
+ premultiplied_alpha = premultipliedAlphaValue->BooleanValue(isolate);
1404
+ }
1405
+
1406
+ v8::Local<v8::Value> preserveDrawingBufferValue;
1407
+ config->Get(context,
1408
+ ConvertToV8String(isolate, "preserveDrawingBuffer")).ToLocal(
1409
+ &preserveDrawingBufferValue);
1410
+ if (!preserveDrawingBufferValue.IsEmpty() && preserveDrawingBufferValue->IsBoolean()) {
1411
+ preserve_drawing_buffer = preserveDrawingBufferValue->BooleanValue(isolate);
1412
+ }
1413
+
1414
+ v8::Local<v8::Value> stencilValue;
1415
+ config->Get(context, ConvertToV8String(isolate, "stencil")).ToLocal(&stencilValue);
1416
+ if (!stencilValue.IsEmpty() && stencilValue->IsBoolean()) {
1417
+ stencil = stencilValue->BooleanValue(isolate);
1418
+ }
1419
+
1420
+ v8::Local<v8::Value> desynchronizedValue;
1421
+ config->Get(context, ConvertToV8String(isolate, "desynchronized")).ToLocal(
1422
+ &desynchronizedValue);
1423
+ if (!desynchronizedValue.IsEmpty() && desynchronizedValue->IsBoolean()) {
1424
+ desynchronized = desynchronizedValue->BooleanValue(isolate);
1425
+ }
1426
+
1427
+ v8::Local<v8::Value> xrCompatibleValue;
1428
+ config->Get(context,
1429
+ ConvertToV8String(isolate, "xrCompatible")).ToLocal(&xrCompatibleValue);
1430
+ if (!xrCompatibleValue.IsEmpty() && xrCompatibleValue->IsBoolean()) {
1431
+ xr_compatible = xrCompatibleValue->BooleanValue(isolate);
1432
+ }
1433
+
1434
+ if (version !=
1435
+ "v2") {
1436
+ args.GetReturnValue().SetNull();
1437
+ return;
1438
+ } else {
1439
+ auto count = args.Length();
1440
+ if (count == 6) {
1441
+ auto ctx = args[1].As<v8::BigInt>()->Int64Value();
1442
+ // auto density = args[2]->NumberValue(context).ToChecked();
1443
+ // auto fontColor = args[3]->NumberValue(context).ToChecked();
1444
+ // auto ppi = args[4]->NumberValue(context).ToChecked();
1445
+ // auto direction = args[5]->NumberValue(context).ToChecked();
1446
+
1447
+ auto webgl = canvas_native_webgl_create(
1448
+ ctx,
1449
+ version.c_str(),
1450
+ alpha,
1451
+ antialias,
1452
+ depth,
1453
+ fail_if_major_performance_caveat,
1454
+ power_preference.c_str(),
1455
+ premultiplied_alpha,
1456
+ preserve_drawing_buffer,
1457
+ stencil,
1458
+ desynchronized,
1459
+ xr_compatible
1460
+ );
1461
+
1462
+ auto renderingContext = WebGL2RenderingContext::NewInstance(isolate,
1463
+ new WebGL2RenderingContext(
1464
+ webgl,
1465
+ WebGLRenderingVersion::V2));
1466
+
1467
+ args.GetReturnValue().Set(renderingContext);
1468
+ return;
1469
+
1470
+ } else if (count ==
1471
+ 7) {
1472
+ auto width = args[1]->NumberValue(context).ToChecked();
1473
+ auto height = args[2]->NumberValue(context).ToChecked();
1474
+ // auto density = args[3]->NumberValue(context).ToChecked();
1475
+ // auto fontColor = args[4]->NumberValue(context).ToChecked();
1476
+ // auto ppi = args[5]->NumberValue(context).ToChecked();
1477
+ // auto direction = args[6]->NumberValue(context).ToChecked();
1478
+ auto ctx = canvas_native_webgl_create_no_window(
1479
+ (int32_t) width,
1480
+ (int32_t) height,
1481
+ version.c_str(),
1482
+ alpha,
1483
+ antialias,
1484
+ depth,
1485
+ fail_if_major_performance_caveat,
1486
+ power_preference.c_str(),
1487
+ premultiplied_alpha,
1488
+ preserve_drawing_buffer,
1489
+ stencil,
1490
+ desynchronized,
1491
+ xr_compatible,
1492
+ false
1493
+ );
1494
+ auto renderingContext = WebGL2RenderingContext::NewInstance(isolate,
1495
+ new WebGL2RenderingContext(
1496
+ ctx,
1497
+ WebGLRenderingVersion::V2));
1498
+
1499
+ args.GetReturnValue().Set(renderingContext);
1500
+ return;
1501
+
1502
+ } else {
1503
+ auto width = (int32_t) args[1]->NumberValue(context).ToChecked();
1504
+ auto height = (int32_t) args[2]->NumberValue(context).ToChecked();
1505
+ auto ctx = canvas_native_webgl_create_no_window(
1506
+ width,
1507
+ height,
1508
+ version.c_str(),
1509
+ alpha,
1510
+ antialias,
1511
+ depth,
1512
+ fail_if_major_performance_caveat,
1513
+ power_preference.c_str(),
1514
+ premultiplied_alpha,
1515
+ preserve_drawing_buffer,
1516
+ stencil,
1517
+ desynchronized,
1518
+ xr_compatible,
1519
+ false
1520
+ );
1521
+
1522
+ auto renderingContext = WebGL2RenderingContext::NewInstance(isolate,
1523
+ new WebGL2RenderingContext(
1524
+ ctx,
1525
+ WebGLRenderingVersion::V2));
1526
+
1527
+ args.GetReturnValue().Set(renderingContext);
1528
+ return;
1529
+ }
1530
+ }
1531
+ }
1532
+
1533
+ args.GetReturnValue().SetNull();
1534
+ }