@nativescript/canvas 2.0.0-alpha.5 → 2.0.0-alpha.50

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 (542) hide show
  1. package/Canvas/common.d.ts +213 -25
  2. package/Canvas/common.js +702 -452
  3. package/Canvas/common.js.map +1 -1
  4. package/Canvas/index.android.d.ts +12 -1
  5. package/Canvas/index.android.js +162 -49
  6. package/Canvas/index.android.js.map +1 -1
  7. package/Canvas/index.d.ts +13 -0
  8. package/Canvas/index.ios.d.ts +9 -4
  9. package/Canvas/index.ios.js +166 -103
  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 +7 -3
  18. package/Canvas2D/CanvasRenderingContext2D/index.js +132 -233
  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 +32 -42
  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 -33
  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 +1 -3
  55. package/WebGL/WebGLRenderingContext/common.js +3 -13
  56. package/WebGL/WebGLRenderingContext/common.js.map +1 -1
  57. package/WebGL/WebGLRenderingContext/index.d.ts +19 -17
  58. package/WebGL/WebGLRenderingContext/index.js +354 -728
  59. package/WebGL/WebGLRenderingContext/index.js.map +1 -1
  60. package/WebGL2/WebGL2RenderingContext/common.d.ts +2 -2
  61. package/WebGL2/WebGL2RenderingContext/common.js +2 -2
  62. package/WebGL2/WebGL2RenderingContext/common.js.map +1 -1
  63. package/WebGL2/WebGL2RenderingContext/index.d.ts +1 -1
  64. package/WebGL2/WebGL2RenderingContext/index.js +116 -285
  65. package/WebGL2/WebGL2RenderingContext/index.js.map +1 -1
  66. package/angular/esm2020/index.mjs +4 -4
  67. package/angular/fesm2015/nativescript-canvas-angular.mjs +4 -4
  68. package/angular/fesm2020/nativescript-canvas-angular.mjs +4 -4
  69. package/angular/package.json +2 -2
  70. package/index.js.map +1 -1
  71. package/package.json +3 -2
  72. package/platforms/android/canvas-release.aar +0 -0
  73. package/platforms/android/include.gradle +15 -0
  74. package/platforms/ios/CanvasNative.xcframework/Info.plist +5 -5
  75. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative +0 -0
  76. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h +135 -68
  77. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative.h +10 -0
  78. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_ios.h +144 -0
  79. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +2774 -70
  80. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist +0 -0
  81. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  82. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.abi.json +5851 -2555
  83. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.private.swiftinterface +44 -24
  84. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  85. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +44 -24
  86. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  87. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/CanvasNative +0 -0
  88. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h +270 -136
  89. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative.h +10 -0
  90. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_ios.h +144 -0
  91. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +2774 -70
  92. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Info.plist +0 -0
  93. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  94. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  95. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.abi.json +5851 -2555
  96. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +44 -24
  97. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  98. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftinterface +44 -24
  99. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.abi.json +5851 -2555
  100. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +44 -24
  101. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  102. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +44 -24
  103. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +42 -31
  104. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  105. package/platforms/ios/Podfile +5 -2
  106. package/platforms/ios/build.xcconfig +3 -3
  107. package/platforms/ios/src/CanvasModule.h +0 -2
  108. package/platforms/ios/src/CanvasModule.mm +4 -4
  109. package/platforms/ios/src/NSOperationQueueWrapper.h +11 -0
  110. package/platforms/ios/src/NSOperationQueueWrapper.mm +74 -0
  111. package/platforms/ios/src/cpp/Caches.cpp +35 -0
  112. package/platforms/ios/src/cpp/Caches.h +190 -0
  113. package/platforms/ios/src/cpp/CanvasJSIModule.cpp +1593 -0
  114. package/platforms/ios/src/cpp/CanvasJSIModule.h +16 -34
  115. package/platforms/ios/src/cpp/Common.h +30 -0
  116. package/platforms/ios/src/cpp/ConcurrentMap.h +54 -0
  117. package/platforms/ios/src/cpp/Helpers.h +336 -38
  118. package/platforms/ios/src/cpp/ImageAssetImpl.cpp +802 -0
  119. package/platforms/ios/src/cpp/ImageAssetImpl.h +46 -12
  120. package/platforms/ios/src/cpp/ImageBitmapImpl.cpp +189 -0
  121. package/platforms/ios/src/cpp/ImageBitmapImpl.h +42 -16
  122. package/platforms/ios/src/cpp/JSICallback.h +83 -5
  123. package/platforms/ios/src/cpp/JSIReadFileCallback.h +86 -6
  124. package/platforms/ios/src/cpp/JSIRuntime.cpp +21 -0
  125. package/platforms/ios/src/cpp/JSIRuntime.h +7 -0
  126. package/platforms/ios/src/cpp/ObjectWrapperImpl.h +31 -0
  127. package/platforms/ios/src/cpp/OneByteStringResource.cpp +55 -0
  128. package/platforms/ios/src/cpp/OneByteStringResource.h +36 -0
  129. package/platforms/ios/src/cpp/PerIsolateData.cpp +49 -0
  130. package/platforms/ios/src/cpp/PerIsolateData.h +54 -0
  131. package/platforms/ios/src/cpp/RafImpl.cpp +8 -0
  132. package/platforms/ios/src/cpp/RafImpl.h +11 -8
  133. package/platforms/ios/src/cpp/TextDecoderImpl.cpp +193 -0
  134. package/platforms/ios/src/cpp/TextDecoderImpl.h +23 -13
  135. package/platforms/ios/src/cpp/TextEncoderImpl.cpp +139 -0
  136. package/platforms/ios/src/cpp/TextEncoderImpl.h +21 -12
  137. package/platforms/ios/src/cpp/URLImpl.cpp +464 -0
  138. package/platforms/ios/src/cpp/URLImpl.h +121 -0
  139. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.cpp +71 -0
  140. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.h +29 -13
  141. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.cpp +89 -0
  142. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.h +49 -12
  143. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.cpp +2841 -0
  144. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.h +1331 -21
  145. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.cpp +207 -0
  146. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.h +27 -13
  147. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.cpp +807 -0
  148. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.h +173 -13
  149. package/platforms/ios/src/cpp/canvas2d/Path2D.cpp +499 -0
  150. package/platforms/ios/src/cpp/canvas2d/Path2D.h +422 -12
  151. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.cpp +253 -0
  152. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.h +51 -12
  153. package/platforms/ios/src/cpp/gl.h +57 -7
  154. package/platforms/ios/src/cpp/gl3stub.c +425 -0
  155. package/platforms/ios/src/cpp/gl3stub.h +665 -0
  156. package/platforms/ios/src/cpp/gles3jni.h +37 -0
  157. package/platforms/ios/src/cpp/include/robin_hood.h +2544 -0
  158. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.cpp +91 -0
  159. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.h +33 -13
  160. package/platforms/ios/src/cpp/webgl/WebGLBuffer.h +42 -7
  161. package/platforms/ios/src/cpp/webgl/WebGLFramebuffer.h +47 -11
  162. package/platforms/ios/src/cpp/webgl/WebGLProgram.h +41 -6
  163. package/platforms/ios/src/cpp/webgl/WebGLRenderbuffer.h +41 -7
  164. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.cpp +6845 -0
  165. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.h +3217 -388
  166. package/platforms/ios/src/cpp/webgl/{WebGLRenderingContextBase.mm → WebGLRenderingContextBase.cpp} +18 -17
  167. package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.h +16 -36
  168. package/platforms/ios/src/cpp/webgl/WebGLShader.h +41 -7
  169. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.cpp +50 -0
  170. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.h +67 -12
  171. package/platforms/ios/src/cpp/webgl/WebGLTexture.h +41 -7
  172. package/platforms/ios/src/cpp/webgl/WebGLUniformLocation.h +45 -9
  173. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.cpp +126 -0
  174. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.h +26 -12
  175. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.cpp +35 -0
  176. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.h +26 -6
  177. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.cpp +41 -0
  178. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.h +26 -6
  179. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.cpp +306 -0
  180. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.h +47 -13
  181. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.h +49 -6
  182. package/platforms/ios/src/cpp/webgl/extensions/EXT_shader_texture_lodImpl.h +37 -15
  183. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.h +47 -6
  184. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.h +49 -6
  185. package/platforms/ios/src/cpp/webgl/extensions/OES_fbo_render_mipmap.h +41 -16
  186. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.h +44 -6
  187. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_floatImpl.h +39 -16
  188. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_float_linearImpl.h +37 -16
  189. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.h +42 -6
  190. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_float_linearImpl.h +40 -16
  191. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.cpp +102 -0
  192. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.h +69 -14
  193. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.h +51 -8
  194. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.h +49 -6
  195. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.h +49 -8
  196. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.h +76 -6
  197. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.h +57 -6
  198. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.h +53 -6
  199. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.h +59 -6
  200. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.h +46 -6
  201. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.cpp +35 -0
  202. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.h +131 -14
  203. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.cpp +32 -0
  204. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.h +61 -13
  205. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.cpp +4533 -0
  206. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.h +1427 -342
  207. package/platforms/ios/src/cpp/webgl2/WebGLQuery.h +41 -4
  208. package/platforms/ios/src/cpp/webgl2/WebGLSampler.h +42 -3
  209. package/platforms/ios/src/cpp/webgl2/WebGLSyncImpl.h +45 -11
  210. package/platforms/ios/src/cpp/webgl2/WebGLTransformFeedback.h +43 -4
  211. package/platforms/ios/src/cpp/webgl2/WebGLVertexArrayObject.h +44 -4
  212. package/platforms/ios/src/module.modulemap +1 -0
  213. package/{pods → src-native/ios}/NativeScript.podspec +12 -25
  214. package/typings/objc!CanvasNative.d.ts +2038 -0
  215. package/typings/objc!CanvasNative.js +1 -0
  216. package/typings/objc!CanvasNative.js.map +1 -0
  217. package/utils.d.ts +3 -1
  218. package/utils.js +7 -20
  219. package/utils.js.map +1 -1
  220. package/angular/nativescript-canvas-angular.d.ts +0 -5
  221. package/platforms/ios/src/cpp/CanvasJSIModule.mm +0 -1105
  222. package/platforms/ios/src/cpp/ImageAssetImpl.mm +0 -417
  223. package/platforms/ios/src/cpp/ImageBitmapImpl.mm +0 -126
  224. package/platforms/ios/src/cpp/RafImpl.mm +0 -10
  225. package/platforms/ios/src/cpp/TextDecoderImpl.mm +0 -97
  226. package/platforms/ios/src/cpp/TextEncoderImpl.mm +0 -60
  227. package/platforms/ios/src/cpp/VecMutableBuffer.h +0 -46
  228. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.cc +0 -6132
  229. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.h +0 -2859
  230. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.mm +0 -42
  231. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.mm +0 -49
  232. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.mm +0 -1975
  233. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.mm +0 -68
  234. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.mm +0 -149
  235. package/platforms/ios/src/cpp/canvas2d/Path2D.mm +0 -335
  236. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.mm +0 -68
  237. package/platforms/ios/src/cpp/rust/cxx.cc +0 -793
  238. package/platforms/ios/src/cpp/rust/cxx.h +0 -1111
  239. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.mm +0 -39
  240. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.mm +0 -5958
  241. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.mm +0 -40
  242. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.mm +0 -108
  243. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.mm +0 -28
  244. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.mm +0 -42
  245. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.mm +0 -295
  246. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.mm +0 -40
  247. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.mm +0 -37
  248. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.mm +0 -28
  249. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.mm +0 -31
  250. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.mm +0 -28
  251. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.mm +0 -127
  252. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.mm +0 -45
  253. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.mm +0 -45
  254. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.mm +0 -31
  255. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.mm +0 -70
  256. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.mm +0 -47
  257. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.mm +0 -46
  258. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.mm +0 -49
  259. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.mm +0 -30
  260. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.mm +0 -177
  261. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.mm +0 -64
  262. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.mm +0 -4556
  263. package/pods/Headers/jsi/decorator.h +0 -770
  264. package/pods/Headers/jsi/instrumentation.h +0 -117
  265. package/pods/Headers/jsi/jsi-inl.h +0 -338
  266. package/pods/Headers/jsi/jsi.h +0 -1571
  267. package/pods/Headers/jsi/jsilib.h +0 -59
  268. package/pods/Headers/jsi/threadsafe.h +0 -79
  269. package/pods/Headers/v8runtime/HostProxy.h +0 -71
  270. package/pods/Headers/v8runtime/JSIV8ValueConverter.h +0 -74
  271. package/pods/Headers/v8runtime/V8PointerValue.h +0 -44
  272. package/pods/Headers/v8runtime/V8Runtime.h +0 -240
  273. package/pods/Headers/v8runtime/V8RuntimeConfig.h +0 -26
  274. package/pods/Headers/v8runtime/V8RuntimeFactory.h +0 -21
  275. /package/platforms/ios/src/cpp/{OnRafCallback.mm → OnRafCallback.cpp} +0 -0
  276. /package/{pods → src-native/ios}/Headers/include/APIDesign.md +0 -0
  277. /package/{pods → src-native/ios}/Headers/include/DEPS +0 -0
  278. /package/{pods → src-native/ios}/Headers/include/DIR_METADATA +0 -0
  279. /package/{pods → src-native/ios}/Headers/include/OWNERS +0 -0
  280. /package/{pods → src-native/ios}/Headers/include/cppgc/DEPS +0 -0
  281. /package/{pods → src-native/ios}/Headers/include/cppgc/OWNERS +0 -0
  282. /package/{pods → src-native/ios}/Headers/include/cppgc/README.md +0 -0
  283. /package/{pods → src-native/ios}/Headers/include/cppgc/allocation.h +0 -0
  284. /package/{pods → src-native/ios}/Headers/include/cppgc/common.h +0 -0
  285. /package/{pods → src-native/ios}/Headers/include/cppgc/cross-thread-persistent.h +0 -0
  286. /package/{pods → src-native/ios}/Headers/include/cppgc/custom-space.h +0 -0
  287. /package/{pods → src-native/ios}/Headers/include/cppgc/default-platform.h +0 -0
  288. /package/{pods → src-native/ios}/Headers/include/cppgc/ephemeron-pair.h +0 -0
  289. /package/{pods → src-native/ios}/Headers/include/cppgc/explicit-management.h +0 -0
  290. /package/{pods → src-native/ios}/Headers/include/cppgc/garbage-collected.h +0 -0
  291. /package/{pods → src-native/ios}/Headers/include/cppgc/heap-consistency.h +0 -0
  292. /package/{pods → src-native/ios}/Headers/include/cppgc/heap-state.h +0 -0
  293. /package/{pods → src-native/ios}/Headers/include/cppgc/heap-statistics.h +0 -0
  294. /package/{pods → src-native/ios}/Headers/include/cppgc/heap.h +0 -0
  295. /package/{pods → src-native/ios}/Headers/include/cppgc/internal/api-constants.h +0 -0
  296. /package/{pods → src-native/ios}/Headers/include/cppgc/internal/atomic-entry-flag.h +0 -0
  297. /package/{pods → src-native/ios}/Headers/include/cppgc/internal/caged-heap-local-data.h +0 -0
  298. /package/{pods → src-native/ios}/Headers/include/cppgc/internal/compiler-specific.h +0 -0
  299. /package/{pods → src-native/ios}/Headers/include/cppgc/internal/finalizer-trait.h +0 -0
  300. /package/{pods → src-native/ios}/Headers/include/cppgc/internal/gc-info.h +0 -0
  301. /package/{pods → src-native/ios}/Headers/include/cppgc/internal/logging.h +0 -0
  302. /package/{pods → src-native/ios}/Headers/include/cppgc/internal/name-trait.h +0 -0
  303. /package/{pods → src-native/ios}/Headers/include/cppgc/internal/persistent-node.h +0 -0
  304. /package/{pods → src-native/ios}/Headers/include/cppgc/internal/pointer-policies.h +0 -0
  305. /package/{pods → src-native/ios}/Headers/include/cppgc/internal/write-barrier.h +0 -0
  306. /package/{pods → src-native/ios}/Headers/include/cppgc/liveness-broker.h +0 -0
  307. /package/{pods → src-native/ios}/Headers/include/cppgc/macros.h +0 -0
  308. /package/{pods → src-native/ios}/Headers/include/cppgc/member.h +0 -0
  309. /package/{pods → src-native/ios}/Headers/include/cppgc/name-provider.h +0 -0
  310. /package/{pods → src-native/ios}/Headers/include/cppgc/object-size-trait.h +0 -0
  311. /package/{pods → src-native/ios}/Headers/include/cppgc/persistent.h +0 -0
  312. /package/{pods → src-native/ios}/Headers/include/cppgc/platform.h +0 -0
  313. /package/{pods → src-native/ios}/Headers/include/cppgc/prefinalizer.h +0 -0
  314. /package/{pods → src-native/ios}/Headers/include/cppgc/process-heap-statistics.h +0 -0
  315. /package/{pods → src-native/ios}/Headers/include/cppgc/sentinel-pointer.h +0 -0
  316. /package/{pods → src-native/ios}/Headers/include/cppgc/source-location.h +0 -0
  317. /package/{pods → src-native/ios}/Headers/include/cppgc/testing.h +0 -0
  318. /package/{pods → src-native/ios}/Headers/include/cppgc/trace-trait.h +0 -0
  319. /package/{pods → src-native/ios}/Headers/include/cppgc/type-traits.h +0 -0
  320. /package/{pods → src-native/ios}/Headers/include/cppgc/visitor.h +0 -0
  321. /package/{pods → src-native/ios}/Headers/include/js_protocol-1.2.json +0 -0
  322. /package/{pods → src-native/ios}/Headers/include/js_protocol-1.3.json +0 -0
  323. /package/{pods → src-native/ios}/Headers/include/js_protocol.pdl +0 -0
  324. /package/{pods → src-native/ios}/Headers/include/libffi/arm64/ffi.h +0 -0
  325. /package/{pods → src-native/ios}/Headers/include/libffi/arm64/ffitarget.h +0 -0
  326. /package/{pods → src-native/ios}/Headers/include/libffi/x86_64/ffi.h +0 -0
  327. /package/{pods → src-native/ios}/Headers/include/libffi/x86_64/ffitarget.h +0 -0
  328. /package/{pods → src-native/ios}/Headers/include/libffi.h +0 -0
  329. /package/{pods → src-native/ios}/Headers/include/libplatform/DEPS +0 -0
  330. /package/{pods → src-native/ios}/Headers/include/libplatform/libplatform-export.h +0 -0
  331. /package/{pods → src-native/ios}/Headers/include/libplatform/libplatform.h +0 -0
  332. /package/{pods → src-native/ios}/Headers/include/libplatform/v8-tracing.h +0 -0
  333. /package/{pods → src-native/ios}/Headers/include/v8-array-buffer.h +0 -0
  334. /package/{pods → src-native/ios}/Headers/include/v8-callbacks.h +0 -0
  335. /package/{pods → src-native/ios}/Headers/include/v8-container.h +0 -0
  336. /package/{pods → src-native/ios}/Headers/include/v8-context.h +0 -0
  337. /package/{pods → src-native/ios}/Headers/include/v8-cppgc.h +0 -0
  338. /package/{pods → src-native/ios}/Headers/include/v8-data.h +0 -0
  339. /package/{pods → src-native/ios}/Headers/include/v8-date.h +0 -0
  340. /package/{pods → src-native/ios}/Headers/include/v8-debug.h +0 -0
  341. /package/{pods → src-native/ios}/Headers/include/v8-embedder-heap.h +0 -0
  342. /package/{pods → src-native/ios}/Headers/include/v8-embedder-state-scope.h +0 -0
  343. /package/{pods → src-native/ios}/Headers/include/v8-exception.h +0 -0
  344. /package/{pods → src-native/ios}/Headers/include/v8-extension.h +0 -0
  345. /package/{pods → src-native/ios}/Headers/include/v8-external.h +0 -0
  346. /package/{pods → src-native/ios}/Headers/include/v8-fast-api-calls.h +0 -0
  347. /package/{pods → src-native/ios}/Headers/include/v8-forward.h +0 -0
  348. /package/{pods → src-native/ios}/Headers/include/v8-function-callback.h +0 -0
  349. /package/{pods → src-native/ios}/Headers/include/v8-function.h +0 -0
  350. /package/{pods → src-native/ios}/Headers/include/v8-initialization.h +0 -0
  351. /package/{pods → src-native/ios}/Headers/include/v8-inspector-protocol.h +0 -0
  352. /package/{pods → src-native/ios}/Headers/include/v8-inspector.h +0 -0
  353. /package/{pods → src-native/ios}/Headers/include/v8-internal.h +0 -0
  354. /package/{pods → src-native/ios}/Headers/include/v8-isolate.h +0 -0
  355. /package/{pods → src-native/ios}/Headers/include/v8-json.h +0 -0
  356. /package/{pods → src-native/ios}/Headers/include/v8-local-handle.h +0 -0
  357. /package/{pods → src-native/ios}/Headers/include/v8-locker.h +0 -0
  358. /package/{pods → src-native/ios}/Headers/include/v8-maybe.h +0 -0
  359. /package/{pods → src-native/ios}/Headers/include/v8-memory-span.h +0 -0
  360. /package/{pods → src-native/ios}/Headers/include/v8-message.h +0 -0
  361. /package/{pods → src-native/ios}/Headers/include/v8-metrics.h +0 -0
  362. /package/{pods → src-native/ios}/Headers/include/v8-microtask-queue.h +0 -0
  363. /package/{pods → src-native/ios}/Headers/include/v8-microtask.h +0 -0
  364. /package/{pods → src-native/ios}/Headers/include/v8-object.h +0 -0
  365. /package/{pods → src-native/ios}/Headers/include/v8-persistent-handle.h +0 -0
  366. /package/{pods → src-native/ios}/Headers/include/v8-platform.h +0 -0
  367. /package/{pods → src-native/ios}/Headers/include/v8-primitive-object.h +0 -0
  368. /package/{pods → src-native/ios}/Headers/include/v8-primitive.h +0 -0
  369. /package/{pods → src-native/ios}/Headers/include/v8-profiler.h +0 -0
  370. /package/{pods → src-native/ios}/Headers/include/v8-promise.h +0 -0
  371. /package/{pods → src-native/ios}/Headers/include/v8-proxy.h +0 -0
  372. /package/{pods → src-native/ios}/Headers/include/v8-regexp.h +0 -0
  373. /package/{pods → src-native/ios}/Headers/include/v8-script.h +0 -0
  374. /package/{pods → src-native/ios}/Headers/include/v8-snapshot.h +0 -0
  375. /package/{pods → src-native/ios}/Headers/include/v8-statistics.h +0 -0
  376. /package/{pods → src-native/ios}/Headers/include/v8-template.h +0 -0
  377. /package/{pods → src-native/ios}/Headers/include/v8-traced-handle.h +0 -0
  378. /package/{pods → src-native/ios}/Headers/include/v8-typed-array.h +0 -0
  379. /package/{pods → src-native/ios}/Headers/include/v8-unwinder-state.h +0 -0
  380. /package/{pods → src-native/ios}/Headers/include/v8-unwinder.h +0 -0
  381. /package/{pods → src-native/ios}/Headers/include/v8-util.h +0 -0
  382. /package/{pods → src-native/ios}/Headers/include/v8-value-serializer-version.h +0 -0
  383. /package/{pods → src-native/ios}/Headers/include/v8-value-serializer.h +0 -0
  384. /package/{pods → src-native/ios}/Headers/include/v8-value.h +0 -0
  385. /package/{pods → src-native/ios}/Headers/include/v8-version-string.h +0 -0
  386. /package/{pods → src-native/ios}/Headers/include/v8-version.h +0 -0
  387. /package/{pods → src-native/ios}/Headers/include/v8-wasm-trap-handler-posix.h +0 -0
  388. /package/{pods → src-native/ios}/Headers/include/v8-wasm-trap-handler-win.h +0 -0
  389. /package/{pods → src-native/ios}/Headers/include/v8-wasm.h +0 -0
  390. /package/{pods → src-native/ios}/Headers/include/v8-weak-callback-info.h +0 -0
  391. /package/{pods → src-native/ios}/Headers/include/v8.h +0 -0
  392. /package/{pods → src-native/ios}/Headers/include/v8config.h +0 -0
  393. /package/{pods → src-native/ios}/Headers/inspector/InspectorServer.h +0 -0
  394. /package/{pods → src-native/ios}/Headers/inspector/JsV8InspectorClient.h +0 -0
  395. /package/{pods → src-native/ios}/Headers/inspector/base/trace_event/common/trace_event_common.h +0 -0
  396. /package/{pods → src-native/ios}/Headers/inspector/base64.h +0 -0
  397. /package/{pods → src-native/ios}/Headers/inspector/src/base/address-region.h +0 -0
  398. /package/{pods → src-native/ios}/Headers/inspector/src/base/atomic-utils.h +0 -0
  399. /package/{pods → src-native/ios}/Headers/inspector/src/base/atomicops.h +0 -0
  400. /package/{pods → src-native/ios}/Headers/inspector/src/base/atomicops_internals_atomicword_compat.h +0 -0
  401. /package/{pods → src-native/ios}/Headers/inspector/src/base/base-export.h +0 -0
  402. /package/{pods → src-native/ios}/Headers/inspector/src/base/bits.h +0 -0
  403. /package/{pods → src-native/ios}/Headers/inspector/src/base/build_config.h +0 -0
  404. /package/{pods → src-native/ios}/Headers/inspector/src/base/compiler-specific.h +0 -0
  405. /package/{pods → src-native/ios}/Headers/inspector/src/base/export-template.h +0 -0
  406. /package/{pods → src-native/ios}/Headers/inspector/src/base/flags.h +0 -0
  407. /package/{pods → src-native/ios}/Headers/inspector/src/base/immediate-crash.h +0 -0
  408. /package/{pods → src-native/ios}/Headers/inspector/src/base/lazy-instance.h +0 -0
  409. /package/{pods → src-native/ios}/Headers/inspector/src/base/logging.h +0 -0
  410. /package/{pods → src-native/ios}/Headers/inspector/src/base/macros.h +0 -0
  411. /package/{pods → src-native/ios}/Headers/inspector/src/base/memory.h +0 -0
  412. /package/{pods → src-native/ios}/Headers/inspector/src/base/once.h +0 -0
  413. /package/{pods → src-native/ios}/Headers/inspector/src/base/optional.h +0 -0
  414. /package/{pods → src-native/ios}/Headers/inspector/src/base/platform/mutex.h +0 -0
  415. /package/{pods → src-native/ios}/Headers/inspector/src/base/platform/platform.h +0 -0
  416. /package/{pods → src-native/ios}/Headers/inspector/src/base/platform/semaphore.h +0 -0
  417. /package/{pods → src-native/ios}/Headers/inspector/src/base/platform/v8-time.h +0 -0
  418. /package/{pods → src-native/ios}/Headers/inspector/src/base/platform/wrappers.h +0 -0
  419. /package/{pods → src-native/ios}/Headers/inspector/src/base/safe_conversions.h +0 -0
  420. /package/{pods → src-native/ios}/Headers/inspector/src/base/safe_conversions_impl.h +0 -0
  421. /package/{pods → src-native/ios}/Headers/inspector/src/base/template-utils.h +0 -0
  422. /package/{pods → src-native/ios}/Headers/inspector/src/base/v8-fallthrough.h +0 -0
  423. /package/{pods → src-native/ios}/Headers/inspector/src/common/checks.h +0 -0
  424. /package/{pods → src-native/ios}/Headers/inspector/src/common/globals.h +0 -0
  425. /package/{pods → src-native/ios}/Headers/inspector/src/debug/debug-interface.h +0 -0
  426. /package/{pods → src-native/ios}/Headers/inspector/src/debug/interface-types.h +0 -0
  427. /package/{pods → src-native/ios}/Headers/inspector/src/init/v8.h +0 -0
  428. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/custom-preview.h +0 -0
  429. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/injected-script.h +0 -0
  430. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/inspected-context.h +0 -0
  431. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/CSS.h +0 -0
  432. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/Console.h +0 -0
  433. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/DOM.h +0 -0
  434. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/Debugger.h +0 -0
  435. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/Forward.h +0 -0
  436. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/HeapProfiler.h +0 -0
  437. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/Log.h +0 -0
  438. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/Network.h +0 -0
  439. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/Overlay.h +0 -0
  440. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/Page.h +0 -0
  441. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/Profiler.h +0 -0
  442. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/Protocol.h +0 -0
  443. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/Runtime.h +0 -0
  444. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/Schema.h +0 -0
  445. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/protocol/Security.h +0 -0
  446. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/remote-object-id.h +0 -0
  447. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/search-util.h +0 -0
  448. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/string-16.h +0 -0
  449. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/string-util.h +0 -0
  450. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-console-agent-impl.h +0 -0
  451. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-console-message.h +0 -0
  452. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-console.h +0 -0
  453. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-css-agent-impl.h +0 -0
  454. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-debugger-agent-impl.h +0 -0
  455. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-debugger-id.h +0 -0
  456. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-debugger-script.h +0 -0
  457. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-debugger.h +0 -0
  458. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-dom-agent-impl.h +0 -0
  459. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-heap-profiler-agent-impl.h +0 -0
  460. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-inspector-impl.h +0 -0
  461. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-inspector-session-impl.h +0 -0
  462. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-log-agent-impl.h +0 -0
  463. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-network-agent-impl.h +0 -0
  464. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-ns-debugger-agent-impl.h +0 -0
  465. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-overlay-agent-impl.h +0 -0
  466. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-page-agent-impl.h +0 -0
  467. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-profiler-agent-impl.h +0 -0
  468. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-regex.h +0 -0
  469. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-runtime-agent-impl.h +0 -0
  470. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-schema-agent-impl.h +0 -0
  471. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-stack-trace-impl.h +0 -0
  472. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-string-conversions.h +0 -0
  473. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/v8-value-utils.h +0 -0
  474. /package/{pods → src-native/ios}/Headers/inspector/src/inspector/value-mirror.h +0 -0
  475. /package/{pods → src-native/ios}/Headers/inspector/src/libplatform/default-platform.h +0 -0
  476. /package/{pods → src-native/ios}/Headers/inspector/src/logging/tracing-flags.h +0 -0
  477. /package/{pods → src-native/ios}/Headers/inspector/src/numbers/conversions.h +0 -0
  478. /package/{pods → src-native/ios}/Headers/inspector/src/tracing/trace-event.h +0 -0
  479. /package/{pods → src-native/ios}/Headers/inspector/src/utils/allocation.h +0 -0
  480. /package/{pods → src-native/ios}/Headers/inspector/src/utils/vector.h +0 -0
  481. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/cbor.h +0 -0
  482. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/dispatch.h +0 -0
  483. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/error_support.h +0 -0
  484. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/export.h +0 -0
  485. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/find_by_first.h +0 -0
  486. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/frontend_channel.h +0 -0
  487. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/glue.h +0 -0
  488. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/json.h +0 -0
  489. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/json_platform.h +0 -0
  490. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/maybe.h +0 -0
  491. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/parser_handler.h +0 -0
  492. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/protocol_core.h +0 -0
  493. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/serializable.h +0 -0
  494. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/serializer_traits.h +0 -0
  495. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/span.h +0 -0
  496. /package/{pods → src-native/ios}/Headers/inspector/third_party/inspector_protocol/crdtp/status.h +0 -0
  497. /package/{pods → src-native/ios}/Headers/inspector/utils.h +0 -0
  498. /package/{pods → src-native/ios}/Headers/inspector/v8-inspector-platform.h +0 -0
  499. /package/{pods → src-native/ios}/Headers/runtime/ArgConverter.h +0 -0
  500. /package/{pods → src-native/ios}/Headers/runtime/ArrayAdapter.h +0 -0
  501. /package/{pods → src-native/ios}/Headers/runtime/Caches.h +0 -0
  502. /package/{pods → src-native/ios}/Headers/runtime/ClassBuilder.h +0 -0
  503. /package/{pods → src-native/ios}/Headers/runtime/Common.h +0 -0
  504. /package/{pods → src-native/ios}/Headers/runtime/ConcurrentMap.h +0 -0
  505. /package/{pods → src-native/ios}/Headers/runtime/ConcurrentQueue.h +0 -0
  506. /package/{pods → src-native/ios}/Headers/runtime/Console.h +0 -0
  507. /package/{pods → src-native/ios}/Headers/runtime/Constants.h +0 -0
  508. /package/{pods → src-native/ios}/Headers/runtime/DataWrapper.h +0 -0
  509. /package/{pods → src-native/ios}/Headers/runtime/DictionaryAdapter.h +0 -0
  510. /package/{pods → src-native/ios}/Headers/runtime/ExtVector.h +0 -0
  511. /package/{pods → src-native/ios}/Headers/runtime/FFICall.h +0 -0
  512. /package/{pods → src-native/ios}/Headers/runtime/FastEnumerationAdapter.h +0 -0
  513. /package/{pods → src-native/ios}/Headers/runtime/FunctionReference.h +0 -0
  514. /package/{pods → src-native/ios}/Headers/runtime/Helpers.h +0 -0
  515. /package/{pods → src-native/ios}/Headers/runtime/InlineFunctions.h +0 -0
  516. /package/{pods → src-native/ios}/Headers/runtime/Interop.h +0 -0
  517. /package/{pods → src-native/ios}/Headers/runtime/KnownUnknownClassPair.h +0 -0
  518. /package/{pods → src-native/ios}/Headers/runtime/Metadata.h +0 -0
  519. /package/{pods → src-native/ios}/Headers/runtime/MetadataBuilder.h +0 -0
  520. /package/{pods → src-native/ios}/Headers/runtime/MetadataInlines.h +0 -0
  521. /package/{pods → src-native/ios}/Headers/runtime/ModuleInternal.h +0 -0
  522. /package/{pods → src-native/ios}/Headers/runtime/NSDataAdapter.h +0 -0
  523. /package/{pods → src-native/ios}/Headers/runtime/NativeScriptException.h +0 -0
  524. /package/{pods → src-native/ios}/Headers/runtime/ObjectManager.h +0 -0
  525. /package/{pods → src-native/ios}/Headers/runtime/OneByteStringResource.h +0 -0
  526. /package/{pods → src-native/ios}/Headers/runtime/Pointer.h +0 -0
  527. /package/{pods → src-native/ios}/Headers/runtime/PromiseProxy.h +0 -0
  528. /package/{pods → src-native/ios}/Headers/runtime/Reference.h +0 -0
  529. /package/{pods → src-native/ios}/Headers/runtime/Runtime.h +0 -0
  530. /package/{pods → src-native/ios}/Headers/runtime/RuntimeConfig.h +0 -0
  531. /package/{pods → src-native/ios}/Headers/runtime/SetTimeout.h +0 -0
  532. /package/{pods → src-native/ios}/Headers/runtime/SimpleAllocator.h +0 -0
  533. /package/{pods → src-native/ios}/Headers/runtime/StringHasher.h +0 -0
  534. /package/{pods → src-native/ios}/Headers/runtime/SymbolIterator.h +0 -0
  535. /package/{pods → src-native/ios}/Headers/runtime/SymbolLoader.h +0 -0
  536. /package/{pods → src-native/ios}/Headers/runtime/TNSDerivedClass.h +0 -0
  537. /package/{pods → src-native/ios}/Headers/runtime/TSHelpers.h +0 -0
  538. /package/{pods → src-native/ios}/Headers/runtime/Tasks.h +0 -0
  539. /package/{pods → src-native/ios}/Headers/runtime/UnmanagedType.h +0 -0
  540. /package/{pods → src-native/ios}/Headers/runtime/WeakRef.h +0 -0
  541. /package/{pods → src-native/ios}/Headers/runtime/Worker.h +0 -0
  542. /package/{pods → src-native/ios}/Headers/runtime/robin_hood.h +0 -0
@@ -0,0 +1,2841 @@
1
+ //
2
+ // Created by Osei Fortune on 22/03/2022.
3
+ //
4
+
5
+ #include "CanvasRenderingContext2DImpl.h"
6
+ #include "Caches.h"
7
+ #include "OneByteStringResource.h"
8
+
9
+
10
+ v8::CFunction CanvasRenderingContext2DImpl::fast_ellipse_(
11
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastEllipse));
12
+
13
+ v8::CFunction CanvasRenderingContext2DImpl::fast_bezier_curve_to_(
14
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastBezierCurveTo));
15
+
16
+
17
+ v8::CFunction CanvasRenderingContext2DImpl::fast_clip_(
18
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastClip));
19
+
20
+ v8::CFunction CanvasRenderingContext2DImpl::fast_clip_rule_(
21
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastClipRule));
22
+
23
+ v8::CFunction CanvasRenderingContext2DImpl::fast_clip_path_(
24
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastClipPath));
25
+
26
+
27
+ const v8::CFunction fast_clip_overloads_[] = {
28
+ CanvasRenderingContext2DImpl::fast_clip_,
29
+ CanvasRenderingContext2DImpl::fast_clip_path_,
30
+ CanvasRenderingContext2DImpl::fast_clip_rule_
31
+ };
32
+
33
+
34
+ v8::CFunction CanvasRenderingContext2DImpl::fast_close_path_(
35
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastClosePath));
36
+
37
+ v8::CFunction CanvasRenderingContext2DImpl::fast_begin_path_(
38
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastBeginPath));
39
+
40
+ v8::CFunction CanvasRenderingContext2DImpl::fast_arc_(
41
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastArc));
42
+
43
+ v8::CFunction CanvasRenderingContext2DImpl::fast_arc_to_(
44
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastArcTo));
45
+
46
+
47
+ v8::CFunction CanvasRenderingContext2DImpl::fast_draw_image_dx_dy_(
48
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastDrawImageDxDy));
49
+
50
+
51
+ v8::CFunction CanvasRenderingContext2DImpl::fast_draw_image_dx_dy_dw_dh_(
52
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastDrawImageDxDyDwDh));
53
+
54
+ v8::CFunction CanvasRenderingContext2DImpl::fast_draw_image_(
55
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastDrawImage));
56
+
57
+
58
+ const v8::CFunction fast_draw_overloads_[] = {
59
+ CanvasRenderingContext2DImpl::fast_draw_image_,
60
+ CanvasRenderingContext2DImpl::fast_draw_image_dx_dy_dw_dh_,
61
+ CanvasRenderingContext2DImpl::fast_draw_image_dx_dy_
62
+ };
63
+
64
+
65
+ v8::CFunction CanvasRenderingContext2DImpl::fast_save_(
66
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastSave));
67
+
68
+ v8::CFunction CanvasRenderingContext2DImpl::fast_restore_(
69
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastRestore));
70
+
71
+
72
+ v8::CFunction CanvasRenderingContext2DImpl::fast_translate_(
73
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastTranslate));
74
+
75
+ v8::CFunction CanvasRenderingContext2DImpl::fast_clear_rect_(
76
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastClearRect));
77
+
78
+ v8::CFunction CanvasRenderingContext2DImpl::fast_fill_rect_(
79
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastFillRect));
80
+
81
+ v8::CFunction CanvasRenderingContext2DImpl::fast_stroke_rect_(
82
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastStrokeRect));
83
+
84
+ v8::CFunction CanvasRenderingContext2DImpl::fast_rotate_(
85
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastRotate));
86
+
87
+
88
+ v8::CFunction CanvasRenderingContext2DImpl::fast_fill_(
89
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastFill));
90
+
91
+ v8::CFunction CanvasRenderingContext2DImpl::fast_fill_path_(
92
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastFillPath));
93
+
94
+ v8::CFunction CanvasRenderingContext2DImpl::fast_fill_rule_(
95
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastFillRule));
96
+
97
+ v8::CFunction CanvasRenderingContext2DImpl::fast_fill_path_rule_(
98
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastFillPathRule));
99
+
100
+ const v8::CFunction fast_fill_overloads_[] = {
101
+ CanvasRenderingContext2DImpl::fast_fill_path_rule_,
102
+ CanvasRenderingContext2DImpl::fast_fill_path_,
103
+ CanvasRenderingContext2DImpl::fast_fill_rule_,
104
+ CanvasRenderingContext2DImpl::fast_fill_,
105
+
106
+ };
107
+
108
+
109
+ v8::CFunction CanvasRenderingContext2DImpl::fast_put_image_data_(
110
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastPutImageData));
111
+
112
+ v8::CFunction CanvasRenderingContext2DImpl::fast_put_image_data_dx_dy_(
113
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastPutImageDataDxDy));
114
+
115
+ const v8::CFunction fast_put_image_data_overloads_[] = {
116
+ CanvasRenderingContext2DImpl::fast_put_image_data_,
117
+ CanvasRenderingContext2DImpl::fast_put_image_data_dx_dy_
118
+
119
+ };
120
+
121
+ v8::CFunction CanvasRenderingContext2DImpl::fast_stroke_(
122
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastStroke));
123
+
124
+ v8::CFunction CanvasRenderingContext2DImpl::fast_stroke_path_(
125
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastStrokePath));
126
+
127
+ const v8::CFunction fast_stroke_overloads_[] = {
128
+ CanvasRenderingContext2DImpl::fast_stroke_,
129
+ CanvasRenderingContext2DImpl::fast_stroke_path_
130
+ };
131
+
132
+ v8::CFunction CanvasRenderingContext2DImpl::fast_is_point_in_path_xy_(
133
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastIsPointInPathXY));
134
+
135
+ v8::CFunction CanvasRenderingContext2DImpl::fast_is_point_in_path_xy_rule_(
136
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastIsPointInPathXYRule));
137
+
138
+ v8::CFunction CanvasRenderingContext2DImpl::fast_is_point_in_path_(
139
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastIsPointInPath));
140
+
141
+ const v8::CFunction fast_is_point_in_path_overloads_[] = {
142
+ CanvasRenderingContext2DImpl::fast_is_point_in_path_,
143
+ CanvasRenderingContext2DImpl::fast_is_point_in_path_xy_rule_,
144
+ CanvasRenderingContext2DImpl::fast_is_point_in_path_xy_
145
+ };
146
+
147
+
148
+ v8::CFunction CanvasRenderingContext2DImpl::fast_is_point_in_stroke_xy_(
149
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastIsPointInStrokeXY));
150
+
151
+ v8::CFunction CanvasRenderingContext2DImpl::fast_is_point_in_stroke_(
152
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastIsPointInStroke));
153
+
154
+ const v8::CFunction fast_is_point_in_stroke_overloads_[] = {
155
+ CanvasRenderingContext2DImpl::fast_is_point_in_stroke_,
156
+ CanvasRenderingContext2DImpl::fast_is_point_in_stroke_xy_
157
+ };
158
+
159
+ v8::CFunction CanvasRenderingContext2DImpl::fast_line_to_(
160
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastLineTo));
161
+
162
+ v8::CFunction CanvasRenderingContext2DImpl::fast_move_to_(
163
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastMoveTo));
164
+
165
+
166
+ v8::CFunction CanvasRenderingContext2DImpl::fast_quadratic_curve_to_(
167
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastQuadraticCurveTo));
168
+
169
+
170
+ v8::CFunction CanvasRenderingContext2DImpl::fast_round_rect_array_(
171
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastRoundRectArray));
172
+
173
+ v8::CFunction CanvasRenderingContext2DImpl::fast_round_rect_(
174
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastRoundRect));
175
+
176
+ const v8::CFunction fast_round_rect_overloads_[] = {
177
+ CanvasRenderingContext2DImpl::fast_round_rect_array_,
178
+ CanvasRenderingContext2DImpl::fast_round_rect_
179
+ };
180
+
181
+
182
+ v8::CFunction CanvasRenderingContext2DImpl::fast_rect_(
183
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastRect));
184
+
185
+ v8::CFunction CanvasRenderingContext2DImpl::fast_scale_(
186
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastRect));
187
+
188
+ v8::CFunction CanvasRenderingContext2DImpl::fast_set_line_dash_(
189
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastSetLineDash));
190
+
191
+
192
+ v8::CFunction CanvasRenderingContext2DImpl::fast_set_transform_(
193
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastSetTransform));
194
+
195
+ v8::CFunction CanvasRenderingContext2DImpl::fast_set_transform_abcdef_(
196
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastSetTransformABCDEF));
197
+
198
+ const v8::CFunction fast_set_transform_overloads_[] = {
199
+ CanvasRenderingContext2DImpl::fast_set_transform_abcdef_,
200
+ CanvasRenderingContext2DImpl::fast_set_transform_
201
+ };
202
+
203
+ v8::CFunction CanvasRenderingContext2DImpl::fast_transform_(
204
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastTransform));
205
+
206
+
207
+ v8::CFunction CanvasRenderingContext2DImpl::fast_reset_transform_(
208
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastResetTransform));
209
+
210
+
211
+ CanvasRenderingContext2DImpl::CanvasRenderingContext2DImpl(
212
+ CanvasRenderingContext2D *context) : context_(context) {
213
+
214
+ auto ctx_ptr = reinterpret_cast<intptr_t>(reinterpret_cast<intptr_t *>(this));
215
+ auto raf_callback = new OnRafCallback(ctx_ptr, 0);
216
+ auto raf_callback_ptr = reinterpret_cast<intptr_t>(reinterpret_cast<intptr_t *>(raf_callback));
217
+ auto raf = canvas_native_raf_create(raf_callback_ptr, OnRafCallbackOnFrame);
218
+
219
+ this->SetRaf(std::make_shared<RafImpl>(raf_callback, raf_callback_ptr, raf));
220
+
221
+ auto _raf = this->GetRaf();
222
+
223
+ if (_raf != nullptr) {
224
+ canvas_native_raf_start(_raf->GetRaf());
225
+ }
226
+
227
+ }
228
+
229
+
230
+ void CanvasRenderingContext2DImpl::Init(v8::Local<v8::Object> canvasModule, v8::Isolate *isolate) {
231
+ v8::Locker locker(isolate);
232
+ v8::Isolate::Scope isolate_scope(isolate);
233
+ v8::HandleScope handle_scope(isolate);
234
+
235
+ auto ctor = GetCtor(isolate);
236
+ auto context = isolate->GetCurrentContext();
237
+ auto func = ctor->GetFunction(context).ToLocalChecked();
238
+
239
+ canvasModule->Set(context, ConvertToV8String(isolate, "CanvasRenderingContext2D"), func);
240
+ }
241
+
242
+ CanvasRenderingContext2DImpl *
243
+ CanvasRenderingContext2DImpl::GetPointer(const v8::Local<v8::Object> &object) {
244
+ auto ptr = object->GetAlignedPointerFromInternalField(0);
245
+ if (ptr == nullptr) {
246
+ return nullptr;
247
+ }
248
+ return static_cast<CanvasRenderingContext2DImpl *>(ptr);
249
+ }
250
+
251
+ v8::Local<v8::FunctionTemplate> CanvasRenderingContext2DImpl::GetCtor(v8::Isolate *isolate) {
252
+ auto cache = Caches::Get(isolate);
253
+ auto ctor = cache->CanvasRenderingContext2DTmpl.get();
254
+ if (ctor != nullptr) {
255
+ return ctor->Get(isolate);
256
+ }
257
+
258
+ v8::Local<v8::FunctionTemplate> ctorTmpl = v8::FunctionTemplate::New(isolate);
259
+ ctorTmpl->SetClassName(ConvertToV8String(isolate, "CanvasRenderingContext2D"));
260
+
261
+ auto tmpl = ctorTmpl->InstanceTemplate();
262
+ tmpl->SetInternalFieldCount(2);
263
+
264
+ tmpl->Set(ConvertToV8String(isolate, "drawPoint"),
265
+ v8::FunctionTemplate::New(isolate, &DrawPoint));
266
+ tmpl->Set(ConvertToV8String(isolate, "drawPoints"),
267
+ v8::FunctionTemplate::New(isolate, &DrawPoints));
268
+ tmpl->Set(ConvertToV8String(isolate, "drawPaint"),
269
+ v8::FunctionTemplate::New(isolate, &DrawPaint));
270
+
271
+
272
+ tmpl->Set(ConvertToV8String(isolate, "__makeDirty"),
273
+ v8::FunctionTemplate::New(isolate, __MakeDirty));
274
+ tmpl->Set(ConvertToV8String(isolate, "__getPointer"),
275
+ v8::FunctionTemplate::New(isolate, __GetPointer));
276
+ tmpl->Set(ConvertToV8String(isolate, "__resize"), v8::FunctionTemplate::New(isolate, __Resize));
277
+
278
+ tmpl->SetAccessor(ConvertToV8String(isolate, "filter"), GetFilter, SetFilter);
279
+ tmpl->SetAccessor(ConvertToV8String(isolate, "font"), GetFont, SetFont);
280
+ tmpl->SetAccessor(ConvertToV8String(isolate, "letterSpacing"), GetLetterSpacing,
281
+ SetLetterSpacing);
282
+ tmpl->SetAccessor(ConvertToV8String(isolate, "wordSpacing"), GetWordSpacing, SetWordSpacing);
283
+
284
+ tmpl->SetAccessor(ConvertToV8String(isolate, "globalAlpha"), GetGlobalAlpha, SetGlobalAlpha);
285
+ tmpl->SetAccessor(ConvertToV8String(isolate, "imageSmoothingEnabled"), GetImageSmoothingEnabled,
286
+ SetImageSmoothingEnabled);
287
+ tmpl->SetAccessor(ConvertToV8String(isolate, "imageSmoothingQuality"), GetImageSmoothingQuality,
288
+ SetImageSmoothingQuality);
289
+ tmpl->SetAccessor(ConvertToV8String(isolate, "lineDashOffset"), GetLineDashOffset,
290
+ SetLineDashOffset);
291
+ tmpl->SetAccessor(ConvertToV8String(isolate, "lineJoin"), GetLineJoin, SetLineJoin);
292
+ tmpl->SetAccessor(ConvertToV8String(isolate, "lineCap"), GetLineCap, SetLineCap);
293
+ tmpl->SetAccessor(ConvertToV8String(isolate, "miterLimit"), GetMiterLimit, SetMiterLimit);
294
+ tmpl->SetAccessor(ConvertToV8String(isolate, "shadowColor"), GetShadowColor, SetShadowColor);
295
+ tmpl->SetAccessor(ConvertToV8String(isolate, "shadowBlur"), GetShadowBlur, SetShadowBlur);
296
+ tmpl->SetAccessor(ConvertToV8String(isolate, "shadowOffsetX"), GetShadowOffsetX,
297
+ SetShadowOffsetX);
298
+ tmpl->SetAccessor(ConvertToV8String(isolate, "shadowOffsetY"), GetShadowOffsetY,
299
+ SetShadowOffsetY);
300
+ tmpl->SetAccessor(ConvertToV8String(isolate, "textAlign"), GetTextAlign, SetTextAlign);
301
+ tmpl->SetAccessor(ConvertToV8String(isolate, "textBaseline"), GetTextBaseline,
302
+ SetTextBaseline);
303
+ tmpl->SetAccessor(ConvertToV8String(isolate, "globalCompositeOperation"),
304
+ GetGlobalCompositeOperation, SetGlobalCompositeOperation);
305
+ tmpl->SetAccessor(ConvertToV8String(isolate, "fillStyle"), GetFillStyle, SetFillStyle);
306
+ tmpl->SetAccessor(ConvertToV8String(isolate, "strokeStyle"), GetStrokeStyle, SetStrokeStyle);
307
+ tmpl->SetAccessor(ConvertToV8String(isolate, "lineWidth"), GetLineWidth, SetLineWidth);
308
+
309
+
310
+ tmpl->Set(ConvertToV8String(isolate, "addHitRegion"),
311
+ v8::FunctionTemplate::New(isolate, &AddHitRegion));
312
+
313
+ SetFastMethod(isolate, tmpl, "arc", Arc, &fast_arc_, v8::Local<v8::Value>());
314
+
315
+ SetFastMethod(isolate, tmpl, "arcTo", ArcTo, &fast_arc_to_, v8::Local<v8::Value>());
316
+
317
+ SetFastMethod(isolate, tmpl, "beginPath", BeginPath, &fast_begin_path_, v8::Local<v8::Value>());
318
+
319
+
320
+ SetFastMethod(isolate, tmpl, "bezierCurveTo", BezierCurveTo, &fast_bezier_curve_to_,
321
+ v8::Local<v8::Value>());
322
+
323
+
324
+ tmpl->Set(ConvertToV8String(isolate, "clearHitRegions"),
325
+ v8::FunctionTemplate::New(isolate, &ClearHitRegions));
326
+
327
+
328
+ SetFastMethod(isolate, tmpl, "clearRect", ClearRect, &fast_clear_rect_, v8::Local<v8::Value>());
329
+
330
+
331
+ SetFastMethodWithOverLoads(isolate, tmpl, "clip", Clip, fast_clip_overloads_,
332
+ v8::Local<v8::Value>());
333
+
334
+ SetFastMethod(isolate, tmpl, "closePath", ClosePath, &fast_close_path_, v8::Local<v8::Value>());
335
+
336
+
337
+ tmpl->Set(ConvertToV8String(isolate, "createImageData"),
338
+ v8::FunctionTemplate::New(isolate, &CreateImageData));
339
+ tmpl->Set(ConvertToV8String(isolate, "createPattern"),
340
+ v8::FunctionTemplate::New(isolate, &CreatePattern));
341
+ tmpl->Set(ConvertToV8String(isolate, "createLinearGradient"),
342
+ v8::FunctionTemplate::New(isolate, &CreateLinearGradient));
343
+ tmpl->Set(ConvertToV8String(isolate, "createConicGradient"),
344
+ v8::FunctionTemplate::New(isolate, &CreateConicGradient));
345
+ tmpl->Set(ConvertToV8String(isolate, "__createPatternWithNative"),
346
+ v8::FunctionTemplate::New(isolate, &__CreatePatternWithNative));
347
+ tmpl->Set(ConvertToV8String(isolate, "createRadialGradient"),
348
+ v8::FunctionTemplate::New(isolate, &CreateRadialGradient));
349
+ tmpl->Set(ConvertToV8String(isolate, "drawFocusIfNeeded"),
350
+ v8::FunctionTemplate::New(isolate, &DrawFocusIfNeeded));
351
+
352
+
353
+ SetFastMethodWithOverLoads(isolate, tmpl, "drawImage", DrawImage, fast_draw_overloads_,
354
+ v8::Local<v8::Value>());
355
+
356
+ SetFastMethod(isolate, tmpl, "ellipse", Ellipse, &fast_ellipse_, v8::Local<v8::Value>());
357
+
358
+ SetFastMethodWithOverLoads(isolate, tmpl, "fill", Fill, fast_fill_overloads_,
359
+ v8::Local<v8::Value>());
360
+
361
+ SetFastMethod(isolate, tmpl, "fillRect", FillRect, &fast_fill_rect_, v8::Local<v8::Value>());
362
+
363
+ tmpl->Set(ConvertToV8String(isolate, "fillText"),
364
+ v8::FunctionTemplate::New(isolate, &FillText));
365
+ tmpl->Set(ConvertToV8String(isolate, "getImageData"),
366
+ v8::FunctionTemplate::New(isolate, &GetImageData));
367
+ tmpl->Set(ConvertToV8String(isolate, "getLineDash"),
368
+ v8::FunctionTemplate::New(isolate, &GetLineDash));
369
+
370
+ SetFastMethodWithOverLoads(isolate, tmpl, "isPointInPath", IsPointInPath,
371
+ fast_is_point_in_path_overloads_,
372
+ v8::Local<v8::Value>());
373
+
374
+
375
+ SetFastMethodWithOverLoads(isolate, tmpl, "isPointInStroke", IsPointInStroke,
376
+ fast_is_point_in_stroke_overloads_,
377
+ v8::Local<v8::Value>());
378
+
379
+
380
+ SetFastMethod(isolate, tmpl, "lineTo", LineTo, &fast_line_to_, v8::Local<v8::Value>());
381
+
382
+
383
+ tmpl->Set(ConvertToV8String(isolate, "measureText"),
384
+ v8::FunctionTemplate::New(isolate, &MeasureText));
385
+
386
+ SetFastMethod(isolate, tmpl, "moveTo", MoveTo, &fast_move_to_, v8::Local<v8::Value>());
387
+
388
+
389
+ SetFastMethodWithOverLoads(isolate, tmpl, "putImageData", PutImageData,
390
+ fast_put_image_data_overloads_,
391
+ v8::Local<v8::Value>());
392
+
393
+
394
+ SetFastMethod(isolate, tmpl, "quadraticCurveTo", QuadraticCurveTo, &fast_quadratic_curve_to_,
395
+ v8::Local<v8::Value>());
396
+
397
+ SetFastMethodWithOverLoads(isolate, tmpl, "roundRect", RoundRect, fast_round_rect_overloads_,
398
+ v8::Local<v8::Value>());
399
+
400
+ SetFastMethod(isolate, tmpl, "rect", Rect, &fast_rect_, v8::Local<v8::Value>());
401
+
402
+
403
+ tmpl->Set(ConvertToV8String(isolate, "removeHitRegion"),
404
+ v8::FunctionTemplate::New(isolate, &RemoveHitRegion));
405
+
406
+
407
+ SetFastMethod(isolate, tmpl, "resetTransform", ResetTransform, &fast_reset_transform_,
408
+ v8::Local<v8::Value>());
409
+
410
+ SetFastMethod(isolate, tmpl, "restore", Restore, &fast_restore_, v8::Local<v8::Value>());
411
+
412
+ SetFastMethod(isolate, tmpl, "rotate", Rotate, &fast_rotate_, v8::Local<v8::Value>());
413
+
414
+ SetFastMethod(isolate, tmpl, "save", Save, &fast_save_, v8::Local<v8::Value>());
415
+
416
+ SetFastMethod(isolate, tmpl, "scale", Scale, &fast_scale_, v8::Local<v8::Value>());
417
+
418
+
419
+ tmpl->Set(ConvertToV8String(isolate, "scrollPathIntoView"),
420
+ v8::FunctionTemplate::New(isolate, &ScrollPathIntoView));
421
+
422
+ SetFastMethod(isolate, tmpl, "setLineDash", SetLineDash, &fast_set_line_dash_,
423
+ v8::Local<v8::Value>());
424
+
425
+ SetFastMethodWithOverLoads(isolate, tmpl, "setTransform", SetTransform,
426
+ fast_set_transform_overloads_, v8::Local<v8::Value>());
427
+
428
+
429
+ SetFastMethodWithOverLoads(isolate, tmpl, "stroke", Stroke, fast_stroke_overloads_,
430
+ v8::Local<v8::Value>());
431
+
432
+
433
+ SetFastMethod(isolate, tmpl, "strokeRect", StrokeRect, &fast_stroke_rect_,
434
+ v8::Local<v8::Value>());
435
+
436
+
437
+ tmpl->Set(ConvertToV8String(isolate, "strokeText"),
438
+ v8::FunctionTemplate::New(isolate, &StrokeText));
439
+
440
+ SetFastMethod(isolate, tmpl, "transform", Transform, &fast_transform_, v8::Local<v8::Value>());
441
+
442
+
443
+ SetFastMethod(isolate, tmpl, "translate", Translate, &fast_translate_, v8::Local<v8::Value>());
444
+
445
+
446
+ tmpl->Set(ConvertToV8String(isolate, "__toDataURL"),
447
+ v8::FunctionTemplate::New(isolate, &__ToDataURL));
448
+
449
+ cache->CanvasRenderingContext2DTmpl =
450
+ std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
451
+ return ctorTmpl;
452
+ }
453
+
454
+ void CanvasRenderingContext2DImpl::SetRaf(std::shared_ptr<RafImpl> raf) {
455
+ this->raf_ = std::move(raf);
456
+ }
457
+
458
+ RafImpl *CanvasRenderingContext2DImpl::GetRaf() {
459
+ return this->raf_.get();
460
+ }
461
+
462
+ /* Non Standard 2D */
463
+
464
+ void CanvasRenderingContext2DImpl::DrawPoint(const v8::FunctionCallbackInfo<v8::Value> &args) {
465
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
466
+ if (ptr == nullptr) {
467
+ return;
468
+ }
469
+
470
+ auto isolate = args.GetIsolate();
471
+ auto context = isolate->GetCurrentContext();
472
+
473
+ auto x = (float) args[0]->NumberValue(context).ToChecked();
474
+ auto y = (float) args[1]->NumberValue(context).ToChecked();
475
+
476
+ canvas_native_context_draw_point(
477
+ ptr->GetContext(), x, y);
478
+ ptr->UpdateInvalidateState();
479
+ }
480
+
481
+ void CanvasRenderingContext2DImpl::DrawPoints(const v8::FunctionCallbackInfo<v8::Value> &args) {
482
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
483
+ if (ptr == nullptr) {
484
+ return;
485
+ }
486
+
487
+ auto isolate = args.GetIsolate();
488
+ auto context = isolate->GetCurrentContext();
489
+
490
+
491
+ auto mode = ConvertFromV8String(isolate, args[0]);
492
+ auto points = args[1].As<v8::Array>();
493
+ auto size = points->Length();
494
+
495
+
496
+ if ((size % 2) == 0) {
497
+ int32_t pointMode = -1;
498
+ if (mode == "points") {
499
+ pointMode = 0;
500
+ } else if (mode == "lines") {
501
+ pointMode = 1;
502
+ } else if (mode == "polygon") {
503
+ pointMode = 2;
504
+ }
505
+ if (pointMode == -1) {
506
+ return;
507
+ }
508
+ std::vector<float> store;
509
+ store.reserve(size);
510
+ int next = 0;
511
+ for (int i = 0; i < size; i++) {
512
+
513
+ auto object = points->Get(
514
+ context, i).ToLocalChecked().As<v8::Object>();
515
+
516
+ auto x = object->Get(context,
517
+ ConvertToV8String(isolate, "x")).ToLocalChecked()->NumberValue(
518
+ context).ToChecked();
519
+ auto y = object->Get(context,
520
+ ConvertToV8String(isolate, "y")).ToLocalChecked()->NumberValue(
521
+ context).ToChecked();
522
+ store[next] = (float) x;
523
+ store[next + 1] = (float) y;
524
+
525
+ next = i + 2;
526
+ }
527
+
528
+ canvas_native_context_draw_points(
529
+ ptr->GetContext(), pointMode,
530
+ store.data(), store.size());
531
+
532
+
533
+ ptr->UpdateInvalidateState();
534
+ }
535
+ }
536
+
537
+ void CanvasRenderingContext2DImpl::DrawPaint(const v8::FunctionCallbackInfo<v8::Value> &args) {
538
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
539
+ if (ptr == nullptr) {
540
+ return;
541
+ }
542
+
543
+ auto isolate = args.GetIsolate();
544
+
545
+
546
+ auto color = ConvertFromV8String(isolate, args[0]);
547
+ canvas_native_context_draw_paint(
548
+ ptr->GetContext(), color.c_str());
549
+ ptr->UpdateInvalidateState();
550
+ }
551
+
552
+ /* Non Standard 2D */
553
+
554
+
555
+ void CanvasRenderingContext2DImpl::__MakeDirty(const v8::FunctionCallbackInfo<v8::Value> &args) {
556
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
557
+ if (ptr == nullptr) {
558
+ return;
559
+ }
560
+ ptr->UpdateInvalidateState();
561
+ }
562
+
563
+ void CanvasRenderingContext2DImpl::__GetPointer(const v8::FunctionCallbackInfo<v8::Value> &args) {
564
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
565
+ if (ptr == nullptr) {
566
+ args.GetReturnValue().SetEmptyString();
567
+ return;
568
+ }
569
+
570
+ auto isolate = args.GetIsolate();
571
+
572
+ auto pointer = (intptr_t *) ptr->GetContext();
573
+ auto ret = std::to_string((intptr_t) pointer);
574
+ args.GetReturnValue().Set(ConvertToV8String(isolate, ret));
575
+ }
576
+
577
+ void CanvasRenderingContext2DImpl::__Resize(const v8::FunctionCallbackInfo<v8::Value> &args) {
578
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
579
+ if (ptr == nullptr) {
580
+ return;
581
+ }
582
+
583
+ auto isolate = args.GetIsolate();
584
+ auto context = isolate->GetCurrentContext();
585
+
586
+
587
+ auto width = args[0]->NumberValue(context).ToChecked();
588
+ auto height = args[1]->NumberValue(context).ToChecked();
589
+ canvas_native_context_resize(
590
+ ptr->GetContext(),
591
+ static_cast<float>(width),
592
+ static_cast<float>(height));
593
+ }
594
+
595
+
596
+ void CanvasRenderingContext2DImpl::GetFilter(v8::Local<v8::String> property,
597
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
598
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
599
+ if (ptr == nullptr) {
600
+ info.GetReturnValue().SetEmptyString();
601
+ return;
602
+ }
603
+ auto isolate = info.GetIsolate();
604
+ auto filter = canvas_native_context_get_filter(ptr->GetContext());
605
+ info.GetReturnValue().Set(ConvertToV8String(isolate, filter));
606
+ canvas_native_string_destroy((char *) filter);
607
+ }
608
+
609
+ void CanvasRenderingContext2DImpl::SetFilter(v8::Local<v8::String> property,
610
+ v8::Local<v8::Value> value,
611
+ const v8::PropertyCallbackInfo<void> &info) {
612
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
613
+ if (ptr == nullptr) {
614
+ return;
615
+ }
616
+ auto isolate = info.GetIsolate();
617
+ auto val = ConvertFromV8String(isolate, value);
618
+ canvas_native_context_set_filter(ptr->GetContext(), val.c_str());
619
+ }
620
+
621
+ void CanvasRenderingContext2DImpl::GetFont(v8::Local<v8::String> property,
622
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
623
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
624
+ if (ptr == nullptr) {
625
+ info.GetReturnValue().SetEmptyString();
626
+ return;
627
+ }
628
+ auto isolate = info.GetIsolate();
629
+ auto font = canvas_native_context_get_font(ptr->GetContext());
630
+ info.GetReturnValue().Set(ConvertToV8String(isolate, font));
631
+
632
+ canvas_native_string_destroy((char *) font);
633
+ }
634
+
635
+ void CanvasRenderingContext2DImpl::SetFont(v8::Local<v8::String> property,
636
+ v8::Local<v8::Value> value,
637
+ const v8::PropertyCallbackInfo<void> &info) {
638
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
639
+ if (ptr == nullptr) {
640
+ return;
641
+ }
642
+ auto isolate = info.GetIsolate();
643
+ auto val = ConvertFromV8String(isolate, value);
644
+ canvas_native_context_set_font(ptr->GetContext(), val.c_str());
645
+ }
646
+
647
+
648
+ void CanvasRenderingContext2DImpl::GetLetterSpacing(v8::Local<v8::String> property,
649
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
650
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
651
+ if (ptr == nullptr) {
652
+ info.GetReturnValue().SetEmptyString();
653
+ return;
654
+ }
655
+ auto isolate = info.GetIsolate();
656
+ auto font = canvas_native_context_get_letter_spacing(ptr->GetContext());
657
+ info.GetReturnValue().Set(ConvertToV8String(isolate, font));
658
+
659
+ canvas_native_string_destroy((char *) font);
660
+ }
661
+
662
+ void CanvasRenderingContext2DImpl::SetLetterSpacing(v8::Local<v8::String> property,
663
+ v8::Local<v8::Value> value,
664
+ const v8::PropertyCallbackInfo<void> &info) {
665
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
666
+ if (ptr == nullptr) {
667
+ return;
668
+ }
669
+ auto isolate = info.GetIsolate();
670
+ auto val = ConvertFromV8String(isolate, value);
671
+ canvas_native_context_set_letter_spacing(ptr->GetContext(), val.c_str());
672
+ }
673
+
674
+
675
+ void CanvasRenderingContext2DImpl::GetWordSpacing(v8::Local<v8::String> property,
676
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
677
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
678
+ if (ptr == nullptr) {
679
+ info.GetReturnValue().SetEmptyString();
680
+ return;
681
+ }
682
+ auto isolate = info.GetIsolate();
683
+ auto font = canvas_native_context_get_word_spacing(ptr->GetContext());
684
+ info.GetReturnValue().Set(ConvertToV8String(isolate, font));
685
+
686
+ canvas_native_string_destroy((char *) font);
687
+ }
688
+
689
+ void CanvasRenderingContext2DImpl::SetWordSpacing(v8::Local<v8::String> property,
690
+ v8::Local<v8::Value> value,
691
+ const v8::PropertyCallbackInfo<void> &info) {
692
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
693
+ if (ptr == nullptr) {
694
+ return;
695
+ }
696
+ auto isolate = info.GetIsolate();
697
+ auto val = ConvertFromV8String(isolate, value);
698
+ canvas_native_context_set_word_spacing(ptr->GetContext(), val.c_str());
699
+ }
700
+
701
+
702
+ void CanvasRenderingContext2DImpl::GetGlobalAlpha(v8::Local<v8::String> property,
703
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
704
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
705
+ if (ptr == nullptr) {
706
+ info.GetReturnValue().Set(1);
707
+ return;
708
+ }
709
+ auto alpha = canvas_native_context_get_global_alpha(ptr->GetContext());
710
+ info.GetReturnValue().Set((double) alpha);
711
+ }
712
+
713
+ void CanvasRenderingContext2DImpl::SetGlobalAlpha(v8::Local<v8::String> property,
714
+ v8::Local<v8::Value> value,
715
+ const v8::PropertyCallbackInfo<void> &info) {
716
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
717
+ if (ptr == nullptr) {
718
+ return;
719
+ }
720
+ auto isolate = info.GetIsolate();
721
+ auto context = isolate->GetCurrentContext();
722
+ canvas_native_context_set_global_alpha(ptr->GetContext(),
723
+ (float) value->NumberValue(context).ToChecked());
724
+ }
725
+
726
+ void CanvasRenderingContext2DImpl::GetImageSmoothingEnabled(v8::Local<v8::String> property,
727
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
728
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
729
+ if (ptr == nullptr) {
730
+ info.GetReturnValue().Set(false);
731
+ return;
732
+ }
733
+ auto enabled = canvas_native_context_get_image_smoothing_enabled(ptr->GetContext());
734
+ info.GetReturnValue().Set(enabled);
735
+ }
736
+
737
+ void CanvasRenderingContext2DImpl::SetImageSmoothingEnabled(v8::Local<v8::String> property,
738
+ v8::Local<v8::Value> value,
739
+ const v8::PropertyCallbackInfo<void> &info) {
740
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
741
+ if (ptr == nullptr) {
742
+ return;
743
+ }
744
+ auto isolate = info.GetIsolate();
745
+ canvas_native_context_set_image_smoothing_enabled(ptr->GetContext(),
746
+ value->BooleanValue(isolate));
747
+ }
748
+
749
+ void CanvasRenderingContext2DImpl::GetImageSmoothingQuality(v8::Local<v8::String> property,
750
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
751
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
752
+ if (ptr == nullptr) {
753
+ info.GetReturnValue().SetEmptyString();
754
+ return;
755
+ }
756
+ auto isolate = info.GetIsolate();
757
+ auto quality = canvas_native_context_get_image_smoothing_quality(ptr->GetContext());
758
+ info.GetReturnValue().Set(
759
+ ConvertToV8String(isolate, quality));
760
+
761
+ canvas_native_string_destroy((char *) quality);
762
+
763
+ }
764
+
765
+ void CanvasRenderingContext2DImpl::SetImageSmoothingQuality(v8::Local<v8::String> property,
766
+ v8::Local<v8::Value> value,
767
+ const v8::PropertyCallbackInfo<void> &info) {
768
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
769
+ if (ptr == nullptr) {
770
+ return;
771
+ }
772
+ auto isolate = info.GetIsolate();
773
+ auto quality = ConvertFromV8String(isolate, value);
774
+ canvas_native_context_set_image_smoothing_quality(ptr->GetContext(), quality.c_str());
775
+ }
776
+
777
+ void CanvasRenderingContext2DImpl::GetLineDashOffset(v8::Local<v8::String> property,
778
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
779
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
780
+ if (ptr == nullptr) {
781
+ info.GetReturnValue().Set(0);
782
+ return;
783
+ }
784
+ auto offset = canvas_native_context_get_line_dash_offset(ptr->GetContext());
785
+ info.GetReturnValue().Set((double) offset);
786
+ }
787
+
788
+ void CanvasRenderingContext2DImpl::SetLineDashOffset(v8::Local<v8::String> property,
789
+ v8::Local<v8::Value> value,
790
+ const v8::PropertyCallbackInfo<void> &info) {
791
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
792
+ if (ptr == nullptr) {
793
+ return;
794
+ }
795
+ auto isolate = info.GetIsolate();
796
+ auto context = isolate->GetCurrentContext();
797
+ canvas_native_context_set_line_dash_offset(ptr->GetContext(),
798
+ (float) value->NumberValue(context).ToChecked());
799
+ }
800
+
801
+
802
+ void CanvasRenderingContext2DImpl::GetLineJoin(v8::Local<v8::String> property,
803
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
804
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
805
+ if (ptr == nullptr) {
806
+ info.GetReturnValue().Set(0);
807
+ return;
808
+ }
809
+ auto isolate = info.GetIsolate();
810
+ auto join = canvas_native_context_get_line_join(ptr->GetContext());
811
+ info.GetReturnValue().Set(ConvertToV8String(isolate, join));
812
+
813
+ canvas_native_string_destroy((char *) join);
814
+ }
815
+
816
+ void CanvasRenderingContext2DImpl::SetLineJoin(v8::Local<v8::String> property,
817
+ v8::Local<v8::Value> value,
818
+ const v8::PropertyCallbackInfo<void> &info) {
819
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
820
+ if (ptr == nullptr) {
821
+ return;
822
+ }
823
+ auto isolate = info.GetIsolate();
824
+ auto join = ConvertFromV8String(isolate, value);
825
+ canvas_native_context_set_line_join(ptr->GetContext(), join.c_str());
826
+ }
827
+
828
+ void CanvasRenderingContext2DImpl::GetLineCap(v8::Local<v8::String> property,
829
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
830
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
831
+ if (ptr == nullptr) {
832
+ info.GetReturnValue().Set(0);
833
+ return;
834
+ }
835
+ auto isolate = info.GetIsolate();
836
+ auto cap = canvas_native_context_get_line_cap(ptr->GetContext());
837
+ info.GetReturnValue().Set(ConvertToV8String(isolate, cap));
838
+
839
+ canvas_native_string_destroy((char *) cap);
840
+ }
841
+
842
+ void CanvasRenderingContext2DImpl::SetLineCap(v8::Local<v8::String> property,
843
+ v8::Local<v8::Value> value,
844
+ const v8::PropertyCallbackInfo<void> &info) {
845
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
846
+ if (ptr == nullptr) {
847
+ return;
848
+ }
849
+ auto isolate = info.GetIsolate();
850
+ auto cap = ConvertFromV8String(isolate, value);
851
+ canvas_native_context_set_line_cap(ptr->GetContext(), cap.c_str());
852
+ }
853
+
854
+
855
+ void CanvasRenderingContext2DImpl::GetMiterLimit(v8::Local<v8::String> property,
856
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
857
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
858
+ if (ptr == nullptr) {
859
+ info.GetReturnValue().Set(0);
860
+ return;
861
+ }
862
+ auto limit = canvas_native_context_get_miter_limit(ptr->GetContext());
863
+ info.GetReturnValue().Set((double) limit);
864
+ }
865
+
866
+ void CanvasRenderingContext2DImpl::SetMiterLimit(v8::Local<v8::String> property,
867
+ v8::Local<v8::Value> value,
868
+ const v8::PropertyCallbackInfo<void> &info) {
869
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
870
+ if (ptr == nullptr) {
871
+ return;
872
+ }
873
+ auto isolate = info.GetIsolate();
874
+ auto context = isolate->GetCurrentContext();
875
+ canvas_native_context_set_miter_limit(ptr->GetContext(),
876
+ (float) value->NumberValue(context).ToChecked());
877
+ }
878
+
879
+
880
+ void CanvasRenderingContext2DImpl::GetShadowColor(v8::Local<v8::String> property,
881
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
882
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
883
+ if (ptr == nullptr) {
884
+ info.GetReturnValue().Set(0);
885
+ return;
886
+ }
887
+ auto isolate = info.GetIsolate();
888
+ auto color = canvas_native_context_get_shadow_color(ptr->GetContext());
889
+ info.GetReturnValue().Set(ConvertToV8String(isolate, color));
890
+ canvas_native_string_destroy((char *) color);
891
+ }
892
+
893
+ void CanvasRenderingContext2DImpl::SetShadowColor(v8::Local<v8::String> property,
894
+ v8::Local<v8::Value> value,
895
+ const v8::PropertyCallbackInfo<void> &info) {
896
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
897
+ if (ptr == nullptr) {
898
+ return;
899
+ }
900
+ auto isolate = info.GetIsolate();
901
+ auto color = ConvertFromV8String(isolate, value);
902
+ canvas_native_context_set_shadow_color(ptr->GetContext(), color.c_str());
903
+ }
904
+
905
+
906
+ void CanvasRenderingContext2DImpl::GetShadowBlur(v8::Local<v8::String> property,
907
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
908
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
909
+ if (ptr == nullptr) {
910
+ info.GetReturnValue().Set(0);
911
+ return;
912
+ }
913
+ auto blur = canvas_native_context_get_shadow_blur(ptr->GetContext());
914
+ info.GetReturnValue().Set((double) blur);
915
+ }
916
+
917
+ void CanvasRenderingContext2DImpl::SetShadowBlur(v8::Local<v8::String> property,
918
+ v8::Local<v8::Value> value,
919
+ const v8::PropertyCallbackInfo<void> &info) {
920
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
921
+ if (ptr == nullptr) {
922
+ return;
923
+ }
924
+ auto isolate = info.GetIsolate();
925
+ auto context = isolate->GetCurrentContext();
926
+ canvas_native_context_set_shadow_blur(ptr->GetContext(),
927
+ (float) value->NumberValue(context).ToChecked());
928
+ }
929
+
930
+ void CanvasRenderingContext2DImpl::GetShadowOffsetX(v8::Local<v8::String> property,
931
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
932
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
933
+ if (ptr == nullptr) {
934
+ info.GetReturnValue().Set(0);
935
+ return;
936
+ }
937
+ auto x = canvas_native_context_get_shadow_offset_x(ptr->GetContext());
938
+ info.GetReturnValue().Set((double) x);
939
+ }
940
+
941
+ void CanvasRenderingContext2DImpl::SetShadowOffsetX(v8::Local<v8::String> property,
942
+ v8::Local<v8::Value> value,
943
+ const v8::PropertyCallbackInfo<void> &info) {
944
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
945
+ if (ptr == nullptr) {
946
+ return;
947
+ }
948
+ auto isolate = info.GetIsolate();
949
+ auto context = isolate->GetCurrentContext();
950
+ canvas_native_context_set_shadow_offset_x(ptr->GetContext(),
951
+ (float) value->NumberValue(context).ToChecked());
952
+ }
953
+
954
+
955
+ void CanvasRenderingContext2DImpl::GetShadowOffsetY(v8::Local<v8::String> property,
956
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
957
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
958
+ if (ptr == nullptr) {
959
+ info.GetReturnValue().Set(0);
960
+ return;
961
+ }
962
+ auto y = canvas_native_context_get_shadow_offset_y(ptr->GetContext());
963
+ info.GetReturnValue().Set((double) y);
964
+ }
965
+
966
+ void CanvasRenderingContext2DImpl::SetShadowOffsetY(v8::Local<v8::String> property,
967
+ v8::Local<v8::Value> value,
968
+ const v8::PropertyCallbackInfo<void> &info) {
969
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
970
+ if (ptr == nullptr) {
971
+ return;
972
+ }
973
+ auto isolate = info.GetIsolate();
974
+ auto context = isolate->GetCurrentContext();
975
+ canvas_native_context_set_shadow_offset_y(ptr->GetContext(),
976
+ (float) value->NumberValue(context).ToChecked());
977
+ }
978
+
979
+
980
+ void CanvasRenderingContext2DImpl::GetTextAlign(v8::Local<v8::String> property,
981
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
982
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
983
+ if (ptr == nullptr) {
984
+ info.GetReturnValue().Set(0);
985
+ return;
986
+ }
987
+ auto isolate = info.GetIsolate();
988
+ auto alignment = canvas_native_context_get_text_align(ptr->GetContext());
989
+ info.GetReturnValue().Set(
990
+ ConvertToV8String(isolate, alignment));
991
+ canvas_native_string_destroy((char *) alignment);
992
+ }
993
+
994
+ void CanvasRenderingContext2DImpl::SetTextAlign(v8::Local<v8::String> property,
995
+ v8::Local<v8::Value> value,
996
+ const v8::PropertyCallbackInfo<void> &info) {
997
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
998
+ if (ptr == nullptr) {
999
+ return;
1000
+ }
1001
+ auto isolate = info.GetIsolate();
1002
+ auto alignment = ConvertFromV8String(isolate, value);
1003
+ canvas_native_context_set_text_align(ptr->GetContext(), alignment.c_str());
1004
+ }
1005
+
1006
+ void CanvasRenderingContext2DImpl::GetTextBaseline(v8::Local<v8::String> property,
1007
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
1008
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
1009
+ auto isolate = info.GetIsolate();
1010
+ if (ptr == nullptr) {
1011
+ info.GetReturnValue().Set(0);
1012
+ return;
1013
+ }
1014
+ auto baseline = canvas_native_context_get_text_baseline(ptr->GetContext());
1015
+ info.GetReturnValue().Set(
1016
+ ConvertToV8String(isolate, baseline));
1017
+ canvas_native_string_destroy((char *) baseline);
1018
+ }
1019
+
1020
+ void CanvasRenderingContext2DImpl::SetTextBaseline(v8::Local<v8::String> property,
1021
+ v8::Local<v8::Value> value,
1022
+ const v8::PropertyCallbackInfo<void> &info) {
1023
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
1024
+ if (ptr == nullptr) {
1025
+
1026
+ return;
1027
+ }
1028
+ auto isolate = info.GetIsolate();
1029
+ auto baseline = ConvertFromV8String(isolate, value);
1030
+ canvas_native_context_set_text_baseline(ptr->GetContext(), baseline.c_str());
1031
+ }
1032
+
1033
+
1034
+ void CanvasRenderingContext2DImpl::GetGlobalCompositeOperation(v8::Local<v8::String> property,
1035
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
1036
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
1037
+ if (ptr == nullptr) {
1038
+ info.GetReturnValue().Set(0);
1039
+ return;
1040
+ }
1041
+ auto operation = canvas_native_context_get_global_composition(ptr->GetContext());
1042
+ info.GetReturnValue().Set(
1043
+ ConvertToV8String(info.GetIsolate(), operation));
1044
+
1045
+ canvas_native_string_destroy((char *) operation);
1046
+ }
1047
+
1048
+ void CanvasRenderingContext2DImpl::SetGlobalCompositeOperation(v8::Local<v8::String> property,
1049
+ v8::Local<v8::Value> value,
1050
+ const v8::PropertyCallbackInfo<void> &info) {
1051
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
1052
+ if (ptr == nullptr) {
1053
+ return;
1054
+ }
1055
+ auto isolate = info.GetIsolate();
1056
+ auto operation = ConvertFromV8String(isolate, value);
1057
+ canvas_native_context_set_global_composition(ptr->GetContext(), operation.c_str());
1058
+ }
1059
+
1060
+
1061
+ void CanvasRenderingContext2DImpl::GetFillStyle(v8::Local<v8::String> property,
1062
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
1063
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
1064
+ if (ptr == nullptr) {
1065
+ info.GetReturnValue().Set(0);
1066
+ return;
1067
+ }
1068
+ auto isolate = info.GetIsolate();
1069
+
1070
+ PaintStyleType type = canvas_native_context_get_current_fill_style_type(ptr->GetContext());
1071
+
1072
+ switch (type) {
1073
+ case PaintStyleType::PaintStyleTypeColor: {
1074
+ auto color = canvas_native_paint_style_get_current_fill_color_string(
1075
+ ptr->GetContext());
1076
+
1077
+
1078
+ auto value = new OneByteStringResource((char *) color);
1079
+ auto ret = v8::String::NewExternalOneByte(isolate, value);
1080
+ info.GetReturnValue().Set(ret.ToLocalChecked());
1081
+
1082
+ //info.GetReturnValue().Set(ConvertToV8String(isolate, color.c_str()));
1083
+ break;
1084
+ }
1085
+ case PaintStyleType::PaintStyleTypeGradient: {
1086
+ auto style = CanvasGradient::NewInstance(isolate, new CanvasGradient(
1087
+ canvas_native_context_get_fill_style(ptr->GetContext())));
1088
+
1089
+ info.GetReturnValue().Set(style);
1090
+
1091
+ break;
1092
+ }
1093
+ case PaintStyleType::PaintStyleTypePattern: {
1094
+ auto style = CanvasPattern::NewInstance(isolate, new CanvasPattern(
1095
+ canvas_native_context_get_fill_style(ptr->GetContext())));
1096
+
1097
+ info.GetReturnValue().Set(style);
1098
+ break;
1099
+ }
1100
+ case PaintStyleType::PaintStyleTypeNone: {
1101
+ info.GetReturnValue().SetUndefined();
1102
+ break;
1103
+ }
1104
+ }
1105
+
1106
+ }
1107
+
1108
+ void CanvasRenderingContext2DImpl::SetFillStyle(v8::Local<v8::String> property,
1109
+ v8::Local<v8::Value> value,
1110
+ const v8::PropertyCallbackInfo<void> &info) {
1111
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
1112
+ if (ptr == nullptr) {
1113
+ return;
1114
+ }
1115
+ auto isolate = info.GetIsolate();
1116
+
1117
+ if (value->IsString()) {
1118
+ auto style = ConvertFromV8String(isolate, value);
1119
+ canvas_native_paint_style_set_fill_color_with_c_string(ptr->GetContext(),
1120
+ style.c_str());
1121
+ } else if (value->IsObject()) {
1122
+
1123
+ auto type = GetNativeType(value);
1124
+
1125
+ switch (type) {
1126
+ case NativeType::CanvasGradient: {
1127
+ auto gradient = CanvasGradient::GetPointer(value.As<v8::Object>());
1128
+ canvas_native_context_set_fill_style(ptr->GetContext(),
1129
+ gradient->GetPaintStyle());
1130
+ }
1131
+ break;
1132
+ case NativeType::CanvasPattern: {
1133
+ auto pattern = CanvasPattern::GetPointer(value.As<v8::Object>());
1134
+ canvas_native_context_set_fill_style(ptr->GetContext(),
1135
+ pattern->GetPaintStyle());
1136
+ }
1137
+ break;
1138
+ default:
1139
+ // noop
1140
+ break;
1141
+ }
1142
+ }
1143
+ }
1144
+
1145
+ void CanvasRenderingContext2DImpl::GetStrokeStyle(v8::Local<v8::String> property,
1146
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
1147
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
1148
+ if (ptr == nullptr) {
1149
+ info.GetReturnValue().SetUndefined();
1150
+ return;
1151
+ }
1152
+ auto isolate = info.GetIsolate();
1153
+
1154
+ PaintStyleType type = canvas_native_context_get_current_stroke_style_type(ptr->GetContext());
1155
+
1156
+ switch (type) {
1157
+ case PaintStyleType::PaintStyleTypeColor: {
1158
+ auto color = canvas_native_paint_style_get_current_stroke_color_string(
1159
+ ptr->GetContext());
1160
+
1161
+ auto value = new OneByteStringResource((char *) color);
1162
+ auto ret = v8::String::NewExternalOneByte(isolate, value);
1163
+ info.GetReturnValue().Set(ret.ToLocalChecked());
1164
+
1165
+ //info.GetReturnValue().Set(ConvertToV8String(isolate, color.c_str()));
1166
+ break;
1167
+ }
1168
+ case PaintStyleType::PaintStyleTypeGradient: {
1169
+ auto style = CanvasGradient::NewInstance(isolate, new CanvasGradient(
1170
+ canvas_native_context_get_stroke_style(ptr->GetContext())));
1171
+
1172
+ info.GetReturnValue().Set(style);
1173
+
1174
+ break;
1175
+ }
1176
+ case PaintStyleType::PaintStyleTypePattern: {
1177
+ auto style = CanvasPattern::NewInstance(isolate, new CanvasPattern(
1178
+ canvas_native_context_get_stroke_style(ptr->GetContext())));
1179
+
1180
+ info.GetReturnValue().Set(style);
1181
+ break;
1182
+ }
1183
+ case PaintStyleType::PaintStyleTypeNone: {
1184
+ info.GetReturnValue().SetUndefined();
1185
+ break;
1186
+ }
1187
+ }
1188
+
1189
+ }
1190
+
1191
+
1192
+ void CanvasRenderingContext2DImpl::SetStrokeStyle(v8::Local<v8::String> property,
1193
+ v8::Local<v8::Value> value,
1194
+ const v8::PropertyCallbackInfo<void> &info) {
1195
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
1196
+ if (ptr == nullptr) {
1197
+ return;
1198
+ }
1199
+ auto isolate = info.GetIsolate();
1200
+
1201
+ if (value->IsString()) {
1202
+ auto style = ConvertFromV8String(isolate, value);
1203
+ canvas_native_paint_style_set_stroke_color_with_c_string(ptr->GetContext(),
1204
+ style.c_str());
1205
+ } else if (value->IsObject()) {
1206
+
1207
+ auto type = GetNativeType(value);
1208
+
1209
+ switch (type) {
1210
+ case NativeType::CanvasGradient: {
1211
+ auto gradient = CanvasGradient::GetPointer(value.As<v8::Object>());
1212
+ canvas_native_context_set_stroke_style(ptr->GetContext(),
1213
+ gradient->GetPaintStyle());
1214
+ }
1215
+ break;
1216
+ case NativeType::CanvasPattern: {
1217
+ auto pattern = CanvasPattern::GetPointer(value.As<v8::Object>());
1218
+ canvas_native_context_set_stroke_style(ptr->GetContext(),
1219
+ pattern->GetPaintStyle());
1220
+ }
1221
+ break;
1222
+ default:
1223
+ break;
1224
+ }
1225
+ }
1226
+ }
1227
+
1228
+
1229
+ void CanvasRenderingContext2DImpl::GetLineWidth(v8::Local<v8::String> property,
1230
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
1231
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
1232
+ if (ptr == nullptr) {
1233
+ info.GetReturnValue().Set(0);
1234
+ return;
1235
+ }
1236
+
1237
+ auto lineWidth = canvas_native_context_get_line_width(ptr->GetContext());
1238
+
1239
+ info.GetReturnValue().Set((double) lineWidth);
1240
+
1241
+ }
1242
+
1243
+
1244
+ void CanvasRenderingContext2DImpl::SetLineWidth(v8::Local<v8::String> property,
1245
+ v8::Local<v8::Value> value,
1246
+ const v8::PropertyCallbackInfo<void> &info) {
1247
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
1248
+ if (ptr == nullptr) {
1249
+ return;
1250
+ }
1251
+ auto isolate = info.GetIsolate();
1252
+ auto context = isolate->GetCurrentContext();
1253
+
1254
+ auto lineWidth = (float) value->NumberValue(context).ToChecked();
1255
+ canvas_native_context_set_line_width(ptr->GetContext(), lineWidth);
1256
+ }
1257
+
1258
+ void CanvasRenderingContext2DImpl::GetLineDash(v8::Local<v8::String> property,
1259
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
1260
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
1261
+ if (ptr == nullptr) {
1262
+ info.GetReturnValue().Set(0);
1263
+ return;
1264
+ }
1265
+
1266
+ auto isolate = info.GetIsolate();
1267
+ auto context = isolate->GetCurrentContext();
1268
+
1269
+ auto lineDash = canvas_native_context_get_line_dash(ptr->GetContext());
1270
+ auto buf = canvas_native_f32_buffer_get_bytes(lineDash);
1271
+ auto size = canvas_native_f32_buffer_get_length(lineDash);
1272
+ auto ret = v8::Array::New(isolate, (int) size);
1273
+ for (int i = 0; i < size; i++) {
1274
+ auto item = buf[i];
1275
+ ret->Set(context, i, v8::Number::New(isolate, (double) item));
1276
+ }
1277
+
1278
+ }
1279
+
1280
+
1281
+ void CanvasRenderingContext2DImpl::SetLineDash(v8::Local<v8::String> property,
1282
+ v8::Local<v8::Value> value,
1283
+ const v8::PropertyCallbackInfo<void> &info) {
1284
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
1285
+ if (ptr == nullptr) {
1286
+ return;
1287
+ }
1288
+ auto isolate = info.GetIsolate();
1289
+ auto context = isolate->GetCurrentContext();
1290
+
1291
+ if (!value->IsNullOrUndefined() && value->IsObject()) {
1292
+ auto lineDashObject = value.As<v8::Object>();
1293
+ if (lineDashObject->IsArray()) {
1294
+ auto lineDash = lineDashObject.As<v8::Array>();
1295
+ auto size = lineDash->Length();
1296
+ std::vector<float> dash;
1297
+ dash.reserve(size);
1298
+ for (int i = 0; i < size; ++i) {
1299
+ auto val = lineDash->Get(context, i).ToLocalChecked();
1300
+ dash[i] = (float) val->NumberValue(context).ToChecked();
1301
+ }
1302
+ canvas_native_context_set_line_dash(ptr->GetContext(), dash.data(),
1303
+ dash.size());
1304
+ }
1305
+ }
1306
+ }
1307
+
1308
+ void CanvasRenderingContext2DImpl::AddHitRegion(const v8::FunctionCallbackInfo<v8::Value> &args) {
1309
+ // todo
1310
+ // CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1311
+ // if (ptr == nullptr) {
1312
+ // return;
1313
+ // }
1314
+ }
1315
+
1316
+ void CanvasRenderingContext2DImpl::Arc(const v8::FunctionCallbackInfo<v8::Value> &args) {
1317
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1318
+ if (ptr == nullptr) {
1319
+ return;
1320
+ }
1321
+
1322
+ auto isolate = args.GetIsolate();
1323
+ auto context = isolate->GetCurrentContext();
1324
+
1325
+ auto anti_clockwise = false;
1326
+ if (args.Length() == 6) {
1327
+ anti_clockwise = args[5]->BooleanValue(isolate);
1328
+ }
1329
+ canvas_native_context_arc(
1330
+ ptr->GetContext(),
1331
+ static_cast<float>(args[0]->NumberValue(context).ToChecked()),
1332
+ static_cast<float>(args[1]->NumberValue(context).ToChecked()),
1333
+ static_cast<float>(args[2]->NumberValue(context).ToChecked()),
1334
+ static_cast<float>(args[3]->NumberValue(context).ToChecked()),
1335
+ static_cast<float>(args[4]->NumberValue(context).ToChecked()),
1336
+ anti_clockwise
1337
+ );
1338
+ }
1339
+
1340
+ void CanvasRenderingContext2DImpl::ArcTo(const v8::FunctionCallbackInfo<v8::Value> &args) {
1341
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1342
+ if (ptr == nullptr) {
1343
+ return;
1344
+ }
1345
+
1346
+ auto isolate = args.GetIsolate();
1347
+ auto context = isolate->GetCurrentContext();
1348
+
1349
+ auto x1 = static_cast<float>(args[0]->NumberValue(context).ToChecked());
1350
+ auto y1 = static_cast<float>(args[1]->NumberValue(context).ToChecked());
1351
+ auto x2 = static_cast<float>(args[2]->NumberValue(context).ToChecked());
1352
+ auto y2 = static_cast<float>(args[3]->NumberValue(context).ToChecked());
1353
+ auto radius = static_cast<float>(args[4]->NumberValue(context).ToChecked());
1354
+ canvas_native_context_arc_to(
1355
+ ptr->GetContext(),
1356
+ x1,
1357
+ y1,
1358
+ x2,
1359
+ y2,
1360
+ radius
1361
+ );
1362
+ }
1363
+
1364
+ void CanvasRenderingContext2DImpl::BeginPath(const v8::FunctionCallbackInfo<v8::Value> &args) {
1365
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1366
+ if (ptr == nullptr) {
1367
+ return;
1368
+ }
1369
+
1370
+ canvas_native_context_begin_path(
1371
+ ptr->GetContext()
1372
+ );
1373
+ }
1374
+
1375
+ void CanvasRenderingContext2DImpl::BezierCurveTo(const v8::FunctionCallbackInfo<v8::Value> &args) {
1376
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1377
+ if (ptr == nullptr) {
1378
+ return;
1379
+ }
1380
+
1381
+ auto isolate = args.GetIsolate();
1382
+ auto context = isolate->GetCurrentContext();
1383
+
1384
+ canvas_native_context_bezier_curve_to(
1385
+ ptr->GetContext(),
1386
+ static_cast<float>(args[0]->NumberValue(context).ToChecked()),
1387
+ static_cast<float>(args[1]->NumberValue(context).ToChecked()),
1388
+ static_cast<float>(args[2]->NumberValue(context).ToChecked()),
1389
+ static_cast<float>(args[3]->NumberValue(context).ToChecked()),
1390
+ static_cast<float>(args[4]->NumberValue(context).ToChecked()),
1391
+ static_cast<float>(args[5]->NumberValue(context).ToChecked())
1392
+ );
1393
+ }
1394
+
1395
+ void
1396
+ CanvasRenderingContext2DImpl::ClearHitRegions(const v8::FunctionCallbackInfo<v8::Value> &args) {
1397
+ // TODO
1398
+ // CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1399
+ // if (ptr == nullptr) {
1400
+ // return;
1401
+ // }
1402
+ }
1403
+
1404
+ void CanvasRenderingContext2DImpl::ClearRect(const v8::FunctionCallbackInfo<v8::Value> &args) {
1405
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1406
+ if (ptr == nullptr) {
1407
+ return;
1408
+ }
1409
+
1410
+ auto isolate = args.GetIsolate();
1411
+ auto context = isolate->GetCurrentContext();
1412
+
1413
+ canvas_native_context_clear_rect(
1414
+ ptr->GetContext(),
1415
+ static_cast<float>(args[0]->NumberValue(context).ToChecked()),
1416
+ static_cast<float>(args[1]->NumberValue(context).ToChecked()),
1417
+ static_cast<float>(args[2]->NumberValue(context).ToChecked()),
1418
+ static_cast<float>(args[3]->NumberValue(context).ToChecked())
1419
+ );
1420
+ ptr->UpdateInvalidateState();
1421
+ }
1422
+
1423
+ void CanvasRenderingContext2DImpl::Clip(const v8::FunctionCallbackInfo<v8::Value> &args) {
1424
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1425
+ if (ptr == nullptr) {
1426
+ return;
1427
+ }
1428
+
1429
+ auto isolate = args.GetIsolate();
1430
+ auto context = isolate->GetCurrentContext();
1431
+ auto count = args.Length();
1432
+ if (count == 0) {
1433
+ canvas_native_context_clip_rule(
1434
+ ptr->GetContext(), "nonzero");
1435
+ } else if (count == 1 && args[0]->IsInt32()) {
1436
+ auto val = args[0]->Int32Value(context);
1437
+ switch (val.ToChecked()) {
1438
+ case 0:
1439
+ canvas_native_context_clip_rule(
1440
+ ptr->GetContext(), "nonzero");
1441
+ break;
1442
+ case 1:
1443
+ canvas_native_context_clip_rule(
1444
+ ptr->GetContext(), "evenodd");
1445
+ break;
1446
+ }
1447
+ } else if (count == 1 && args[0]->IsObject()) {
1448
+ auto type = GetNativeType(args[0].As<v8::Object>());
1449
+ if (type == NativeType::Path2D) {
1450
+ auto object = Path2D::GetPointer(args[0].As<v8::Object>());
1451
+
1452
+ if (object != nullptr) {
1453
+ canvas_native_context_clip(
1454
+ ptr->GetContext(), object->GetPath(), "nonzero");
1455
+ }
1456
+ }
1457
+ } else if (count >= 2 && args[0]->IsObject() && args[1]->IsInt32()) {
1458
+ auto type = GetNativeType(args[0].As<v8::Object>());
1459
+ if (type == NativeType::Path2D) {
1460
+ auto object = Path2D::GetPointer(args[0].As<v8::Object>());
1461
+ auto rule = args[1]->Int32Value(context).ToChecked();
1462
+
1463
+ if (object != nullptr) {
1464
+ switch (rule) {
1465
+ case 0:
1466
+ canvas_native_context_clip(
1467
+ ptr->GetContext(), object->GetPath(), "nonzero");
1468
+ break;
1469
+ case 1:
1470
+ canvas_native_context_clip(
1471
+ ptr->GetContext(), object->GetPath(), "evenodd");
1472
+ break;
1473
+ default:
1474
+ break;
1475
+ }
1476
+
1477
+ }
1478
+ }
1479
+ }
1480
+ }
1481
+
1482
+ void CanvasRenderingContext2DImpl::ClosePath(const v8::FunctionCallbackInfo<v8::Value> &args) {
1483
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1484
+ if (ptr == nullptr) {
1485
+ return;
1486
+ }
1487
+
1488
+ canvas_native_context_close_path(
1489
+ ptr->GetContext());
1490
+ }
1491
+
1492
+ void
1493
+ CanvasRenderingContext2DImpl::CreateImageData(const v8::FunctionCallbackInfo<v8::Value> &args) {
1494
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1495
+ if (ptr == nullptr) {
1496
+ args.GetReturnValue().SetUndefined();
1497
+ return;
1498
+ }
1499
+
1500
+ auto isolate = args.GetIsolate();
1501
+ auto context = isolate->GetCurrentContext();
1502
+ auto count = args.Length();
1503
+ auto value = args[0];
1504
+ if (count == 1 && value->IsObject()) {
1505
+
1506
+ auto typeValue = GetNativeType(value);
1507
+
1508
+ if (typeValue == NativeType::ImageData) {
1509
+
1510
+ auto object = ImageDataImpl::GetPointer(value.As<v8::Object>());
1511
+
1512
+ auto width = canvas_native_image_data_get_width(
1513
+ object->GetImageData());
1514
+ auto height = canvas_native_image_data_get_height(
1515
+ object->GetImageData());
1516
+ auto data = new ImageDataImpl(
1517
+ canvas_native_image_data_create(
1518
+ width, height));
1519
+ auto ret = ImageDataImpl::GetCtor(isolate)->GetFunction(
1520
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
1521
+
1522
+
1523
+ ret->SetAlignedPointerInInternalField(0, data);
1524
+
1525
+ SetNativeType(ret, NativeType::ImageData);
1526
+
1527
+ args.GetReturnValue().Set(ret);
1528
+
1529
+ return;
1530
+ }
1531
+
1532
+ } else if (count > 1) {
1533
+
1534
+ auto width = (int) args[0]->NumberValue(context).ToChecked();
1535
+ auto height = (int) args[1]->NumberValue(context).ToChecked();
1536
+ auto data = new ImageDataImpl(
1537
+ canvas_native_image_data_create(
1538
+ width, height));
1539
+
1540
+ auto ret = ImageDataImpl::GetCtor(isolate)->GetFunction(
1541
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
1542
+
1543
+ ret->SetAlignedPointerInInternalField(0, data);
1544
+
1545
+ SetNativeType(ret, NativeType::ImageData);
1546
+
1547
+ args.GetReturnValue().Set(ret);
1548
+ }
1549
+
1550
+ args.GetReturnValue().SetUndefined();
1551
+ }
1552
+
1553
+ void
1554
+ CanvasRenderingContext2DImpl::CreatePattern(const v8::FunctionCallbackInfo<v8::Value> &args) {
1555
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1556
+ if (ptr == nullptr) {
1557
+ args.GetReturnValue().SetNull();
1558
+ return;
1559
+ }
1560
+ auto isolate = args.GetIsolate();
1561
+
1562
+ if (args.Length() > 1) {
1563
+ auto value = args[0];
1564
+ auto valueType = GetNativeType(value);
1565
+
1566
+ switch (valueType) {
1567
+ case NativeType::ImageAsset: {
1568
+ auto image_asset = ImageAssetImpl::GetPointer(value.As<v8::Object>());
1569
+ if (image_asset != nullptr) {
1570
+ auto rep = ConvertFromV8String(isolate, args[1]);
1571
+ auto pattern = canvas_native_context_create_pattern_asset(
1572
+ ptr->GetContext(),
1573
+ image_asset->GetImageAsset(), rep.c_str());
1574
+ auto style_type = canvas_native_context_get_style_type(pattern);
1575
+ if (style_type ==
1576
+ PaintStyleType::PaintStyleTypeNone) {
1577
+ args.GetReturnValue().SetUndefined();
1578
+ canvas_native_paint_style_destroy(pattern);
1579
+ } else {
1580
+ auto data = CanvasPattern::NewInstance(isolate, new CanvasPattern(pattern));
1581
+ args.GetReturnValue().Set(data);
1582
+ }
1583
+ }
1584
+ return;
1585
+ }
1586
+ case NativeType::ImageBitmap: {
1587
+ auto image_bitmap = ImageBitmapImpl::GetPointer(value.As<v8::Object>());
1588
+ if (image_bitmap != nullptr) {
1589
+ auto rep = ConvertFromV8String(isolate, args[1]);
1590
+ auto pattern = canvas_native_context_create_pattern_asset(
1591
+ ptr->GetContext(),
1592
+ image_bitmap->GetImageAsset(), rep.c_str());
1593
+ auto style_type = canvas_native_context_get_style_type(pattern);
1594
+ if (style_type ==
1595
+ PaintStyleType::PaintStyleTypeNone) {
1596
+ args.GetReturnValue().SetUndefined();
1597
+ canvas_native_paint_style_destroy(pattern);
1598
+ } else {
1599
+ auto data = CanvasPattern::NewInstance(isolate, new CanvasPattern(pattern));
1600
+ args.GetReturnValue().Set(data);
1601
+ }
1602
+ }
1603
+ return;
1604
+ }
1605
+ case NativeType::CanvasRenderingContext2D: {
1606
+ auto canvas_2d = CanvasRenderingContext2DImpl::GetPointer(
1607
+ value.As<v8::Object>());
1608
+ if (canvas_2d != nullptr) {
1609
+ auto rep = ConvertFromV8String(isolate, args[1]);
1610
+ auto pattern = canvas_native_context_create_pattern_canvas2d(
1611
+ canvas_2d->GetContext(),
1612
+ ptr->GetContext(), rep.c_str());
1613
+ auto style_type = canvas_native_context_get_style_type(pattern);
1614
+ if (style_type ==
1615
+ PaintStyleType::PaintStyleTypeNone) {
1616
+ args.GetReturnValue().SetUndefined();
1617
+ canvas_native_paint_style_destroy(pattern);
1618
+ } else {
1619
+ auto data = CanvasPattern::NewInstance(isolate, new CanvasPattern(pattern));
1620
+ args.GetReturnValue().Set(data);
1621
+ }
1622
+ }
1623
+ return;
1624
+ }
1625
+ case NativeType::WebGLRenderingContextBase: {
1626
+ auto webgl = WebGLRenderingContextBase::GetPointer(value.As<v8::Object>());
1627
+ if (webgl != nullptr) {
1628
+ auto rep = ConvertFromV8String(isolate, args[1]);
1629
+ auto pattern = canvas_native_context_create_pattern_webgl(
1630
+ webgl->GetState(),
1631
+ ptr->GetContext(), rep.c_str());
1632
+ auto type = canvas_native_context_get_style_type(pattern);
1633
+ if (type ==
1634
+ PaintStyleType::PaintStyleTypeNone) {
1635
+ args.GetReturnValue().SetNull();
1636
+ canvas_native_paint_style_destroy(pattern);
1637
+ return;
1638
+ } else {
1639
+ auto ret = CanvasPattern::NewInstance(isolate, new CanvasPattern(
1640
+ pattern));
1641
+ args.GetReturnValue().Set(ret);
1642
+ return;
1643
+ }
1644
+ }
1645
+ return;
1646
+ }
1647
+ default:
1648
+ args.GetReturnValue().SetNull();
1649
+ return;
1650
+ }
1651
+
1652
+ return;
1653
+ }
1654
+
1655
+ args.GetReturnValue().SetNull();
1656
+ }
1657
+
1658
+ void
1659
+ CanvasRenderingContext2DImpl::CreateLinearGradient(
1660
+ const v8::FunctionCallbackInfo<v8::Value> &args) {
1661
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1662
+ if (ptr == nullptr) {
1663
+ args.GetReturnValue().SetUndefined();
1664
+ return;
1665
+ }
1666
+
1667
+ auto isolate = args.GetIsolate();
1668
+ auto context = isolate->GetCurrentContext();
1669
+
1670
+ if (args.Length() == 4) {
1671
+ auto x0 = static_cast<float>(args[0]->NumberValue(context).ToChecked());
1672
+ auto y0 = static_cast<float>(args[1]->NumberValue(context).ToChecked());
1673
+ auto x1 = static_cast<float>(args[2]->NumberValue(context).ToChecked());
1674
+ auto y1 = static_cast<float>(args[3]->NumberValue(context).ToChecked());
1675
+
1676
+ auto gradient = canvas_native_context_create_linear_gradient(
1677
+ ptr->GetContext(), x0, y0, x1,
1678
+ y1);
1679
+
1680
+ auto data = CanvasGradient::NewInstance(isolate, new CanvasGradient(
1681
+ gradient));
1682
+
1683
+ args.GetReturnValue().Set(data);
1684
+
1685
+ return;
1686
+ }
1687
+
1688
+ args.GetReturnValue().SetNull();
1689
+ }
1690
+
1691
+
1692
+ void CanvasRenderingContext2DImpl::CreateConicGradient(
1693
+ const v8::FunctionCallbackInfo<v8::Value> &args) {
1694
+
1695
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1696
+ if (ptr == nullptr) {
1697
+ args.GetReturnValue().SetUndefined();
1698
+ return;
1699
+ }
1700
+
1701
+ auto isolate = args.GetIsolate();
1702
+ auto context = isolate->GetCurrentContext();
1703
+
1704
+ if (args.Length() == 3) {
1705
+
1706
+ auto startAngle = static_cast<float>(args[0]->NumberValue(context).ToChecked());
1707
+ auto x = static_cast<float>(args[1]->NumberValue(context).ToChecked());
1708
+ auto y = static_cast<float>(args[2]->NumberValue(context).ToChecked());
1709
+
1710
+
1711
+ auto gradient = canvas_native_context_create_conic_gradient(
1712
+ ptr->GetContext(), startAngle, x, y);
1713
+
1714
+ auto data = CanvasGradient::NewInstance(isolate, new CanvasGradient(
1715
+ gradient));
1716
+
1717
+ args.GetReturnValue().Set(data);
1718
+
1719
+ return;
1720
+ }
1721
+
1722
+ args.GetReturnValue().SetNull();
1723
+ }
1724
+
1725
+ void
1726
+ CanvasRenderingContext2DImpl::__CreatePatternWithNative(
1727
+ const v8::FunctionCallbackInfo<v8::Value> &args) {
1728
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1729
+ if (ptr == nullptr) {
1730
+ args.GetReturnValue().SetUndefined();
1731
+ return;
1732
+ }
1733
+
1734
+ auto isolate = args.GetIsolate();
1735
+ auto context = isolate->GetCurrentContext();
1736
+
1737
+
1738
+ auto pointer = args[0]->ToBigInt(context).ToLocalChecked();
1739
+
1740
+ auto pattern = canvas_native_pattern_from_ptr(pointer->Int64Value());
1741
+ auto type = canvas_native_context_get_style_type(pattern);
1742
+ if (type == PaintStyleType::PaintStyleTypeNone) {
1743
+ args.GetReturnValue().SetUndefined();
1744
+ canvas_native_paint_style_destroy(pattern);
1745
+ } else {
1746
+ auto data = CanvasPattern::NewInstance(isolate, new CanvasPattern(pattern));
1747
+
1748
+ args.GetReturnValue().Set(data);
1749
+ }
1750
+
1751
+ }
1752
+
1753
+ void
1754
+ CanvasRenderingContext2DImpl::CreateRadialGradient(
1755
+ const v8::FunctionCallbackInfo<v8::Value> &args) {
1756
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1757
+ if (ptr == nullptr) {
1758
+ args.GetReturnValue().SetNull();
1759
+ return;
1760
+ }
1761
+
1762
+ auto isolate = args.GetIsolate();
1763
+ auto context = isolate->GetCurrentContext();
1764
+
1765
+ if (args.Length() == 6) {
1766
+ auto x0 = static_cast<float>(args[0]->NumberValue(context).ToChecked());
1767
+ auto y0 = static_cast<float>(args[1]->NumberValue(context).ToChecked());
1768
+ auto r0 = static_cast<float>(args[2]->NumberValue(context).ToChecked());
1769
+ auto x1 = static_cast<float>(args[3]->NumberValue(context).ToChecked());
1770
+ auto y1 = static_cast<float>(args[4]->NumberValue(context).ToChecked());
1771
+ auto r1 = static_cast<float>(args[5]->NumberValue(context).ToChecked());
1772
+
1773
+ auto gradient = canvas_native_context_create_radial_gradient(
1774
+ ptr->GetContext(), x0, y0, r0,
1775
+ x1, y1, r1);
1776
+
1777
+ auto data = CanvasGradient::NewInstance(isolate, new CanvasGradient(gradient));
1778
+
1779
+ args.GetReturnValue().Set(data);
1780
+ return;
1781
+ }
1782
+
1783
+ args.GetReturnValue().SetNull();
1784
+ }
1785
+
1786
+
1787
+ void
1788
+ CanvasRenderingContext2DImpl::DrawFocusIfNeeded(const v8::FunctionCallbackInfo<v8::Value> &args) {
1789
+ // TODO
1790
+ // CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1791
+ // if (ptr == nullptr) {
1792
+ // return;
1793
+ // }
1794
+ }
1795
+
1796
+
1797
+ void
1798
+ CanvasRenderingContext2DImpl::DrawImage(const v8::FunctionCallbackInfo<v8::Value> &args) {
1799
+
1800
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1801
+ if (ptr == nullptr) {
1802
+ return;
1803
+ }
1804
+
1805
+ auto count = args.Length();
1806
+ auto value = args[0];
1807
+
1808
+ if (value->IsNullOrUndefined() || !value->IsObject()) {
1809
+ return;
1810
+ }
1811
+
1812
+ auto isolate = args.GetIsolate();
1813
+ auto context = isolate->GetCurrentContext();
1814
+ auto image = value.As<v8::Object>();
1815
+ auto imageType = GetNativeType(image);
1816
+ if (count == 3) {
1817
+ auto dx = static_cast<float>(args[1]->NumberValue(context).ToChecked());
1818
+ auto dy = static_cast<float>(args[2]->NumberValue(context).ToChecked());
1819
+
1820
+ switch (imageType) {
1821
+ case NativeType::ImageAsset: {
1822
+ auto image_asset = ImageAssetImpl::GetPointer(image);
1823
+
1824
+ if (image_asset != nullptr) {
1825
+ canvas_native_context_draw_image_dx_dy_asset(
1826
+ ptr->GetContext(),
1827
+ image_asset->GetImageAsset(),
1828
+ dx, dy);
1829
+ ptr->UpdateInvalidateState();
1830
+ }
1831
+ }
1832
+ break;
1833
+ case NativeType::ImageBitmap: {
1834
+ auto image_bitmap = ImageBitmapImpl::GetPointer(image);
1835
+ if (image_bitmap != nullptr) {
1836
+ canvas_native_context_draw_image_dx_dy_asset(
1837
+ ptr->GetContext(),
1838
+ image_bitmap->GetImageAsset(),
1839
+ dx, dy);
1840
+ ptr->UpdateInvalidateState();
1841
+ }
1842
+ }
1843
+ break;
1844
+ case NativeType::CanvasRenderingContext2D: {
1845
+ auto image_canvas = CanvasRenderingContext2DImpl::GetPointer(image);
1846
+ if (image_canvas != nullptr) {
1847
+ canvas_native_context_draw_image_dx_dy_context(
1848
+ ptr->GetContext(),
1849
+ image_canvas->GetContext(),
1850
+ dx, dy);
1851
+ ptr->UpdateInvalidateState();
1852
+ }
1853
+ }
1854
+ break;
1855
+ default:
1856
+ break;
1857
+ }
1858
+ } else if (count == 5) {
1859
+ auto dx = (float) args[1]->NumberValue(context).ToChecked();
1860
+ auto dy = (float) args[2]->NumberValue(context).ToChecked();
1861
+ auto dWidth = (float) args[3]->NumberValue(context).ToChecked();
1862
+ auto dHeight = (float) args[4]->NumberValue(context).ToChecked();
1863
+
1864
+ switch (imageType) {
1865
+ case NativeType::ImageAsset: {
1866
+ auto image_asset = ImageAssetImpl::GetPointer(image);
1867
+
1868
+ if (image_asset != nullptr) {
1869
+ canvas_native_context_draw_image_dx_dy_dw_dh_asset(
1870
+ ptr->GetContext(),
1871
+ image_asset->GetImageAsset(),
1872
+ dx, dy,
1873
+ dWidth,
1874
+ dHeight);
1875
+ ptr->UpdateInvalidateState();
1876
+ }
1877
+ }
1878
+ break;
1879
+ case NativeType::ImageBitmap: {
1880
+ auto image_bitmap = ImageBitmapImpl::GetPointer(image);
1881
+ if (image_bitmap != nullptr) {
1882
+ canvas_native_context_draw_image_dx_dy_dw_dh_asset(
1883
+ ptr->GetContext(),
1884
+ image_bitmap->GetImageAsset(),
1885
+ dx, dy,
1886
+ dWidth,
1887
+ dHeight);
1888
+ ptr->UpdateInvalidateState();
1889
+ }
1890
+ }
1891
+ break;
1892
+ case NativeType::CanvasRenderingContext2D: {
1893
+ auto image_canvas = CanvasRenderingContext2DImpl::GetPointer(image);
1894
+ if (image_canvas != nullptr) {
1895
+ canvas_native_context_draw_image_dx_dy_dw_dh_context(
1896
+ ptr->GetContext(),
1897
+ image_canvas->GetContext(),
1898
+ dx, dy,
1899
+ dWidth,
1900
+ dHeight);
1901
+ ptr->UpdateInvalidateState();
1902
+ }
1903
+ }
1904
+ break;
1905
+ default:
1906
+ break;
1907
+ }
1908
+
1909
+ } else if (count == 9) {
1910
+ auto sx = (float) args[1]->NumberValue(context).ToChecked();
1911
+ auto sy = (float) args[2]->NumberValue(context).ToChecked();
1912
+ auto sWidth = (float) args[3]->NumberValue(context).ToChecked();
1913
+ auto sHeight = (float) args[4]->NumberValue(context).ToChecked();
1914
+ auto dx = (float) args[5]->NumberValue(context).ToChecked();
1915
+ auto dy = (float) args[6]->NumberValue(context).ToChecked();
1916
+ auto dWidth = (float) args[7]->NumberValue(context).ToChecked();
1917
+ auto dHeight = (float) args[8]->NumberValue(context).ToChecked();
1918
+
1919
+ switch (imageType) {
1920
+ case NativeType::ImageAsset: {
1921
+ auto image_asset = ImageAssetImpl::GetPointer(image);
1922
+
1923
+ if (image_asset != nullptr) {
1924
+ canvas_native_context_draw_image_asset(
1925
+ ptr->GetContext(),
1926
+ image_asset->GetImageAsset(),
1927
+ sx,
1928
+ sy, sWidth, sHeight,
1929
+ dx,
1930
+ dy, dWidth, dHeight);
1931
+ ptr->UpdateInvalidateState();
1932
+ }
1933
+ }
1934
+ break;
1935
+ case NativeType::ImageBitmap: {
1936
+ auto image_bitmap = ImageBitmapImpl::GetPointer(image);
1937
+ if (image_bitmap != nullptr) {
1938
+ canvas_native_context_draw_image_asset(
1939
+ ptr->GetContext(),
1940
+ image_bitmap->GetImageAsset(),
1941
+ sx,
1942
+ sy, sWidth, sHeight,
1943
+ dx,
1944
+ dy, dWidth, dHeight);
1945
+ ptr->UpdateInvalidateState();
1946
+ }
1947
+ }
1948
+ break;
1949
+ case NativeType::CanvasRenderingContext2D: {
1950
+ auto image_canvas = CanvasRenderingContext2DImpl::GetPointer(image);
1951
+ if (image_canvas != nullptr) {
1952
+ canvas_native_context_draw_image_context(
1953
+ ptr->GetContext(),
1954
+ image_canvas->GetContext(),
1955
+ sx,
1956
+ sy, sWidth, sHeight,
1957
+ dx,
1958
+ dy, dWidth, dHeight);
1959
+ ptr->UpdateInvalidateState();
1960
+ }
1961
+ }
1962
+ break;
1963
+ default:
1964
+ break;
1965
+ }
1966
+ }
1967
+ }
1968
+
1969
+
1970
+ void
1971
+ CanvasRenderingContext2DImpl::Ellipse(const v8::FunctionCallbackInfo<v8::Value> &args) {
1972
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1973
+ if (ptr == nullptr) {
1974
+ return;
1975
+ }
1976
+ auto isolate = args.GetIsolate();
1977
+ auto context = isolate->GetCurrentContext();
1978
+
1979
+ if (args.Length() == 8) {
1980
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
1981
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
1982
+ auto radiusX = static_cast<float>(args[2]->NumberValue(context).ToChecked());
1983
+ auto radiusY = static_cast<float>(args[3]->NumberValue(context).ToChecked());
1984
+ auto rotation = static_cast<float>(args[4]->NumberValue(context).ToChecked());
1985
+ auto startAngle = static_cast<float>(args[5]->NumberValue(context).ToChecked());
1986
+ auto endAngle = static_cast<float>(args[6]->NumberValue(context).ToChecked());
1987
+ auto anticlockwise = false;
1988
+ if (args[7]->IsBoolean()) {
1989
+ anticlockwise = args[7]->BooleanValue(isolate);
1990
+ }
1991
+ canvas_native_context_ellipse(
1992
+ ptr->GetContext(), x, y,
1993
+ radiusX,
1994
+ radiusY, rotation,
1995
+ startAngle, endAngle,
1996
+ anticlockwise);
1997
+ }
1998
+ }
1999
+
2000
+ void
2001
+ CanvasRenderingContext2DImpl::Fill(const v8::FunctionCallbackInfo<v8::Value> &args) {
2002
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2003
+ if (ptr == nullptr) {
2004
+ return;
2005
+ }
2006
+ auto isolate = args.GetIsolate();
2007
+ auto context = isolate->GetCurrentContext();
2008
+ auto count = args.Length();
2009
+ auto value = args[0];
2010
+ if (count == 2) {
2011
+ auto type = GetNativeType(value.As<v8::Object>());
2012
+ if (type == NativeType::Path2D) {
2013
+ auto object = Path2D::GetPointer(value.As<v8::Object>());
2014
+
2015
+ if (object != nullptr) {
2016
+ auto rule = args[1]->Int32Value(context).ToChecked();
2017
+ switch (rule) {
2018
+ case 0:
2019
+ canvas_native_context_fill_with_path(
2020
+ ptr->GetContext(),
2021
+ object->GetPath(),
2022
+ "nonzero");
2023
+ ptr->UpdateInvalidateState();
2024
+ break;
2025
+ case 1:
2026
+ canvas_native_context_fill_with_path(
2027
+ ptr->GetContext(),
2028
+ object->GetPath(),
2029
+ "evenodd");
2030
+ ptr->UpdateInvalidateState();
2031
+ break;
2032
+ default:
2033
+ break;
2034
+ }
2035
+
2036
+ }
2037
+ }
2038
+ } else if (count == 1) {
2039
+ if (value->IsInt32()) {
2040
+ auto rule = args[1]->Int32Value(context).ToChecked();
2041
+ switch (rule) {
2042
+ case 0:
2043
+ canvas_native_context_fill(
2044
+ ptr->GetContext(),
2045
+ "nonzero");
2046
+ ptr->UpdateInvalidateState();
2047
+ break;
2048
+ case 1:
2049
+ canvas_native_context_fill(
2050
+ ptr->GetContext(),
2051
+ "evenodd");
2052
+ ptr->UpdateInvalidateState();
2053
+ break;
2054
+ default:
2055
+ break;
2056
+ }
2057
+ } else if (value->IsObject()) {
2058
+ auto type = GetNativeType(value.As<v8::Object>());
2059
+ if (type == NativeType::Path2D) {
2060
+ auto object = Path2D::GetPointer(value.As<v8::Object>());
2061
+
2062
+ canvas_native_context_fill_with_path(
2063
+ ptr->GetContext(),
2064
+ object->GetPath(), "nonzero");
2065
+ ptr->UpdateInvalidateState();
2066
+ }
2067
+ }
2068
+ } else {
2069
+ canvas_native_context_fill(
2070
+ ptr->GetContext(), "nonzero");
2071
+ ptr->UpdateInvalidateState();
2072
+ }
2073
+ }
2074
+
2075
+ void
2076
+ CanvasRenderingContext2DImpl::FillRect(const v8::FunctionCallbackInfo<v8::Value> &args) {
2077
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2078
+ if (ptr == nullptr) {
2079
+ return;
2080
+ }
2081
+ auto isolate = args.GetIsolate();
2082
+ auto context = isolate->GetCurrentContext();
2083
+
2084
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2085
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2086
+ auto width = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2087
+ auto height = static_cast<float>(args[3]->NumberValue(context).ToChecked());
2088
+ canvas_native_context_fill_rect(
2089
+ ptr->GetContext(), x, y, width,
2090
+ height);
2091
+ ptr->UpdateInvalidateState();
2092
+ }
2093
+
2094
+ void
2095
+ CanvasRenderingContext2DImpl::FillText(const v8::FunctionCallbackInfo<v8::Value> &args) {
2096
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2097
+ if (ptr == nullptr) {
2098
+ return;
2099
+ }
2100
+ auto isolate = args.GetIsolate();
2101
+ auto context = isolate->GetCurrentContext();
2102
+
2103
+ auto text = ConvertFromV8String(isolate, args[0]);
2104
+
2105
+ auto x = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2106
+ auto y = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2107
+
2108
+ if (args[3]->IsNumber()) {
2109
+ float width = static_cast<float>(args[3]->NumberValue(context).ToChecked());
2110
+ canvas_native_context_fill_text_width(
2111
+ ptr->GetContext(), text.c_str(), x,
2112
+ y, width);
2113
+ } else {
2114
+ canvas_native_context_fill_text(
2115
+ ptr->GetContext(), text.c_str(), x,
2116
+ y);
2117
+ }
2118
+
2119
+ ptr->UpdateInvalidateState();
2120
+
2121
+ }
2122
+
2123
+ void
2124
+ CanvasRenderingContext2DImpl::GetImageData(const v8::FunctionCallbackInfo<v8::Value> &args) {
2125
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2126
+ if (ptr == nullptr) {
2127
+ args.GetReturnValue().SetUndefined();
2128
+ return;
2129
+ }
2130
+ auto isolate = args.GetIsolate();
2131
+ auto context = isolate->GetCurrentContext();
2132
+
2133
+
2134
+ if (args.Length() == 4) {
2135
+ auto sx = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2136
+ auto sy = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2137
+ auto sw = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2138
+ auto sh = static_cast<float>(args[3]->NumberValue(context).ToChecked());
2139
+ auto imageData = canvas_native_context_get_image_data(
2140
+ ptr->GetContext(), sx, sy, sw,
2141
+ sh);
2142
+
2143
+ auto data = new ImageDataImpl(imageData);
2144
+
2145
+ auto ret = ImageDataImpl::GetCtor(isolate)->GetFunction(
2146
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
2147
+
2148
+ ret->SetAlignedPointerInInternalField(0, data);
2149
+
2150
+ SetNativeType(ret, NativeType::ImageData);
2151
+
2152
+ args.GetReturnValue().Set(ret);
2153
+ return;
2154
+ }
2155
+
2156
+ args.GetReturnValue().SetUndefined();
2157
+
2158
+
2159
+ }
2160
+
2161
+ void
2162
+ CanvasRenderingContext2DImpl::GetLineDash(const v8::FunctionCallbackInfo<v8::Value> &args) {
2163
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2164
+
2165
+ auto isolate = args.GetIsolate();
2166
+
2167
+ if (ptr == nullptr) {
2168
+ auto ret = v8::Array::New(isolate);
2169
+ args.GetReturnValue().Set(ret);
2170
+ return;
2171
+ }
2172
+ auto context = isolate->GetCurrentContext();
2173
+
2174
+
2175
+ auto dash = canvas_native_context_get_line_dash(
2176
+ ptr->GetContext());
2177
+ auto buf = canvas_native_f32_buffer_get_bytes(dash);
2178
+ auto size = canvas_native_f32_buffer_get_length(dash);
2179
+ auto array = v8::Array::New(isolate, (int) size);
2180
+ for (int i = 0; i < size; ++i) {
2181
+ array->Set(context, i,
2182
+ v8::Number::New(isolate,
2183
+ (double) buf[i]));
2184
+ }
2185
+
2186
+ args.GetReturnValue().Set(array);
2187
+ }
2188
+
2189
+ void
2190
+ CanvasRenderingContext2DImpl::IsPointInPath(const v8::FunctionCallbackInfo<v8::Value> &args) {
2191
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2192
+
2193
+ auto isolate = args.GetIsolate();
2194
+ auto context = isolate->GetCurrentContext();
2195
+ auto count = args.Length();
2196
+
2197
+ if (count == 2) {
2198
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2199
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2200
+ auto ret = canvas_native_context_is_point_in_path(
2201
+ ptr->GetContext(), x, y, "nonzero");
2202
+ args.GetReturnValue().Set(ret);
2203
+ return;
2204
+ } else if (count == 3 &&
2205
+ args[2]->IsInt32()) {
2206
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2207
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2208
+ auto rule = args[2]->Int32Value(context).ToChecked();
2209
+ bool ret = false;
2210
+ switch (rule) {
2211
+ case 0:
2212
+ ret = canvas_native_context_is_point_in_path(
2213
+ ptr->GetContext(), x, y, "nonzero");
2214
+ break;
2215
+ case 1:
2216
+ ret = canvas_native_context_is_point_in_path(
2217
+ ptr->GetContext(), x, y, "evenodd");
2218
+ break;
2219
+ }
2220
+ args.GetReturnValue().Set(ret);
2221
+ return;
2222
+ } else if (count == 4 &&
2223
+ args[0]->IsObject() &&
2224
+ args[3]->IsInt32()) {
2225
+
2226
+ auto value = args[0];
2227
+ auto type = GetNativeType(value);
2228
+
2229
+ if (type == NativeType::Path2D) {
2230
+ auto path = Path2D::GetPointer(value.As<v8::Object>());
2231
+ auto x = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2232
+ auto y = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2233
+ auto rule = args[3]->Int32Value(context).ToChecked();
2234
+ bool ret = false;
2235
+
2236
+ if (path != nullptr) {
2237
+
2238
+ switch (rule) {
2239
+ case 0:
2240
+ ret = canvas_native_context_is_point_in_path_with_path(
2241
+ ptr->GetContext(),
2242
+ path->GetPath(), x, y, "nonzero");
2243
+ break;
2244
+ case 1:
2245
+ ret = canvas_native_context_is_point_in_path_with_path(
2246
+ ptr->GetContext(),
2247
+ path->GetPath(), x, y, "evenodd");
2248
+ break;
2249
+ }
2250
+
2251
+ args.GetReturnValue().Set(ret);
2252
+ return;
2253
+ }
2254
+ }
2255
+
2256
+ }
2257
+
2258
+
2259
+ args.GetReturnValue().Set(false);
2260
+ }
2261
+
2262
+ void
2263
+ CanvasRenderingContext2DImpl::IsPointInStroke(const v8::FunctionCallbackInfo<v8::Value> &args) {
2264
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2265
+
2266
+ auto isolate = args.GetIsolate();
2267
+ auto context = isolate->GetCurrentContext();
2268
+ auto count = args.Length();
2269
+
2270
+
2271
+ if (count == 2) {
2272
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2273
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2274
+ auto ret = canvas_native_context_is_point_in_stroke(
2275
+ ptr->GetContext(), x, y);
2276
+
2277
+ args.GetReturnValue().Set(ret);
2278
+ return;
2279
+ } else if (count == 3 &&
2280
+ args[0]->IsObject()) {
2281
+
2282
+
2283
+ auto value = args[0];
2284
+ auto type = GetNativeType(value);
2285
+
2286
+ if (type == NativeType::Path2D) {
2287
+ auto path = Path2D::GetPointer(value.As<v8::Object>());
2288
+ auto x = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2289
+ auto y = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2290
+
2291
+
2292
+ if (path != nullptr) {
2293
+ auto ret = canvas_native_context_is_point_in_stroke_with_path(
2294
+ ptr->GetContext(),
2295
+ path->GetPath(), x, y);
2296
+ args.GetReturnValue().Set(ret);
2297
+ return;
2298
+ }
2299
+ }
2300
+ }
2301
+
2302
+ args.GetReturnValue().Set(false);
2303
+ }
2304
+
2305
+ void
2306
+ CanvasRenderingContext2DImpl::LineTo(const v8::FunctionCallbackInfo<v8::Value> &args) {
2307
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2308
+
2309
+ auto isolate = args.GetIsolate();
2310
+ auto context = isolate->GetCurrentContext();
2311
+
2312
+ if (args.Length() > 1) {
2313
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2314
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2315
+ canvas_native_context_line_to(
2316
+ ptr->GetContext(), x, y);
2317
+ }
2318
+ }
2319
+
2320
+ void
2321
+ CanvasRenderingContext2DImpl::MeasureText(const v8::FunctionCallbackInfo<v8::Value> &args) {
2322
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2323
+
2324
+ auto isolate = args.GetIsolate();
2325
+ auto context = isolate->GetCurrentContext();
2326
+
2327
+ auto text = ConvertFromV8String(isolate, args[0]);
2328
+
2329
+ auto metrics = canvas_native_context_measure_text(
2330
+ ptr->GetContext(), text.c_str());
2331
+
2332
+ auto data = new TextMetricsImpl(metrics);
2333
+
2334
+ auto ret = TextMetricsImpl::GetCtor(isolate)->GetFunction(
2335
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
2336
+
2337
+ ret->SetAlignedPointerInInternalField(0, data);
2338
+
2339
+ data->BindFinalizer(isolate, ret);
2340
+
2341
+ SetNativeType(ret, NativeType::TextMetrics);
2342
+
2343
+ args.GetReturnValue().Set(ret);
2344
+
2345
+ }
2346
+
2347
+ void
2348
+ CanvasRenderingContext2DImpl::MoveTo(const v8::FunctionCallbackInfo<v8::Value> &args) {
2349
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2350
+
2351
+ auto isolate = args.GetIsolate();
2352
+ auto context = isolate->GetCurrentContext();
2353
+
2354
+ if (args.Length() > 1) {
2355
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2356
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2357
+ canvas_native_context_move_to(
2358
+ ptr->GetContext(), x, y);
2359
+ }
2360
+ }
2361
+
2362
+ void
2363
+ CanvasRenderingContext2DImpl::PutImageData(const v8::FunctionCallbackInfo<v8::Value> &args) {
2364
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2365
+
2366
+ auto isolate = args.GetIsolate();
2367
+ auto context = isolate->GetCurrentContext();
2368
+
2369
+
2370
+ auto value = args[0];
2371
+ auto typeValue = GetPrivateValue(isolate, value.As<v8::Object>(),
2372
+ ConvertToV8String(isolate, "__type"));
2373
+ auto count = args.Length();
2374
+ if (!typeValue.IsEmpty()) {
2375
+ auto type = (NativeType) typeValue->Int32Value(context).ToChecked();
2376
+ if (type == NativeType::ImageData) {
2377
+
2378
+
2379
+ auto imageData = ImageDataImpl::GetPointer(value.As<v8::Object>());
2380
+ if (count == 3) {
2381
+ auto dx = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2382
+ auto dy = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2383
+ float dirtyX = 0;
2384
+ float dirtyY = 0;
2385
+ auto dirtyWidth = (float) canvas_native_image_data_get_width(
2386
+ imageData->GetImageData());
2387
+ auto dirtyHeight = (float) canvas_native_image_data_get_height(
2388
+ imageData->GetImageData());
2389
+ canvas_native_context_put_image_data(
2390
+ ptr->GetContext(),
2391
+ imageData->GetImageData(), dx,
2392
+ dy, dirtyX, dirtyY,
2393
+ dirtyWidth, dirtyHeight);
2394
+ ptr->UpdateInvalidateState();
2395
+ } else if (count == 7) {
2396
+ auto dx = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2397
+ auto dy = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2398
+ auto dirtyX = static_cast<float>(args[3]->NumberValue(context).ToChecked());
2399
+ auto dirtyY = static_cast<float>(args[4]->NumberValue(context).ToChecked());
2400
+ auto dirtyWidth = static_cast<float>(args[5]->NumberValue(context).ToChecked());
2401
+ auto dirtyHeight = static_cast<float>(args[6]->NumberValue(context).ToChecked());
2402
+ canvas_native_context_put_image_data(
2403
+ ptr->GetContext(),
2404
+ imageData->GetImageData(), dx,
2405
+ dy, dirtyX, dirtyY,
2406
+ dirtyWidth, dirtyHeight);
2407
+ ptr->UpdateInvalidateState();
2408
+ }
2409
+ }
2410
+ }
2411
+
2412
+ }
2413
+
2414
+ void
2415
+ CanvasRenderingContext2DImpl::QuadraticCurveTo(const v8::FunctionCallbackInfo<v8::Value> &args) {
2416
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2417
+
2418
+ auto isolate = args.GetIsolate();
2419
+ auto context = isolate->GetCurrentContext();
2420
+
2421
+ if (args.Length() == 4) {
2422
+ auto cpx = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2423
+ auto cpy = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2424
+ auto x = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2425
+ auto y = static_cast<float>(args[3]->NumberValue(context).ToChecked());
2426
+ canvas_native_context_quadratic_curve_to(
2427
+ ptr->GetContext(), cpx, cpy,
2428
+ x, y);
2429
+ }
2430
+
2431
+ }
2432
+
2433
+ void
2434
+ CanvasRenderingContext2DImpl::RoundRect(const v8::FunctionCallbackInfo<v8::Value> &args) {
2435
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2436
+
2437
+ auto isolate = args.GetIsolate();
2438
+ auto context = isolate->GetCurrentContext();
2439
+
2440
+ if (args.Length() == 5) {
2441
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2442
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2443
+ auto width = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2444
+ auto height = static_cast<float>(args[3]->NumberValue(context).ToChecked());
2445
+ if (args[4]->IsObject()) {
2446
+ auto radii = args[4];
2447
+ if (radii->IsArray()) {
2448
+ auto array = radii.As<v8::Array>();
2449
+ auto size = array->Length();
2450
+ if (size > 1) {
2451
+ std::vector<float> store;
2452
+ store.reserve(size);
2453
+ for (int i = 0;
2454
+ i < size; i++) {
2455
+ store[i] = (float) array->Get(
2456
+ context,
2457
+ i).ToLocalChecked()->NumberValue(context).ToChecked();
2458
+ }
2459
+
2460
+
2461
+ canvas_native_context_round_rect(
2462
+ ptr->GetContext(),
2463
+ x, y,
2464
+ width,
2465
+ height, store.data(), store.size());
2466
+
2467
+ }
2468
+ }
2469
+ } else {
2470
+ auto radii = (float) args[4]->NumberValue(context).ToChecked();
2471
+ canvas_native_context_round_rect_tl_tr_br_bl(
2472
+ ptr->GetContext(), x, y,
2473
+ width,
2474
+ height, radii, radii,
2475
+ radii, radii);
2476
+
2477
+ }
2478
+ }
2479
+
2480
+ }
2481
+
2482
+ void
2483
+ CanvasRenderingContext2DImpl::Rect(const v8::FunctionCallbackInfo<v8::Value> &args) {
2484
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2485
+
2486
+ auto isolate = args.GetIsolate();
2487
+ auto context = isolate->GetCurrentContext();
2488
+
2489
+ if (args.Length() == 4) {
2490
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2491
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2492
+ auto width = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2493
+ auto height = static_cast<float>(args[3]->NumberValue(context).ToChecked());
2494
+ canvas_native_context_rect(
2495
+ ptr->GetContext(), x, y,
2496
+ width,
2497
+ height);
2498
+ }
2499
+
2500
+ }
2501
+
2502
+ void
2503
+ CanvasRenderingContext2DImpl::RemoveHitRegion(const v8::FunctionCallbackInfo<v8::Value> &args) {
2504
+ // CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2505
+ }
2506
+
2507
+ void
2508
+ CanvasRenderingContext2DImpl::ResetTransform(const v8::FunctionCallbackInfo<v8::Value> &args) {
2509
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2510
+ if (ptr == nullptr) {
2511
+ return;
2512
+ }
2513
+
2514
+ canvas_native_context_reset_transform(
2515
+ ptr->GetContext());
2516
+ }
2517
+
2518
+ void
2519
+ CanvasRenderingContext2DImpl::Restore(const v8::FunctionCallbackInfo<v8::Value> &args) {
2520
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2521
+ if (ptr == nullptr) {
2522
+ return;
2523
+ }
2524
+
2525
+ canvas_native_context_restore(
2526
+ ptr->GetContext());
2527
+ }
2528
+
2529
+ void
2530
+ CanvasRenderingContext2DImpl::Rotate(const v8::FunctionCallbackInfo<v8::Value> &args) {
2531
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2532
+
2533
+ auto isolate = args.GetIsolate();
2534
+ auto context = isolate->GetCurrentContext();
2535
+
2536
+ auto value = args[0];
2537
+
2538
+ if (args.Length() == 1 && value->IsNumber()) {
2539
+ canvas_native_context_rotate(
2540
+ ptr->GetContext(),
2541
+ (float) args[0]->NumberValue(context).ToChecked());
2542
+ }
2543
+ }
2544
+
2545
+ void
2546
+ CanvasRenderingContext2DImpl::Save(const v8::FunctionCallbackInfo<v8::Value> &args) {
2547
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2548
+ if (ptr == nullptr) {
2549
+ return;
2550
+ }
2551
+
2552
+ canvas_native_context_save(
2553
+ ptr->GetContext());
2554
+ }
2555
+
2556
+ void
2557
+ CanvasRenderingContext2DImpl::Scale(const v8::FunctionCallbackInfo<v8::Value> &args) {
2558
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2559
+
2560
+ auto isolate = args.GetIsolate();
2561
+ auto context = isolate->GetCurrentContext();
2562
+
2563
+ if (args.Length() == 2) {
2564
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2565
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2566
+ canvas_native_context_scale(
2567
+ ptr->GetContext(), x, y);
2568
+ }
2569
+ }
2570
+
2571
+ void
2572
+ CanvasRenderingContext2DImpl::ScrollPathIntoView(const v8::FunctionCallbackInfo<v8::Value> &args) {
2573
+ // CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2574
+ }
2575
+
2576
+ void
2577
+ CanvasRenderingContext2DImpl::SetLineDash(const v8::FunctionCallbackInfo<v8::Value> &args) {
2578
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2579
+
2580
+ auto isolate = args.GetIsolate();
2581
+ auto context = isolate->GetCurrentContext();
2582
+
2583
+ auto value = args[0];
2584
+
2585
+ if (value->IsArray()) {
2586
+ auto segments = value.As<v8::Array>();
2587
+ auto len = segments->Length();
2588
+ std::vector<float> data;
2589
+ for (int i = 0; i < len; ++i) {
2590
+ auto item = segments->Get(
2591
+ context, i).ToLocalChecked()->NumberValue(context).ToChecked();
2592
+ data.push_back(
2593
+ static_cast<float>(item));
2594
+ }
2595
+
2596
+ canvas_native_context_set_line_dash(
2597
+ ptr->GetContext(), data.data(), data.size());
2598
+ }
2599
+ }
2600
+
2601
+ void
2602
+ CanvasRenderingContext2DImpl::SetTransform(const v8::FunctionCallbackInfo<v8::Value> &args) {
2603
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2604
+
2605
+ auto isolate = args.GetIsolate();
2606
+ auto context = isolate->GetCurrentContext();
2607
+
2608
+ auto count = args.Length();
2609
+ auto value = args[0];
2610
+ if (count == 1 && value->IsObject()) {
2611
+
2612
+ auto typeValue = GetPrivateValue(isolate, value.As<v8::Object>(),
2613
+ ConvertToV8String(isolate, "__type"));
2614
+
2615
+ if (!typeValue.IsEmpty()) {
2616
+ auto type = (NativeType) typeValue->Int32Value(context).ToChecked();
2617
+
2618
+ if (type == NativeType::Matrix) {
2619
+ auto matrix = MatrixImpl::GetPointer(value.As<v8::Object>());
2620
+ if (matrix != nullptr) {
2621
+ canvas_native_context_set_transform_matrix(
2622
+ ptr->GetContext(),
2623
+ matrix->GetMatrix());
2624
+ }
2625
+ }
2626
+
2627
+ }
2628
+ } else if (count == 6) {
2629
+ auto a = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2630
+ auto b = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2631
+ auto c = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2632
+ auto d = static_cast<float>(args[3]->NumberValue(context).ToChecked());
2633
+ auto e = static_cast<float>(args[4]->NumberValue(context).ToChecked());
2634
+ auto f = static_cast<float>(args[5]->NumberValue(context).ToChecked());
2635
+ canvas_native_context_set_transform(
2636
+ ptr->GetContext(), a, b, c, d,
2637
+ e,
2638
+ f);
2639
+ }
2640
+ }
2641
+
2642
+ void
2643
+ CanvasRenderingContext2DImpl::Stroke(const v8::FunctionCallbackInfo<v8::Value> &args) {
2644
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2645
+
2646
+ auto isolate = args.GetIsolate();
2647
+
2648
+ auto value = args[0];
2649
+ auto type = GetNativeType(value);
2650
+ if (type == NativeType::Path2D) {
2651
+ auto path = Path2D::GetPointer(value.As<v8::Object>());
2652
+ if (path != nullptr) {
2653
+ canvas_native_context_stroke_with_path(
2654
+ ptr->GetContext(),
2655
+ path->GetPath());
2656
+ ptr->UpdateInvalidateState();
2657
+ }
2658
+ } else {
2659
+ canvas_native_context_stroke(
2660
+ ptr->GetContext());
2661
+ ptr->UpdateInvalidateState();
2662
+ }
2663
+ }
2664
+
2665
+ void
2666
+ CanvasRenderingContext2DImpl::StrokeRect(const v8::FunctionCallbackInfo<v8::Value> &args) {
2667
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2668
+
2669
+ auto isolate = args.GetIsolate();
2670
+ auto context = isolate->GetCurrentContext();
2671
+
2672
+ if (args.Length() == 4) {
2673
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2674
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2675
+ auto width = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2676
+ auto height = static_cast<float>(args[3]->NumberValue(context).ToChecked());
2677
+ canvas_native_context_stroke_rect(
2678
+ ptr->GetContext(), x, y,
2679
+ width,
2680
+ height);
2681
+ ptr->UpdateInvalidateState();
2682
+ }
2683
+ }
2684
+
2685
+ void
2686
+ CanvasRenderingContext2DImpl::StrokeText(const v8::FunctionCallbackInfo<v8::Value> &args) {
2687
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2688
+
2689
+ auto isolate = args.GetIsolate();
2690
+ auto context = isolate->GetCurrentContext();
2691
+
2692
+ auto count = args.Length();
2693
+ if (count >= 3) {
2694
+ auto text = ConvertFromV8String(isolate, args[0]);
2695
+ auto x = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2696
+ auto y = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2697
+ if (count > 3) {
2698
+ float maxWidth = static_cast<float>(args[3]->NumberValue(context).ToChecked());
2699
+ canvas_native_context_stroke_text_width(
2700
+ ptr->GetContext(), text.c_str(),
2701
+ x, y, maxWidth);
2702
+ } else {
2703
+ canvas_native_context_stroke_text(
2704
+ ptr->GetContext(), text.c_str(),
2705
+ x, y);
2706
+ }
2707
+
2708
+
2709
+ ptr->UpdateInvalidateState();
2710
+ }
2711
+ }
2712
+
2713
+ void
2714
+ CanvasRenderingContext2DImpl::Transform(const v8::FunctionCallbackInfo<v8::Value> &args) {
2715
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2716
+
2717
+ auto isolate = args.GetIsolate();
2718
+ auto context = isolate->GetCurrentContext();
2719
+
2720
+
2721
+ if (args.Length() == 6) {
2722
+ auto a = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2723
+ auto b = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2724
+ auto c = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2725
+ auto d = static_cast<float>(args[3]->NumberValue(context).ToChecked());
2726
+ auto e = static_cast<float>(args[4]->NumberValue(context).ToChecked());
2727
+ auto f = static_cast<float>(args[5]->NumberValue(context).ToChecked());
2728
+ canvas_native_context_transform(
2729
+ ptr->GetContext(), a, b, c, d,
2730
+ e,
2731
+ f);
2732
+ }
2733
+ }
2734
+
2735
+ void
2736
+ CanvasRenderingContext2DImpl::Translate(const v8::FunctionCallbackInfo<v8::Value> &args) {
2737
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2738
+
2739
+ auto isolate = args.GetIsolate();
2740
+ auto context = isolate->GetCurrentContext();
2741
+
2742
+
2743
+ if (args.Length() == 2) {
2744
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2745
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2746
+ canvas_native_context_translate(
2747
+ ptr->GetContext(), x, y);
2748
+ }
2749
+ }
2750
+
2751
+ void
2752
+ CanvasRenderingContext2DImpl::__ToDataURL(const v8::FunctionCallbackInfo<v8::Value> &args) {
2753
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2754
+
2755
+ auto isolate = args.GetIsolate();
2756
+ auto context = isolate->GetCurrentContext();
2757
+
2758
+
2759
+ std::string type("image/png");
2760
+ int quality = 92;
2761
+ if (args[0]->IsString()) {
2762
+ type = ConvertFromV8String(isolate, args[0]);
2763
+ }
2764
+
2765
+
2766
+ if (args[1]->IsNumber()) {
2767
+ quality = (int) args[1]->NumberValue(context).ToChecked();
2768
+ }
2769
+
2770
+
2771
+ auto data = canvas_native_to_data_url(
2772
+ ptr->GetContext(), type.c_str(),
2773
+ quality);
2774
+
2775
+ auto value = new OneByteStringResource((char *) data);
2776
+ auto ret = v8::String::NewExternalOneByte(isolate, value);
2777
+ args.GetReturnValue().Set(ret.ToLocalChecked());
2778
+
2779
+ // args.GetReturnValue().Set(ConvertToV8String(isolate, data.c_str()));
2780
+ }
2781
+
2782
+ CanvasRenderingContext2DImpl::~CanvasRenderingContext2DImpl() {
2783
+ auto raf = this->raf_.get();
2784
+ if (raf != nullptr) {
2785
+ canvas_native_raf_stop(raf->GetRaf());
2786
+ }
2787
+
2788
+ canvas_native_context_destroy(this->GetContext());
2789
+ this->context_ = nullptr;
2790
+ }
2791
+
2792
+ void CanvasRenderingContext2DImpl::UpdateInvalidateState() {
2793
+ auto raf = this->GetRaf();
2794
+ if (raf != nullptr) {
2795
+ if (!canvas_native_raf_get_started(raf->GetRaf())) {
2796
+ canvas_native_raf_start(raf->GetRaf());
2797
+ }
2798
+ }
2799
+
2800
+ auto state = this->GetInvalidateState();
2801
+ this->SetInvalidateState((int) state | (int) InvalidateState::InvalidateStatePending);
2802
+ }
2803
+
2804
+ InvalidateState CanvasRenderingContext2DImpl::GetInvalidateState() const {
2805
+ return (InvalidateState)
2806
+ this->invalidateState_;
2807
+ }
2808
+
2809
+ void CanvasRenderingContext2DImpl::SetInvalidateState(InvalidateState state) {
2810
+ this->invalidateState_ = (int) state;
2811
+ }
2812
+
2813
+ void CanvasRenderingContext2DImpl::SetInvalidateState(int state) {
2814
+ this->invalidateState_ = state;
2815
+ }
2816
+
2817
+
2818
+ void CanvasRenderingContext2DImpl::Flush() {
2819
+ auto state = (int) this->GetInvalidateState() & (int) InvalidateState::InvalidateStatePending;
2820
+ if (state == (int) InvalidateState::InvalidateStatePending) {
2821
+ this->SetInvalidateState(InvalidateState::InvalidateStateInvalidating);
2822
+ // canvas_native_context_flush(ptr->GetContext());
2823
+
2824
+ canvas_native_context_render(this->GetContext());
2825
+ // canvas_native_context_gl_make_current(ptr->GetContext());
2826
+ // canvas_native_context_gl_swap_buffers(ptr->GetContext());
2827
+ this->SetInvalidateState(InvalidateState::InvalidateStateNone);
2828
+ }
2829
+ }
2830
+
2831
+ void CanvasRenderingContext2DImpl::Flush(intptr_t context) {
2832
+ auto ctx = reinterpret_cast<CanvasRenderingContext2DImpl *>(reinterpret_cast<intptr_t *>(context));
2833
+ if (ctx != nullptr) {
2834
+ ctx->Flush();
2835
+ }
2836
+ }
2837
+
2838
+
2839
+ CanvasRenderingContext2D *CanvasRenderingContext2DImpl::GetContext() {
2840
+ return this->context_;
2841
+ }