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

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