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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (524) hide show
  1. package/Canvas/common.d.ts +212 -25
  2. package/Canvas/common.js +677 -460
  3. package/Canvas/common.js.map +1 -1
  4. package/Canvas/index.android.d.ts +9 -0
  5. package/Canvas/index.android.js +162 -53
  6. package/Canvas/index.android.js.map +1 -1
  7. package/Canvas/index.d.ts +12 -0
  8. package/Canvas/index.ios.d.ts +6 -0
  9. package/Canvas/index.ios.js +151 -66
  10. package/Canvas/index.ios.js.map +1 -1
  11. package/Canvas2D/CanvasGradient/index.d.ts +1 -3
  12. package/Canvas2D/CanvasGradient/index.js +1 -10
  13. package/Canvas2D/CanvasGradient/index.js.map +1 -1
  14. package/Canvas2D/CanvasPattern/index.d.ts +1 -3
  15. package/Canvas2D/CanvasPattern/index.js +1 -10
  16. package/Canvas2D/CanvasPattern/index.js.map +1 -1
  17. package/Canvas2D/CanvasRenderingContext2D/index.d.ts +1 -3
  18. package/Canvas2D/CanvasRenderingContext2D/index.js +104 -214
  19. package/Canvas2D/CanvasRenderingContext2D/index.js.map +1 -1
  20. package/Canvas2D/DOMMatrix/index.js +3 -3
  21. package/Canvas2D/DOMMatrix/index.js.map +1 -1
  22. package/Canvas2D/ImageData/index.js +6 -6
  23. package/Canvas2D/ImageData/index.js.map +1 -1
  24. package/Canvas2D/Path2D/index.d.ts +0 -2
  25. package/Canvas2D/Path2D/index.js +34 -39
  26. package/Canvas2D/Path2D/index.js.map +1 -1
  27. package/Dom/Paint.js +2 -3
  28. package/Dom/Paint.js.map +1 -1
  29. package/Dom/shapes/Circle.js +1 -2
  30. package/Dom/shapes/Circle.js.map +1 -1
  31. package/Dom/shapes/Points.js +1 -2
  32. package/Dom/shapes/Points.js.map +1 -1
  33. package/ImageAsset/index.d.ts +2 -2
  34. package/ImageAsset/index.js +33 -37
  35. package/ImageAsset/index.js.map +1 -1
  36. package/ImageBitmap/index.d.ts +0 -2
  37. package/ImageBitmap/index.js +47 -34
  38. package/ImageBitmap/index.js.map +1 -1
  39. package/LICENSE +201 -0
  40. package/SVG/SVG.js +1 -1
  41. package/SVG/SVG.js.map +1 -1
  42. package/TextDecoder/index.d.ts +0 -2
  43. package/TextDecoder/index.js +3 -12
  44. package/TextDecoder/index.js.map +1 -1
  45. package/TextEncoder/index.d.ts +0 -2
  46. package/TextEncoder/index.js +4 -13
  47. package/TextEncoder/index.js.map +1 -1
  48. package/WebGL/WebGLExtensions/index.d.ts +4 -12
  49. package/WebGL/WebGLExtensions/index.js +27 -77
  50. package/WebGL/WebGLExtensions/index.js.map +1 -1
  51. package/WebGL/WebGLProgram.d.ts +0 -1
  52. package/WebGL/WebGLProgram.js +0 -3
  53. package/WebGL/WebGLProgram.js.map +1 -1
  54. package/WebGL/WebGLRenderingContext/common.d.ts +0 -2
  55. package/WebGL/WebGLRenderingContext/common.js +0 -10
  56. package/WebGL/WebGLRenderingContext/common.js.map +1 -1
  57. package/WebGL/WebGLRenderingContext/index.d.ts +15 -15
  58. package/WebGL/WebGLRenderingContext/index.js +183 -578
  59. package/WebGL/WebGLRenderingContext/index.js.map +1 -1
  60. package/WebGL2/WebGL2RenderingContext/index.d.ts +1 -1
  61. package/WebGL2/WebGL2RenderingContext/index.js +109 -281
  62. package/WebGL2/WebGL2RenderingContext/index.js.map +1 -1
  63. package/angular/esm2020/index.mjs +4 -4
  64. package/angular/fesm2015/nativescript-canvas-angular.mjs +4 -4
  65. package/angular/fesm2020/nativescript-canvas-angular.mjs +4 -4
  66. package/angular/package.json +2 -2
  67. package/index.js.map +1 -1
  68. package/package.json +3 -2
  69. package/platforms/android/canvas-release.aar +0 -0
  70. package/platforms/android/include.gradle +15 -0
  71. package/platforms/ios/CanvasNative.xcframework/Info.plist +5 -5
  72. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative +0 -0
  73. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h +137 -64
  74. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative.h +10 -0
  75. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_ios.h +142 -0
  76. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +2673 -68
  77. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist +0 -0
  78. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  79. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.abi.json +5734 -2393
  80. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.private.swiftinterface +42 -19
  81. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  82. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +42 -19
  83. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  84. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/CanvasNative +0 -0
  85. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h +274 -128
  86. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative.h +10 -0
  87. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_ios.h +142 -0
  88. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +2673 -68
  89. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Info.plist +0 -0
  90. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  91. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  92. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.abi.json +5734 -2393
  93. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +42 -19
  94. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  95. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftinterface +42 -19
  96. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.abi.json +5734 -2393
  97. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +42 -19
  98. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  99. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +42 -19
  100. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +42 -31
  101. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  102. package/platforms/ios/Podfile +4 -1
  103. package/platforms/ios/build.xcconfig +3 -3
  104. package/platforms/ios/src/CanvasModule.h +0 -2
  105. package/platforms/ios/src/CanvasModule.mm +4 -4
  106. package/platforms/ios/src/NSOperationQueueWrapper.h +11 -0
  107. package/platforms/ios/src/NSOperationQueueWrapper.mm +74 -0
  108. package/platforms/ios/src/cpp/Caches.cpp +35 -0
  109. package/platforms/ios/src/cpp/Caches.h +190 -0
  110. package/platforms/ios/src/cpp/CanvasJSIModule.cpp +1534 -0
  111. package/platforms/ios/src/cpp/CanvasJSIModule.h +8 -34
  112. package/platforms/ios/src/cpp/Common.h +30 -0
  113. package/platforms/ios/src/cpp/ConcurrentMap.h +54 -0
  114. package/platforms/ios/src/cpp/Helpers.h +304 -36
  115. package/platforms/ios/src/cpp/ImageAssetImpl.cpp +802 -0
  116. package/platforms/ios/src/cpp/ImageAssetImpl.h +44 -12
  117. package/platforms/ios/src/cpp/ImageBitmapImpl.cpp +189 -0
  118. package/platforms/ios/src/cpp/ImageBitmapImpl.h +34 -16
  119. package/platforms/ios/src/cpp/JSICallback.h +61 -5
  120. package/platforms/ios/src/cpp/JSIReadFileCallback.h +86 -6
  121. package/platforms/ios/src/cpp/JSIRuntime.cpp +21 -0
  122. package/platforms/ios/src/cpp/JSIRuntime.h +7 -0
  123. package/platforms/ios/src/cpp/OneByteStringResource.cpp +49 -0
  124. package/platforms/ios/src/cpp/OneByteStringResource.h +32 -0
  125. package/platforms/ios/src/cpp/RafImpl.cpp +8 -0
  126. package/platforms/ios/src/cpp/RafImpl.h +11 -8
  127. package/platforms/ios/src/cpp/TextDecoderImpl.cpp +187 -0
  128. package/platforms/ios/src/cpp/TextDecoderImpl.h +20 -14
  129. package/platforms/ios/src/cpp/TextEncoderImpl.cpp +139 -0
  130. package/platforms/ios/src/cpp/TextEncoderImpl.h +20 -11
  131. package/platforms/ios/src/cpp/URLImpl.cpp +464 -0
  132. package/platforms/ios/src/cpp/URLImpl.h +119 -0
  133. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.cpp +71 -0
  134. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.h +27 -13
  135. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.cpp +89 -0
  136. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.h +26 -13
  137. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.cpp +2413 -0
  138. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.h +267 -16
  139. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.cpp +203 -0
  140. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.h +26 -12
  141. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.cpp +806 -0
  142. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.h +172 -13
  143. package/platforms/ios/src/cpp/canvas2d/Path2D.cpp +449 -0
  144. package/platforms/ios/src/cpp/canvas2d/Path2D.h +41 -12
  145. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.cpp +253 -0
  146. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.h +50 -12
  147. package/platforms/ios/src/cpp/gl.h +57 -7
  148. package/platforms/ios/src/cpp/gl3stub.c +425 -0
  149. package/platforms/ios/src/cpp/gl3stub.h +665 -0
  150. package/platforms/ios/src/cpp/gles3jni.h +37 -0
  151. package/platforms/ios/src/cpp/include/robin_hood.h +2544 -0
  152. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.cpp +91 -0
  153. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.h +33 -13
  154. package/platforms/ios/src/cpp/webgl/WebGLBuffer.h +41 -6
  155. package/platforms/ios/src/cpp/webgl/WebGLFramebuffer.h +46 -10
  156. package/platforms/ios/src/cpp/webgl/WebGLProgram.h +40 -5
  157. package/platforms/ios/src/cpp/webgl/WebGLRenderbuffer.h +40 -6
  158. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.cpp +6454 -0
  159. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.h +262 -390
  160. package/platforms/ios/src/cpp/webgl/{WebGLRenderingContextBase.mm → WebGLRenderingContextBase.cpp} +46 -24
  161. package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.h +17 -11
  162. package/platforms/ios/src/cpp/webgl/WebGLShader.h +40 -6
  163. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.cpp +50 -0
  164. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.h +66 -11
  165. package/platforms/ios/src/cpp/webgl/WebGLTexture.h +40 -6
  166. package/platforms/ios/src/cpp/webgl/WebGLUniformLocation.h +44 -8
  167. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.cpp +126 -0
  168. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.h +25 -11
  169. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.cpp +35 -0
  170. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.h +25 -5
  171. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.cpp +41 -0
  172. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.h +25 -5
  173. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.cpp +306 -0
  174. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.h +47 -13
  175. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.h +49 -6
  176. package/platforms/ios/src/cpp/webgl/extensions/EXT_shader_texture_lodImpl.h +37 -15
  177. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.h +47 -6
  178. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.h +49 -6
  179. package/platforms/ios/src/cpp/webgl/extensions/OES_fbo_render_mipmap.h +51 -0
  180. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.h +44 -6
  181. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_floatImpl.h +38 -15
  182. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_float_linearImpl.h +37 -16
  183. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.h +41 -6
  184. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_float_linearImpl.h +40 -16
  185. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.cpp +102 -0
  186. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.h +69 -14
  187. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.h +51 -8
  188. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.h +49 -6
  189. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.h +49 -8
  190. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.h +76 -6
  191. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.h +57 -6
  192. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.h +53 -6
  193. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.h +59 -6
  194. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.h +46 -6
  195. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.cpp +35 -0
  196. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.h +127 -14
  197. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.cpp +32 -0
  198. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.h +61 -12
  199. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.cpp +4375 -0
  200. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.h +139 -343
  201. package/platforms/ios/src/cpp/webgl2/WebGLQuery.h +40 -4
  202. package/platforms/ios/src/cpp/webgl2/WebGLSampler.h +42 -3
  203. package/platforms/ios/src/cpp/webgl2/WebGLSyncImpl.h +44 -11
  204. package/platforms/ios/src/cpp/webgl2/WebGLTransformFeedback.h +42 -4
  205. package/platforms/ios/src/cpp/webgl2/WebGLVertexArrayObject.h +43 -4
  206. package/platforms/ios/src/module.modulemap +1 -0
  207. package/src-native/ios/Headers/include/APIDesign.md +72 -0
  208. package/src-native/ios/Headers/include/DEPS +10 -0
  209. package/src-native/ios/Headers/include/DIR_METADATA +11 -0
  210. package/src-native/ios/Headers/include/OWNERS +23 -0
  211. package/src-native/ios/Headers/include/cppgc/DEPS +8 -0
  212. package/src-native/ios/Headers/include/cppgc/OWNERS +2 -0
  213. package/src-native/ios/Headers/include/cppgc/README.md +133 -0
  214. package/src-native/ios/Headers/include/cppgc/allocation.h +310 -0
  215. package/src-native/ios/Headers/include/cppgc/common.h +29 -0
  216. package/src-native/ios/Headers/include/cppgc/cross-thread-persistent.h +465 -0
  217. package/src-native/ios/Headers/include/cppgc/custom-space.h +97 -0
  218. package/src-native/ios/Headers/include/cppgc/default-platform.h +67 -0
  219. package/src-native/ios/Headers/include/cppgc/ephemeron-pair.h +30 -0
  220. package/src-native/ios/Headers/include/cppgc/explicit-management.h +100 -0
  221. package/src-native/ios/Headers/include/cppgc/garbage-collected.h +106 -0
  222. package/src-native/ios/Headers/include/cppgc/heap-consistency.h +266 -0
  223. package/src-native/ios/Headers/include/cppgc/heap-state.h +82 -0
  224. package/src-native/ios/Headers/include/cppgc/heap-statistics.h +120 -0
  225. package/src-native/ios/Headers/include/cppgc/heap.h +206 -0
  226. package/src-native/ios/Headers/include/cppgc/internal/api-constants.h +55 -0
  227. package/src-native/ios/Headers/include/cppgc/internal/atomic-entry-flag.h +48 -0
  228. package/src-native/ios/Headers/include/cppgc/internal/caged-heap-local-data.h +79 -0
  229. package/src-native/ios/Headers/include/cppgc/internal/compiler-specific.h +38 -0
  230. package/src-native/ios/Headers/include/cppgc/internal/finalizer-trait.h +93 -0
  231. package/src-native/ios/Headers/include/cppgc/internal/gc-info.h +156 -0
  232. package/src-native/ios/Headers/include/cppgc/internal/logging.h +50 -0
  233. package/src-native/ios/Headers/include/cppgc/internal/name-trait.h +122 -0
  234. package/src-native/ios/Headers/include/cppgc/internal/persistent-node.h +216 -0
  235. package/src-native/ios/Headers/include/cppgc/internal/pointer-policies.h +186 -0
  236. package/src-native/ios/Headers/include/cppgc/internal/write-barrier.h +435 -0
  237. package/src-native/ios/Headers/include/cppgc/liveness-broker.h +77 -0
  238. package/src-native/ios/Headers/include/cppgc/macros.h +26 -0
  239. package/src-native/ios/Headers/include/cppgc/member.h +291 -0
  240. package/src-native/ios/Headers/include/cppgc/name-provider.h +65 -0
  241. package/src-native/ios/Headers/include/cppgc/object-size-trait.h +58 -0
  242. package/src-native/ios/Headers/include/cppgc/persistent.h +370 -0
  243. package/src-native/ios/Headers/include/cppgc/platform.h +156 -0
  244. package/src-native/ios/Headers/include/cppgc/prefinalizer.h +75 -0
  245. package/src-native/ios/Headers/include/cppgc/process-heap-statistics.h +36 -0
  246. package/src-native/ios/Headers/include/cppgc/sentinel-pointer.h +32 -0
  247. package/src-native/ios/Headers/include/cppgc/source-location.h +92 -0
  248. package/src-native/ios/Headers/include/cppgc/testing.h +106 -0
  249. package/src-native/ios/Headers/include/cppgc/trace-trait.h +116 -0
  250. package/src-native/ios/Headers/include/cppgc/type-traits.h +240 -0
  251. package/src-native/ios/Headers/include/cppgc/visitor.h +379 -0
  252. package/src-native/ios/Headers/include/js_protocol-1.2.json +936 -0
  253. package/src-native/ios/Headers/include/js_protocol-1.3.json +1112 -0
  254. package/src-native/ios/Headers/include/js_protocol.pdl +1709 -0
  255. package/src-native/ios/Headers/include/libffi/arm64/ffi.h +524 -0
  256. package/src-native/ios/Headers/include/libffi/arm64/ffitarget.h +92 -0
  257. package/src-native/ios/Headers/include/libffi/x86_64/ffi.h +524 -0
  258. package/src-native/ios/Headers/include/libffi/x86_64/ffitarget.h +147 -0
  259. package/src-native/ios/Headers/include/libffi.h +12 -0
  260. package/src-native/ios/Headers/include/libplatform/DEPS +9 -0
  261. package/src-native/ios/Headers/include/libplatform/libplatform-export.h +29 -0
  262. package/src-native/ios/Headers/include/libplatform/libplatform.h +106 -0
  263. package/src-native/ios/Headers/include/libplatform/v8-tracing.h +333 -0
  264. package/src-native/ios/Headers/include/v8-array-buffer.h +433 -0
  265. package/src-native/ios/Headers/include/v8-callbacks.h +397 -0
  266. package/src-native/ios/Headers/include/v8-container.h +129 -0
  267. package/src-native/ios/Headers/include/v8-context.h +407 -0
  268. package/src-native/ios/Headers/include/v8-cppgc.h +215 -0
  269. package/src-native/ios/Headers/include/v8-data.h +80 -0
  270. package/src-native/ios/Headers/include/v8-date.h +43 -0
  271. package/src-native/ios/Headers/include/v8-debug.h +168 -0
  272. package/src-native/ios/Headers/include/v8-embedder-heap.h +218 -0
  273. package/src-native/ios/Headers/include/v8-embedder-state-scope.h +51 -0
  274. package/src-native/ios/Headers/include/v8-exception.h +217 -0
  275. package/src-native/ios/Headers/include/v8-extension.h +62 -0
  276. package/src-native/ios/Headers/include/v8-external.h +37 -0
  277. package/src-native/ios/Headers/include/v8-fast-api-calls.h +939 -0
  278. package/src-native/ios/Headers/include/v8-forward.h +81 -0
  279. package/src-native/ios/Headers/include/v8-function-callback.h +475 -0
  280. package/src-native/ios/Headers/include/v8-function.h +125 -0
  281. package/src-native/ios/Headers/include/v8-initialization.h +315 -0
  282. package/src-native/ios/Headers/include/v8-inspector-protocol.h +13 -0
  283. package/src-native/ios/Headers/include/v8-inspector.h +376 -0
  284. package/src-native/ios/Headers/include/v8-internal.h +661 -0
  285. package/src-native/ios/Headers/include/v8-isolate.h +1709 -0
  286. package/src-native/ios/Headers/include/v8-json.h +47 -0
  287. package/src-native/ios/Headers/include/v8-local-handle.h +455 -0
  288. package/src-native/ios/Headers/include/v8-locker.h +149 -0
  289. package/src-native/ios/Headers/include/v8-maybe.h +137 -0
  290. package/src-native/ios/Headers/include/v8-memory-span.h +43 -0
  291. package/src-native/ios/Headers/include/v8-message.h +216 -0
  292. package/src-native/ios/Headers/include/v8-metrics.h +255 -0
  293. package/src-native/ios/Headers/include/v8-microtask-queue.h +152 -0
  294. package/src-native/ios/Headers/include/v8-microtask.h +28 -0
  295. package/src-native/ios/Headers/include/v8-object.h +775 -0
  296. package/src-native/ios/Headers/include/v8-persistent-handle.h +590 -0
  297. package/src-native/ios/Headers/include/v8-platform.h +1092 -0
  298. package/src-native/ios/Headers/include/v8-primitive-object.h +118 -0
  299. package/src-native/ios/Headers/include/v8-primitive.h +866 -0
  300. package/src-native/ios/Headers/include/v8-profiler.h +1198 -0
  301. package/src-native/ios/Headers/include/v8-promise.h +174 -0
  302. package/src-native/ios/Headers/include/v8-proxy.h +50 -0
  303. package/src-native/ios/Headers/include/v8-regexp.h +105 -0
  304. package/src-native/ios/Headers/include/v8-script.h +748 -0
  305. package/src-native/ios/Headers/include/v8-snapshot.h +196 -0
  306. package/src-native/ios/Headers/include/v8-statistics.h +217 -0
  307. package/src-native/ios/Headers/include/v8-template.h +1079 -0
  308. package/src-native/ios/Headers/include/v8-traced-handle.h +420 -0
  309. package/src-native/ios/Headers/include/v8-typed-array.h +282 -0
  310. package/src-native/ios/Headers/include/v8-unwinder-state.h +31 -0
  311. package/src-native/ios/Headers/include/v8-unwinder.h +132 -0
  312. package/src-native/ios/Headers/include/v8-util.h +658 -0
  313. package/src-native/ios/Headers/include/v8-value-serializer-version.h +24 -0
  314. package/src-native/ios/Headers/include/v8-value-serializer.h +279 -0
  315. package/src-native/ios/Headers/include/v8-value.h +526 -0
  316. package/src-native/ios/Headers/include/v8-version-string.h +38 -0
  317. package/src-native/ios/Headers/include/v8-version.h +20 -0
  318. package/src-native/ios/Headers/include/v8-wasm-trap-handler-posix.h +31 -0
  319. package/src-native/ios/Headers/include/v8-wasm-trap-handler-win.h +28 -0
  320. package/src-native/ios/Headers/include/v8-wasm.h +257 -0
  321. package/src-native/ios/Headers/include/v8-weak-callback-info.h +86 -0
  322. package/src-native/ios/Headers/include/v8.h +88 -0
  323. package/src-native/ios/Headers/include/v8config.h +605 -0
  324. package/src-native/ios/Headers/inspector/InspectorServer.h +20 -0
  325. package/src-native/ios/Headers/inspector/JsV8InspectorClient.h +66 -0
  326. package/src-native/ios/Headers/inspector/base/trace_event/common/trace_event_common.h +1123 -0
  327. package/src-native/ios/Headers/inspector/base64.h +9 -0
  328. package/src-native/ios/Headers/inspector/src/base/address-region.h +95 -0
  329. package/src-native/ios/Headers/inspector/src/base/atomic-utils.h +219 -0
  330. package/src-native/ios/Headers/inspector/src/base/atomicops.h +332 -0
  331. package/src-native/ios/Headers/inspector/src/base/atomicops_internals_atomicword_compat.h +89 -0
  332. package/src-native/ios/Headers/inspector/src/base/base-export.h +31 -0
  333. package/src-native/ios/Headers/inspector/src/base/bits.h +343 -0
  334. package/src-native/ios/Headers/inspector/src/base/build_config.h +234 -0
  335. package/src-native/ios/Headers/inspector/src/base/compiler-specific.h +136 -0
  336. package/src-native/ios/Headers/inspector/src/base/export-template.h +163 -0
  337. package/src-native/ios/Headers/inspector/src/base/flags.h +130 -0
  338. package/src-native/ios/Headers/inspector/src/base/immediate-crash.h +162 -0
  339. package/src-native/ios/Headers/inspector/src/base/lazy-instance.h +258 -0
  340. package/src-native/ios/Headers/inspector/src/base/logging.h +417 -0
  341. package/src-native/ios/Headers/inspector/src/base/macros.h +423 -0
  342. package/src-native/ios/Headers/inspector/src/base/memory.h +89 -0
  343. package/src-native/ios/Headers/inspector/src/base/once.h +108 -0
  344. package/src-native/ios/Headers/inspector/src/base/optional.h +882 -0
  345. package/src-native/ios/Headers/inspector/src/base/platform/mutex.h +370 -0
  346. package/src-native/ios/Headers/inspector/src/base/platform/platform.h +476 -0
  347. package/src-native/ios/Headers/inspector/src/base/platform/semaphore.h +108 -0
  348. package/src-native/ios/Headers/inspector/src/base/platform/v8-time.h +513 -0
  349. package/src-native/ios/Headers/inspector/src/base/platform/wrappers.h +73 -0
  350. package/src-native/ios/Headers/inspector/src/base/safe_conversions.h +389 -0
  351. package/src-native/ios/Headers/inspector/src/base/safe_conversions_impl.h +822 -0
  352. package/src-native/ios/Headers/inspector/src/base/template-utils.h +113 -0
  353. package/src-native/ios/Headers/inspector/src/base/v8-fallthrough.h +21 -0
  354. package/src-native/ios/Headers/inspector/src/common/checks.h +38 -0
  355. package/src-native/ios/Headers/inspector/src/common/globals.h +1842 -0
  356. package/src-native/ios/Headers/inspector/src/debug/debug-interface.h +667 -0
  357. package/src-native/ios/Headers/inspector/src/debug/interface-types.h +175 -0
  358. package/src-native/ios/Headers/inspector/src/init/v8.h +52 -0
  359. package/src-native/ios/Headers/inspector/src/inspector/custom-preview.h +24 -0
  360. package/src-native/ios/Headers/inspector/src/inspector/injected-script.h +251 -0
  361. package/src-native/ios/Headers/inspector/src/inspector/inspected-context.h +79 -0
  362. package/src-native/ios/Headers/inspector/src/inspector/protocol/CSS.h +2148 -0
  363. package/src-native/ios/Headers/inspector/src/inspector/protocol/Console.h +211 -0
  364. package/src-native/ios/Headers/inspector/src/inspector/protocol/DOM.h +1008 -0
  365. package/src-native/ios/Headers/inspector/src/inspector/protocol/Debugger.h +892 -0
  366. package/src-native/ios/Headers/inspector/src/inspector/protocol/Forward.h +75 -0
  367. package/src-native/ios/Headers/inspector/src/inspector/protocol/HeapProfiler.h +346 -0
  368. package/src-native/ios/Headers/inspector/src/inspector/protocol/Log.h +342 -0
  369. package/src-native/ios/Headers/inspector/src/inspector/protocol/Network.h +2528 -0
  370. package/src-native/ios/Headers/inspector/src/inspector/protocol/Overlay.h +281 -0
  371. package/src-native/ios/Headers/inspector/src/inspector/protocol/Page.h +1189 -0
  372. package/src-native/ios/Headers/inspector/src/inspector/protocol/Profiler.h +1001 -0
  373. package/src-native/ios/Headers/inspector/src/inspector/protocol/Protocol.h +617 -0
  374. package/src-native/ios/Headers/inspector/src/inspector/protocol/Runtime.h +1696 -0
  375. package/src-native/ios/Headers/inspector/src/inspector/protocol/Schema.h +146 -0
  376. package/src-native/ios/Headers/inspector/src/inspector/protocol/Security.h +793 -0
  377. package/src-native/ios/Headers/inspector/src/inspector/remote-object-id.h +54 -0
  378. package/src-native/ios/Headers/inspector/src/inspector/search-util.h +26 -0
  379. package/src-native/ios/Headers/inspector/src/inspector/string-16.h +180 -0
  380. package/src-native/ios/Headers/inspector/src/inspector/string-util.h +128 -0
  381. package/src-native/ios/Headers/inspector/src/inspector/v8-console-agent-impl.h +48 -0
  382. package/src-native/ios/Headers/inspector/src/inspector/v8-console-message.h +147 -0
  383. package/src-native/ios/Headers/inspector/src/inspector/v8-console.h +173 -0
  384. package/src-native/ios/Headers/inspector/src/inspector/v8-css-agent-impl.h +62 -0
  385. package/src-native/ios/Headers/inspector/src/inspector/v8-debugger-agent-impl.h +248 -0
  386. package/src-native/ios/Headers/inspector/src/inspector/v8-debugger-id.h +44 -0
  387. package/src-native/ios/Headers/inspector/src/inspector/v8-debugger-script.h +123 -0
  388. package/src-native/ios/Headers/inspector/src/inspector/v8-debugger.h +257 -0
  389. package/src-native/ios/Headers/inspector/src/inspector/v8-dom-agent-impl.h +91 -0
  390. package/src-native/ios/Headers/inspector/src/inspector/v8-heap-profiler-agent-impl.h +80 -0
  391. package/src-native/ios/Headers/inspector/src/inspector/v8-inspector-impl.h +191 -0
  392. package/src-native/ios/Headers/inspector/src/inspector/v8-inspector-session-impl.h +156 -0
  393. package/src-native/ios/Headers/inspector/src/inspector/v8-log-agent-impl.h +34 -0
  394. package/src-native/ios/Headers/inspector/src/inspector/v8-network-agent-impl.h +71 -0
  395. package/src-native/ios/Headers/inspector/src/inspector/v8-ns-debugger-agent-impl.h +24 -0
  396. package/src-native/ios/Headers/inspector/src/inspector/v8-overlay-agent-impl.h +70 -0
  397. package/src-native/ios/Headers/inspector/src/inspector/v8-page-agent-impl.h +88 -0
  398. package/src-native/ios/Headers/inspector/src/inspector/v8-profiler-agent-impl.h +104 -0
  399. package/src-native/ios/Headers/inspector/src/inspector/v8-regex.h +38 -0
  400. package/src-native/ios/Headers/inspector/src/inspector/v8-runtime-agent-impl.h +157 -0
  401. package/src-native/ios/Headers/inspector/src/inspector/v8-schema-agent-impl.h +38 -0
  402. package/src-native/ios/Headers/inspector/src/inspector/v8-stack-trace-impl.h +164 -0
  403. package/src-native/ios/Headers/inspector/src/inspector/v8-string-conversions.h +17 -0
  404. package/src-native/ios/Headers/inspector/src/inspector/v8-value-utils.h +23 -0
  405. package/src-native/ios/Headers/inspector/src/inspector/value-mirror.h +87 -0
  406. package/src-native/ios/Headers/inspector/src/libplatform/default-platform.h +92 -0
  407. package/src-native/ios/Headers/inspector/src/logging/tracing-flags.h +50 -0
  408. package/src-native/ios/Headers/inspector/src/numbers/conversions.h +183 -0
  409. package/src-native/ios/Headers/inspector/src/tracing/trace-event.h +664 -0
  410. package/src-native/ios/Headers/inspector/src/utils/allocation.h +367 -0
  411. package/src-native/ios/Headers/inspector/src/utils/vector.h +324 -0
  412. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/cbor.h +305 -0
  413. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/dispatch.h +314 -0
  414. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/error_support.h +62 -0
  415. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/export.h +6 -0
  416. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/find_by_first.h +58 -0
  417. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/frontend_channel.h +47 -0
  418. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/glue.h +80 -0
  419. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/json.h +52 -0
  420. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/json_platform.h +26 -0
  421. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/maybe.h +104 -0
  422. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/parser_handler.h +39 -0
  423. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/protocol_core.h +406 -0
  424. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/serializable.h +32 -0
  425. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/serializer_traits.h +158 -0
  426. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/span.h +99 -0
  427. package/src-native/ios/Headers/inspector/third_party/inspector_protocol/crdtp/status.h +139 -0
  428. package/src-native/ios/Headers/inspector/utils.h +32 -0
  429. package/src-native/ios/Headers/inspector/v8-inspector-platform.h +44 -0
  430. package/src-native/ios/Headers/runtime/ArgConverter.h +61 -0
  431. package/src-native/ios/Headers/runtime/ArrayAdapter.h +13 -0
  432. package/src-native/ios/Headers/runtime/Caches.h +98 -0
  433. package/src-native/ios/Headers/runtime/ClassBuilder.h +61 -0
  434. package/src-native/ios/Headers/runtime/Common.h +9 -0
  435. package/src-native/ios/Headers/runtime/ConcurrentMap.h +55 -0
  436. package/src-native/ios/Headers/runtime/ConcurrentQueue.h +28 -0
  437. package/src-native/ios/Headers/runtime/Console.h +27 -0
  438. package/src-native/ios/Headers/runtime/Constants.h +15 -0
  439. package/src-native/ios/Headers/runtime/DataWrapper.h +671 -0
  440. package/src-native/ios/Headers/runtime/DictionaryAdapter.h +13 -0
  441. package/src-native/ios/Headers/runtime/ExtVector.h +21 -0
  442. package/src-native/ios/Headers/runtime/FFICall.h +105 -0
  443. package/src-native/ios/Headers/runtime/FastEnumerationAdapter.h +13 -0
  444. package/src-native/ios/Headers/runtime/FunctionReference.h +18 -0
  445. package/src-native/ios/Headers/runtime/Helpers.h +84 -0
  446. package/src-native/ios/Headers/runtime/InlineFunctions.h +16 -0
  447. package/src-native/ios/Headers/runtime/Interop.h +202 -0
  448. package/src-native/ios/Headers/runtime/KnownUnknownClassPair.h +35 -0
  449. package/src-native/ios/Headers/runtime/Metadata.h +981 -0
  450. package/src-native/ios/Headers/runtime/MetadataBuilder.h +72 -0
  451. package/src-native/ios/Headers/runtime/MetadataInlines.h +157 -0
  452. package/src-native/ios/Headers/runtime/ModuleInternal.h +59 -0
  453. package/src-native/ios/Headers/runtime/NSDataAdapter.h +13 -0
  454. package/src-native/ios/Headers/runtime/NativeScriptException.h +27 -0
  455. package/src-native/ios/Headers/runtime/ObjectManager.h +31 -0
  456. package/src-native/ios/Headers/runtime/OneByteStringResource.h +21 -0
  457. package/src-native/ios/Headers/runtime/Pointer.h +26 -0
  458. package/src-native/ios/Headers/runtime/PromiseProxy.h +15 -0
  459. package/src-native/ios/Headers/runtime/Reference.h +38 -0
  460. package/src-native/ios/Headers/runtime/Runtime.h +67 -0
  461. package/src-native/ios/Headers/runtime/RuntimeConfig.h +17 -0
  462. package/src-native/ios/Headers/runtime/SetTimeout.h +34 -0
  463. package/src-native/ios/Headers/runtime/SimpleAllocator.h +23 -0
  464. package/src-native/ios/Headers/runtime/StringHasher.h +315 -0
  465. package/src-native/ios/Headers/runtime/SymbolIterator.h +18 -0
  466. package/src-native/ios/Headers/runtime/SymbolLoader.h +27 -0
  467. package/src-native/ios/Headers/runtime/TNSDerivedClass.h +8 -0
  468. package/src-native/ios/Headers/runtime/TSHelpers.h +15 -0
  469. package/src-native/ios/Headers/runtime/Tasks.h +19 -0
  470. package/src-native/ios/Headers/runtime/UnmanagedType.h +21 -0
  471. package/src-native/ios/Headers/runtime/WeakRef.h +15 -0
  472. package/src-native/ios/Headers/runtime/Worker.h +26 -0
  473. package/src-native/ios/Headers/runtime/robin_hood.h +2184 -0
  474. package/src-native/ios/NativeScript.podspec +55 -0
  475. package/typings/objc!CanvasNative.d.ts +2038 -0
  476. package/typings/objc!CanvasNative.js +1 -0
  477. package/typings/objc!CanvasNative.js.map +1 -0
  478. package/utils.d.ts +3 -1
  479. package/utils.js +7 -20
  480. package/utils.js.map +1 -1
  481. package/angular/nativescript-canvas-angular.d.ts +0 -5
  482. package/platforms/ios/src/cpp/CanvasJSIModule.mm +0 -1105
  483. package/platforms/ios/src/cpp/ImageAssetImpl.mm +0 -417
  484. package/platforms/ios/src/cpp/ImageBitmapImpl.mm +0 -126
  485. package/platforms/ios/src/cpp/RafImpl.mm +0 -10
  486. package/platforms/ios/src/cpp/TextDecoderImpl.mm +0 -97
  487. package/platforms/ios/src/cpp/TextEncoderImpl.mm +0 -60
  488. package/platforms/ios/src/cpp/VecMutableBuffer.h +0 -51
  489. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.cc +0 -6119
  490. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.h +0 -2854
  491. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.mm +0 -42
  492. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.mm +0 -49
  493. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.mm +0 -1954
  494. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.mm +0 -68
  495. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.mm +0 -149
  496. package/platforms/ios/src/cpp/canvas2d/Path2D.mm +0 -335
  497. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.mm +0 -68
  498. package/platforms/ios/src/cpp/rust/cxx.cc +0 -793
  499. package/platforms/ios/src/cpp/rust/cxx.h +0 -1111
  500. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.mm +0 -39
  501. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.mm +0 -5879
  502. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.mm +0 -40
  503. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.mm +0 -108
  504. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.mm +0 -28
  505. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.mm +0 -42
  506. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.mm +0 -295
  507. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.mm +0 -40
  508. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.mm +0 -37
  509. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.mm +0 -28
  510. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.mm +0 -31
  511. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.mm +0 -28
  512. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.mm +0 -127
  513. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.mm +0 -45
  514. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.mm +0 -45
  515. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.mm +0 -31
  516. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.mm +0 -70
  517. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.mm +0 -47
  518. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.mm +0 -46
  519. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.mm +0 -49
  520. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.mm +0 -30
  521. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.mm +0 -177
  522. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.mm +0 -64
  523. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.mm +0 -4554
  524. /package/platforms/ios/src/cpp/{OnRafCallback.mm → OnRafCallback.cpp} +0 -0
@@ -0,0 +1,4375 @@
1
+ //
2
+ // Created by Osei Fortune on 22/03/2022.
3
+ //
4
+
5
+ #include "WebGL2RenderingContext.h"
6
+
7
+ WebGL2RenderingContext::WebGL2RenderingContext(WebGLState *state) : WebGLRenderingContext(
8
+ state, WebGLRenderingVersion::V2) {
9
+ }
10
+
11
+
12
+ WebGL2RenderingContext::WebGL2RenderingContext(WebGLState *state,
13
+ WebGLRenderingVersion version)
14
+ : WebGLRenderingContext(state, version) {
15
+ }
16
+
17
+
18
+ v8::Local<v8::FunctionTemplate> WebGL2RenderingContext::GetCtor(v8::Isolate *isolate) {
19
+ auto cache = Caches::Get(isolate);
20
+ auto ctor = cache->WebGL2RenderingContextTmpl.get();
21
+ if (ctor != nullptr) {
22
+ return ctor->Get(isolate);
23
+ }
24
+
25
+ v8::Local<v8::FunctionTemplate> ctorTmpl = v8::FunctionTemplate::New(isolate);
26
+ ctorTmpl->InstanceTemplate()->SetInternalFieldCount(1);
27
+ ctorTmpl->SetClassName(ConvertToV8String(isolate, "WebGL2RenderingContext"));
28
+
29
+ auto tmpl = ctorTmpl->InstanceTemplate();
30
+ tmpl->SetInternalFieldCount(1);
31
+ WebGLRenderingContext::SetConstants(isolate, tmpl);
32
+ SetConstants(isolate, tmpl);
33
+
34
+ WebGLRenderingContext::SetMethods(isolate, tmpl);
35
+ SetMethods(isolate, tmpl);
36
+
37
+ WebGLRenderingContext::SetProps(isolate, tmpl);
38
+ SetProps(isolate, tmpl);
39
+ cache->WebGL2RenderingContextTmpl =
40
+ std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
41
+ return ctorTmpl;
42
+ }
43
+
44
+ WebGL2RenderingContext *WebGL2RenderingContext::GetPointer(const v8::Local<v8::Object> &object) {
45
+ auto ptr = object->GetInternalField(0).As<v8::External>()->Value();
46
+ if (ptr == nullptr) {
47
+ return nullptr;
48
+ }
49
+ return static_cast<WebGL2RenderingContext *>(ptr);
50
+ }
51
+
52
+ void WebGL2RenderingContext::BeginQuery(const v8::FunctionCallbackInfo<v8::Value> &args) {
53
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
54
+ if (ptr == nullptr) {
55
+ return;
56
+ }
57
+
58
+ auto isolate = args.GetIsolate();
59
+ auto context = isolate->GetCurrentContext();
60
+
61
+ auto value = args[1];
62
+ auto type = GetNativeType(isolate, value);
63
+ if (type == NativeType::WebGLQuery) {
64
+ auto target = args[0]->Uint32Value(context).ToChecked();
65
+ auto query = WebGLQuery::GetPointer(value.As<v8::Object>());
66
+
67
+ if (query != nullptr) {
68
+ canvas_native_webgl2_begin_query(
69
+ target,
70
+ query->GetQuery(),
71
+ ptr->GetState()
72
+ );
73
+ }
74
+ }
75
+ }
76
+
77
+ void
78
+ WebGL2RenderingContext::BeginTransformFeedback(const v8::FunctionCallbackInfo<v8::Value> &args) {
79
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
80
+ if (ptr == nullptr) {
81
+ return;
82
+ }
83
+
84
+ auto isolate = args.GetIsolate();
85
+ auto context = isolate->GetCurrentContext();
86
+
87
+ auto value = args[0]->Uint32Value(context).ToChecked();
88
+ canvas_native_webgl2_begin_transform_feedback(
89
+ value,
90
+ ptr->GetState()
91
+ );
92
+ }
93
+
94
+ void WebGL2RenderingContext::BindBufferBase(const v8::FunctionCallbackInfo<v8::Value> &args) {
95
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
96
+ if (ptr == nullptr) {
97
+ return;
98
+ }
99
+
100
+ auto isolate = args.GetIsolate();
101
+ auto context = isolate->GetCurrentContext();
102
+
103
+ auto bufferValue = args[2];
104
+ auto type = GetNativeType(isolate, bufferValue);
105
+
106
+ if (type == NativeType::WebGLBuffer) {
107
+ auto target = args[0]->Uint32Value(context).ToChecked();
108
+ auto index = args[1]->Uint32Value(context).ToChecked();
109
+
110
+ auto buffer = WebGLBuffer::GetPointer(bufferValue.As<v8::Object>());
111
+
112
+ canvas_native_webgl2_bind_buffer_base(
113
+ target,
114
+ index,
115
+ buffer->GetBuffer(),
116
+ ptr->GetState()
117
+ );
118
+ }
119
+ }
120
+
121
+ void WebGL2RenderingContext::BindBufferRange(const v8::FunctionCallbackInfo<v8::Value> &args) {
122
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
123
+ if (ptr == nullptr) {
124
+ return;
125
+ }
126
+
127
+ auto isolate = args.GetIsolate();
128
+ auto context = isolate->GetCurrentContext();
129
+
130
+ auto bufferValue = args[2];
131
+ auto type = GetNativeType(isolate, bufferValue);
132
+ if (type == NativeType::WebGLBuffer) {
133
+ auto target = args[0]->Uint32Value(context).ToChecked();
134
+ auto index = args[1]->Uint32Value(context).ToChecked();
135
+ auto offset = args[3]->NumberValue(context).ToChecked();
136
+ auto size = args[4]->NumberValue(context).ToChecked();
137
+ auto buffer = WebGLBuffer::GetPointer(bufferValue.As<v8::Object>());
138
+ canvas_native_webgl2_bind_buffer_range(
139
+ target,
140
+ index,
141
+ buffer->GetBuffer(),
142
+ static_cast<ssize_t>(offset),
143
+ static_cast<ssize_t>(size),
144
+ ptr->GetState()
145
+ );
146
+ }
147
+ }
148
+
149
+ void WebGL2RenderingContext::BindSampler(const v8::FunctionCallbackInfo<v8::Value> &args) {
150
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
151
+ if (ptr == nullptr) {
152
+ return;
153
+ }
154
+
155
+ auto isolate = args.GetIsolate();
156
+ auto context = isolate->GetCurrentContext();
157
+
158
+ auto samplerValue = args[1];
159
+ auto type = GetNativeType(isolate, samplerValue);
160
+ if (type == NativeType::WebGLSampler) {
161
+ auto unit = args[0]->Uint32Value(context).ToChecked();
162
+ auto sampler = WebGLSampler::GetPointer(samplerValue.As<v8::Object>());
163
+
164
+ canvas_native_webgl2_bind_sampler(
165
+ unit,
166
+ sampler->GetSampler(),
167
+ ptr->GetState()
168
+ );
169
+ }
170
+ }
171
+
172
+ void
173
+ WebGL2RenderingContext::BindTransformFeedback(const v8::FunctionCallbackInfo<v8::Value> &args) {
174
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
175
+ if (ptr == nullptr) {
176
+ return;
177
+ }
178
+
179
+ auto isolate = args.GetIsolate();
180
+ auto context = isolate->GetCurrentContext();
181
+
182
+ auto transformFeedbackValue = args[1];
183
+ auto type = GetNativeType(isolate, transformFeedbackValue);
184
+
185
+ if (type == NativeType::WebGLTransformFeedback) {
186
+ auto target = args[0]->Uint32Value(context).ToChecked();
187
+ auto transformFeedback = WebGLTransformFeedback::GetPointer(
188
+ transformFeedbackValue.As<v8::Object>());
189
+
190
+ canvas_native_webgl2_bind_transform_feedback(
191
+ target,
192
+ transformFeedback->GetFeedback(),
193
+ ptr->GetState()
194
+ );
195
+ }
196
+ }
197
+
198
+ void WebGL2RenderingContext::BindVertexArray(const v8::FunctionCallbackInfo<v8::Value> &args) {
199
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
200
+ if (ptr == nullptr) {
201
+ return;
202
+ }
203
+
204
+ auto isolate = args.GetIsolate();
205
+
206
+ auto value = args[0];
207
+ if (value->IsNull()) {
208
+ canvas_native_webgl2_bind_vertex_array(
209
+ 0,
210
+ ptr->GetState()
211
+ );
212
+ return;
213
+ }
214
+
215
+ auto type = GetNativeType(isolate, value);
216
+ if (type == NativeType::WebGLVertexArrayObject) {
217
+ auto vertexArray = WebGLVertexArrayObject::GetPointer(value.As<v8::Object>());
218
+
219
+ if (vertexArray != nullptr) {
220
+ canvas_native_webgl2_bind_vertex_array(
221
+ vertexArray->GetVertexArrayObject(),
222
+ ptr->GetState()
223
+ );
224
+ }
225
+ }
226
+ }
227
+
228
+ void WebGL2RenderingContext::BlitFramebuffer(const v8::FunctionCallbackInfo<v8::Value> &args) {
229
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
230
+ if (ptr == nullptr) {
231
+ return;
232
+ }
233
+
234
+ auto isolate = args.GetIsolate();
235
+ auto context = isolate->GetCurrentContext();
236
+
237
+ auto srcX0 = args[0]->Int32Value(context).ToChecked();
238
+ auto srcY0 = args[1]->Int32Value(context).ToChecked();
239
+
240
+ auto srcX1 = args[2]->Int32Value(context).ToChecked();
241
+ auto srcY1 = args[3]->Int32Value(context).ToChecked();
242
+
243
+ auto dstX0 = args[4]->Int32Value(context).ToChecked();
244
+ auto dstY0 = args[5]->Int32Value(context).ToChecked();
245
+
246
+ auto dstX1 = args[6]->Int32Value(context).ToChecked();
247
+ auto dstY1 = args[7]->Int32Value(context).ToChecked();
248
+
249
+ auto mask = args[8]->Uint32Value(context).ToChecked();
250
+ auto filter = args[9]->Uint32Value(context).ToChecked();
251
+ canvas_native_webgl2_blit_framebuffer(
252
+ srcX0,
253
+ srcY0,
254
+ srcX1,
255
+ srcY1,
256
+ dstX0,
257
+ dstY0,
258
+ dstX1,
259
+ dstY1,
260
+ mask,
261
+ filter,
262
+ ptr->GetState()
263
+ );
264
+ }
265
+
266
+ void WebGL2RenderingContext::ClearBufferfv(const v8::FunctionCallbackInfo<v8::Value> &args) {
267
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
268
+ if (ptr == nullptr) {
269
+ return;
270
+ }
271
+
272
+ auto isolate = args.GetIsolate();
273
+ auto context = isolate->GetCurrentContext();
274
+
275
+ auto values = args[2];
276
+ auto buffer = args[0]->Uint32Value(context).ToChecked();
277
+ auto drawbuffer = args[1]->Int32Value(context).ToChecked();
278
+ if (values->IsArray()) {
279
+ auto array = values.As<v8::Array>();
280
+ auto len = array->Length();
281
+ std::vector<float> buf;
282
+ buf.reserve(len);
283
+ for (int j = 0; j < len; ++j) {
284
+ auto item = array->Get(
285
+ context, j).ToLocalChecked();
286
+ buf.push_back(
287
+ static_cast<float>(item->NumberValue(context).ToChecked())
288
+ );
289
+ }
290
+
291
+ canvas_native_webgl2_clear_bufferfv(
292
+ buffer,
293
+ drawbuffer,
294
+ buf.data(),
295
+ buf.size(),
296
+ ptr->GetState()
297
+ );
298
+
299
+ } else if (values->IsFloat32Array()) {
300
+ auto buf = values.As<v8::Float32Array>();
301
+ auto array = buf->Buffer();
302
+ auto offset = buf->ByteOffset();
303
+ auto size = buf->Length();
304
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
305
+ auto data = static_cast<float *>((void *) data_ptr);
306
+
307
+
308
+ canvas_native_webgl2_clear_bufferfv(
309
+ buffer,
310
+ drawbuffer,
311
+ data,
312
+ size,
313
+ ptr->GetState()
314
+ );
315
+ }
316
+ }
317
+
318
+ void WebGL2RenderingContext::ClearBufferiv(const v8::FunctionCallbackInfo<v8::Value> &args) {
319
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
320
+ if (ptr == nullptr) {
321
+ return;
322
+ }
323
+
324
+ auto isolate = args.GetIsolate();
325
+ auto context = isolate->GetCurrentContext();
326
+
327
+ auto values = args[2];
328
+
329
+ auto buffer = args[0]->Uint32Value(context).ToChecked();
330
+ auto drawbuffer = args[1]->Int32Value(context).ToChecked();
331
+ if (values->IsArray()) {
332
+ auto array = values.As<v8::Array>();
333
+ auto len = array->Length();
334
+ std::vector<int32_t> buf;
335
+ buf.reserve(len);
336
+ for (int j = 0; j < len; ++j) {
337
+ auto item = array->Get(
338
+ context, j).ToLocalChecked();
339
+ buf.push_back(
340
+ item->Int32Value(context).ToChecked()
341
+ );
342
+ }
343
+
344
+
345
+ canvas_native_webgl2_clear_bufferiv(
346
+ buffer,
347
+ drawbuffer,
348
+ buf.data(),
349
+ buf.size(),
350
+ ptr->GetState()
351
+ );
352
+
353
+ } else if (values->IsInt32Array()) {
354
+ auto buf = values.As<v8::Int32Array>();
355
+
356
+ auto array = buf->Buffer();
357
+ auto offset = buf->ByteOffset();
358
+ auto size = buf->Length();
359
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
360
+ auto data = static_cast<int32_t *>((void *) data_ptr);
361
+
362
+
363
+ canvas_native_webgl2_clear_bufferiv(
364
+ buffer,
365
+ drawbuffer,
366
+ data,
367
+ size,
368
+ ptr->GetState()
369
+ );
370
+ }
371
+ }
372
+
373
+ void WebGL2RenderingContext::ClearBufferfi(const v8::FunctionCallbackInfo<v8::Value> &args) {
374
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
375
+ if (ptr == nullptr) {
376
+ return;
377
+ }
378
+
379
+ auto isolate = args.GetIsolate();
380
+ auto context = isolate->GetCurrentContext();
381
+
382
+ auto buffer = args[0]->Uint32Value(context).ToChecked();
383
+ auto drawbuffer = args[1]->Int32Value(context).ToChecked();
384
+ auto depth = args[2]->NumberValue(context).ToChecked();
385
+ auto stencil = args[3]->Int32Value(context).ToChecked();
386
+ canvas_native_webgl2_clear_bufferfi(
387
+ buffer,
388
+ drawbuffer,
389
+ static_cast<float>(depth),
390
+ stencil,
391
+ ptr->GetState()
392
+ );
393
+ }
394
+
395
+ void WebGL2RenderingContext::ClearBufferuiv(const v8::FunctionCallbackInfo<v8::Value> &args) {
396
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
397
+ if (ptr == nullptr) {
398
+ return;
399
+ }
400
+
401
+ auto isolate = args.GetIsolate();
402
+ auto context = isolate->GetCurrentContext();
403
+
404
+
405
+ auto values = args[2];
406
+
407
+ auto buffer = args[0]->Uint32Value(context).ToChecked();
408
+ auto drawbuffer = args[1]->Int32Value(context).ToChecked();
409
+ if (values->IsArray()) {
410
+ auto array = values.As<v8::Array>();
411
+ auto len = array->Length();
412
+ std::vector<uint32_t> buf;
413
+ buf.reserve(len);
414
+ for (int j = 0; j < len; ++j) {
415
+ auto item = array->Get(
416
+ context, j).ToLocalChecked();
417
+ buf.push_back(
418
+ item->Uint32Value(context).ToChecked()
419
+ );
420
+ }
421
+
422
+
423
+ canvas_native_webgl2_clear_bufferuiv(
424
+ buffer,
425
+ drawbuffer,
426
+ buf.data(),
427
+ buf.size(),
428
+ ptr->GetState()
429
+ );
430
+
431
+ } else if (values->IsUint32Array()) {
432
+ auto buf = values.As<v8::Uint32Array>();
433
+ auto array = buf->Buffer();
434
+ auto offset = buf->ByteOffset();
435
+ auto size = buf->Length();
436
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
437
+ auto data = static_cast<uint32_t *>((void *) data_ptr);
438
+
439
+
440
+ canvas_native_webgl2_clear_bufferuiv(
441
+ buffer,
442
+ drawbuffer,
443
+ data, size,
444
+ ptr->GetState()
445
+ );
446
+ }
447
+ }
448
+
449
+ void WebGL2RenderingContext::ClientWaitSync(const v8::FunctionCallbackInfo<v8::Value> &args) {
450
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
451
+ if (ptr == nullptr) {
452
+ return;
453
+ }
454
+
455
+ auto isolate = args.GetIsolate();
456
+ auto context = isolate->GetCurrentContext();
457
+
458
+ auto syncValue = args[0];
459
+ auto type = GetNativeType(isolate, syncValue);
460
+ if (args.Length() > 2 && type == NativeType::WebGLSync) {
461
+ auto sync = WebGLSyncImpl::GetPointer(syncValue.As<v8::Object>());
462
+ if (sync != nullptr) {
463
+ auto flags = args[1]->Uint32Value(context).ToChecked();
464
+ auto timeout = args[2]->NumberValue(context).ToChecked();
465
+ auto ret = canvas_native_webgl2_client_wait_sync(
466
+ sync->GetSync(),
467
+ flags,
468
+ static_cast<ssize_t>(timeout),
469
+ ptr->GetState()
470
+ );
471
+
472
+ args.GetReturnValue().Set(ret);
473
+ return;
474
+ }
475
+ }
476
+ // todo decide if WAIT_FAILED should be returned here
477
+ args.GetReturnValue().SetUndefined();
478
+ }
479
+
480
+ void
481
+ WebGL2RenderingContext::CompressedTexSubImage3D(const v8::FunctionCallbackInfo<v8::Value> &args) {
482
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
483
+ if (ptr == nullptr) {
484
+ return;
485
+ }
486
+
487
+ auto isolate = args.GetIsolate();
488
+ auto context = isolate->GetCurrentContext();
489
+
490
+ if (args.Length() > 8) {
491
+ auto target = args[0]->Uint32Value(context).ToChecked();
492
+ auto level = args[1]->Int32Value(context).ToChecked();
493
+ auto xoffset = args[2]->Int32Value(context).ToChecked();
494
+ auto yoffset = args[3]->Int32Value(context).ToChecked();
495
+ auto zoffset = args[4]->Int32Value(context).ToChecked();
496
+ auto width = args[5]->Int32Value(context).ToChecked();
497
+ auto height = args[6]->Int32Value(context).ToChecked();
498
+ auto depth = args[7]->Int32Value(context).ToChecked();
499
+ auto format = args[8]->Uint32Value(context).ToChecked();
500
+
501
+ auto imageSizeOrBufValue = args[0];
502
+ if (args[9]->IsObject()) {
503
+ if (imageSizeOrBufValue->IsArrayBufferView()) {
504
+ auto buf = imageSizeOrBufValue.As<v8::ArrayBufferView>();
505
+ auto array = buf->Buffer();
506
+ auto offset = buf->ByteOffset();
507
+ auto size = buf->ByteLength();
508
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
509
+ auto data = static_cast<uint8_t *>((void *) data_ptr);
510
+
511
+ size_t srcOffset = 0;
512
+ if (args[10]->IsNumber()) {
513
+ srcOffset = static_cast<size_t>(args[10]->NumberValue(context).ToChecked());
514
+ }
515
+ size_t srcLengthOverride = 0;
516
+ if (args[11]->IsNumber()) {
517
+ srcLengthOverride = static_cast<size_t>(args[11]->NumberValue(
518
+ context).ToChecked());
519
+ }
520
+
521
+
522
+ canvas_native_webgl2_compressed_tex_sub_image3d(
523
+ target,
524
+ level,
525
+ xoffset,
526
+ yoffset,
527
+ zoffset,
528
+ width,
529
+ height,
530
+ depth,
531
+ format,
532
+ data,
533
+ size,
534
+ srcOffset,
535
+ srcLengthOverride,
536
+ ptr->GetState()
537
+ );
538
+ }
539
+ } else {
540
+ auto imageSizeOrBuf = imageSizeOrBufValue->Int32Value(context).ToChecked();
541
+ auto offset = 0;
542
+ if (args[10]->IsNumber()) {
543
+ offset = args[10]->Int32Value(context).ToChecked();
544
+ }
545
+ canvas_native_webgl2_compressed_tex_sub_image3d_none(
546
+ target,
547
+ level,
548
+ xoffset,
549
+ yoffset,
550
+ zoffset,
551
+ width,
552
+ height,
553
+ depth,
554
+ format,
555
+ imageSizeOrBuf,
556
+ offset,
557
+ ptr->GetState()
558
+ );
559
+ }
560
+ }
561
+ }
562
+
563
+ void WebGL2RenderingContext::CopyBufferSubData(const v8::FunctionCallbackInfo<v8::Value> &args) {
564
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
565
+ if (ptr == nullptr) {
566
+ return;
567
+ }
568
+
569
+ auto isolate = args.GetIsolate();
570
+ auto context = isolate->GetCurrentContext();
571
+
572
+ auto readTarget = args[0]->Uint32Value(context).ToChecked();
573
+ auto writeTarget = args[1]->Uint32Value(context).ToChecked();
574
+ auto readOffset = args[2]->NumberValue(context).ToChecked();
575
+ auto writeOffset = args[3]->NumberValue(context).ToChecked();
576
+ auto size = args[4]->NumberValue(context).ToChecked();
577
+ canvas_native_webgl2_copy_buffer_sub_data(
578
+ readTarget,
579
+ writeTarget,
580
+ static_cast<ssize_t>(readOffset),
581
+ static_cast<ssize_t>(writeOffset),
582
+ static_cast<ssize_t>(size),
583
+ ptr->GetState()
584
+ );
585
+ }
586
+
587
+ void WebGL2RenderingContext::CopyTexSubImage3D(const v8::FunctionCallbackInfo<v8::Value> &args) {
588
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
589
+ if (ptr == nullptr) {
590
+ return;
591
+ }
592
+
593
+ auto isolate = args.GetIsolate();
594
+ auto context = isolate->GetCurrentContext();
595
+
596
+ auto target = args[0]->Uint32Value(context).ToChecked();
597
+ auto level = args[1]->Int32Value(context).ToChecked();
598
+ auto xoffset = args[2]->Int32Value(context).ToChecked();
599
+ auto yoffset = args[3]->Int32Value(context).ToChecked();
600
+ auto zoffset = args[4]->Int32Value(context).ToChecked();
601
+ auto x = args[5]->Int32Value(context).ToChecked();
602
+ auto y = args[6]->Int32Value(context).ToChecked();
603
+ auto width = args[7]->Int32Value(context).ToChecked();
604
+ auto height = args[8]->Int32Value(context).ToChecked();
605
+ canvas_native_webgl2_copy_tex_sub_image3d(
606
+ target,
607
+ level,
608
+ xoffset,
609
+ yoffset,
610
+ zoffset,
611
+ x,
612
+ y,
613
+ width,
614
+ height,
615
+ ptr->GetState()
616
+ );
617
+ }
618
+
619
+ void WebGL2RenderingContext::CreateQuery(const v8::FunctionCallbackInfo<v8::Value> &args) {
620
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
621
+ if (ptr == nullptr) {
622
+ args.GetReturnValue().SetUndefined();
623
+ return;
624
+ }
625
+
626
+ auto isolate = args.GetIsolate();
627
+
628
+ auto ret = canvas_native_webgl2_create_query(
629
+ ptr->GetState());
630
+ auto query = WebGLQuery::NewInstance(isolate, new WebGLQuery(ret));
631
+
632
+ args.GetReturnValue().Set(query);
633
+ }
634
+
635
+ void WebGL2RenderingContext::CreateSampler(const v8::FunctionCallbackInfo<v8::Value> &args) {
636
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
637
+ if (ptr == nullptr) {
638
+ args.GetReturnValue().SetUndefined();
639
+ return;
640
+ }
641
+
642
+ auto isolate = args.GetIsolate();
643
+
644
+ auto ret = canvas_native_webgl2_create_sampler(
645
+ ptr->GetState());
646
+ auto sampler = WebGLSampler::NewInstance(isolate, new WebGLSampler(ret));
647
+
648
+ args.GetReturnValue().Set(sampler);
649
+ }
650
+
651
+ void
652
+ WebGL2RenderingContext::CreateTransformFeedback(const v8::FunctionCallbackInfo<v8::Value> &args) {
653
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
654
+ if (ptr == nullptr) {
655
+ args.GetReturnValue().SetUndefined();
656
+ return;
657
+ }
658
+
659
+ auto isolate = args.GetIsolate();
660
+
661
+ auto ret = canvas_native_webgl2_create_transform_feedback(
662
+ ptr->GetState());
663
+
664
+ auto feedback = WebGLTransformFeedback::NewInstance(isolate, new WebGLTransformFeedback(
665
+ ret));
666
+
667
+ args.GetReturnValue().Set(feedback);
668
+ }
669
+
670
+ void WebGL2RenderingContext::CreateVertexArray(const v8::FunctionCallbackInfo<v8::Value> &args) {
671
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
672
+ if (ptr == nullptr) {
673
+ args.GetReturnValue().SetUndefined();
674
+ return;
675
+ }
676
+
677
+ auto isolate = args.GetIsolate();
678
+
679
+ auto ret = canvas_native_webgl2_create_vertex_array(
680
+ ptr->GetState());
681
+
682
+ auto vertexArrayObject = WebGLVertexArrayObject::NewInstance(isolate,
683
+ new WebGLVertexArrayObject(ret));
684
+
685
+ args.GetReturnValue().Set(vertexArrayObject);
686
+ }
687
+
688
+ void WebGL2RenderingContext::DeleteQuery(const v8::FunctionCallbackInfo<v8::Value> &args) {
689
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
690
+ if (ptr == nullptr) {
691
+ return;
692
+ }
693
+
694
+ auto isolate = args.GetIsolate();
695
+
696
+ auto queryValue = args[0];
697
+ auto type = GetNativeType(isolate, queryValue);
698
+ if (type == NativeType::WebGLQuery) {
699
+ auto query = WebGLQuery::GetPointer(queryValue.As<v8::Object>());
700
+
701
+ if (query != nullptr) {
702
+ canvas_native_webgl2_delete_query_with_query(
703
+ query->GetQuery(),
704
+ ptr->GetState()
705
+ );
706
+ }
707
+ }
708
+ }
709
+
710
+ void WebGL2RenderingContext::DeleteSampler(const v8::FunctionCallbackInfo<v8::Value> &args) {
711
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
712
+ if (ptr == nullptr) {
713
+ return;
714
+ }
715
+
716
+ auto isolate = args.GetIsolate();
717
+
718
+
719
+ auto samplerValue = args[0];
720
+ auto type = GetNativeType(isolate, samplerValue);
721
+
722
+ if (type == NativeType::WebGLSampler) {
723
+ auto sampler = WebGLSampler::GetPointer(samplerValue.As<v8::Object>());
724
+
725
+ if (sampler != nullptr) {
726
+ canvas_native_webgl2_delete_sampler_with_sampler(
727
+ sampler->GetSampler(),
728
+ ptr->GetState()
729
+ );
730
+ }
731
+ }
732
+ }
733
+
734
+ void WebGL2RenderingContext::DeleteSync(const v8::FunctionCallbackInfo<v8::Value> &args) {
735
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
736
+ if (ptr == nullptr) {
737
+ return;
738
+ }
739
+
740
+ auto isolate = args.GetIsolate();
741
+
742
+
743
+ auto syncValue = args[0];
744
+ auto type = GetNativeType(isolate, syncValue);
745
+ if (type == NativeType::WebGLSync) {
746
+ auto sync = WebGLSyncImpl::GetPointer(syncValue.As<v8::Object>());
747
+
748
+ if (sync != nullptr) {
749
+ canvas_native_webgl2_delete_sync_with_sync(
750
+ sync->GetSync(),
751
+ ptr->GetState()
752
+ );
753
+ }
754
+ }
755
+ }
756
+
757
+ void
758
+ WebGL2RenderingContext::DeleteTransformFeedback(const v8::FunctionCallbackInfo<v8::Value> &args) {
759
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
760
+ if (ptr == nullptr) {
761
+ return;
762
+ }
763
+
764
+ auto isolate = args.GetIsolate();
765
+
766
+
767
+ auto transformFeedbackValue = args[0];
768
+ auto type = GetNativeType(isolate, transformFeedbackValue);
769
+ if (type == NativeType::WebGLTransformFeedback) {
770
+ auto transformFeedback = WebGLTransformFeedback::GetPointer(
771
+ transformFeedbackValue.As<v8::Object>());
772
+
773
+ if (transformFeedback != nullptr) {
774
+ canvas_native_webgl2_delete_transform_feedback(
775
+ transformFeedback->GetFeedback(),
776
+ ptr->GetState()
777
+ );
778
+ }
779
+ }
780
+ }
781
+
782
+ void WebGL2RenderingContext::DeleteVertexArray(const v8::FunctionCallbackInfo<v8::Value> &args) {
783
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
784
+ if (ptr == nullptr) {
785
+ return;
786
+ }
787
+
788
+ auto isolate = args.GetIsolate();
789
+
790
+
791
+ auto vertexArrayValue = args[0];
792
+ auto type = GetNativeType(isolate, vertexArrayValue);
793
+ if (type == NativeType::WebGLVertexArrayObject) {
794
+
795
+ auto vertexArray = WebGLVertexArrayObject::GetPointer(vertexArrayValue.As<v8::Object>());
796
+ if (vertexArray != nullptr) {
797
+ canvas_native_webgl2_delete_vertex_array_with_vertex_array(
798
+ vertexArray->GetVertexArrayObject(),
799
+ ptr->GetState()
800
+ );
801
+ }
802
+ }
803
+ }
804
+
805
+ void WebGL2RenderingContext::DrawArraysInstanced(const v8::FunctionCallbackInfo<v8::Value> &args) {
806
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
807
+ if (ptr == nullptr) {
808
+ return;
809
+ }
810
+
811
+ auto isolate = args.GetIsolate();
812
+ auto context = isolate->GetCurrentContext();
813
+
814
+ auto mode = args[0]->Uint32Value(context).ToChecked();
815
+ auto first = args[1]->Int32Value(context).ToChecked();
816
+ auto count_ = args[2]->Int32Value(context).ToChecked();
817
+ auto instanceCount = args[3]->Int32Value(context).ToChecked();
818
+ canvas_native_webgl2_draw_arrays_instanced(
819
+ mode,
820
+ first,
821
+ count_,
822
+ instanceCount,
823
+ ptr->GetState()
824
+ );
825
+
826
+ ptr->UpdateInvalidateState();
827
+ }
828
+
829
+ void WebGL2RenderingContext::DrawBuffers(const v8::FunctionCallbackInfo<v8::Value> &args) {
830
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
831
+ if (ptr == nullptr) {
832
+ return;
833
+ }
834
+
835
+ auto isolate = args.GetIsolate();
836
+ auto context = isolate->GetCurrentContext();
837
+
838
+ auto buffersObject = args[0];
839
+ if (buffersObject->IsArray()) {
840
+ auto array = buffersObject.As<v8::Array>();
841
+ auto len = array->Length();
842
+ std::vector<uint32_t> buf;
843
+ buf.reserve(len);
844
+ for (int j = 0; j < len; ++j) {
845
+ auto item = array->Get(
846
+ context, j).ToLocalChecked();
847
+ buf.emplace_back(item->Uint32Value(context).ToChecked());
848
+ }
849
+
850
+ canvas_native_webgl2_draw_buffers(
851
+ buf.data(), buf.size(),
852
+ ptr->GetState());
853
+ }
854
+ }
855
+
856
+ void
857
+ WebGL2RenderingContext::DrawElementsInstanced(const v8::FunctionCallbackInfo<v8::Value> &args) {
858
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
859
+ if (ptr == nullptr) {
860
+ return;
861
+ }
862
+
863
+ auto isolate = args.GetIsolate();
864
+ auto context = isolate->GetCurrentContext();
865
+
866
+ auto mode = args[0]->Uint32Value(context).ToChecked();
867
+ auto count_ = args[1]->Int32Value(context).ToChecked();
868
+ auto type = args[2]->Uint32Value(context).ToChecked();
869
+ auto offset = args[3]->NumberValue(context).ToChecked();
870
+ auto instanceCount = args[4]->Int32Value(context).ToChecked();
871
+ canvas_native_webgl2_draw_elements_instanced(
872
+ mode,
873
+ count_,
874
+ type,
875
+ static_cast<ssize_t>(offset),
876
+ instanceCount,
877
+ ptr->GetState()
878
+ );
879
+
880
+ ptr->UpdateInvalidateState();
881
+ }
882
+
883
+ void WebGL2RenderingContext::DrawRangeElements(const v8::FunctionCallbackInfo<v8::Value> &args) {
884
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
885
+ if (ptr == nullptr) {
886
+ return;
887
+ }
888
+
889
+ auto isolate = args.GetIsolate();
890
+ auto context = isolate->GetCurrentContext();
891
+
892
+ auto mode = args[0]->Uint32Value(context).ToChecked();
893
+ auto start = args[1]->Uint32Value(context).ToChecked();
894
+ auto end = args[2]->Uint32Value(context).ToChecked();
895
+ auto count = args[3]->Int32Value(context).ToChecked();
896
+ auto type = args[4]->Uint32Value(context).ToChecked();
897
+ auto offset = args[5]->NumberValue(context).ToChecked();
898
+ canvas_native_webgl2_draw_range_elements(
899
+ mode,
900
+ start,
901
+ end,
902
+ count,
903
+ type,
904
+ static_cast<ssize_t>(offset),
905
+ ptr->GetState()
906
+ );
907
+
908
+ ptr->UpdateInvalidateState();
909
+ }
910
+
911
+ void WebGL2RenderingContext::EndQuery(const v8::FunctionCallbackInfo<v8::Value> &args) {
912
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
913
+ if (ptr == nullptr) {
914
+ return;
915
+ }
916
+
917
+ auto isolate = args.GetIsolate();
918
+ auto context = isolate->GetCurrentContext();
919
+
920
+ auto target = args[0]->Uint32Value(context).ToChecked();
921
+ canvas_native_webgl2_end_query(target,
922
+ ptr->GetState());
923
+ }
924
+
925
+ void WebGL2RenderingContext::EndTransformFeedback(const v8::FunctionCallbackInfo<v8::Value> &args) {
926
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
927
+ if (ptr == nullptr) {
928
+ return;
929
+ }
930
+
931
+ auto isolate = args.GetIsolate();
932
+
933
+
934
+ canvas_native_webgl2_end_transform_feedback(
935
+ ptr->GetState());
936
+ }
937
+
938
+ void WebGL2RenderingContext::FenceSync(const v8::FunctionCallbackInfo<v8::Value> &args) {
939
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
940
+ if (ptr == nullptr) {
941
+ args.GetReturnValue().SetUndefined();
942
+ return;
943
+ }
944
+
945
+ auto isolate = args.GetIsolate();
946
+ auto context = isolate->GetCurrentContext();
947
+
948
+ auto condition = args[0]->Uint32Value(context).ToChecked();
949
+ auto flags = args[1]->Uint32Value(context).ToChecked();
950
+ auto sync = canvas_native_webgl2_fence_sync(
951
+ condition,
952
+ flags,
953
+ ptr->GetState()
954
+ );
955
+ auto ret = WebGLSyncImpl::NewInstance(isolate, new WebGLSyncImpl(sync));
956
+
957
+ args.GetReturnValue().Set(ret);
958
+ }
959
+
960
+ void
961
+ WebGL2RenderingContext::FramebufferTextureLayer(const v8::FunctionCallbackInfo<v8::Value> &args) {
962
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
963
+ if (ptr == nullptr) {
964
+ args.GetReturnValue().SetUndefined();
965
+ return;
966
+ }
967
+
968
+ auto isolate = args.GetIsolate();
969
+ auto context = isolate->GetCurrentContext();
970
+
971
+
972
+ auto textureValue = args[2];
973
+ auto type = GetNativeType(isolate, textureValue);
974
+ if (type == NativeType::WebGLTexture) {
975
+ auto target = args[0]->Uint32Value(context).ToChecked();
976
+ auto attachment = args[1]->Uint32Value(context).ToChecked();
977
+ auto texture = WebGLTexture::GetPointer(textureValue.As<v8::Object>());
978
+ auto level = args[3]->Int32Value(context).ToChecked();
979
+ auto layer = args[4]->Int32Value(context).ToChecked();
980
+ if (texture != nullptr) {
981
+ canvas_native_webgl2_framebuffer_texture_layer(
982
+ target,
983
+ attachment,
984
+ texture->GetTexture(),
985
+ level,
986
+ layer,
987
+ ptr->GetState()
988
+ );
989
+ }
990
+
991
+ }
992
+ }
993
+
994
+ void
995
+ WebGL2RenderingContext::GetActiveUniformBlockName(const v8::FunctionCallbackInfo<v8::Value> &args) {
996
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
997
+ if (ptr == nullptr) {
998
+ args.GetReturnValue().SetEmptyString();
999
+ return;
1000
+ }
1001
+
1002
+ auto isolate = args.GetIsolate();
1003
+ auto context = isolate->GetCurrentContext();
1004
+
1005
+ auto programValue = args[0];
1006
+ auto type = GetNativeType(isolate, programValue);
1007
+ if (type == NativeType::WebGLProgram) {
1008
+ auto program = WebGLProgram::GetPointer(programValue.As<v8::Object>());
1009
+ if (program != nullptr) {
1010
+ auto uniformBlockIndex = args[1]->Uint32Value(context).ToChecked();
1011
+ auto name = canvas_native_webgl2_get_active_uniform_block_name(
1012
+ program->GetProgram(),
1013
+ uniformBlockIndex,
1014
+ ptr->GetState()
1015
+ );
1016
+ args.GetReturnValue().Set(ConvertToV8OneByteString(isolate, (char *) name));
1017
+ return;
1018
+ }
1019
+
1020
+ }
1021
+
1022
+ args.GetReturnValue().SetEmptyString();
1023
+ }
1024
+
1025
+ void WebGL2RenderingContext::GetActiveUniformBlockParameter(
1026
+ const v8::FunctionCallbackInfo<v8::Value> &args) {
1027
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1028
+ if (ptr == nullptr) {
1029
+ args.GetReturnValue().SetNull();
1030
+ return;
1031
+ }
1032
+
1033
+ auto isolate = args.GetIsolate();
1034
+ auto context = isolate->GetCurrentContext();
1035
+
1036
+ auto programValue = args[0];
1037
+ auto type = GetNativeType(isolate, programValue);
1038
+
1039
+ if (type == NativeType::WebGLProgram) {
1040
+ auto program = WebGLProgram::GetPointer(programValue.As<v8::Object>());
1041
+
1042
+ if (program != nullptr) {
1043
+ auto uniformBlockIndex = args[1]->Uint32Value(context).ToChecked();
1044
+ auto pname = args[2]->Uint32Value(context).ToChecked();
1045
+ auto ret = canvas_native_webgl2_get_active_uniform_block_parameter(
1046
+ program->GetProgram(),
1047
+ uniformBlockIndex,
1048
+ pname,
1049
+ ptr->GetState()
1050
+ );
1051
+
1052
+ switch (pname) {
1053
+ case GL_UNIFORM_BLOCK_BINDING:
1054
+ case GL_UNIFORM_BLOCK_DATA_SIZE:
1055
+ case GL_UNIFORM_BLOCK_ACTIVE_UNIFORMS:
1056
+ args.GetReturnValue().Set(canvas_native_webgl_result_get_i32(
1057
+ ret));
1058
+ canvas_native_webgl_WebGLResult_destroy(ret);
1059
+ return;
1060
+ case GL_UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES: {
1061
+ auto value = canvas_native_webgl_result_get_u32_array(
1062
+ ret);
1063
+
1064
+ auto buf = (uint8_t *) canvas_native_u32_buffer_get_bytes(value);
1065
+ auto size = canvas_native_u32_buffer_get_length(value);
1066
+ auto bytes_size = size * sizeof(uint32_t);
1067
+
1068
+ auto store = v8::ArrayBuffer::NewBackingStore(buf, bytes_size,
1069
+ [](void *data, size_t length,
1070
+ void *deleter_data) {
1071
+ if (deleter_data != nullptr) {
1072
+ canvas_native_u32_buffer_destroy(
1073
+ (U32Buffer *) deleter_data);
1074
+ }
1075
+ },
1076
+ value);
1077
+
1078
+ auto arraybuffer = v8::ArrayBuffer::New(isolate, std::move(store));
1079
+ args.GetReturnValue().Set(v8::Uint32Array::New(arraybuffer, 0, size));
1080
+
1081
+ canvas_native_webgl_WebGLResult_destroy(ret);
1082
+
1083
+ return;
1084
+ }
1085
+ case GL_UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER:
1086
+ case GL_UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER:
1087
+ args.GetReturnValue().Set(canvas_native_webgl_result_get_bool(
1088
+ ret));
1089
+
1090
+ canvas_native_webgl_WebGLResult_destroy(ret);
1091
+ return;
1092
+ default:
1093
+ args.GetReturnValue().SetNull();
1094
+ canvas_native_webgl_WebGLResult_destroy(ret);
1095
+ return;
1096
+ }
1097
+ }
1098
+ }
1099
+ }
1100
+
1101
+ void WebGL2RenderingContext::GetActiveUniforms(const v8::FunctionCallbackInfo<v8::Value> &args) {
1102
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1103
+ if (ptr == nullptr) {
1104
+ args.GetReturnValue().SetNull();
1105
+ return;
1106
+ }
1107
+
1108
+ auto isolate = args.GetIsolate();
1109
+ auto context = isolate->GetCurrentContext();
1110
+
1111
+ auto programValue = args[0];
1112
+ auto type = GetNativeType(isolate, programValue);
1113
+ if (type == NativeType::WebGLProgram) {
1114
+
1115
+ auto program = WebGLProgram::GetPointer(programValue.As<v8::Object>());
1116
+ auto uniformIndicesObject = args[1];
1117
+ auto pname = args[2]->Uint32Value(context).ToChecked();
1118
+
1119
+ if (uniformIndicesObject->IsArray()) {
1120
+ auto uniformIndices = uniformIndicesObject.As<v8::Array>();
1121
+ auto size = uniformIndices->Length();
1122
+ std::vector<uint32_t> buf;
1123
+ buf.reserve(size);
1124
+ for (int j = 0; j < size; j++) {
1125
+ auto item = uniformIndices->Get(
1126
+ context, j).ToLocalChecked()->Uint32Value(context).ToChecked();
1127
+ buf.emplace_back(item);
1128
+ }
1129
+
1130
+ auto ret = canvas_native_webgl2_get_active_uniforms(
1131
+ program->GetProgram(),
1132
+ buf.data(), buf.size(),
1133
+ pname,
1134
+ ptr->GetState()
1135
+ );
1136
+
1137
+ switch (pname) {
1138
+ case GL_UNIFORM_TYPE:
1139
+ case GL_UNIFORM_SIZE: {
1140
+ auto value = canvas_native_webgl_result_get_u32_array(
1141
+ ret);
1142
+ auto len = canvas_native_u32_buffer_get_length(value);
1143
+ auto buffer = canvas_native_u32_buffer_get_bytes(value);
1144
+
1145
+ auto array = v8::Array::New(
1146
+ isolate, (int) len);
1147
+
1148
+ for (int j = 0;
1149
+ j < len; ++j) {
1150
+ auto item = buffer[j];
1151
+ array->Set(
1152
+ context, j,
1153
+ v8::Integer::NewFromUnsigned(isolate, item));
1154
+ }
1155
+ args.GetReturnValue().Set(array);
1156
+ canvas_native_u32_buffer_destroy(value);
1157
+ canvas_native_webgl_WebGLResult_destroy(ret);
1158
+ return;
1159
+ }
1160
+ case GL_UNIFORM_BLOCK_INDEX:
1161
+ case GL_UNIFORM_OFFSET:
1162
+ case GL_UNIFORM_ARRAY_STRIDE:
1163
+ case GL_UNIFORM_MATRIX_STRIDE: {
1164
+ auto value = canvas_native_webgl_result_get_i32_array(
1165
+ ret);
1166
+ auto len = canvas_native_i32_buffer_get_length(value);
1167
+ auto buffer = canvas_native_i32_buffer_get_bytes(value);
1168
+ auto array = v8::Array::New(
1169
+ isolate, (int) len);
1170
+ for (int j = 0;
1171
+ j < len; ++j) {
1172
+ auto item = buffer[j];
1173
+ array->Set(
1174
+ context, j,
1175
+ v8::Integer::New(isolate, item));
1176
+ }
1177
+ args.GetReturnValue().Set(array);
1178
+ canvas_native_i32_buffer_destroy(value);
1179
+ canvas_native_webgl_WebGLResult_destroy(ret);
1180
+ return;
1181
+ }
1182
+ case GL_UNIFORM_IS_ROW_MAJOR: {
1183
+ auto value = canvas_native_webgl_result_get_bool_array(
1184
+ ret);
1185
+ auto len = canvas_native_u8_buffer_get_length(value);
1186
+ auto buffer = canvas_native_u8_buffer_get_bytes(value);
1187
+ auto array = v8::Array::New(
1188
+ isolate,
1189
+ (int) len);
1190
+ for (int j = 0;
1191
+ j < len; ++j) {
1192
+ bool item =
1193
+ buffer[j] == 1;
1194
+ array->Set(
1195
+ context, j,
1196
+ v8::Boolean::New(isolate, item));
1197
+ }
1198
+ args.GetReturnValue().Set(array);
1199
+ canvas_native_u8_buffer_destroy(value);
1200
+ canvas_native_webgl_WebGLResult_destroy(ret);
1201
+ return;
1202
+ }
1203
+ default:
1204
+ args.GetReturnValue().SetNull();
1205
+ canvas_native_webgl_WebGLResult_destroy(ret);
1206
+ return;
1207
+ }
1208
+ }
1209
+
1210
+
1211
+ }
1212
+ }
1213
+
1214
+ void WebGL2RenderingContext::GetBufferSubData(const v8::FunctionCallbackInfo<v8::Value> &args) {
1215
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1216
+ if (ptr == nullptr) {
1217
+ args.GetReturnValue().SetNull();
1218
+ return;
1219
+ }
1220
+
1221
+ auto isolate = args.GetIsolate();
1222
+ auto context = isolate->GetCurrentContext();
1223
+
1224
+ auto dstDataObject = args[2];
1225
+ if (dstDataObject->IsArrayBufferView()) {
1226
+ auto target = args[0]->Uint32Value(context).ToChecked();
1227
+ auto srcByteOffset = args[1]->NumberValue(context).ToChecked();
1228
+
1229
+ auto array = dstDataObject.As<v8::ArrayBufferView>();
1230
+
1231
+ auto buf = array->Buffer();
1232
+ auto offset = array->ByteOffset();
1233
+ auto size = buf->ByteLength();
1234
+ auto data = reinterpret_cast<uint8_t *>(buf->GetBackingStore()->Data()) + offset;
1235
+
1236
+
1237
+ auto BYTES_PER_ELEMENT = (ssize_t) array->Get(
1238
+ context,
1239
+ ConvertToV8String(isolate, "BYTES_PER_ELEMENT")).ToLocalChecked()->NumberValue(
1240
+ context).ToChecked();
1241
+
1242
+ ssize_t dstOffsetValue = 0;
1243
+ if (args[3]->IsNumber()) {
1244
+ dstOffsetValue =
1245
+ static_cast<ssize_t>(args[3]->NumberValue(context).ToChecked()) *
1246
+ BYTES_PER_ELEMENT;
1247
+ }
1248
+
1249
+ ssize_t lengthValue = 0;
1250
+ if (args[4]->IsNumber()) {
1251
+ lengthValue =
1252
+ static_cast<ssize_t>(args[4]->NumberValue(context).ToChecked()) *
1253
+ BYTES_PER_ELEMENT;
1254
+ }
1255
+
1256
+ canvas_native_webgl2_get_buffer_sub_data(
1257
+ target,
1258
+ static_cast<ssize_t>(srcByteOffset),
1259
+ data, size,
1260
+ dstOffsetValue,
1261
+ lengthValue,
1262
+ ptr->GetState()
1263
+ );
1264
+ }
1265
+ }
1266
+
1267
+ void WebGL2RenderingContext::GetFragDataLocation(const v8::FunctionCallbackInfo<v8::Value> &args) {
1268
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1269
+ if (ptr == nullptr) {
1270
+ args.GetReturnValue().SetNull();
1271
+ return;
1272
+ }
1273
+
1274
+ auto isolate = args.GetIsolate();
1275
+ auto context = isolate->GetCurrentContext();
1276
+
1277
+ auto programValue = args[0];
1278
+ auto nameValue = args[1];
1279
+ auto type = GetNativeType(isolate, programValue);
1280
+ if (type == NativeType::WebGLProgram && nameValue->IsString()) {
1281
+ auto program = WebGLProgram::GetPointer(programValue.As<v8::Object>());
1282
+
1283
+ if (program != nullptr) {
1284
+ auto name = ConvertFromV8String(isolate, nameValue);
1285
+
1286
+ auto ret = canvas_native_webgl2_get_frag_data_location(
1287
+ program->GetProgram(),
1288
+ name.c_str(),
1289
+ ptr->GetState()
1290
+ );
1291
+
1292
+ args.GetReturnValue().Set(ret);
1293
+
1294
+ return;
1295
+ }
1296
+ }
1297
+ args.GetReturnValue().SetNull();
1298
+ }
1299
+
1300
+ void WebGL2RenderingContext::GetIndexedParameter(const v8::FunctionCallbackInfo<v8::Value> &args) {
1301
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1302
+ if (ptr == nullptr) {
1303
+ args.GetReturnValue().SetNull();
1304
+ return;
1305
+ }
1306
+
1307
+ auto isolate = args.GetIsolate();
1308
+ auto context = isolate->GetCurrentContext();
1309
+
1310
+ auto target = args[0]->Uint32Value(context).ToChecked();
1311
+ auto index = args[1]->Uint32Value(context).ToChecked();
1312
+ auto ret = canvas_native_webgl2_get_indexed_parameter(
1313
+ target,
1314
+ index,
1315
+ ptr->GetState()
1316
+ );
1317
+
1318
+ switch (target) {
1319
+ case GL_UNIFORM_BUFFER_BINDING:
1320
+ case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING: {
1321
+ auto buffer = canvas_native_webgl2_indexed_parameter_get_buffer_value(
1322
+ ret);
1323
+
1324
+ args.GetReturnValue().Set(
1325
+ WebGLBuffer::NewInstance(isolate, new WebGLBuffer(buffer)));
1326
+ }
1327
+ return;
1328
+ case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
1329
+ case GL_TRANSFORM_FEEDBACK_BUFFER_START:
1330
+ case GL_UNIFORM_BUFFER_SIZE:
1331
+ case GL_UNIFORM_BUFFER_START: {
1332
+ auto value = canvas_native_webgl2_indexed_parameter_get_value(
1333
+ ret);
1334
+ args.GetReturnValue().Set(static_cast<double>(value));
1335
+ return;
1336
+ }
1337
+ break;
1338
+ default:
1339
+ args.GetReturnValue().SetNull();
1340
+ return;
1341
+ }
1342
+ }
1343
+
1344
+ void WebGL2RenderingContext::GetInternalformatParameter(
1345
+ const v8::FunctionCallbackInfo<v8::Value> &args) {
1346
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1347
+ if (ptr == nullptr) {
1348
+ args.GetReturnValue().SetNull();
1349
+ return;
1350
+ }
1351
+
1352
+ auto isolate = args.GetIsolate();
1353
+ auto context = isolate->GetCurrentContext();
1354
+
1355
+ auto target = args[0]->Uint32Value(context).ToChecked();
1356
+ auto internalformat = args[1]->Uint32Value(context).ToChecked();
1357
+ auto pname = args[2]->Uint32Value(context).ToChecked();
1358
+ switch (internalformat) {
1359
+ case GL_RGB:
1360
+ case GL_RGBA:
1361
+ case GL_R8UI:
1362
+ case GL_R8I:
1363
+ case GL_R16UI:
1364
+ case GL_R16I:
1365
+ case GL_R32UI:
1366
+ case GL_R32I:
1367
+ case GL_RG8UI:
1368
+ case GL_RG8I:
1369
+ case GL_RG16UI:
1370
+ case GL_RG16I:
1371
+ case GL_RG32UI:
1372
+ case GL_RG32I:
1373
+ case GL_RGBA8UI:
1374
+ case GL_RGBA8I:
1375
+ case GL_RGB10_A2UI:
1376
+ case GL_RGBA16UI:
1377
+ case GL_RGBA16I:
1378
+ case GL_RGBA32UI:
1379
+ case GL_RGBA32I: {
1380
+ // empty
1381
+ auto arraybuffer = v8::ArrayBuffer::New(isolate, 0);
1382
+
1383
+ args.GetReturnValue().Set(v8::Int32Array::New(arraybuffer, 0, 0));
1384
+ return;
1385
+ }
1386
+ case GL_R8:
1387
+ case GL_RG8:
1388
+ case GL_RGB565:
1389
+ case GL_RGBA8:
1390
+ case GL_SRGB8_ALPHA8:
1391
+ case GL_RGB5_A1:
1392
+ case GL_RGBA4:
1393
+ case GL_RGB10_A2:
1394
+ case GL_DEPTH_COMPONENT16:
1395
+ case GL_DEPTH_COMPONENT24:
1396
+ case GL_DEPTH_COMPONENT32F:
1397
+ case GL_DEPTH24_STENCIL8:
1398
+ case GL_DEPTH32F_STENCIL8:
1399
+ case GL_STENCIL_INDEX8:
1400
+ // noop
1401
+ break;
1402
+ case GL_R16F:
1403
+ case GL_RG16F:
1404
+ case GL_R32F:
1405
+ case GL_RG32F:
1406
+ case GL_RGBA32F:
1407
+ case GL_R11F_G11F_B10F:
1408
+ // noop
1409
+ break;
1410
+ default:
1411
+ args.GetReturnValue().SetNull();
1412
+ return;
1413
+ }
1414
+
1415
+
1416
+ auto ret = canvas_native_webgl2_get_internalformat_parameter(
1417
+ target,
1418
+ internalformat,
1419
+ pname,
1420
+ ptr->GetState()
1421
+ );
1422
+
1423
+ if (pname == GL_SAMPLES) {
1424
+ auto value = canvas_native_webgl_result_get_i32_array(ret);
1425
+
1426
+ auto buf = (uint8_t *) canvas_native_i32_buffer_get_bytes(value);
1427
+ auto size = canvas_native_i32_buffer_get_length(value);
1428
+ auto bytes_size = size * sizeof(int32_t);
1429
+
1430
+ auto store = v8::ArrayBuffer::NewBackingStore(buf, bytes_size,
1431
+ [](void *data, size_t length,
1432
+ void *deleter_data) {
1433
+ if (deleter_data != nullptr) {
1434
+ canvas_native_i32_buffer_destroy(
1435
+ (I32Buffer *) deleter_data);
1436
+ }
1437
+ },
1438
+ value);
1439
+
1440
+ auto arraybuffer = v8::ArrayBuffer::New(isolate, std::move(store));
1441
+ args.GetReturnValue().Set(v8::Int32Array::New(arraybuffer, 0, size));
1442
+ canvas_native_webgl_WebGLResult_destroy(ret);
1443
+ return;
1444
+ } else {
1445
+ args.GetReturnValue().SetNull();
1446
+ canvas_native_webgl_WebGLResult_destroy(ret);
1447
+ return;
1448
+ }
1449
+ }
1450
+
1451
+ void WebGL2RenderingContext::GetParameter(const v8::FunctionCallbackInfo<v8::Value> &args) {
1452
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1453
+ if (ptr == nullptr) {
1454
+ args.GetReturnValue().SetNull();
1455
+ return;
1456
+ }
1457
+
1458
+ auto isolate = args.GetIsolate();
1459
+ auto context = isolate->GetCurrentContext();
1460
+
1461
+ auto pname = args[0]->Uint32Value(context).ToChecked();
1462
+ auto result = canvas_native_webgl2_get_parameter(
1463
+ pname,
1464
+ ptr->GetState());
1465
+ switch (pname) {
1466
+ case GL_COPY_READ_BUFFER_BINDING:
1467
+ case GL_COPY_WRITE_BUFFER_BINDING:
1468
+ case GL_DRAW_FRAMEBUFFER_BINDING:
1469
+ args.GetReturnValue().Set(canvas_native_webgl_result_get_i32(
1470
+ result));
1471
+
1472
+ canvas_native_webgl_WebGLResult_destroy(result);
1473
+ return;
1474
+ default: {
1475
+ auto ret = ptr->GetParameterInternal(
1476
+ isolate, pname, result);
1477
+
1478
+ canvas_native_webgl_WebGLResult_destroy(result);
1479
+
1480
+ args.GetReturnValue().Set(ret);
1481
+ return;
1482
+ }
1483
+ }
1484
+ }
1485
+
1486
+ void WebGL2RenderingContext::GetQueryParameter(const v8::FunctionCallbackInfo<v8::Value> &args) {
1487
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1488
+ if (ptr == nullptr) {
1489
+ args.GetReturnValue().SetNull();
1490
+ return;
1491
+ }
1492
+
1493
+ auto isolate = args.GetIsolate();
1494
+ auto context = isolate->GetCurrentContext();
1495
+
1496
+ auto queryValue = args[0];
1497
+ auto type = GetNativeType(isolate, queryValue);
1498
+ if (type == NativeType::WebGLQuery) {
1499
+ auto query = WebGLQuery::GetPointer(queryValue.As<v8::Object>());
1500
+ if (query != nullptr) {
1501
+ auto pname = args[1]->Uint32Value(context).ToChecked();
1502
+
1503
+
1504
+ auto ret = canvas_native_webgl2_get_query_parameter(
1505
+ query->GetQuery(),
1506
+ pname,
1507
+ ptr->GetState());
1508
+ if (pname == GL_QUERY_RESULT) {
1509
+ args.GetReturnValue().Set(canvas_native_webgl_result_get_bool(
1510
+ ret));
1511
+ canvas_native_webgl_WebGLResult_destroy(ret);
1512
+ return;
1513
+ } else if (pname ==
1514
+ GL_QUERY_RESULT_AVAILABLE) {
1515
+ args.GetReturnValue().Set(canvas_native_webgl_result_get_u32(
1516
+ ret));
1517
+ canvas_native_webgl_WebGLResult_destroy(ret);
1518
+ return;
1519
+ }
1520
+ //clean up
1521
+ canvas_native_webgl_WebGLResult_destroy(ret);
1522
+
1523
+ }
1524
+ }
1525
+
1526
+ args.GetReturnValue().SetNull();
1527
+ }
1528
+
1529
+ void WebGL2RenderingContext::GetQuery(const v8::FunctionCallbackInfo<v8::Value> &args) {
1530
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1531
+ if (ptr == nullptr) {
1532
+ args.GetReturnValue().SetNull();
1533
+ return;
1534
+ }
1535
+
1536
+ auto isolate = args.GetIsolate();
1537
+ auto context = isolate->GetCurrentContext();
1538
+
1539
+ auto target = args[0]->Uint32Value(context).ToChecked();
1540
+ auto pname = args[1]->Uint32Value(context).ToChecked();
1541
+ auto ret = canvas_native_webgl2_get_query(
1542
+ target,
1543
+ pname,
1544
+ ptr->GetState());
1545
+ if (pname == GL_CURRENT_QUERY) {
1546
+ args.GetReturnValue().Set(canvas_native_webgl_result_get_i32(
1547
+ ret));
1548
+ canvas_native_webgl_WebGLResult_destroy(ret);
1549
+ return;
1550
+ }
1551
+ // clean up
1552
+ canvas_native_webgl_WebGLResult_destroy(ret);
1553
+ }
1554
+
1555
+ void WebGL2RenderingContext::GetSamplerParameter(const v8::FunctionCallbackInfo<v8::Value> &args) {
1556
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1557
+ if (ptr == nullptr) {
1558
+ args.GetReturnValue().SetNull();
1559
+ return;
1560
+ }
1561
+
1562
+ auto isolate = args.GetIsolate();
1563
+ auto context = isolate->GetCurrentContext();
1564
+
1565
+ auto samplerValue = args[0];
1566
+ auto type = GetNativeType(isolate, samplerValue);
1567
+ if (type == NativeType::WebGLSampler) {
1568
+ auto sampler = WebGLSampler::GetPointer(samplerValue.As<v8::Object>());
1569
+ if (sampler != nullptr) {
1570
+ auto pname = args[1]->Uint32Value(context).ToChecked();
1571
+ auto ret = canvas_native_webgl2_get_sampler_parameter(
1572
+ sampler->GetSampler(),
1573
+ pname,
1574
+ ptr->GetState());
1575
+
1576
+ switch (pname) {
1577
+ case GL_TEXTURE_MAX_LOD:
1578
+ case GL_TEXTURE_MIN_LOD:
1579
+ args.GetReturnValue().Set(
1580
+ static_cast<double>(canvas_native_webgl_result_get_f32(
1581
+ ret)));
1582
+ canvas_native_webgl_WebGLResult_destroy(ret);
1583
+ return;
1584
+ case GL_TEXTURE_COMPARE_FUNC:
1585
+ case GL_TEXTURE_COMPARE_MODE:
1586
+ case GL_TEXTURE_MAG_FILTER:
1587
+ case GL_TEXTURE_MIN_FILTER:
1588
+ case GL_TEXTURE_WRAP_R:
1589
+ case GL_TEXTURE_WRAP_S:
1590
+ case GL_TEXTURE_WRAP_T:
1591
+ args.GetReturnValue().Set(canvas_native_webgl_result_get_i32(
1592
+ ret));
1593
+ canvas_native_webgl_WebGLResult_destroy(ret);
1594
+ return;
1595
+ default:
1596
+ args.GetReturnValue().SetNull();
1597
+ canvas_native_webgl_WebGLResult_destroy(ret);
1598
+ return;
1599
+ }
1600
+ }
1601
+ }
1602
+
1603
+ args.GetReturnValue().SetNull();
1604
+ }
1605
+
1606
+ void WebGL2RenderingContext::GetSyncParameter(const v8::FunctionCallbackInfo<v8::Value> &args) {
1607
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1608
+ if (ptr == nullptr) {
1609
+ args.GetReturnValue().SetNull();
1610
+ return;
1611
+ }
1612
+
1613
+ auto isolate = args.GetIsolate();
1614
+ auto context = isolate->GetCurrentContext();
1615
+
1616
+ auto syncValue = args[0];
1617
+ auto sync = WebGLSyncImpl::GetPointer(syncValue.As<v8::Object>());
1618
+ if (sync != nullptr) {
1619
+ auto pname = args[1]->Uint32Value(context).ToChecked();
1620
+ auto ret = canvas_native_webgl2_get_sync_parameter(
1621
+ sync->GetSync(),
1622
+ pname,
1623
+ ptr->GetState());
1624
+
1625
+ switch (pname) {
1626
+ case GL_OBJECT_TYPE:
1627
+ case GL_SYNC_STATUS:
1628
+ case GL_SYNC_CONDITION:
1629
+ case GL_SYNC_FLAGS:
1630
+ args.GetReturnValue().Set(canvas_native_webgl_result_get_i32(
1631
+ ret));
1632
+
1633
+ canvas_native_webgl_WebGLResult_destroy(ret);
1634
+ return;
1635
+ default:
1636
+ args.GetReturnValue().SetNull();
1637
+ canvas_native_webgl_WebGLResult_destroy(ret);
1638
+ return;
1639
+ }
1640
+ }
1641
+ args.GetReturnValue().SetNull();
1642
+ }
1643
+
1644
+ void WebGL2RenderingContext::GetTransformFeedbackVarying(
1645
+ const v8::FunctionCallbackInfo<v8::Value> &args) {
1646
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1647
+ if (ptr == nullptr) {
1648
+ args.GetReturnValue().SetNull();
1649
+ return;
1650
+ }
1651
+
1652
+ auto isolate = args.GetIsolate();
1653
+ auto context = isolate->GetCurrentContext();
1654
+
1655
+ auto programValue = args[0];
1656
+ auto type = GetNativeType(isolate, programValue);
1657
+ if (type == NativeType::WebGLProgram) {
1658
+ auto program = WebGLProgram::GetPointer(programValue.As<v8::Object>());
1659
+ auto index = args[1]->Uint32Value(context).ToChecked();
1660
+ if (program != nullptr) {
1661
+ auto ret = canvas_native_webgl2_get_transform_feedback_varying(
1662
+ program->GetProgram(),
1663
+ index,
1664
+ ptr->GetState()
1665
+ );
1666
+
1667
+ if (canvas_native_webgl_active_info_get_is_empty(
1668
+ ret)) {
1669
+ canvas_native_webgl_active_info_destroy(ret);
1670
+ args.GetReturnValue().SetNull();
1671
+ return;
1672
+ }
1673
+
1674
+ auto info = WebGLActiveInfoImpl::NewInstance(isolate, new WebGLActiveInfoImpl(ret));
1675
+ args.GetReturnValue().Set(info);
1676
+ return;
1677
+ }
1678
+ }
1679
+
1680
+ args.GetReturnValue().SetNull();
1681
+ }
1682
+
1683
+ void WebGL2RenderingContext::GetUniformBlockIndex(const v8::FunctionCallbackInfo<v8::Value> &args) {
1684
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1685
+ if (ptr == nullptr) {
1686
+ args.GetReturnValue().SetNull();
1687
+ return;
1688
+ }
1689
+
1690
+ auto isolate = args.GetIsolate();
1691
+ auto context = isolate->GetCurrentContext();
1692
+
1693
+ auto programValue = args[0];
1694
+ auto type = GetNativeType(isolate, programValue);
1695
+ if (type == NativeType::WebGLProgram) {
1696
+ auto program = WebGLProgram::GetPointer(programValue.As<v8::Object>());
1697
+ auto index = ConvertFromV8String(isolate, args[1]);
1698
+ if (program != nullptr) {
1699
+ auto ret = canvas_native_webgl2_get_uniform_block_index(
1700
+ program->GetProgram(),
1701
+ index.c_str(),
1702
+ ptr->GetState());
1703
+ args.GetReturnValue().Set((int) ret);
1704
+ return;
1705
+ }
1706
+ }
1707
+
1708
+ args.GetReturnValue().SetNull();
1709
+ }
1710
+
1711
+ void WebGL2RenderingContext::GetUniformIndices(const v8::FunctionCallbackInfo<v8::Value> &args) {
1712
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1713
+ if (ptr == nullptr) {
1714
+ args.GetReturnValue().SetNull();
1715
+ return;
1716
+ }
1717
+
1718
+ auto isolate = args.GetIsolate();
1719
+ auto context = isolate->GetCurrentContext();
1720
+
1721
+ auto programValue = args[0];
1722
+ auto type = GetNativeType(isolate, programValue);
1723
+ if (type == NativeType::WebGLProgram) {
1724
+ auto program = WebGLProgram::GetPointer(programValue.As<v8::Object>());
1725
+ auto uniformNamesObject = args[1];
1726
+ if (program != nullptr &&
1727
+ uniformNamesObject->IsArray()) {
1728
+ auto uniformNames = uniformNamesObject.As<v8::Array>();
1729
+ auto len = uniformNames->Length();
1730
+
1731
+ std::vector<std::string> store;
1732
+ store.reserve(len);
1733
+
1734
+ for (int j = 0; j < len; ++j) {
1735
+ auto name = ConvertFromV8String(isolate, uniformNames->Get(
1736
+ context, j).ToLocalChecked());
1737
+
1738
+ store.push_back(name);
1739
+ }
1740
+
1741
+
1742
+ const char *cStrings[store.size()];
1743
+ for (size_t i = 0; i < store.size(); ++i) {
1744
+ cStrings[i] = store[i].c_str();
1745
+ }
1746
+
1747
+
1748
+ auto ret = canvas_native_webgl2_get_uniform_indices(
1749
+ program->GetProgram(),
1750
+ cStrings,
1751
+ store.size(),
1752
+ ptr->GetState());
1753
+
1754
+
1755
+ auto retSize = canvas_native_u32_buffer_get_length(ret);
1756
+ auto buf = canvas_native_u32_buffer_get_bytes(ret);
1757
+ auto result = v8::Array::New(isolate, (int) retSize);
1758
+ for (int j = 0; j < retSize; ++j) {
1759
+ auto item = buf[j];
1760
+ result->Set(context,
1761
+ j,
1762
+ v8::Integer::NewFromUnsigned(isolate, item));
1763
+ }
1764
+
1765
+ args.GetReturnValue().Set(result);
1766
+ canvas_native_u32_buffer_destroy(ret);
1767
+ return;
1768
+ }
1769
+ }
1770
+
1771
+ args.GetReturnValue().SetNull();
1772
+ }
1773
+
1774
+ void
1775
+ WebGL2RenderingContext::InvalidateFramebuffer(const v8::FunctionCallbackInfo<v8::Value> &args) {
1776
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1777
+ if (ptr == nullptr) {
1778
+ return;
1779
+ }
1780
+
1781
+ auto isolate = args.GetIsolate();
1782
+ auto context = isolate->GetCurrentContext();
1783
+
1784
+ auto attachments = args[1];
1785
+ auto target = args[0]->Uint32Value(context).ToChecked();
1786
+
1787
+ if (attachments->IsArray()) {
1788
+ auto array = attachments.As<v8::Array>();
1789
+ auto len = array->Length();
1790
+ std::vector<uint32_t> buf;
1791
+ buf.reserve(len);
1792
+ for (int j = 0; j < len; ++j) {
1793
+ auto item = array->Get(
1794
+ context, j).ToLocalChecked()->Uint32Value(context).ToChecked();
1795
+ buf.push_back(item);
1796
+ }
1797
+
1798
+ canvas_native_webgl2_invalidate_framebuffer(
1799
+ target, buf.data(), buf.size(),
1800
+ ptr->GetState());
1801
+ }
1802
+ }
1803
+
1804
+ void
1805
+ WebGL2RenderingContext::InvalidateSubFramebuffer(const v8::FunctionCallbackInfo<v8::Value> &args) {
1806
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1807
+ if (ptr == nullptr) {
1808
+ return;
1809
+ }
1810
+
1811
+ auto isolate = args.GetIsolate();
1812
+ auto context = isolate->GetCurrentContext();
1813
+
1814
+ auto attachments = args[1];
1815
+ if (attachments->IsArray()) {
1816
+ auto target = args[0]->Uint32Value(context).ToChecked();
1817
+ auto x = args[2]->Int32Value(context).ToChecked();
1818
+ auto y = args[3]->Int32Value(context).ToChecked();
1819
+ auto width = args[4]->Int32Value(context).ToChecked();
1820
+ auto height = args[5]->Int32Value(context).ToChecked();
1821
+
1822
+ auto array = attachments.As<v8::Array>();
1823
+ auto len = array->Length();
1824
+ std::vector<uint32_t> buf;
1825
+ buf.reserve(len);
1826
+ for (int j = 0; j < len; ++j) {
1827
+ auto item = array->Get(
1828
+ context, j).ToLocalChecked()->Uint32Value(context).ToChecked();
1829
+ buf.push_back(item);
1830
+ }
1831
+
1832
+ canvas_native_webgl2_invalidate_sub_framebuffer(
1833
+ target,
1834
+ buf.data(), buf.size(),
1835
+ x,
1836
+ y,
1837
+ width,
1838
+ height,
1839
+ ptr->GetState());
1840
+ }
1841
+ }
1842
+
1843
+ void WebGL2RenderingContext::IsQuery(const v8::FunctionCallbackInfo<v8::Value> &args) {
1844
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1845
+ if (ptr == nullptr) {
1846
+ return;
1847
+ }
1848
+
1849
+ auto isolate = args.GetIsolate();
1850
+ auto context = isolate->GetCurrentContext();
1851
+
1852
+ auto value = args[0];
1853
+ auto type = GetNativeType(isolate, value);
1854
+ if (type == NativeType::WebGLQuery) {
1855
+ auto query = WebGLQuery::GetPointer(value.As<v8::Object>());
1856
+ if (query != nullptr) {
1857
+ auto ret = canvas_native_webgl2_is_query(
1858
+ query->GetQuery(),
1859
+ ptr->GetState());
1860
+ args.GetReturnValue().Set(ret);
1861
+ return;
1862
+ }
1863
+ }
1864
+ // todo check return
1865
+ args.GetReturnValue().Set(false);
1866
+ }
1867
+
1868
+ void WebGL2RenderingContext::IsSampler(const v8::FunctionCallbackInfo<v8::Value> &args) {
1869
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1870
+ if (ptr == nullptr) {
1871
+ return;
1872
+ }
1873
+
1874
+ auto isolate = args.GetIsolate();
1875
+ auto context = isolate->GetCurrentContext();
1876
+
1877
+ auto value = args[0];
1878
+ auto type = GetNativeType(isolate, value);
1879
+ if (type == NativeType::WebGLSampler) {
1880
+ auto query = WebGLSampler::GetPointer(value.As<v8::Object>());
1881
+ if (query != nullptr) {
1882
+ auto ret = canvas_native_webgl2_is_sampler(
1883
+ query->GetSampler(),
1884
+ ptr->GetState());
1885
+ args.GetReturnValue().Set(ret);
1886
+ return;
1887
+ }
1888
+ }
1889
+ // todo check return
1890
+ args.GetReturnValue().Set(false);
1891
+ }
1892
+
1893
+ void WebGL2RenderingContext::IsSync(const v8::FunctionCallbackInfo<v8::Value> &args) {
1894
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1895
+ if (ptr == nullptr) {
1896
+ return;
1897
+ }
1898
+
1899
+ auto isolate = args.GetIsolate();
1900
+ auto context = isolate->GetCurrentContext();
1901
+
1902
+ auto value = args[0];
1903
+ auto type = GetNativeType(isolate, value);
1904
+ if (type == NativeType::WebGLSync) {
1905
+ auto query = WebGLSyncImpl::GetPointer(value.As<v8::Object>());
1906
+ if (query != nullptr) {
1907
+ auto ret = canvas_native_webgl2_is_sync(
1908
+ query->GetSync(),
1909
+ ptr->GetState());
1910
+ args.GetReturnValue().Set(ret);
1911
+ return;
1912
+ }
1913
+ }
1914
+ // todo check return
1915
+ args.GetReturnValue().Set(false);
1916
+ }
1917
+
1918
+ void WebGL2RenderingContext::IsTransformFeedback(const v8::FunctionCallbackInfo<v8::Value> &args) {
1919
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1920
+ if (ptr == nullptr) {
1921
+ return;
1922
+ }
1923
+
1924
+ auto isolate = args.GetIsolate();
1925
+ auto context = isolate->GetCurrentContext();
1926
+
1927
+ auto value = args[0];
1928
+ auto type = GetNativeType(isolate, value);
1929
+ if (type == NativeType::WebGLTransformFeedback) {
1930
+ auto query = WebGLTransformFeedback::GetPointer(value.As<v8::Object>());
1931
+ if (query != nullptr) {
1932
+ auto ret = canvas_native_webgl2_is_transform_feedback(
1933
+ query->GetFeedback(),
1934
+ ptr->GetState());
1935
+ args.GetReturnValue().Set(ret);
1936
+ return;
1937
+ }
1938
+ }
1939
+ // todo check return
1940
+ args.GetReturnValue().Set(false);
1941
+ }
1942
+
1943
+ void WebGL2RenderingContext::IsVertexArray(const v8::FunctionCallbackInfo<v8::Value> &args) {
1944
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1945
+ if (ptr == nullptr) {
1946
+ return;
1947
+ }
1948
+
1949
+ auto isolate = args.GetIsolate();
1950
+ auto context = isolate->GetCurrentContext();
1951
+
1952
+ auto value = args[0];
1953
+ auto type = GetNativeType(isolate, value);
1954
+ if (type == NativeType::WebGLVertexArrayObject) {
1955
+ auto query = WebGLVertexArrayObject::GetPointer(value.As<v8::Object>());
1956
+ if (query != nullptr) {
1957
+ auto ret = canvas_native_webgl2_is_vertex_array(
1958
+ query->GetVertexArrayObject(),
1959
+ ptr->GetState());
1960
+ args.GetReturnValue().Set(ret);
1961
+ return;
1962
+ }
1963
+ }
1964
+ // todo check return
1965
+ args.GetReturnValue().Set(false);
1966
+ }
1967
+
1968
+ void
1969
+ WebGL2RenderingContext::PauseTransformFeedback(const v8::FunctionCallbackInfo<v8::Value> &args) {
1970
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1971
+ if (ptr == nullptr) {
1972
+ return;
1973
+ }
1974
+ canvas_native_webgl2_pause_transform_feedback(
1975
+ ptr->GetState());
1976
+ }
1977
+
1978
+ void WebGL2RenderingContext::ReadBuffer(const v8::FunctionCallbackInfo<v8::Value> &args) {
1979
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1980
+ if (ptr == nullptr) {
1981
+ return;
1982
+ }
1983
+
1984
+ auto isolate = args.GetIsolate();
1985
+ auto context = isolate->GetCurrentContext();
1986
+
1987
+ auto src = args[0]->Uint32Value(context).ToChecked();
1988
+ canvas_native_webgl2_read_buffer(
1989
+ src,
1990
+ ptr->GetState()
1991
+ );
1992
+ }
1993
+
1994
+ void WebGL2RenderingContext::RenderbufferStorageMultisample(
1995
+ const v8::FunctionCallbackInfo<v8::Value> &args) {
1996
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
1997
+ if (ptr == nullptr) {
1998
+ return;
1999
+ }
2000
+
2001
+ auto isolate = args.GetIsolate();
2002
+ auto context = isolate->GetCurrentContext();
2003
+
2004
+ auto target = args[0]->Uint32Value(context).ToChecked();
2005
+ auto samples = args[1]->Int32Value(context).ToChecked();
2006
+ auto internalFormat = args[2]->Uint32Value(context).ToChecked();
2007
+ auto width = args[3]->Int32Value(context).ToChecked();
2008
+ auto height = args[4]->Int32Value(context).ToChecked();
2009
+ canvas_native_webgl2_renderbuffer_storage_multisample(
2010
+ target,
2011
+ samples,
2012
+ internalFormat,
2013
+ width,
2014
+ height,
2015
+ ptr->GetState()
2016
+ );
2017
+ }
2018
+
2019
+ void
2020
+ WebGL2RenderingContext::ResumeTransformFeedback(const v8::FunctionCallbackInfo<v8::Value> &args) {
2021
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2022
+ if (ptr == nullptr) {
2023
+ return;
2024
+ }
2025
+
2026
+ canvas_native_webgl2_resume_transform_feedback(
2027
+ ptr->GetState());
2028
+ }
2029
+
2030
+ void WebGL2RenderingContext::SamplerParameterf(const v8::FunctionCallbackInfo<v8::Value> &args) {
2031
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2032
+ if (ptr == nullptr) {
2033
+ return;
2034
+ }
2035
+
2036
+ auto isolate = args.GetIsolate();
2037
+ auto context = isolate->GetCurrentContext();
2038
+
2039
+ auto samplerValue = args[0];
2040
+ auto type = GetNativeType(isolate, samplerValue);
2041
+ if (type == NativeType::WebGLSampler) {
2042
+ auto sampler = WebGLSampler::GetPointer(samplerValue.As<v8::Object>());
2043
+ auto pname = args[1]->Uint32Value(context).ToChecked();
2044
+ auto param = args[2]->NumberValue(context).ToChecked();
2045
+ if (sampler != nullptr) {
2046
+ canvas_native_webgl2_sampler_parameterf(
2047
+ sampler->GetSampler(),
2048
+ pname,
2049
+ static_cast<float>(param),
2050
+ ptr->GetState());
2051
+ }
2052
+ }
2053
+
2054
+ }
2055
+
2056
+ void WebGL2RenderingContext::SamplerParameteri(const v8::FunctionCallbackInfo<v8::Value> &args) {
2057
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2058
+ if (ptr == nullptr) {
2059
+ return;
2060
+ }
2061
+
2062
+ auto isolate = args.GetIsolate();
2063
+ auto context = isolate->GetCurrentContext();
2064
+
2065
+ auto samplerValue = args[0];
2066
+ auto type = GetNativeType(isolate, samplerValue);
2067
+ if (type == NativeType::WebGLSampler) {
2068
+ auto sampler = WebGLSampler::GetPointer(samplerValue.As<v8::Object>());
2069
+ auto pname = args[1]->Uint32Value(context).ToChecked();
2070
+ auto param = args[2]->Int32Value(context).ToChecked();
2071
+ if (sampler != nullptr) {
2072
+ canvas_native_webgl2_sampler_parameteri(
2073
+ sampler->GetSampler(),
2074
+ pname,
2075
+ param,
2076
+ ptr->GetState());
2077
+ }
2078
+ }
2079
+
2080
+ }
2081
+
2082
+ void WebGL2RenderingContext::TexImage3D(const v8::FunctionCallbackInfo<v8::Value> &args) {
2083
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2084
+ if (ptr == nullptr) {
2085
+ return;
2086
+ }
2087
+
2088
+ auto isolate = args.GetIsolate();
2089
+ auto context = isolate->GetCurrentContext();
2090
+
2091
+ auto count = args.Length();
2092
+
2093
+
2094
+ if (count == 10) {
2095
+ auto target = args[0]->Int32Value(
2096
+ context).ToChecked();
2097
+ auto level = args[1]->Int32Value(
2098
+ context).ToChecked();
2099
+ auto internalformat = args[2]->Int32Value(
2100
+ context).ToChecked();
2101
+ auto width = args[3]->Int32Value(
2102
+ context).ToChecked();
2103
+ auto height = args[4]->Int32Value(
2104
+ context).ToChecked();
2105
+ auto depth = args[5]->Int32Value(
2106
+ context).ToChecked();
2107
+ auto border = args[6]->Int32Value(
2108
+ context).ToChecked();
2109
+ auto format = args[7]->Int32Value(
2110
+ context).ToChecked();
2111
+ auto type = args[8]->Uint32Value(
2112
+ context).ToChecked();
2113
+
2114
+ auto imageOrPixelsOrOffset = args[9];
2115
+
2116
+ if (imageOrPixelsOrOffset->IsNumber()) {
2117
+ auto offset = imageOrPixelsOrOffset->NumberValue(
2118
+ context).ToChecked();
2119
+ canvas_native_webgl2_tex_image3d_none(
2120
+ target,
2121
+ level,
2122
+ internalformat,
2123
+ width,
2124
+ height,
2125
+ depth,
2126
+ border,
2127
+ format,
2128
+ type,
2129
+ static_cast<ssize_t>(offset),
2130
+ ptr->GetState()
2131
+ );
2132
+ return;
2133
+ }
2134
+
2135
+
2136
+ if (imageOrPixelsOrOffset->IsArrayBufferView()) {
2137
+ auto buf = imageOrPixelsOrOffset.As<v8::ArrayBufferView>();
2138
+
2139
+ auto array = buf->Buffer();
2140
+ auto offset = buf->ByteOffset();
2141
+ auto size = buf->ByteLength();
2142
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
2143
+ auto data = static_cast<uint8_t *>((void *) data_ptr);
2144
+
2145
+
2146
+ canvas_native_webgl2_tex_image3d(
2147
+ target,
2148
+ level,
2149
+ internalformat,
2150
+ width,
2151
+ height,
2152
+ depth,
2153
+ border,
2154
+ format,
2155
+ type,
2156
+ data,
2157
+ size,
2158
+ ptr->GetState()
2159
+ );
2160
+ return;
2161
+ }
2162
+
2163
+ auto imageType = GetNativeType(isolate, imageOrPixelsOrOffset);
2164
+
2165
+ switch (imageType) {
2166
+ case NativeType::ImageAsset: {
2167
+ auto image_asset = ImageAssetImpl::GetPointer(
2168
+ imageOrPixelsOrOffset.As<v8::Object>());
2169
+ if (image_asset != nullptr) {
2170
+ canvas_native_webgl2_tex_image3d_asset(
2171
+ target,
2172
+ level,
2173
+ internalformat,
2174
+ width,
2175
+ height,
2176
+ depth,
2177
+ border,
2178
+ format,
2179
+ type,
2180
+ image_asset->GetImageAsset(),
2181
+ ptr->GetState()
2182
+ );
2183
+
2184
+ return;
2185
+ }
2186
+ return;
2187
+ }
2188
+ case NativeType::ImageBitmap: {
2189
+ auto image_bitmap = ImageBitmapImpl::GetPointer(
2190
+ imageOrPixelsOrOffset.As<v8::Object>());
2191
+ if (image_bitmap != nullptr) {
2192
+ canvas_native_webgl2_tex_image3d_asset(
2193
+ target,
2194
+ level,
2195
+ internalformat,
2196
+ width,
2197
+ height,
2198
+ depth,
2199
+ border,
2200
+ format,
2201
+ type,
2202
+ image_bitmap->GetImageAsset(),
2203
+ ptr->GetState()
2204
+ );
2205
+
2206
+ return;
2207
+ }
2208
+ return;
2209
+ }
2210
+ default:
2211
+ return;
2212
+ }
2213
+ } else if (args.Length() > 10) {
2214
+
2215
+ auto target = args[0]->Int32Value(
2216
+ context).ToChecked();
2217
+ auto level = args[1]->Int32Value(
2218
+ context).ToChecked();
2219
+ auto internalformat = args[2]->Int32Value(
2220
+ context).ToChecked();
2221
+ auto width = args[3]->Int32Value(
2222
+ context).ToChecked();
2223
+ auto height = args[4]->Int32Value(
2224
+ context).ToChecked();
2225
+ auto depth = args[5]->Int32Value(
2226
+ context).ToChecked();
2227
+ auto border = args[6]->Int32Value(
2228
+ context).ToChecked();
2229
+ auto format = args[7]->Int32Value(
2230
+ context).ToChecked();
2231
+ auto type = args[8]->Uint32Value(
2232
+ context).ToChecked();
2233
+
2234
+ auto imageOrPixelsOrOffset = args[9];
2235
+
2236
+ size_t srcOffsetValue = 0;
2237
+ if (args[9]->IsNumber()) {
2238
+ srcOffsetValue = static_cast<size_t>(args[9]->NumberValue(
2239
+ context).ToChecked());
2240
+ }
2241
+
2242
+ if (imageOrPixelsOrOffset->IsArrayBufferView()) {
2243
+ auto buf = imageOrPixelsOrOffset.As<v8::ArrayBufferView>();
2244
+
2245
+ auto array = buf->Buffer();
2246
+ auto offset = buf->ByteOffset();
2247
+ auto size = buf->ByteLength();
2248
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
2249
+ auto data = static_cast<uint8_t *>((void *) data_ptr);
2250
+
2251
+ srcOffsetValue =
2252
+ srcOffsetValue * size;
2253
+ if (srcOffsetValue >
2254
+ size) {
2255
+ return;
2256
+ }
2257
+
2258
+ canvas_native_webgl2_tex_image3d_offset(
2259
+ target,
2260
+ level,
2261
+ internalformat,
2262
+ width,
2263
+ height,
2264
+ depth,
2265
+ border,
2266
+ format,
2267
+ type,
2268
+ data, size,
2269
+ srcOffsetValue,
2270
+ ptr->GetState()
2271
+ );
2272
+ return;
2273
+ }
2274
+
2275
+ }
2276
+ }
2277
+
2278
+ void WebGL2RenderingContext::TexStorage2D(const v8::FunctionCallbackInfo<v8::Value> &args) {
2279
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2280
+ if (ptr == nullptr) {
2281
+ return;
2282
+ }
2283
+
2284
+ auto isolate = args.GetIsolate();
2285
+ auto context = isolate->GetCurrentContext();
2286
+
2287
+ auto target = args[0]->Uint32Value(
2288
+ context).ToChecked();
2289
+ auto levels = args[1]->Int32Value(
2290
+ context).ToChecked();
2291
+ auto internalFormat = args[2]->Uint32Value(
2292
+ context).ToChecked();
2293
+ auto width = args[3]->Int32Value(
2294
+ context).ToChecked();
2295
+ auto height = args[4]->Int32Value(
2296
+ context).ToChecked();
2297
+ canvas_native_webgl2_tex_storage2d(
2298
+ target,
2299
+ levels,
2300
+ internalFormat,
2301
+ width,
2302
+ height,
2303
+ ptr->GetState()
2304
+ );
2305
+ }
2306
+
2307
+ void WebGL2RenderingContext::TexStorage3D(const v8::FunctionCallbackInfo<v8::Value> &args) {
2308
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2309
+ if (ptr == nullptr) {
2310
+ return;
2311
+ }
2312
+
2313
+ auto isolate = args.GetIsolate();
2314
+ auto context = isolate->GetCurrentContext();
2315
+
2316
+ auto target = args[0]->Uint32Value(
2317
+ context).ToChecked();
2318
+ auto levels = args[1]->Int32Value(
2319
+ context).ToChecked();
2320
+ auto internalFormat = args[2]->Uint32Value(
2321
+ context).ToChecked();
2322
+ auto width = args[3]->Int32Value(
2323
+ context).ToChecked();
2324
+ auto height = args[4]->Int32Value(
2325
+ context).ToChecked();
2326
+ auto depth = args[5]->Int32Value(
2327
+ context).ToChecked();
2328
+ canvas_native_webgl2_tex_storage3d(
2329
+ target,
2330
+ levels,
2331
+ internalFormat,
2332
+ width,
2333
+ height,
2334
+ depth,
2335
+ ptr->GetState()
2336
+ );
2337
+ }
2338
+
2339
+ void WebGL2RenderingContext::TexSubImage3D(const v8::FunctionCallbackInfo<v8::Value> &args) {
2340
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2341
+ if (ptr == nullptr) {
2342
+ return;
2343
+ }
2344
+
2345
+ auto isolate = args.GetIsolate();
2346
+ auto context = isolate->GetCurrentContext();
2347
+
2348
+ auto count = args.Length();
2349
+ if (count == 11) {
2350
+ auto target = args[0]->Uint32Value(
2351
+ context).ToChecked();
2352
+ auto level = args[1]->Int32Value(
2353
+ context).ToChecked();
2354
+ auto xoffset = args[2]->Int32Value(
2355
+ context).ToChecked();
2356
+ auto yoffset = args[3]->Int32Value(
2357
+ context).ToChecked();
2358
+ auto zoffset = args[4]->Int32Value(
2359
+ context).ToChecked();
2360
+ auto width = args[5]->Int32Value(
2361
+ context).ToChecked();
2362
+ auto height = args[6]->Int32Value(
2363
+ context).ToChecked();
2364
+ auto depth = args[7]->Int32Value(
2365
+ context).ToChecked();
2366
+ auto format = args[8]->Uint32Value(
2367
+ context).ToChecked();
2368
+ auto type = args[9]->Uint32Value(
2369
+ context).ToChecked();
2370
+
2371
+ if (args[10]->IsNumber()) {
2372
+ auto imageOrPixelsOrOffset = args[10]->NumberValue(
2373
+ context).ToChecked();
2374
+ canvas_native_webgl2_tex_sub_image3d_none(
2375
+ target,
2376
+ level,
2377
+ xoffset,
2378
+ yoffset,
2379
+ zoffset,
2380
+ width,
2381
+ height,
2382
+ depth,
2383
+ format,
2384
+ type,
2385
+ static_cast<ssize_t>(imageOrPixelsOrOffset),
2386
+ ptr->GetState()
2387
+ );
2388
+ return;
2389
+ }
2390
+
2391
+ auto imageOrPixelsOrOffsetObject = args[10];
2392
+
2393
+ if (imageOrPixelsOrOffsetObject->IsArrayBufferView()) {
2394
+ auto buf = imageOrPixelsOrOffsetObject.As<v8::ArrayBufferView>();
2395
+
2396
+ auto array = buf->Buffer();
2397
+ auto offset = buf->ByteOffset();
2398
+ auto size = buf->ByteLength();
2399
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
2400
+ auto data = static_cast<uint8_t *>((void *) data_ptr);
2401
+
2402
+
2403
+ canvas_native_webgl2_tex_sub_image3d(
2404
+ target,
2405
+ level,
2406
+ xoffset,
2407
+ yoffset,
2408
+ zoffset,
2409
+ width,
2410
+ height,
2411
+ depth,
2412
+ format,
2413
+ type,
2414
+ data, size,
2415
+ ptr->GetState()
2416
+ );
2417
+
2418
+ return;
2419
+ }
2420
+
2421
+
2422
+ auto imageType = GetNativeType(isolate, imageOrPixelsOrOffsetObject);
2423
+
2424
+ if (imageType == NativeType::ImageAsset) {
2425
+ auto asset = ImageAssetImpl::GetPointer(imageOrPixelsOrOffsetObject.As<v8::Object>());
2426
+ if (asset != nullptr) {
2427
+
2428
+ canvas_native_webgl2_tex_sub_image3d_asset(
2429
+ target,
2430
+ level,
2431
+ xoffset,
2432
+ yoffset,
2433
+ zoffset,
2434
+ width,
2435
+ height,
2436
+ depth,
2437
+ format,
2438
+ type,
2439
+ asset->GetImageAsset(),
2440
+ ptr->GetState()
2441
+ );
2442
+ }
2443
+ }
2444
+
2445
+ } else if (count > 11) {
2446
+ auto target = args[0]->Uint32Value(
2447
+ context).ToChecked();
2448
+ auto level = args[1]->Int32Value(
2449
+ context).ToChecked();
2450
+ auto xoffset = args[2]->Int32Value(
2451
+ context).ToChecked();
2452
+ auto yoffset = args[3]->Int32Value(
2453
+ context).ToChecked();
2454
+ auto zoffset = args[4]->Int32Value(
2455
+ context).ToChecked();
2456
+ auto width = args[5]->Int32Value(
2457
+ context).ToChecked();
2458
+ auto height = args[6]->Int32Value(
2459
+ context).ToChecked();
2460
+ auto depth = args[7]->Int32Value(
2461
+ context).ToChecked();
2462
+ auto format = args[8]->Uint32Value(
2463
+ context).ToChecked();
2464
+ auto type = args[9]->Uint32Value(
2465
+ context).ToChecked();
2466
+
2467
+ size_t srcOffsetValue = 0;
2468
+
2469
+ if (args[11]->IsNumber()) {
2470
+ srcOffsetValue = static_cast<size_t>(args[11]->NumberValue(
2471
+ context).ToChecked());
2472
+ }
2473
+
2474
+ auto imageOrPixelsOrOffsetObject = args[10];
2475
+
2476
+
2477
+ if (imageOrPixelsOrOffsetObject->IsArrayBufferView()) {
2478
+ auto buf = imageOrPixelsOrOffsetObject.As<v8::ArrayBufferView>();
2479
+
2480
+ auto array = buf->Buffer();
2481
+ auto offset = buf->ByteOffset();
2482
+ auto size = buf->ByteLength();
2483
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
2484
+ auto data = static_cast<uint8_t *>((void *) data_ptr);
2485
+
2486
+
2487
+ srcOffsetValue =
2488
+ srcOffsetValue * size;
2489
+ if (srcOffsetValue > size) {
2490
+ return;
2491
+ }
2492
+
2493
+
2494
+ canvas_native_webgl2_tex_sub_image3d_offset(
2495
+ target,
2496
+ level,
2497
+ xoffset,
2498
+ yoffset,
2499
+ zoffset,
2500
+ width,
2501
+ height,
2502
+ depth,
2503
+ format,
2504
+ type,
2505
+ data, size,
2506
+ srcOffsetValue,
2507
+ ptr->GetState()
2508
+ );
2509
+ }
2510
+ }
2511
+ }
2512
+
2513
+ void
2514
+ WebGL2RenderingContext::TransformFeedbackVaryings(const v8::FunctionCallbackInfo<v8::Value> &args) {
2515
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2516
+ if (ptr == nullptr) {
2517
+ return;
2518
+ }
2519
+
2520
+ auto isolate = args.GetIsolate();
2521
+ auto context = isolate->GetCurrentContext();
2522
+
2523
+ auto programValue = args[0];
2524
+ auto type = GetNativeType(isolate, programValue);
2525
+ if (type == NativeType::WebGLProgram) {
2526
+ auto program = WebGLProgram::GetPointer(programValue.As<v8::Object>());
2527
+ auto varyingsObject = args[1];
2528
+ auto bufferMode = args[2]->Uint32Value(
2529
+ context).ToChecked();
2530
+
2531
+ if (program != nullptr &&
2532
+ varyingsObject->IsArray()) {
2533
+ auto varyings = varyingsObject.As<v8::Array>();
2534
+ auto len = varyings->Length();
2535
+
2536
+
2537
+ std::vector<std::string> store;
2538
+ store.reserve(len);
2539
+
2540
+ for (int j = 0; j < len; ++j) {
2541
+ auto name = ConvertFromV8String(isolate, varyings->Get(
2542
+ context, j).ToLocalChecked());
2543
+
2544
+ store.push_back(name);
2545
+ }
2546
+
2547
+
2548
+ const char *cStrings[store.size()];
2549
+ for (size_t i = 0; i < store.size(); ++i) {
2550
+ cStrings[i] = store[i].c_str();
2551
+ }
2552
+
2553
+ canvas_native_webgl2_transform_feedback_varyings(
2554
+ program->GetProgram(),
2555
+ cStrings, store.size(),
2556
+ bufferMode,
2557
+ ptr->GetState()
2558
+ );
2559
+ }
2560
+ }
2561
+
2562
+ }
2563
+
2564
+ void WebGL2RenderingContext::Uniform1ui(const v8::FunctionCallbackInfo<v8::Value> &args) {
2565
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2566
+ if (ptr == nullptr) {
2567
+ return;
2568
+ }
2569
+
2570
+ auto isolate = args.GetIsolate();
2571
+ auto context = isolate->GetCurrentContext();
2572
+
2573
+ auto locationValue = args[0];
2574
+ auto type = GetNativeType(isolate, locationValue);
2575
+
2576
+ auto v0Value = args[1];
2577
+ if (type == NativeType::WebGLUniformLocation) {
2578
+
2579
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
2580
+ auto v0 = v0Value->Uint32Value(
2581
+ context).ToChecked();
2582
+
2583
+ if (location != nullptr) {
2584
+ canvas_native_webgl2_uniform1ui(
2585
+ location->GetUniformLocation(),
2586
+ v0,
2587
+ ptr->GetState()
2588
+ );
2589
+ }
2590
+ }
2591
+
2592
+ }
2593
+
2594
+ void WebGL2RenderingContext::Uniform2ui(const v8::FunctionCallbackInfo<v8::Value> &args) {
2595
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2596
+ if (ptr == nullptr) {
2597
+ return;
2598
+ }
2599
+
2600
+ auto isolate = args.GetIsolate();
2601
+ auto context = isolate->GetCurrentContext();
2602
+
2603
+ auto locationValue = args[0];
2604
+ auto type = GetNativeType(isolate, locationValue);
2605
+
2606
+ if (type == NativeType::WebGLUniformLocation) {
2607
+
2608
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
2609
+ auto v0 = args[1]->Uint32Value(
2610
+ context).ToChecked();
2611
+ auto v1 = args[2]->Uint32Value(
2612
+ context).ToChecked();
2613
+
2614
+ if (location != nullptr) {
2615
+ canvas_native_webgl2_uniform2ui(
2616
+ location->GetUniformLocation(),
2617
+ v0,
2618
+ v1,
2619
+ ptr->GetState()
2620
+ );
2621
+ }
2622
+ }
2623
+
2624
+ }
2625
+
2626
+ void WebGL2RenderingContext::Uniform3ui(const v8::FunctionCallbackInfo<v8::Value> &args) {
2627
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2628
+ if (ptr == nullptr) {
2629
+ return;
2630
+ }
2631
+
2632
+ auto isolate = args.GetIsolate();
2633
+ auto context = isolate->GetCurrentContext();
2634
+
2635
+ auto locationValue = args[0];
2636
+ auto type = GetNativeType(isolate, locationValue);
2637
+
2638
+ if (type == NativeType::WebGLUniformLocation) {
2639
+
2640
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
2641
+ auto v0 = args[1]->Uint32Value(
2642
+ context).ToChecked();
2643
+
2644
+ auto v1 = args[2]->Uint32Value(
2645
+ context).ToChecked();
2646
+
2647
+ auto v2 = args[3]->Uint32Value(
2648
+ context).ToChecked();
2649
+
2650
+ if (location != nullptr) {
2651
+ canvas_native_webgl2_uniform3ui(
2652
+ location->GetUniformLocation(),
2653
+ v0,
2654
+ v1,
2655
+ v2,
2656
+ ptr->GetState()
2657
+ );
2658
+ }
2659
+ }
2660
+
2661
+ }
2662
+
2663
+ void WebGL2RenderingContext::Uniform4ui(const v8::FunctionCallbackInfo<v8::Value> &args) {
2664
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2665
+ if (ptr == nullptr) {
2666
+ return;
2667
+ }
2668
+
2669
+ auto isolate = args.GetIsolate();
2670
+ auto context = isolate->GetCurrentContext();
2671
+
2672
+ auto locationValue = args[0];
2673
+ auto type = GetNativeType(isolate, locationValue);
2674
+
2675
+ if (type == NativeType::WebGLUniformLocation) {
2676
+
2677
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
2678
+ auto v0 = args[1]->Uint32Value(
2679
+ context).ToChecked();
2680
+
2681
+ auto v1 = args[2]->Uint32Value(
2682
+ context).ToChecked();
2683
+
2684
+ auto v2 = args[3]->Uint32Value(
2685
+ context).ToChecked();
2686
+ auto v3 = args[4]->Uint32Value(
2687
+ context).ToChecked();
2688
+
2689
+
2690
+ if (location != nullptr) {
2691
+ canvas_native_webgl2_uniform4ui(
2692
+ location->GetUniformLocation(),
2693
+ v0,
2694
+ v1,
2695
+ v2,
2696
+ v3,
2697
+ ptr->GetState()
2698
+ );
2699
+ }
2700
+ }
2701
+
2702
+ }
2703
+
2704
+ void WebGL2RenderingContext::Uniform1uiv(const v8::FunctionCallbackInfo<v8::Value> &args) {
2705
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2706
+ if (ptr == nullptr) {
2707
+ return;
2708
+ }
2709
+
2710
+ auto isolate = args.GetIsolate();
2711
+ auto context = isolate->GetCurrentContext();
2712
+
2713
+
2714
+ auto locationValue = args[0];
2715
+ auto type = GetNativeType(isolate, locationValue);
2716
+
2717
+
2718
+ if (type == NativeType::WebGLUniformLocation) {
2719
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
2720
+ auto dataValue = args[1];
2721
+ if (location != nullptr &&
2722
+ dataValue->IsUint32Array()) {
2723
+ auto buf = dataValue.As<v8::Uint32Array>();
2724
+ auto array = buf->Buffer();
2725
+ auto offset = buf->ByteOffset();
2726
+ auto size = buf->Length();
2727
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
2728
+ auto data = static_cast<uint32_t *>((void *) data_ptr);
2729
+
2730
+
2731
+ canvas_native_webgl2_uniform1uiv(
2732
+ location->GetUniformLocation(),
2733
+ data, size,
2734
+ ptr->GetState()
2735
+ );
2736
+ } else {
2737
+ std::vector<uint32_t> buf;
2738
+ auto array = dataValue.As<v8::Array>();
2739
+ auto len = array->Length();
2740
+ buf.reserve(len);
2741
+ for (int i = 0; i < len; i++) {
2742
+ auto item = array->Get(
2743
+ context,
2744
+ i).ToLocalChecked()->Uint32Value(
2745
+ context).ToChecked();
2746
+ buf.push_back(item);
2747
+ }
2748
+
2749
+ canvas_native_webgl2_uniform1uiv(
2750
+ location->GetUniformLocation(),
2751
+ buf.data(), buf.size(),
2752
+ ptr->GetState()
2753
+ );
2754
+ }
2755
+
2756
+
2757
+ }
2758
+
2759
+ }
2760
+
2761
+ void WebGL2RenderingContext::Uniform2uiv(const v8::FunctionCallbackInfo<v8::Value> &args) {
2762
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2763
+ if (ptr == nullptr) {
2764
+ return;
2765
+ }
2766
+
2767
+ auto isolate = args.GetIsolate();
2768
+ auto context = isolate->GetCurrentContext();
2769
+
2770
+
2771
+ auto locationValue = args[0];
2772
+ auto type = GetNativeType(isolate, locationValue);
2773
+
2774
+
2775
+ if (type == NativeType::WebGLUniformLocation) {
2776
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
2777
+ auto dataValue = args[1];
2778
+ if (location != nullptr &&
2779
+ dataValue->IsUint32Array()) {
2780
+ auto buf = dataValue.As<v8::Uint32Array>();
2781
+ auto array = buf->Buffer();
2782
+ auto offset = buf->ByteOffset();
2783
+ auto size = buf->Length();
2784
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
2785
+ auto data = static_cast<uint32_t *>((void *) data_ptr);
2786
+
2787
+
2788
+ canvas_native_webgl2_uniform2uiv(
2789
+ location->GetUniformLocation(),
2790
+ data, size,
2791
+ ptr->GetState()
2792
+ );
2793
+ } else {
2794
+ std::vector<uint32_t> buf;
2795
+ auto array = dataValue.As<v8::Array>();
2796
+ auto len = array->Length();
2797
+ buf.reserve(len);
2798
+ for (int i = 0; i < len; i++) {
2799
+ auto item = array->Get(
2800
+ context,
2801
+ i).ToLocalChecked()->Uint32Value(
2802
+ context).ToChecked();
2803
+ buf.push_back(item);
2804
+ }
2805
+ canvas_native_webgl2_uniform2uiv(
2806
+ location->GetUniformLocation(),
2807
+ buf.data(), buf.size(),
2808
+ ptr->GetState()
2809
+ );
2810
+ }
2811
+
2812
+
2813
+ }
2814
+
2815
+ }
2816
+
2817
+ void WebGL2RenderingContext::Uniform3uiv(const v8::FunctionCallbackInfo<v8::Value> &args) {
2818
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2819
+ if (ptr == nullptr) {
2820
+ return;
2821
+ }
2822
+
2823
+ auto isolate = args.GetIsolate();
2824
+ auto context = isolate->GetCurrentContext();
2825
+
2826
+
2827
+ auto locationValue = args[0];
2828
+ auto type = GetNativeType(isolate, locationValue);
2829
+
2830
+
2831
+ if (type == NativeType::WebGLUniformLocation) {
2832
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
2833
+ auto dataValue = args[1];
2834
+ if (location != nullptr &&
2835
+ dataValue->IsUint32Array()) {
2836
+ auto buf = dataValue.As<v8::Uint32Array>();
2837
+
2838
+ auto array = buf->Buffer();
2839
+ auto offset = buf->ByteOffset();
2840
+ auto size = buf->Length();
2841
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
2842
+ auto data = static_cast<uint32_t *>((void *) data_ptr);
2843
+
2844
+
2845
+ canvas_native_webgl2_uniform3uiv(
2846
+ location->GetUniformLocation(),
2847
+ data, size,
2848
+ ptr->GetState()
2849
+ );
2850
+ } else {
2851
+ std::vector<uint32_t> buf;
2852
+ auto array = dataValue.As<v8::Array>();
2853
+ auto len = array->Length();
2854
+ buf.reserve(len);
2855
+ for (int i = 0; i < len; i++) {
2856
+ auto item = array->Get(
2857
+ context,
2858
+ i).ToLocalChecked()->Uint32Value(
2859
+ context).ToChecked();
2860
+ buf.push_back(item);
2861
+ }
2862
+ canvas_native_webgl2_uniform3uiv(
2863
+ location->GetUniformLocation(),
2864
+ buf.data(), buf.size(),
2865
+ ptr->GetState()
2866
+ );
2867
+ }
2868
+
2869
+
2870
+ }
2871
+
2872
+ }
2873
+
2874
+ void WebGL2RenderingContext::Uniform4uiv(const v8::FunctionCallbackInfo<v8::Value> &args) {
2875
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2876
+ if (ptr == nullptr) {
2877
+ return;
2878
+ }
2879
+
2880
+ auto isolate = args.GetIsolate();
2881
+ auto context = isolate->GetCurrentContext();
2882
+
2883
+
2884
+ auto locationValue = args[0];
2885
+ auto type = GetNativeType(isolate, locationValue);
2886
+
2887
+
2888
+ if (type == NativeType::WebGLUniformLocation) {
2889
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
2890
+ auto dataValue = args[1];
2891
+ if(location != nullptr){
2892
+ if (dataValue->IsUint32Array()) {
2893
+ auto buf = dataValue.As<v8::Uint32Array>();
2894
+
2895
+ auto array = buf->Buffer();
2896
+ auto offset = buf->ByteOffset();
2897
+ auto size = buf->Length();
2898
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
2899
+ auto data = static_cast<uint32_t *>((void *) data_ptr);
2900
+
2901
+
2902
+ canvas_native_webgl2_uniform4uiv(
2903
+ location->GetUniformLocation(),
2904
+ data, size,
2905
+ ptr->GetState()
2906
+ );
2907
+ } else {
2908
+ std::vector<uint32_t> buf;
2909
+ auto array = dataValue.As<v8::Array>();
2910
+ auto len = array->Length();
2911
+ buf.reserve(len);
2912
+ for (int i = 0; i < len; i++) {
2913
+ auto item = array->Get(
2914
+ context,
2915
+ i).ToLocalChecked()->Uint32Value(
2916
+ context).ToChecked();
2917
+ buf.push_back(item);
2918
+ }
2919
+
2920
+ canvas_native_webgl2_uniform4uiv(
2921
+ location->GetUniformLocation(),
2922
+ buf.data(), buf.size(),
2923
+ ptr->GetState()
2924
+ );
2925
+ }
2926
+ }
2927
+ }
2928
+
2929
+ }
2930
+
2931
+ void WebGL2RenderingContext::UniformBlockBinding(const v8::FunctionCallbackInfo<v8::Value> &args) {
2932
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2933
+ if (ptr == nullptr) {
2934
+ return;
2935
+ }
2936
+
2937
+ auto isolate = args.GetIsolate();
2938
+ auto context = isolate->GetCurrentContext();
2939
+
2940
+
2941
+ auto programValue = args[0];
2942
+ auto type = GetNativeType(isolate, programValue);
2943
+ if (type == NativeType::WebGLProgram) {
2944
+
2945
+ auto program = WebGLProgram::GetPointer(programValue.As<v8::Object>());
2946
+ auto uniformBlockIndex = args[1]->Uint32Value(
2947
+ context).ToChecked();
2948
+ auto uniformBlockBinding = args[2]->Uint32Value(
2949
+ context).ToChecked();
2950
+
2951
+ if (program != nullptr) {
2952
+ canvas_native_webgl2_uniform_block_binding(
2953
+ program->GetProgram(),
2954
+ uniformBlockIndex,
2955
+ uniformBlockBinding,
2956
+ ptr->GetState()
2957
+ );
2958
+ }
2959
+
2960
+ }
2961
+
2962
+ }
2963
+
2964
+ void WebGL2RenderingContext::UniformMatrix2x3fv(const v8::FunctionCallbackInfo<v8::Value> &args) {
2965
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
2966
+ if (ptr == nullptr) {
2967
+ return;
2968
+ }
2969
+
2970
+ auto isolate = args.GetIsolate();
2971
+ auto context = isolate->GetCurrentContext();
2972
+
2973
+
2974
+ auto locationValue = args[0];
2975
+ auto type = GetNativeType(isolate, locationValue);
2976
+ if (type == NativeType::WebGLUniformLocation) {
2977
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
2978
+ auto transpose = args[1]->BooleanValue(isolate);
2979
+ auto dataValue = args[2];
2980
+
2981
+ if (dataValue->IsFloat32Array()) {
2982
+ auto buf = dataValue.As<v8::Float32Array>();
2983
+ auto array = buf->Buffer();
2984
+ auto offset = buf->ByteOffset();
2985
+ auto size = buf->Length();
2986
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
2987
+ auto data = static_cast<float *>((void *) data_ptr);
2988
+
2989
+
2990
+ canvas_native_webgl2_uniform_matrix2x3fv(
2991
+ location->GetUniformLocation(),
2992
+ transpose,
2993
+ data, size,
2994
+ ptr->GetState()
2995
+ );
2996
+ } else if (dataValue->IsArray()) {
2997
+ std::vector<float> buf;
2998
+ auto array = dataValue.As<v8::Array>();
2999
+ auto len = array->Length();
3000
+ for (int i = 0; i < len; i++) {
3001
+ auto item = array->Get(
3002
+ context, i).ToLocalChecked();
3003
+ buf.push_back(
3004
+ static_cast<float>(item->NumberValue(
3005
+ context).ToChecked()));
3006
+ }
3007
+
3008
+
3009
+ canvas_native_webgl2_uniform_matrix2x3fv(
3010
+ location->GetUniformLocation(),
3011
+ transpose,
3012
+ buf.data(), buf.size(),
3013
+ ptr->GetState()
3014
+ );
3015
+ }
3016
+ }
3017
+
3018
+ }
3019
+
3020
+ void WebGL2RenderingContext::UniformMatrix2x4fv(const v8::FunctionCallbackInfo<v8::Value> &args) {
3021
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
3022
+ if (ptr == nullptr) {
3023
+ return;
3024
+ }
3025
+
3026
+ auto isolate = args.GetIsolate();
3027
+ auto context = isolate->GetCurrentContext();
3028
+
3029
+
3030
+ auto locationValue = args[0];
3031
+ auto type = GetNativeType(isolate, locationValue);
3032
+ if (type == NativeType::WebGLUniformLocation) {
3033
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
3034
+ auto transpose = args[1]->BooleanValue(isolate);
3035
+ auto dataValue = args[2];
3036
+
3037
+ if (dataValue->IsFloat32Array()) {
3038
+ auto buf = dataValue.As<v8::Float32Array>();
3039
+
3040
+ auto array = buf->Buffer();
3041
+ auto offset = buf->ByteOffset();
3042
+ auto size = buf->Length();
3043
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
3044
+ auto data = static_cast<float *>((void *) data_ptr);
3045
+
3046
+
3047
+ canvas_native_webgl2_uniform_matrix2x4fv(
3048
+ location->GetUniformLocation(),
3049
+ transpose,
3050
+ data, size,
3051
+ ptr->GetState()
3052
+ );
3053
+ } else if (dataValue->IsArray()) {
3054
+ std::vector<float> buf;
3055
+ auto array = dataValue.As<v8::Array>();
3056
+ auto len = array->Length();
3057
+ for (int i = 0; i < len; i++) {
3058
+ auto item = array->Get(
3059
+ context, i).ToLocalChecked();
3060
+ buf.push_back(
3061
+ static_cast<float>(item->NumberValue(
3062
+ context).ToChecked()));
3063
+ }
3064
+
3065
+
3066
+ canvas_native_webgl2_uniform_matrix2x4fv(
3067
+ location->GetUniformLocation(),
3068
+ transpose,
3069
+ buf.data(), buf.size(),
3070
+ ptr->GetState()
3071
+ );
3072
+ }
3073
+ }
3074
+
3075
+ }
3076
+
3077
+ void WebGL2RenderingContext::UniformMatrix3x2fv(const v8::FunctionCallbackInfo<v8::Value> &args) {
3078
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
3079
+ if (ptr == nullptr) {
3080
+ return;
3081
+ }
3082
+
3083
+ auto isolate = args.GetIsolate();
3084
+ auto context = isolate->GetCurrentContext();
3085
+
3086
+
3087
+ auto locationValue = args[0];
3088
+ auto type = GetNativeType(isolate, locationValue);
3089
+ if (type == NativeType::WebGLUniformLocation) {
3090
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
3091
+ auto transpose = args[1]->BooleanValue(isolate);
3092
+ auto dataValue = args[2];
3093
+
3094
+ if (dataValue->IsFloat32Array()) {
3095
+ auto buf = dataValue.As<v8::Float32Array>();
3096
+
3097
+
3098
+ auto array = buf->Buffer();
3099
+ auto offset = buf->ByteOffset();
3100
+ auto size = buf->Length();
3101
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
3102
+ auto data = static_cast<float *>((void *) data_ptr);
3103
+
3104
+
3105
+ canvas_native_webgl2_uniform_matrix3x2fv(
3106
+ location->GetUniformLocation(),
3107
+ transpose,
3108
+ data, size,
3109
+ ptr->GetState()
3110
+ );
3111
+ } else if (dataValue->IsArray()) {
3112
+ std::vector<float> buf;
3113
+ auto array = dataValue.As<v8::Array>();
3114
+ auto len = array->Length();
3115
+ for (int i = 0; i < len; i++) {
3116
+ auto item = array->Get(
3117
+ context, i).ToLocalChecked();
3118
+ buf.push_back(
3119
+ static_cast<float>(item->NumberValue(
3120
+ context).ToChecked()));
3121
+ }
3122
+
3123
+
3124
+ canvas_native_webgl2_uniform_matrix3x2fv(
3125
+ location->GetUniformLocation(),
3126
+ transpose,
3127
+ buf.data(), buf.size(),
3128
+ ptr->GetState()
3129
+ );
3130
+ }
3131
+ }
3132
+
3133
+ }
3134
+
3135
+ void WebGL2RenderingContext::UniformMatrix3x4fv(const v8::FunctionCallbackInfo<v8::Value> &args) {
3136
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
3137
+ if (ptr == nullptr) {
3138
+ return;
3139
+ }
3140
+
3141
+ auto isolate = args.GetIsolate();
3142
+ auto context = isolate->GetCurrentContext();
3143
+
3144
+
3145
+ auto locationValue = args[0];
3146
+ auto type = GetNativeType(isolate, locationValue);
3147
+ if (type == NativeType::WebGLUniformLocation) {
3148
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
3149
+ auto transpose = args[1]->BooleanValue(isolate);
3150
+ auto dataValue = args[2];
3151
+
3152
+ if (dataValue->IsFloat32Array()) {
3153
+ auto buf = dataValue.As<v8::Float32Array>();
3154
+ auto array = buf->Buffer();
3155
+ auto offset = buf->ByteOffset();
3156
+ auto size = buf->Length();
3157
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
3158
+ auto data = static_cast<float *>((void *) data_ptr);
3159
+
3160
+
3161
+ canvas_native_webgl2_uniform_matrix3x4fv(
3162
+ location->GetUniformLocation(),
3163
+ transpose,
3164
+ data, size,
3165
+ ptr->GetState()
3166
+ );
3167
+ } else if (dataValue->IsArray()) {
3168
+ std::vector<float> buf;
3169
+ auto array = dataValue.As<v8::Array>();
3170
+ auto len = array->Length();
3171
+ for (int i = 0; i < len; i++) {
3172
+ auto item = array->Get(
3173
+ context, i).ToLocalChecked();
3174
+ buf.push_back(
3175
+ static_cast<float>(item->NumberValue(
3176
+ context).ToChecked()));
3177
+ }
3178
+
3179
+
3180
+ canvas_native_webgl2_uniform_matrix3x4fv(
3181
+ location->GetUniformLocation(),
3182
+ transpose,
3183
+ buf.data(), buf.size(),
3184
+ ptr->GetState()
3185
+ );
3186
+ }
3187
+ }
3188
+
3189
+ }
3190
+
3191
+ void WebGL2RenderingContext::UniformMatrix4x2fv(const v8::FunctionCallbackInfo<v8::Value> &args) {
3192
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
3193
+ if (ptr == nullptr) {
3194
+ return;
3195
+ }
3196
+
3197
+ auto isolate = args.GetIsolate();
3198
+ auto context = isolate->GetCurrentContext();
3199
+
3200
+
3201
+ auto locationValue = args[0];
3202
+ auto type = GetNativeType(isolate, locationValue);
3203
+ if (type == NativeType::WebGLUniformLocation) {
3204
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
3205
+ auto transpose = args[1]->BooleanValue(isolate);
3206
+ auto dataValue = args[2];
3207
+
3208
+ if (dataValue->IsFloat32Array()) {
3209
+ auto buf = dataValue.As<v8::Float32Array>();
3210
+
3211
+ auto array = buf->Buffer();
3212
+ auto offset = buf->ByteOffset();
3213
+ auto size = buf->Length();
3214
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
3215
+ auto data = static_cast<float *>((void *) data_ptr);
3216
+
3217
+ canvas_native_webgl2_uniform_matrix4x2fv(
3218
+ location->GetUniformLocation(),
3219
+ transpose,
3220
+ data, size,
3221
+ ptr->GetState()
3222
+ );
3223
+ } else if (dataValue->IsArray()) {
3224
+ std::vector<float> buf;
3225
+ auto array = dataValue.As<v8::Array>();
3226
+ auto len = array->Length();
3227
+ for (int i = 0; i < len; i++) {
3228
+ auto item = array->Get(
3229
+ context, i).ToLocalChecked();
3230
+ buf.push_back(
3231
+ static_cast<float>(item->NumberValue(
3232
+ context).ToChecked()));
3233
+ }
3234
+
3235
+
3236
+ canvas_native_webgl2_uniform_matrix4x2fv(
3237
+ location->GetUniformLocation(),
3238
+ transpose,
3239
+ buf.data(), buf.size(),
3240
+ ptr->GetState()
3241
+ );
3242
+ }
3243
+ }
3244
+
3245
+ }
3246
+
3247
+ void WebGL2RenderingContext::UniformMatrix4x3fv(const v8::FunctionCallbackInfo<v8::Value> &args) {
3248
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
3249
+ if (ptr == nullptr) {
3250
+ return;
3251
+ }
3252
+
3253
+ auto isolate = args.GetIsolate();
3254
+ auto context = isolate->GetCurrentContext();
3255
+
3256
+
3257
+ auto locationValue = args[0];
3258
+ auto type = GetNativeType(isolate, locationValue);
3259
+ if (type == NativeType::WebGLUniformLocation) {
3260
+ auto location = WebGLUniformLocation::GetPointer(locationValue.As<v8::Object>());
3261
+ auto transpose = args[1]->BooleanValue(isolate);
3262
+ auto dataValue = args[2];
3263
+
3264
+ if (dataValue->IsFloat32Array()) {
3265
+ auto buf = dataValue.As<v8::Float32Array>();
3266
+ auto array = buf->Buffer();
3267
+ auto offset = buf->ByteOffset();
3268
+ auto size = buf->Length();
3269
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
3270
+ auto data = static_cast<float *>((void *) data_ptr);
3271
+
3272
+ canvas_native_webgl2_uniform_matrix4x3fv(
3273
+ location->GetUniformLocation(),
3274
+ transpose,
3275
+ data, size,
3276
+ ptr->GetState()
3277
+ );
3278
+ } else if (dataValue->IsArray()) {
3279
+ std::vector<float> buf;
3280
+ auto array = dataValue.As<v8::Array>();
3281
+ auto len = array->Length();
3282
+ for (int i = 0; i < len; i++) {
3283
+ auto item = array->Get(
3284
+ context, i).ToLocalChecked();
3285
+ buf.push_back(
3286
+ static_cast<float>(item->NumberValue(
3287
+ context).ToChecked()));
3288
+ }
3289
+
3290
+
3291
+ canvas_native_webgl2_uniform_matrix4x3fv(
3292
+ location->GetUniformLocation(),
3293
+ transpose,
3294
+ buf.data(), buf.size(),
3295
+ ptr->GetState()
3296
+ );
3297
+ }
3298
+ }
3299
+
3300
+ }
3301
+
3302
+ void WebGL2RenderingContext::VertexAttribDivisor(const v8::FunctionCallbackInfo<v8::Value> &args) {
3303
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
3304
+ if (ptr == nullptr) {
3305
+ return;
3306
+ }
3307
+
3308
+ auto isolate = args.GetIsolate();
3309
+ auto context = isolate->GetCurrentContext();
3310
+
3311
+
3312
+ auto index = args[0]->Uint32Value(
3313
+ context).ToChecked();
3314
+ auto divisor = args[1]->Uint32Value(
3315
+ context).ToChecked();
3316
+ canvas_native_webgl2_vertex_attrib_divisor(
3317
+ index,
3318
+ divisor,
3319
+ ptr->GetState()
3320
+ );
3321
+
3322
+ }
3323
+
3324
+ void WebGL2RenderingContext::VertexAttribI4i(const v8::FunctionCallbackInfo<v8::Value> &args) {
3325
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
3326
+ if (ptr == nullptr) {
3327
+ return;
3328
+ }
3329
+
3330
+ auto isolate = args.GetIsolate();
3331
+ auto context = isolate->GetCurrentContext();
3332
+
3333
+
3334
+ auto index = args[0]->Int32Value(
3335
+ context).ToChecked();
3336
+ auto v0 = args[1]->Int32Value(
3337
+ context).ToChecked();
3338
+ auto v1 = args[2]->Int32Value(
3339
+ context).ToChecked();
3340
+ auto v2 = args[3]->Int32Value(
3341
+ context).ToChecked();
3342
+ auto v3 = args[4]->Int32Value(
3343
+ context).ToChecked();
3344
+ canvas_native_webgl2_vertex_attrib_i4i(
3345
+ index,
3346
+ v0,
3347
+ v1,
3348
+ v2,
3349
+ v3,
3350
+ ptr->GetState()
3351
+ );
3352
+
3353
+ }
3354
+
3355
+ void WebGL2RenderingContext::VertexAttribI4iv(const v8::FunctionCallbackInfo<v8::Value> &args) {
3356
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
3357
+ if (ptr == nullptr) {
3358
+ return;
3359
+ }
3360
+
3361
+ auto isolate = args.GetIsolate();
3362
+ auto context = isolate->GetCurrentContext();
3363
+
3364
+
3365
+ auto index = args[0]->Uint32Value(
3366
+ context).ToChecked();
3367
+ auto value = args[1];
3368
+ if (value->IsInt32Array()) {
3369
+ auto buf = value.As<v8::Int32Array>();
3370
+
3371
+ auto array = buf->Buffer();
3372
+ auto offset = buf->ByteOffset();
3373
+ auto size = buf->Length();
3374
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
3375
+ auto data = static_cast<int32_t *>((void *) data_ptr);
3376
+
3377
+
3378
+ canvas_native_webgl2_vertex_attrib_i4iv(
3379
+ index,
3380
+ data, size,
3381
+ ptr->GetState()
3382
+ );
3383
+ } else if (value->IsArray()) {
3384
+ auto array = value.As<v8::Array>();
3385
+ auto len = array->Length();
3386
+ std::vector<int32_t> buf;
3387
+ buf.reserve(len);
3388
+ for (int i = 0; i < len; i++) {
3389
+ auto item = array->Get(
3390
+ context,
3391
+ i).ToLocalChecked()->Int32Value(
3392
+ context).ToChecked();
3393
+ buf.push_back(item);
3394
+ }
3395
+
3396
+
3397
+ canvas_native_webgl2_vertex_attrib_i4iv(
3398
+ index,
3399
+ buf.data(), buf.size(),
3400
+ ptr->GetState()
3401
+ );
3402
+ }
3403
+
3404
+ }
3405
+
3406
+ void WebGL2RenderingContext::VertexAttribI4ui(const v8::FunctionCallbackInfo<v8::Value> &args) {
3407
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
3408
+ if (ptr == nullptr) {
3409
+ return;
3410
+ }
3411
+
3412
+ auto isolate = args.GetIsolate();
3413
+ auto context = isolate->GetCurrentContext();
3414
+
3415
+
3416
+ auto index = args[0]->Uint32Value(
3417
+ context).ToChecked();
3418
+ auto v0 = args[1]->Uint32Value(
3419
+ context).ToChecked();
3420
+ auto v1 = args[2]->Uint32Value(
3421
+ context).ToChecked();
3422
+ auto v2 = args[3]->Uint32Value(
3423
+ context).ToChecked();
3424
+ auto v3 = args[4]->Uint32Value(
3425
+ context).ToChecked();
3426
+
3427
+ canvas_native_webgl2_vertex_attrib_i4ui(
3428
+ index,
3429
+ v0,
3430
+ v1,
3431
+ v2,
3432
+ v3,
3433
+ ptr->GetState()
3434
+ );
3435
+
3436
+ }
3437
+
3438
+ void WebGL2RenderingContext::VertexAttribI4uiv(const v8::FunctionCallbackInfo<v8::Value> &args) {
3439
+ WebGL2RenderingContext *ptr = GetPointer(args.This());
3440
+ if (ptr == nullptr) {
3441
+ return;
3442
+ }
3443
+
3444
+ auto isolate = args.GetIsolate();
3445
+ auto context = isolate->GetCurrentContext();
3446
+
3447
+ auto index = args[0]->Uint32Value(
3448
+ context).ToChecked();
3449
+ auto value = args[1];
3450
+ if (value->IsUint32Array()) {
3451
+ auto buf = value.As<v8::Uint32Array>();
3452
+ auto array = buf->Buffer();
3453
+ auto offset = buf->ByteOffset();
3454
+ auto size = buf->Length();
3455
+ auto data_ptr = static_cast<uint8_t *>(array->GetBackingStore()->Data()) + offset;
3456
+ auto data = static_cast<uint32_t *>((void *) data_ptr);
3457
+
3458
+
3459
+ canvas_native_webgl2_vertex_attrib_i4uiv(
3460
+ index,
3461
+ data, size,
3462
+ ptr->GetState()
3463
+ );
3464
+ } else if (value->IsArray()) {
3465
+ auto array = value.As<v8::Array>();
3466
+ auto len = array->Length();
3467
+ std::vector<uint32_t> buf;
3468
+ buf.reserve(len);
3469
+ for (int i = 0; i < len; i++) {
3470
+ auto item = array->Get(
3471
+ context,
3472
+ i).ToLocalChecked()->Uint32Value(
3473
+ context).ToChecked();
3474
+ buf.push_back(item);
3475
+ }
3476
+
3477
+
3478
+ canvas_native_webgl2_vertex_attrib_i4uiv(
3479
+ index,
3480
+ buf.data(), buf.size(),
3481
+ ptr->GetState()
3482
+ );
3483
+ }
3484
+
3485
+ }
3486
+
3487
+ void WebGL2RenderingContext::SetConstants(v8::Isolate *isolate,
3488
+ const v8::Local<v8::ObjectTemplate> &tmpl) {
3489
+ /* Getting GL parameter information */
3490
+
3491
+ tmpl->Set(isolate, "READ_BUFFER", v8::Integer::NewFromUnsigned(isolate, 0x0C02));
3492
+
3493
+ tmpl->Set(isolate, "UNPACK_ROW_LENGTH", v8::Integer::NewFromUnsigned(isolate, 0x0CF2));
3494
+
3495
+ tmpl->Set(isolate, "UNPACK_SKIP_ROWS", v8::Integer::NewFromUnsigned(isolate, 0x0CF3));
3496
+
3497
+ tmpl->Set(isolate, "UNPACK_SKIP_PIXELS", v8::Integer::NewFromUnsigned(isolate, 0x0CF4));
3498
+
3499
+ tmpl->Set(isolate, "PACK_ROW_LENGTH", v8::Integer::NewFromUnsigned(isolate, 0x0D02));
3500
+
3501
+ tmpl->Set(isolate, "PACK_SKIP_ROWS", v8::Integer::NewFromUnsigned(isolate, 0x0D03));
3502
+
3503
+ tmpl->Set(isolate, "PACK_SKIP_PIXELS", v8::Integer::NewFromUnsigned(isolate, 0x0D04));
3504
+
3505
+ tmpl->Set(isolate, "TEXTURE_BINDING_3D", v8::Integer::NewFromUnsigned(isolate, 0x806A));
3506
+
3507
+ tmpl->Set(isolate, "UNPACK_SKIP_IMAGES", v8::Integer::NewFromUnsigned(isolate, 0x806D));
3508
+
3509
+ tmpl->Set(isolate, "UNPACK_IMAGE_HEIGHT", v8::Integer::NewFromUnsigned(isolate, 0x806E));
3510
+
3511
+ tmpl->Set(isolate, "MAX_3D_TEXTURE_SIZE", v8::Integer::NewFromUnsigned(isolate, 0x8073));
3512
+
3513
+ tmpl->Set(isolate, "MAX_ELEMENTS_VERTICES", v8::Integer::NewFromUnsigned(isolate, 0x80E8));
3514
+
3515
+ tmpl->Set(isolate, "MAX_ELEMENTS_INDICES", v8::Integer::NewFromUnsigned(isolate, 0x80E9));
3516
+
3517
+ tmpl->Set(isolate, "MAX_TEXTURE_LOD_BIAS", v8::Integer::NewFromUnsigned(isolate, 0x84FD));
3518
+
3519
+ tmpl->Set(isolate, "MAX_FRAGMENT_UNIFORM_COMPONENTS",
3520
+ v8::Integer::NewFromUnsigned(isolate, 0x8B49));
3521
+
3522
+ tmpl->Set(isolate, "MAX_VERTEX_UNIFORM_COMPONENTS",
3523
+ v8::Integer::NewFromUnsigned(isolate, 0x8B4A));
3524
+
3525
+ tmpl->Set(isolate, "MAX_ARRAY_TEXTURE_LAYERS", v8::Integer::NewFromUnsigned(isolate, 0x88FF));
3526
+
3527
+ tmpl->Set(isolate, "MIN_PROGRAM_TEXEL_OFFSET", v8::Integer::NewFromUnsigned(isolate, 0x8904));
3528
+
3529
+ tmpl->Set(isolate, "MAX_PROGRAM_TEXEL_OFFSET", v8::Integer::NewFromUnsigned(isolate, 0x8905));
3530
+
3531
+ tmpl->Set(isolate, "MAX_VARYING_COMPONENTS", v8::Integer::NewFromUnsigned(isolate, 0x8B4B));
3532
+
3533
+ tmpl->Set(isolate, "FRAGMENT_SHADER_DERIVATIVE_HINT",
3534
+ v8::Integer::NewFromUnsigned(isolate, 0x8B8B));
3535
+
3536
+ tmpl->Set(isolate, "RASTERIZER_DISCARD", v8::Integer::NewFromUnsigned(isolate, 0x8C89));
3537
+
3538
+ tmpl->Set(isolate, "VERTEX_ARRAY_BINDING", v8::Integer::NewFromUnsigned(isolate, 0x85B5));
3539
+ tmpl->Set(isolate, "MAX_VERTEX_OUTPUT_COMPONENTS",
3540
+ v8::Integer::NewFromUnsigned(isolate, 0x9122));
3541
+ tmpl->Set(isolate, "MAX_FRAGMENT_INPUT_COMPONENTS",
3542
+ v8::Integer::NewFromUnsigned(isolate, 0x9125));
3543
+ tmpl->Set(isolate, "MAX_SERVER_WAIT_TIMEOUT", v8::Integer::NewFromUnsigned(isolate, 0x9111));
3544
+ tmpl->Set(isolate, "MAX_ELEMENT_INDEX", v8::Integer::NewFromUnsigned(isolate, 0x8D6B));
3545
+
3546
+ tmpl->Set(isolate, "RED", v8::Integer::NewFromUnsigned(isolate, 0x1903));
3547
+ tmpl->Set(isolate, "RGB8", v8::Integer::NewFromUnsigned(isolate, 0x8051));
3548
+ tmpl->Set(isolate, "RGBA8", v8::Integer::NewFromUnsigned(isolate, 0x8058));
3549
+ tmpl->Set(isolate, "RGB10_A2", v8::Integer::NewFromUnsigned(isolate, 0x8059));
3550
+ tmpl->Set(isolate, "TEXTURE_3D", v8::Integer::NewFromUnsigned(isolate, 0x806F));
3551
+
3552
+ tmpl->Set(isolate, "TEXTURE_WRAP_R", v8::Integer::NewFromUnsigned(isolate, 0x8072));
3553
+ tmpl->Set(isolate, "TEXTURE_MIN_LOD", v8::Integer::NewFromUnsigned(isolate, 0x813A));
3554
+ tmpl->Set(isolate, "TEXTURE_MAX_LOD", v8::Integer::NewFromUnsigned(isolate, 0x813B));
3555
+ tmpl->Set(isolate, "TEXTURE_BASE_LEVEL", v8::Integer::NewFromUnsigned(isolate, 0x813C));
3556
+ tmpl->Set(isolate, "TEXTURE_MAX_LEVEL", v8::Integer::NewFromUnsigned(isolate, 0x813D));
3557
+
3558
+
3559
+ tmpl->Set(isolate, "TEXTURE_COMPARE_MODE", v8::Integer::NewFromUnsigned(isolate, 0x884C));
3560
+ tmpl->Set(isolate, "TEXTURE_COMPARE_FUNC", v8::Integer::NewFromUnsigned(isolate, 0x884D));
3561
+ tmpl->Set(isolate, "SRGB", v8::Integer::NewFromUnsigned(isolate, 0x8C40));
3562
+ tmpl->Set(isolate, "SRGB8", v8::Integer::NewFromUnsigned(isolate, 0x8C41));
3563
+ tmpl->Set(isolate, "SRGB8_ALPHA8", v8::Integer::NewFromUnsigned(isolate, 0x8C43));
3564
+
3565
+ tmpl->Set(isolate, "COMPARE_REF_TO_TEXTURE", v8::Integer::NewFromUnsigned(isolate, 0x884E));
3566
+ tmpl->Set(isolate, "RGBA32F", v8::Integer::NewFromUnsigned(isolate, 0x8814));
3567
+ tmpl->Set(isolate, "RGB32F", v8::Integer::NewFromUnsigned(isolate, 0x8815));
3568
+ tmpl->Set(isolate, "RGBA16F", v8::Integer::NewFromUnsigned(isolate, 0x881A));
3569
+ tmpl->Set(isolate, "RGB16F", v8::Integer::NewFromUnsigned(isolate, 0x881B));
3570
+
3571
+ tmpl->Set(isolate, "TEXTURE_2D_ARRAY", v8::Integer::NewFromUnsigned(isolate, 0x8C1A));
3572
+ tmpl->Set(isolate, "TEXTURE_BINDING_2D_ARRAY", v8::Integer::NewFromUnsigned(isolate, 0x8C1D));
3573
+ tmpl->Set(isolate, "R11F_G11F_B10F", v8::Integer::NewFromUnsigned(isolate, 0x8C3A));
3574
+ tmpl->Set(isolate, "RGB9_E5", v8::Integer::NewFromUnsigned(isolate, 0x8C3D));
3575
+ tmpl->Set(isolate, "RGBA32UI", v8::Integer::NewFromUnsigned(isolate, 0x8D70));
3576
+
3577
+
3578
+ tmpl->Set(isolate, "RGB32UI", v8::Integer::NewFromUnsigned(isolate, 0x8D71));
3579
+ tmpl->Set(isolate, "RGBA16UI", v8::Integer::NewFromUnsigned(isolate, 0x8D76));
3580
+ tmpl->Set(isolate, "RGB16UI", v8::Integer::NewFromUnsigned(isolate, 0x8D77));
3581
+ tmpl->Set(isolate, "RGBA8UI", v8::Integer::NewFromUnsigned(isolate, 0x8D7C));
3582
+ tmpl->Set(isolate, "RGB8UI", v8::Integer::NewFromUnsigned(isolate, 0x8D7D));
3583
+
3584
+
3585
+ tmpl->Set(isolate, "RGBA32I", v8::Integer::NewFromUnsigned(isolate, 0x8D82));
3586
+ tmpl->Set(isolate, "RGB32I", v8::Integer::NewFromUnsigned(isolate, 0x8D83));
3587
+ tmpl->Set(isolate, "RGBA16I", v8::Integer::NewFromUnsigned(isolate, 0x8D88));
3588
+ tmpl->Set(isolate, "RGB16I", v8::Integer::NewFromUnsigned(isolate, 0x8D89));
3589
+ tmpl->Set(isolate, "RGBA8I", v8::Integer::NewFromUnsigned(isolate, 0x8D8E));
3590
+
3591
+
3592
+ tmpl->Set(isolate, "RGB8I", v8::Integer::NewFromUnsigned(isolate, 0x8D8F));
3593
+ tmpl->Set(isolate, "RED_INTEGER", v8::Integer::NewFromUnsigned(isolate, 0x8D94));
3594
+ tmpl->Set(isolate, "RGB_INTEGER", v8::Integer::NewFromUnsigned(isolate, 0x8D98));
3595
+ tmpl->Set(isolate, "RGBA_INTEGER", v8::Integer::NewFromUnsigned(isolate, 0x8D99));
3596
+ tmpl->Set(isolate, "R8", v8::Integer::NewFromUnsigned(isolate, 0x8229));
3597
+
3598
+
3599
+ tmpl->Set(isolate, "RG8", v8::Integer::NewFromUnsigned(isolate, 0x822B));
3600
+ tmpl->Set(isolate, "R16F", v8::Integer::NewFromUnsigned(isolate, 0x822D));
3601
+ tmpl->Set(isolate, "R32F", v8::Integer::NewFromUnsigned(isolate, 0x822E));
3602
+ tmpl->Set(isolate, "RG16F", v8::Integer::NewFromUnsigned(isolate, 0x822F));
3603
+ tmpl->Set(isolate, "RG32F", v8::Integer::NewFromUnsigned(isolate, 0x8230));
3604
+
3605
+
3606
+ tmpl->Set(isolate, "R8I", v8::Integer::NewFromUnsigned(isolate, 0x8231));
3607
+ tmpl->Set(isolate, "R8UI", v8::Integer::NewFromUnsigned(isolate, 0x8232));
3608
+ tmpl->Set(isolate, "R16I", v8::Integer::NewFromUnsigned(isolate, 0x8233));
3609
+ tmpl->Set(isolate, "R16UI", v8::Integer::NewFromUnsigned(isolate, 0x8234));
3610
+ tmpl->Set(isolate, "R32I", v8::Integer::NewFromUnsigned(isolate, 0x8235));
3611
+
3612
+
3613
+ tmpl->Set(isolate, "R32UI", v8::Integer::NewFromUnsigned(isolate, 0x8236));
3614
+ tmpl->Set(isolate, "RG8I", v8::Integer::NewFromUnsigned(isolate, 0x8237));
3615
+ tmpl->Set(isolate, "RG8UI", v8::Integer::NewFromUnsigned(isolate, 0x8238));
3616
+ tmpl->Set(isolate, "RG16I", v8::Integer::NewFromUnsigned(isolate, 0x8239));
3617
+ tmpl->Set(isolate, "RG16UI", v8::Integer::NewFromUnsigned(isolate, 0x823A));
3618
+
3619
+ tmpl->Set(isolate, "RG32I", v8::Integer::NewFromUnsigned(isolate, 0x823B));
3620
+ tmpl->Set(isolate, "RG32UI", v8::Integer::NewFromUnsigned(isolate, 0x823C));
3621
+ tmpl->Set(isolate, "R8_SNORM", v8::Integer::NewFromUnsigned(isolate, 0x8F94));
3622
+ tmpl->Set(isolate, "RG8_SNORM", v8::Integer::NewFromUnsigned(isolate, 0x8F95));
3623
+ tmpl->Set(isolate, "RGB8_SNORM", v8::Integer::NewFromUnsigned(isolate, 0x8F96));
3624
+
3625
+
3626
+ tmpl->Set(isolate, "RGBA8_SNORM", v8::Integer::NewFromUnsigned(isolate, 0x8F97));
3627
+ tmpl->Set(isolate, "RGB10_A2UI", v8::Integer::NewFromUnsigned(isolate, 0x906F));
3628
+ tmpl->Set(isolate, "TEXTURE_IMMUTABLE_FORMAT", v8::Integer::NewFromUnsigned(isolate, 0x912F));
3629
+ tmpl->Set(isolate, "TEXTURE_IMMUTABLE_LEVELS", v8::Integer::NewFromUnsigned(isolate, 0x82DF));
3630
+ tmpl->Set(isolate, "UNSIGNED_INT_2_10_10_10_REV",
3631
+ v8::Integer::NewFromUnsigned(isolate, 0x8368));
3632
+
3633
+
3634
+ tmpl->Set(isolate, "UNSIGNED_INT_10F_11F_11F_REV",
3635
+ v8::Integer::NewFromUnsigned(isolate, 0x8C3B));
3636
+ tmpl->Set(isolate, "UNSIGNED_INT_5_9_9_9_REV", v8::Integer::NewFromUnsigned(isolate, 0x8C3E));
3637
+ tmpl->Set(isolate, "FLOAT_32_UNSIGNED_INT_24_8_REV",
3638
+ v8::Integer::NewFromUnsigned(isolate, 0x8DAD));
3639
+ tmpl->Set(isolate, "UNSIGNED_INT_24_8", v8::Integer::NewFromUnsigned(isolate, 0x84FA));
3640
+ tmpl->Set(isolate, "HALF_FLOAT", v8::Integer::NewFromUnsigned(isolate, 0x140B));
3641
+
3642
+
3643
+ tmpl->Set(isolate, "RG", v8::Integer::NewFromUnsigned(isolate, 0x8227));
3644
+ tmpl->Set(isolate, "RG_INTEGER", v8::Integer::NewFromUnsigned(isolate, 0x8228));
3645
+ tmpl->Set(isolate, "INT_2_10_10_10_REV", v8::Integer::NewFromUnsigned(isolate, 0x8D9F));
3646
+ tmpl->Set(isolate, "QUERY_RESULT_AVAILABLE", v8::Integer::NewFromUnsigned(isolate, 0x8865));
3647
+ tmpl->Set(isolate, "QUERY_RESULT", v8::Integer::NewFromUnsigned(isolate, 0x8866));
3648
+
3649
+
3650
+ tmpl->Set(isolate, "CURRENT_QUERY", v8::Integer::NewFromUnsigned(isolate, 0x8867));
3651
+ tmpl->Set(isolate, "ANY_SAMPLES_PASSED", v8::Integer::NewFromUnsigned(isolate, 0x8C2F));
3652
+ tmpl->Set(isolate, "ANY_SAMPLES_PASSED_CONSERVATIVE",
3653
+ v8::Integer::NewFromUnsigned(isolate, 0x8D6A));
3654
+ tmpl->Set(isolate, "MAX_DRAW_BUFFERS", v8::Integer::NewFromUnsigned(isolate, 0x8824));
3655
+
3656
+ tmpl->Set(isolate, "DRAW_BUFFER0", v8::Integer::NewFromUnsigned(isolate, 0x8825));
3657
+ tmpl->Set(isolate, "DRAW_BUFFER1", v8::Integer::NewFromUnsigned(isolate, 0x8826));
3658
+ tmpl->Set(isolate, "DRAW_BUFFER2", v8::Integer::NewFromUnsigned(isolate, 0x8827));
3659
+ tmpl->Set(isolate, "DRAW_BUFFER3", v8::Integer::NewFromUnsigned(isolate, 0x8828));
3660
+ tmpl->Set(isolate, "DRAW_BUFFER4", v8::Integer::NewFromUnsigned(isolate, 0x8829));
3661
+ tmpl->Set(isolate, "DRAW_BUFFER5", v8::Integer::NewFromUnsigned(isolate, 0x882A));
3662
+ tmpl->Set(isolate, "DRAW_BUFFER6", v8::Integer::NewFromUnsigned(isolate, 0x882B));
3663
+ tmpl->Set(isolate, "DRAW_BUFFER7", v8::Integer::NewFromUnsigned(isolate, 0x882C));
3664
+ tmpl->Set(isolate, "DRAW_BUFFER8", v8::Integer::NewFromUnsigned(isolate, 0x882D));
3665
+ tmpl->Set(isolate, "DRAW_BUFFER9", v8::Integer::NewFromUnsigned(isolate, 0x882E));
3666
+ tmpl->Set(isolate, "DRAW_BUFFER10", v8::Integer::NewFromUnsigned(isolate, 0x882F));
3667
+
3668
+ /* Getting GL parameter information */
3669
+
3670
+ /* Textures */
3671
+
3672
+ tmpl->Set(isolate, "DRAW_BUFFER11", v8::Integer::NewFromUnsigned(isolate, 0x8830));
3673
+ tmpl->Set(isolate, "DRAW_BUFFER12", v8::Integer::NewFromUnsigned(isolate, 0x8831));
3674
+ tmpl->Set(isolate, "DRAW_BUFFER13", v8::Integer::NewFromUnsigned(isolate, 0x8832));
3675
+ tmpl->Set(isolate, "DRAW_BUFFER14", v8::Integer::NewFromUnsigned(isolate, 0x8833));
3676
+ tmpl->Set(isolate, "DRAW_BUFFER15", v8::Integer::NewFromUnsigned(isolate, 0x8834));
3677
+
3678
+ tmpl->Set(isolate, "MAX_COLOR_ATTACHMENTS", v8::Integer::NewFromUnsigned(isolate, 0x8CDF));
3679
+ tmpl->Set(isolate, "COLOR_ATTACHMENT1", v8::Integer::NewFromUnsigned(isolate, 0x8CE1));
3680
+ tmpl->Set(isolate, "COLOR_ATTACHMENT2", v8::Integer::NewFromUnsigned(isolate, 0x8CE2));
3681
+ tmpl->Set(isolate, "COLOR_ATTACHMENT3", v8::Integer::NewFromUnsigned(isolate, 0x8CE3));
3682
+ tmpl->Set(isolate, "COLOR_ATTACHMENT4", v8::Integer::NewFromUnsigned(isolate, 0x8CE4));
3683
+ tmpl->Set(isolate, "COLOR_ATTACHMENT5", v8::Integer::NewFromUnsigned(isolate, 0x8CE5));
3684
+ tmpl->Set(isolate, "COLOR_ATTACHMENT6", v8::Integer::NewFromUnsigned(isolate, 0x8CE6));
3685
+ tmpl->Set(isolate, "COLOR_ATTACHMENT7", v8::Integer::NewFromUnsigned(isolate, 0x8CE7));
3686
+ tmpl->Set(isolate, "COLOR_ATTACHMENT8", v8::Integer::NewFromUnsigned(isolate, 0x8CE8));
3687
+ tmpl->Set(isolate, "COLOR_ATTACHMENT9", v8::Integer::NewFromUnsigned(isolate, 0x8CE9));
3688
+ tmpl->Set(isolate, "COLOR_ATTACHMENT10", v8::Integer::NewFromUnsigned(isolate, 0x8CEA));
3689
+ tmpl->Set(isolate, "COLOR_ATTACHMENT11", v8::Integer::NewFromUnsigned(isolate, 0x8CEB));
3690
+ tmpl->Set(isolate, "COLOR_ATTACHMENT12", v8::Integer::NewFromUnsigned(isolate, 0x8CEC));
3691
+ tmpl->Set(isolate, "COLOR_ATTACHMENT13", v8::Integer::NewFromUnsigned(isolate, 0x8CED));
3692
+ tmpl->Set(isolate, "COLOR_ATTACHMENT14", v8::Integer::NewFromUnsigned(isolate, 0x8CEE));
3693
+ tmpl->Set(isolate, "COLOR_ATTACHMENT15", v8::Integer::NewFromUnsigned(isolate, 0x8CEF));
3694
+
3695
+ tmpl->Set(isolate, "SAMPLER_3D", v8::Integer::NewFromUnsigned(isolate, 0x8B5F));
3696
+ tmpl->Set(isolate, "SAMPLER_2D_SHADOW", v8::Integer::NewFromUnsigned(isolate, 0x8B62));
3697
+ tmpl->Set(isolate, "SAMPLER_2D_ARRAY", v8::Integer::NewFromUnsigned(isolate, 0x8DC1));
3698
+ tmpl->Set(isolate, "SAMPLER_2D_ARRAY_SHADOW", v8::Integer::NewFromUnsigned(isolate, 0x8DC4));
3699
+ tmpl->Set(isolate, "SAMPLER_CUBE_SHADOW", v8::Integer::NewFromUnsigned(isolate, 0x8DC5));
3700
+
3701
+ tmpl->Set(isolate, "INT_SAMPLER_2D", v8::Integer::NewFromUnsigned(isolate, 0x8DCA));
3702
+ tmpl->Set(isolate, "INT_SAMPLER_3D", v8::Integer::NewFromUnsigned(isolate, 0x8DCB));
3703
+ tmpl->Set(isolate, "INT_SAMPLER_CUBE", v8::Integer::NewFromUnsigned(isolate, 0x8DCC));
3704
+ tmpl->Set(isolate, "INT_SAMPLER_2D_ARRAY", v8::Integer::NewFromUnsigned(isolate, 0x8DCF));
3705
+ tmpl->Set(isolate, "UNSIGNED_INT_SAMPLER_2D", v8::Integer::NewFromUnsigned(isolate, 0x8DD2));
3706
+
3707
+ tmpl->Set(isolate, "UNSIGNED_INT_SAMPLER_3D", v8::Integer::NewFromUnsigned(isolate, 0x8DD3));
3708
+ tmpl->Set(isolate, "UNSIGNED_INT_SAMPLER_CUBE", v8::Integer::NewFromUnsigned(isolate, 0x8DD4));
3709
+ tmpl->Set(isolate, "UNSIGNED_INT_SAMPLER_2D_ARRAY",
3710
+ v8::Integer::NewFromUnsigned(isolate, 0x8DD7));
3711
+ tmpl->Set(isolate, "MAX_SAMPLES", v8::Integer::NewFromUnsigned(isolate, 0x8D57));
3712
+ tmpl->Set(isolate, "SAMPLER_BINDING", v8::Integer::NewFromUnsigned(isolate, 0x8919));
3713
+
3714
+ tmpl->Set(isolate, "PIXEL_PACK_BUFFER", v8::Integer::NewFromUnsigned(isolate, 0x88EB));
3715
+ tmpl->Set(isolate, "PIXEL_UNPACK_BUFFER", v8::Integer::NewFromUnsigned(isolate, 0x88EC));
3716
+ tmpl->Set(isolate, "PIXEL_PACK_BUFFER_BINDING", v8::Integer::NewFromUnsigned(isolate, 0x88ED));
3717
+ tmpl->Set(isolate, "PIXEL_UNPACK_BUFFER_BINDING",
3718
+ v8::Integer::NewFromUnsigned(isolate, 0x88EF));
3719
+ tmpl->Set(isolate, "COPY_READ_BUFFER", v8::Integer::NewFromUnsigned(isolate, 0x8F36));
3720
+
3721
+ tmpl->Set(isolate, "COPY_WRITE_BUFFER", v8::Integer::NewFromUnsigned(isolate, 0x8F37));
3722
+ tmpl->Set(isolate, "COPY_READ_BUFFER_BINDING", v8::Integer::NewFromUnsigned(isolate, 0x8F36));
3723
+ tmpl->Set(isolate, "COPY_WRITE_BUFFER_BINDING", v8::Integer::NewFromUnsigned(isolate, 0x8F37));
3724
+ tmpl->Set(isolate, "FLOAT_MAT2x3", v8::Integer::NewFromUnsigned(isolate, 0x8B65));
3725
+ tmpl->Set(isolate, "FLOAT_MAT2x4", v8::Integer::NewFromUnsigned(isolate, 0x8B66));
3726
+
3727
+ tmpl->Set(isolate, "FLOAT_MAT3x2", v8::Integer::NewFromUnsigned(isolate, 0x8B67));
3728
+ tmpl->Set(isolate, "FLOAT_MAT3x4", v8::Integer::NewFromUnsigned(isolate, 0x8B68));
3729
+ tmpl->Set(isolate, "FLOAT_MAT4x2", v8::Integer::NewFromUnsigned(isolate, 0x8B69));
3730
+ tmpl->Set(isolate, "FLOAT_MAT4x3", v8::Integer::NewFromUnsigned(isolate, 0x8B6A));
3731
+ tmpl->Set(isolate, "UNSIGNED_INT_VEC2", v8::Integer::NewFromUnsigned(isolate, 0x8DC6));
3732
+
3733
+ tmpl->Set(isolate, "UNSIGNED_INT_VEC3", v8::Integer::NewFromUnsigned(isolate, 0x8DC7));
3734
+ tmpl->Set(isolate, "UNSIGNED_INT_VEC4", v8::Integer::NewFromUnsigned(isolate, 0x8DC8));
3735
+ tmpl->Set(isolate, "UNSIGNED_NORMALIZED", v8::Integer::NewFromUnsigned(isolate, 0x8C17));
3736
+ tmpl->Set(isolate, "SIGNED_NORMALIZED", v8::Integer::NewFromUnsigned(isolate, 0x8F9C));
3737
+
3738
+ /* Vertex attributes */
3739
+
3740
+ tmpl->Set(isolate, "VERTEX_ATTRIB_ARRAY_INTEGER",
3741
+ v8::Integer::NewFromUnsigned(isolate, 0x88FD));
3742
+ tmpl->Set(isolate, "VERTEX_ATTRIB_ARRAY_DIVISOR",
3743
+ v8::Integer::NewFromUnsigned(isolate, 0x88FE));
3744
+ tmpl->Set(isolate, "TRANSFORM_FEEDBACK_BUFFER_MODE",
3745
+ v8::Integer::NewFromUnsigned(isolate, 0x8C7F));
3746
+ tmpl->Set(isolate, "MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS",
3747
+ v8::Integer::NewFromUnsigned(isolate, 0x8C80));
3748
+ tmpl->Set(isolate, "TRANSFORM_FEEDBACK_VARYINGS",
3749
+ v8::Integer::NewFromUnsigned(isolate, 0x8C83));
3750
+
3751
+ tmpl->Set(isolate, "TRANSFORM_FEEDBACK_BUFFER_START",
3752
+ v8::Integer::NewFromUnsigned(isolate, 0x8C84));
3753
+ tmpl->Set(isolate, "TRANSFORM_FEEDBACK_BUFFER_SIZE",
3754
+ v8::Integer::NewFromUnsigned(isolate, 0x8C85));
3755
+ tmpl->Set(isolate, "TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN",
3756
+ v8::Integer::NewFromUnsigned(isolate, 0x8C88));
3757
+ tmpl->Set(isolate, "MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS",
3758
+ v8::Integer::NewFromUnsigned(isolate, 0x8C8A));
3759
+
3760
+ /* Textures */
3761
+
3762
+ /* Pixel types */
3763
+
3764
+ tmpl->Set(isolate, "MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS",
3765
+ v8::Integer::NewFromUnsigned(isolate, 0x8C8B));
3766
+ tmpl->Set(isolate, "INTERLEAVED_ATTRIBS", v8::Integer::NewFromUnsigned(isolate, 0x8C8C));
3767
+ tmpl->Set(isolate, "SEPARATE_ATTRIBS", v8::Integer::NewFromUnsigned(isolate, 0x8C8D));
3768
+ tmpl->Set(isolate, "TRANSFORM_FEEDBACK_BUFFER", v8::Integer::NewFromUnsigned(isolate, 0x8C8E));
3769
+ tmpl->Set(isolate, "TRANSFORM_FEEDBACK_BUFFER_BINDING",
3770
+ v8::Integer::NewFromUnsigned(isolate, 0x8C8F));
3771
+
3772
+ tmpl->Set(isolate, "TRANSFORM_FEEDBACK", v8::Integer::NewFromUnsigned(isolate, 0x8E22));
3773
+ tmpl->Set(isolate, "TRANSFORM_FEEDBACK_PAUSED", v8::Integer::NewFromUnsigned(isolate, 0x8E23));
3774
+ tmpl->Set(isolate, "TRANSFORM_FEEDBACK_ACTIVE", v8::Integer::NewFromUnsigned(isolate, 0x8E24));
3775
+ tmpl->Set(isolate, "TRANSFORM_FEEDBACK_BINDING", v8::Integer::NewFromUnsigned(isolate, 0x8E25));
3776
+
3777
+ /* Pixel types */
3778
+
3779
+ /* Queries */
3780
+
3781
+ tmpl->Set(isolate, "FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING",
3782
+ v8::Integer::NewFromUnsigned(isolate, 0x8210));
3783
+ tmpl->Set(isolate, "FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE",
3784
+ v8::Integer::NewFromUnsigned(isolate, 0x8211));
3785
+ tmpl->Set(isolate, "FRAMEBUFFER_ATTACHMENT_RED_SIZE",
3786
+ v8::Integer::NewFromUnsigned(isolate, 0x8212));
3787
+ tmpl->Set(isolate, "FRAMEBUFFER_ATTACHMENT_GREEN_SIZE",
3788
+ v8::Integer::NewFromUnsigned(isolate, 0x8213));
3789
+ tmpl->Set(isolate, "FRAMEBUFFER_ATTACHMENT_BLUE_SIZE",
3790
+ v8::Integer::NewFromUnsigned(isolate, 0x8214));
3791
+
3792
+ /* Queries */
3793
+
3794
+ /* Draw buffers */
3795
+
3796
+ tmpl->Set(isolate, "FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE",
3797
+ v8::Integer::NewFromUnsigned(isolate, 0x8215));
3798
+ tmpl->Set(isolate, "FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE",
3799
+ v8::Integer::NewFromUnsigned(isolate, 0x8216));
3800
+ tmpl->Set(isolate, "FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE",
3801
+ v8::Integer::NewFromUnsigned(isolate, 0x8217));
3802
+ tmpl->Set(isolate, "FRAMEBUFFER_DEFAULT", v8::Integer::NewFromUnsigned(isolate, 0x8218));
3803
+ tmpl->Set(isolate, "DEPTH_STENCIL_ATTACHMENT", v8::Integer::NewFromUnsigned(isolate, 0x821A));
3804
+
3805
+ tmpl->Set(isolate, "DEPTH_STENCIL", v8::Integer::NewFromUnsigned(isolate, 0x84F9));
3806
+ tmpl->Set(isolate, "DEPTH24_STENCIL8", v8::Integer::NewFromUnsigned(isolate, 0x88F0));
3807
+ tmpl->Set(isolate, "DRAW_FRAMEBUFFER_BINDING", v8::Integer::NewFromUnsigned(isolate, 0x8CA6));
3808
+ tmpl->Set(isolate, "READ_FRAMEBUFFER", v8::Integer::NewFromUnsigned(isolate, 0x8CA8));
3809
+ tmpl->Set(isolate, "DRAW_FRAMEBUFFER", v8::Integer::NewFromUnsigned(isolate, 0x8CA9));
3810
+
3811
+ tmpl->Set(isolate, "READ_FRAMEBUFFER_BINDING", v8::Integer::NewFromUnsigned(isolate, 0x8CAA));
3812
+ tmpl->Set(isolate, "RENDERBUFFER_SAMPLES", v8::Integer::NewFromUnsigned(isolate, 0x8CAB));
3813
+ tmpl->Set(isolate, "FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER",
3814
+ v8::Integer::NewFromUnsigned(isolate, 0x8CD4));
3815
+ tmpl->Set(isolate, "FRAMEBUFFER_INCOMPLETE_MULTISAMPLE",
3816
+ v8::Integer::NewFromUnsigned(isolate, 0x8D56));
3817
+ tmpl->Set(isolate, "UNIFORM_BUFFER", v8::Integer::NewFromUnsigned(isolate, 0x8A11));
3818
+
3819
+ tmpl->Set(isolate, "UNIFORM_BUFFER_BINDING", v8::Integer::NewFromUnsigned(isolate, 0x8A28));
3820
+ tmpl->Set(isolate, "UNIFORM_BUFFER_START", v8::Integer::NewFromUnsigned(isolate, 0x8A29));
3821
+ tmpl->Set(isolate, "UNIFORM_BUFFER_SIZE", v8::Integer::NewFromUnsigned(isolate, 0x8A2A));
3822
+ tmpl->Set(isolate, "MAX_VERTEX_UNIFORM_BLOCKS", v8::Integer::NewFromUnsigned(isolate, 0x8A2B));
3823
+ tmpl->Set(isolate, "MAX_FRAGMENT_UNIFORM_BLOCKS",
3824
+ v8::Integer::NewFromUnsigned(isolate, 0x8A2D));
3825
+
3826
+ tmpl->Set(isolate, "MAX_COMBINED_UNIFORM_BLOCKS",
3827
+ v8::Integer::NewFromUnsigned(isolate, 0x8A2E));
3828
+ tmpl->Set(isolate, "MAX_UNIFORM_BUFFER_BINDINGS",
3829
+ v8::Integer::NewFromUnsigned(isolate, 0x8A2F));
3830
+ tmpl->Set(isolate, "MAX_UNIFORM_BLOCK_SIZE", v8::Integer::NewFromUnsigned(isolate, 0x8A30));
3831
+ tmpl->Set(isolate, "MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS",
3832
+ v8::Integer::NewFromUnsigned(isolate, 0x8A31));
3833
+ tmpl->Set(isolate, "MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS",
3834
+ v8::Integer::NewFromUnsigned(isolate, 0x8A33));
3835
+
3836
+ tmpl->Set(isolate, "UNIFORM_BUFFER_OFFSET_ALIGNMENT",
3837
+ v8::Integer::NewFromUnsigned(isolate, 0x8A34));
3838
+ tmpl->Set(isolate, "ACTIVE_UNIFORM_BLOCKS", v8::Integer::NewFromUnsigned(isolate, 0x8A36));
3839
+ tmpl->Set(isolate, "UNIFORM_TYPE", v8::Integer::NewFromUnsigned(isolate, 0x8A37));
3840
+ tmpl->Set(isolate, "UNIFORM_SIZE", v8::Integer::NewFromUnsigned(isolate, 0x8A38));
3841
+ tmpl->Set(isolate, "UNIFORM_BLOCK_INDEX", v8::Integer::NewFromUnsigned(isolate, 0x8A3A));
3842
+
3843
+ tmpl->Set(isolate, "UNIFORM_OFFSET", v8::Integer::NewFromUnsigned(isolate, 0x8A3B));
3844
+ tmpl->Set(isolate, "UNIFORM_ARRAY_STRIDE", v8::Integer::NewFromUnsigned(isolate, 0x8A3C));
3845
+ tmpl->Set(isolate, "UNIFORM_MATRIX_STRIDE", v8::Integer::NewFromUnsigned(isolate, 0x8A3D));
3846
+
3847
+ /* Draw buffers */
3848
+
3849
+ /* Samplers */
3850
+
3851
+ tmpl->Set(isolate, "UNIFORM_IS_ROW_MAJOR", v8::Integer::NewFromUnsigned(isolate, 0x8A3E));
3852
+ tmpl->Set(isolate, "UNIFORM_BLOCK_BINDING", v8::Integer::NewFromUnsigned(isolate, 0x8A3F));
3853
+ tmpl->Set(isolate, "UNIFORM_BLOCK_DATA_SIZE", v8::Integer::NewFromUnsigned(isolate, 0x8A40));
3854
+ tmpl->Set(isolate, "UNIFORM_BLOCK_ACTIVE_UNIFORMS",
3855
+ v8::Integer::NewFromUnsigned(isolate, 0x8A42));
3856
+ tmpl->Set(isolate, "UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES",
3857
+ v8::Integer::NewFromUnsigned(isolate, 0x8A43));
3858
+
3859
+ tmpl->Set(isolate, "UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER",
3860
+ v8::Integer::NewFromUnsigned(isolate, 0x8A44));
3861
+ tmpl->Set(isolate, "UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER",
3862
+ v8::Integer::NewFromUnsigned(isolate, 0x8A46));
3863
+ tmpl->Set(isolate, "OBJECT_TYPE", v8::Integer::NewFromUnsigned(isolate, 0x9112));
3864
+ tmpl->Set(isolate, "SYNC_CONDITION", v8::Integer::NewFromUnsigned(isolate, 0x9113));
3865
+ tmpl->Set(isolate, "SYNC_STATUS", v8::Integer::NewFromUnsigned(isolate, 0x9114));
3866
+
3867
+ tmpl->Set(isolate, "SYNC_FLAGS", v8::Integer::NewFromUnsigned(isolate, 0x9115));
3868
+ tmpl->Set(isolate, "SYNC_FENCE", v8::Integer::NewFromUnsigned(isolate, 0x9116));
3869
+ tmpl->Set(isolate, "SYNC_GPU_COMMANDS_COMPLETE", v8::Integer::NewFromUnsigned(isolate, 0x9117));
3870
+ tmpl->Set(isolate, "UNSIGNALED", v8::Integer::NewFromUnsigned(isolate, 0x9118));
3871
+ tmpl->Set(isolate, "SIGNALED", v8::Integer::NewFromUnsigned(isolate, 0x9119));
3872
+
3873
+ /* Samplers */
3874
+
3875
+ /* Buffers */
3876
+
3877
+ tmpl->Set(isolate, "ALREADY_SIGNALED", v8::Integer::NewFromUnsigned(isolate, 0x911A));
3878
+ tmpl->Set(isolate, "TIMEOUT_EXPIRED", v8::Integer::NewFromUnsigned(isolate, 0x911B));
3879
+ tmpl->Set(isolate, "CONDITION_SATISFIED", v8::Integer::NewFromUnsigned(isolate, 0x911C));
3880
+ tmpl->Set(isolate, "WAIT_FAILED", v8::Integer::NewFromUnsigned(isolate, 0x911D));
3881
+ tmpl->Set(isolate, "SYNC_FLUSH_COMMANDS_BIT",
3882
+ v8::Integer::NewFromUnsigned(isolate, 0x00000001));
3883
+
3884
+ tmpl->Set(isolate, "COLOR", v8::Integer::NewFromUnsigned(isolate, 0x1800));
3885
+ tmpl->Set(isolate, "DEPTH", v8::Integer::NewFromUnsigned(isolate, 0x1801));
3886
+ tmpl->Set(isolate, "STENCIL", v8::Integer::NewFromUnsigned(isolate, 0x1802));
3887
+
3888
+ /* Buffers */
3889
+
3890
+ /* Data types */
3891
+
3892
+ tmpl->Set(isolate, "MIN", v8::Integer::NewFromUnsigned(isolate, 0x8007));
3893
+ tmpl->Set(isolate, "MAX", v8::Integer::NewFromUnsigned(isolate, 0x8008));
3894
+ tmpl->Set(isolate, "DEPTH_COMPONENT24", v8::Integer::NewFromUnsigned(isolate, 0x81A6));
3895
+ tmpl->Set(isolate, "STREAM_READ", v8::Integer::NewFromUnsigned(isolate, 0x88E1));
3896
+ tmpl->Set(isolate, "STREAM_COPY", v8::Integer::NewFromUnsigned(isolate, 0x88E2));
3897
+
3898
+ tmpl->Set(isolate, "STATIC_READ", v8::Integer::NewFromUnsigned(isolate, 0x88E5));
3899
+ tmpl->Set(isolate, "STATIC_COPY", v8::Integer::NewFromUnsigned(isolate, 0x88E6));
3900
+ tmpl->Set(isolate, "DYNAMIC_READ", v8::Integer::NewFromUnsigned(isolate, 0x88E9));
3901
+ tmpl->Set(isolate, "DYNAMIC_COPY", v8::Integer::NewFromUnsigned(isolate, 0x88EA));
3902
+ tmpl->Set(isolate, "DEPTH_COMPONENT32F", v8::Integer::NewFromUnsigned(isolate, 0x8CAC));
3903
+ tmpl->Set(isolate, "DEPTH32F_STENCIL8", v8::Integer::NewFromUnsigned(isolate, 0x8CAD));
3904
+
3905
+ /* Data types */
3906
+
3907
+ tmpl->Set(isolate, "INVALID_INDEX", v8::Integer::NewFromUnsigned(isolate, 0xFFFFFFFF));
3908
+ tmpl->Set(isolate, "TIMEOUT_IGNORED", v8::Int32::New(isolate, -1));
3909
+
3910
+ /* Vertex attributes */
3911
+
3912
+ /* Transform feedback */
3913
+
3914
+ tmpl->Set(isolate, "MAX_CLIENT_WAIT_TIMEOUT_WEBGL",
3915
+ v8::Integer::NewFromUnsigned(isolate, 0x9247));
3916
+
3917
+ /* Transform feedback */
3918
+
3919
+ }
3920
+
3921
+
3922
+ void WebGL2RenderingContext::SetMethods(v8::Isolate *isolate,
3923
+ const v8::Local<v8::ObjectTemplate> &tmpl) {
3924
+
3925
+ tmpl->Set(
3926
+ ConvertToV8String(isolate, "beginQuery"),
3927
+ v8::FunctionTemplate::New(isolate, &BeginQuery)
3928
+ );
3929
+
3930
+ tmpl->Set(
3931
+ ConvertToV8String(isolate, "beginTransformFeedback"),
3932
+ v8::FunctionTemplate::New(isolate, &BeginTransformFeedback)
3933
+ );
3934
+
3935
+ tmpl->Set(
3936
+ ConvertToV8String(isolate, "bindBufferBase"),
3937
+ v8::FunctionTemplate::New(isolate, &BindBufferBase)
3938
+ );
3939
+
3940
+ tmpl->Set(
3941
+ ConvertToV8String(isolate, "bindBufferRange"),
3942
+ v8::FunctionTemplate::New(isolate, &BindBufferRange)
3943
+ );
3944
+
3945
+ tmpl->Set(
3946
+ ConvertToV8String(isolate, "bindSampler"),
3947
+ v8::FunctionTemplate::New(isolate, &BindSampler)
3948
+ );
3949
+
3950
+ tmpl->Set(
3951
+ ConvertToV8String(isolate, "bindTransformFeedback"),
3952
+ v8::FunctionTemplate::New(isolate, &BindTransformFeedback)
3953
+ );
3954
+
3955
+ tmpl->Set(
3956
+ ConvertToV8String(isolate, "bindVertexArray"),
3957
+ v8::FunctionTemplate::New(isolate, &BindVertexArray)
3958
+ );
3959
+
3960
+ tmpl->Set(
3961
+ ConvertToV8String(isolate, "blitFramebuffer"),
3962
+ v8::FunctionTemplate::New(isolate, &BlitFramebuffer)
3963
+ );
3964
+
3965
+ tmpl->Set(
3966
+ ConvertToV8String(isolate, "clearBufferfi"),
3967
+ v8::FunctionTemplate::New(isolate, &ClearBufferfi)
3968
+ );
3969
+
3970
+ tmpl->Set(
3971
+ ConvertToV8String(isolate, "clearBufferfv"),
3972
+ v8::FunctionTemplate::New(isolate, &ClearBufferfv)
3973
+ );
3974
+
3975
+ tmpl->Set(
3976
+ ConvertToV8String(isolate, "clearBufferiv"),
3977
+ v8::FunctionTemplate::New(isolate, &ClearBufferiv)
3978
+ );
3979
+
3980
+ tmpl->Set(
3981
+ ConvertToV8String(isolate, "clearBufferuiv"),
3982
+ v8::FunctionTemplate::New(isolate, &ClearBufferuiv)
3983
+ );
3984
+
3985
+ tmpl->Set(
3986
+ ConvertToV8String(isolate, "clientWaitSync"),
3987
+ v8::FunctionTemplate::New(isolate, &ClientWaitSync)
3988
+ );
3989
+
3990
+ tmpl->Set(
3991
+ ConvertToV8String(isolate, "compressedTexSubImage3D"),
3992
+ v8::FunctionTemplate::New(isolate, &CompressedTexSubImage3D)
3993
+ );
3994
+
3995
+ tmpl->Set(
3996
+ ConvertToV8String(isolate, "copyBufferSubData"),
3997
+ v8::FunctionTemplate::New(isolate, &CopyBufferSubData)
3998
+ );
3999
+
4000
+ tmpl->Set(
4001
+ ConvertToV8String(isolate, "copyTexSubImage3D"),
4002
+ v8::FunctionTemplate::New(isolate, &CopyTexSubImage3D)
4003
+ );
4004
+
4005
+ tmpl->Set(
4006
+ ConvertToV8String(isolate, "createQuery"),
4007
+ v8::FunctionTemplate::New(isolate, &CreateQuery)
4008
+ );
4009
+
4010
+ tmpl->Set(
4011
+ ConvertToV8String(isolate, "createSampler"),
4012
+ v8::FunctionTemplate::New(isolate, &CreateSampler)
4013
+ );
4014
+
4015
+ tmpl->Set(
4016
+ ConvertToV8String(isolate, "createTransformFeedback"),
4017
+ v8::FunctionTemplate::New(isolate, &CreateTransformFeedback)
4018
+ );
4019
+
4020
+ tmpl->Set(
4021
+ ConvertToV8String(isolate, "createVertexArray"),
4022
+ v8::FunctionTemplate::New(isolate, &CreateVertexArray)
4023
+ );
4024
+
4025
+ tmpl->Set(
4026
+ ConvertToV8String(isolate, "deleteQuery"),
4027
+ v8::FunctionTemplate::New(isolate, &DeleteQuery)
4028
+ );
4029
+
4030
+
4031
+ tmpl->Set(
4032
+ ConvertToV8String(isolate, "deleteSampler"),
4033
+ v8::FunctionTemplate::New(isolate, &DeleteSampler)
4034
+ );
4035
+
4036
+ tmpl->Set(
4037
+ ConvertToV8String(isolate, "deleteSync"),
4038
+ v8::FunctionTemplate::New(isolate, &DeleteSync)
4039
+ );
4040
+
4041
+ tmpl->Set(
4042
+ ConvertToV8String(isolate, "deleteTransformFeedback"),
4043
+ v8::FunctionTemplate::New(isolate, &DeleteTransformFeedback)
4044
+ );
4045
+
4046
+ tmpl->Set(
4047
+ ConvertToV8String(isolate, "deleteVertexArray"),
4048
+ v8::FunctionTemplate::New(isolate, &DeleteVertexArray)
4049
+ );
4050
+
4051
+ tmpl->Set(
4052
+ ConvertToV8String(isolate, "drawArraysInstanced"),
4053
+ v8::FunctionTemplate::New(isolate, &DrawArraysInstanced)
4054
+ );
4055
+
4056
+ tmpl->Set(
4057
+ ConvertToV8String(isolate, "drawBuffers"),
4058
+ v8::FunctionTemplate::New(isolate, &DrawBuffers)
4059
+ );
4060
+
4061
+ tmpl->Set(
4062
+ ConvertToV8String(isolate, "drawElementsInstanced"),
4063
+ v8::FunctionTemplate::New(isolate, &DrawElementsInstanced)
4064
+ );
4065
+
4066
+ tmpl->Set(
4067
+ ConvertToV8String(isolate, "drawRangeElements"),
4068
+ v8::FunctionTemplate::New(isolate, &DrawRangeElements)
4069
+ );
4070
+
4071
+ tmpl->Set(
4072
+ ConvertToV8String(isolate, "endQuery"),
4073
+ v8::FunctionTemplate::New(isolate, &EndQuery)
4074
+ );
4075
+
4076
+ tmpl->Set(
4077
+ ConvertToV8String(isolate, "endTransformFeedback"),
4078
+ v8::FunctionTemplate::New(isolate, &EndTransformFeedback)
4079
+ );
4080
+
4081
+ tmpl->Set(
4082
+ ConvertToV8String(isolate, "fenceSync"),
4083
+ v8::FunctionTemplate::New(isolate, &FenceSync)
4084
+ );
4085
+
4086
+ tmpl->Set(
4087
+ ConvertToV8String(isolate, "framebufferTextureLayer"),
4088
+ v8::FunctionTemplate::New(isolate, &FramebufferTextureLayer)
4089
+ );
4090
+
4091
+ tmpl->Set(
4092
+ ConvertToV8String(isolate, "uniform1ui"),
4093
+ v8::FunctionTemplate::New(isolate, &Uniform1ui)
4094
+ );
4095
+
4096
+ tmpl->Set(
4097
+ ConvertToV8String(isolate, "uniform1uiv"),
4098
+ v8::FunctionTemplate::New(isolate, &Uniform1uiv)
4099
+ );
4100
+
4101
+ tmpl->Set(
4102
+ ConvertToV8String(isolate, "uniform2ui"),
4103
+ v8::FunctionTemplate::New(isolate, &Uniform2ui)
4104
+ );
4105
+
4106
+ tmpl->Set(
4107
+ ConvertToV8String(isolate, "uniform2uiv"),
4108
+ v8::FunctionTemplate::New(isolate, &Uniform2uiv)
4109
+ );
4110
+
4111
+ tmpl->Set(
4112
+ ConvertToV8String(isolate, "uniform3ui"),
4113
+ v8::FunctionTemplate::New(isolate, &Uniform3ui)
4114
+ );
4115
+
4116
+ tmpl->Set(
4117
+ ConvertToV8String(isolate, "uniform3uiv"),
4118
+ v8::FunctionTemplate::New(isolate, &Uniform3uiv)
4119
+ );
4120
+
4121
+ tmpl->Set(
4122
+ ConvertToV8String(isolate, "uniform4ui"),
4123
+ v8::FunctionTemplate::New(isolate, &Uniform4ui)
4124
+ );
4125
+
4126
+ tmpl->Set(
4127
+ ConvertToV8String(isolate, "uniform4uiv"),
4128
+ v8::FunctionTemplate::New(isolate, &Uniform4uiv)
4129
+ );
4130
+
4131
+
4132
+ tmpl->Set(
4133
+ ConvertToV8String(isolate, "uniformBlockBinding"),
4134
+ v8::FunctionTemplate::New(isolate, &UniformBlockBinding)
4135
+ );
4136
+
4137
+
4138
+ tmpl->Set(
4139
+ ConvertToV8String(isolate, "uniformMatrix2x3fv"),
4140
+ v8::FunctionTemplate::New(isolate, &UniformMatrix2x3fv)
4141
+ );
4142
+
4143
+ tmpl->Set(
4144
+ ConvertToV8String(isolate, "uniformMatrix2x4fv"),
4145
+ v8::FunctionTemplate::New(isolate, &UniformMatrix2x4fv)
4146
+ );
4147
+
4148
+ tmpl->Set(
4149
+ ConvertToV8String(isolate, "uniformMatrix3x2fv"),
4150
+ v8::FunctionTemplate::New(isolate, &UniformMatrix3x2fv)
4151
+ );
4152
+
4153
+
4154
+ tmpl->Set(
4155
+ ConvertToV8String(isolate, "uniformMatrix3x4fv"),
4156
+ v8::FunctionTemplate::New(isolate, &UniformMatrix3x4fv)
4157
+ );
4158
+
4159
+ tmpl->Set(
4160
+ ConvertToV8String(isolate, "uniformMatrix4x2fv"),
4161
+ v8::FunctionTemplate::New(isolate, &UniformMatrix4x2fv)
4162
+ );
4163
+
4164
+ tmpl->Set(
4165
+ ConvertToV8String(isolate, "uniformMatrix4x3fv"),
4166
+ v8::FunctionTemplate::New(isolate, &UniformMatrix4x3fv)
4167
+ );
4168
+
4169
+ tmpl->Set(
4170
+ ConvertToV8String(isolate, "uniformMatrix4x3fv"),
4171
+ v8::FunctionTemplate::New(isolate, &UniformMatrix4x3fv)
4172
+ );
4173
+
4174
+ tmpl->Set(
4175
+ ConvertToV8String(isolate, "vertexAttribDivisor"),
4176
+ v8::FunctionTemplate::New(isolate, &VertexAttribDivisor)
4177
+ );
4178
+
4179
+ tmpl->Set(
4180
+ ConvertToV8String(isolate, "vertexAttribI4i"),
4181
+ v8::FunctionTemplate::New(isolate, &VertexAttribI4i)
4182
+ );
4183
+
4184
+ tmpl->Set(
4185
+ ConvertToV8String(isolate, "vertexAttribI4iv"),
4186
+ v8::FunctionTemplate::New(isolate, &VertexAttribI4iv)
4187
+ );
4188
+
4189
+ tmpl->Set(
4190
+ ConvertToV8String(isolate, "vertexAttribI4ui"),
4191
+ v8::FunctionTemplate::New(isolate, &VertexAttribI4ui)
4192
+ );
4193
+
4194
+ tmpl->Set(
4195
+ ConvertToV8String(isolate, "vertexAttribI4uiv"),
4196
+ v8::FunctionTemplate::New(isolate, &VertexAttribI4uiv)
4197
+ );
4198
+
4199
+ tmpl->Set(
4200
+ ConvertToV8String(isolate, "getActiveUniformBlockName"),
4201
+ v8::FunctionTemplate::New(isolate, &GetActiveUniformBlockName)
4202
+ );
4203
+
4204
+ tmpl->Set(
4205
+ ConvertToV8String(isolate, "getActiveUniformBlockParameter"),
4206
+ v8::FunctionTemplate::New(isolate, &GetActiveUniformBlockParameter)
4207
+ );
4208
+
4209
+ tmpl->Set(
4210
+ ConvertToV8String(isolate, "getActiveUniforms"),
4211
+ v8::FunctionTemplate::New(isolate, &GetActiveUniforms)
4212
+ );
4213
+
4214
+ tmpl->Set(
4215
+ ConvertToV8String(isolate, "getBufferSubData"),
4216
+ v8::FunctionTemplate::New(isolate, &GetBufferSubData)
4217
+ );
4218
+
4219
+
4220
+ tmpl->Set(
4221
+ ConvertToV8String(isolate, "getFragDataLocation"),
4222
+ v8::FunctionTemplate::New(isolate, &GetFragDataLocation)
4223
+ );
4224
+
4225
+
4226
+ tmpl->Set(
4227
+ ConvertToV8String(isolate, "getIndexedParameter"),
4228
+ v8::FunctionTemplate::New(isolate, &GetIndexedParameter)
4229
+ );
4230
+
4231
+ tmpl->Set(
4232
+ ConvertToV8String(isolate, "getInternalformatParameter"),
4233
+ v8::FunctionTemplate::New(isolate, &GetInternalformatParameter)
4234
+ );
4235
+
4236
+ tmpl->Set(
4237
+ ConvertToV8String(isolate, "getParameter"),
4238
+ v8::FunctionTemplate::New(isolate, &GetParameter)
4239
+ );
4240
+
4241
+ tmpl->Set(
4242
+ ConvertToV8String(isolate, "getQueryParameter"),
4243
+ v8::FunctionTemplate::New(isolate, &GetQueryParameter)
4244
+ );
4245
+
4246
+
4247
+ tmpl->Set(
4248
+ ConvertToV8String(isolate, "getQuery"),
4249
+ v8::FunctionTemplate::New(isolate, &GetQuery)
4250
+ );
4251
+
4252
+ tmpl->Set(
4253
+ ConvertToV8String(isolate, "getSamplerParameter"),
4254
+ v8::FunctionTemplate::New(isolate, &GetSamplerParameter)
4255
+ );
4256
+
4257
+ tmpl->Set(
4258
+ ConvertToV8String(isolate, "getSyncParameter"),
4259
+ v8::FunctionTemplate::New(isolate, &GetSyncParameter)
4260
+ );
4261
+
4262
+ tmpl->Set(
4263
+ ConvertToV8String(isolate, "getTransformFeedbackVarying"),
4264
+ v8::FunctionTemplate::New(isolate, &GetTransformFeedbackVarying)
4265
+ );
4266
+
4267
+ tmpl->Set(
4268
+ ConvertToV8String(isolate, "getUniformBlockIndex"),
4269
+ v8::FunctionTemplate::New(isolate, &GetUniformBlockIndex)
4270
+ );
4271
+
4272
+ tmpl->Set(
4273
+ ConvertToV8String(isolate, "getUniformIndices"),
4274
+ v8::FunctionTemplate::New(isolate, &GetUniformIndices)
4275
+ );
4276
+
4277
+ tmpl->Set(
4278
+ ConvertToV8String(isolate, "invalidateFramebuffer"),
4279
+ v8::FunctionTemplate::New(isolate, &InvalidateFramebuffer)
4280
+ );
4281
+
4282
+ tmpl->Set(
4283
+ ConvertToV8String(isolate, "invalidateSubFramebuffer"),
4284
+ v8::FunctionTemplate::New(isolate, &InvalidateSubFramebuffer)
4285
+ );
4286
+
4287
+
4288
+ tmpl->Set(
4289
+ ConvertToV8String(isolate, "isQuery"),
4290
+ v8::FunctionTemplate::New(isolate, &IsQuery)
4291
+ );
4292
+
4293
+ tmpl->Set(
4294
+ ConvertToV8String(isolate, "isSampler"),
4295
+ v8::FunctionTemplate::New(isolate, &IsSampler)
4296
+ );
4297
+
4298
+ tmpl->Set(
4299
+ ConvertToV8String(isolate, "isSync"),
4300
+ v8::FunctionTemplate::New(isolate, &IsSync)
4301
+ );
4302
+
4303
+ tmpl->Set(
4304
+ ConvertToV8String(isolate, "isTransformFeedback"),
4305
+ v8::FunctionTemplate::New(isolate, &IsTransformFeedback)
4306
+ );
4307
+
4308
+ tmpl->Set(
4309
+ ConvertToV8String(isolate, "isVertexArray"),
4310
+ v8::FunctionTemplate::New(isolate, &IsVertexArray)
4311
+ );
4312
+
4313
+
4314
+ tmpl->Set(
4315
+ ConvertToV8String(isolate, "pauseTransformFeedback"),
4316
+ v8::FunctionTemplate::New(isolate, &PauseTransformFeedback)
4317
+ );
4318
+
4319
+ tmpl->Set(
4320
+ ConvertToV8String(isolate, "readBuffer"),
4321
+ v8::FunctionTemplate::New(isolate, &ReadBuffer)
4322
+ );
4323
+
4324
+ tmpl->Set(
4325
+ ConvertToV8String(isolate, "renderbufferStorageMultisample"),
4326
+ v8::FunctionTemplate::New(isolate, &RenderbufferStorageMultisample)
4327
+ );
4328
+
4329
+
4330
+ tmpl->Set(
4331
+ ConvertToV8String(isolate, "resumeTransformFeedback"),
4332
+ v8::FunctionTemplate::New(isolate, &ResumeTransformFeedback)
4333
+ );
4334
+
4335
+ tmpl->Set(
4336
+ ConvertToV8String(isolate, "samplerParameterf"),
4337
+ v8::FunctionTemplate::New(isolate, &SamplerParameterf)
4338
+ );
4339
+
4340
+ tmpl->Set(
4341
+ ConvertToV8String(isolate, "samplerParameteri"),
4342
+ v8::FunctionTemplate::New(isolate, &SamplerParameteri)
4343
+ );
4344
+
4345
+ tmpl->Set(
4346
+ ConvertToV8String(isolate, "texImage3D"),
4347
+ v8::FunctionTemplate::New(isolate, &TexImage3D)
4348
+ );
4349
+
4350
+
4351
+ tmpl->Set(
4352
+ ConvertToV8String(isolate, "texStorage2D"),
4353
+ v8::FunctionTemplate::New(isolate, &TexStorage2D)
4354
+ );
4355
+
4356
+ tmpl->Set(
4357
+ ConvertToV8String(isolate, "texStorage3D"),
4358
+ v8::FunctionTemplate::New(isolate, &TexStorage3D)
4359
+ );
4360
+
4361
+ tmpl->Set(
4362
+ ConvertToV8String(isolate, "texSubImage3D"),
4363
+ v8::FunctionTemplate::New(isolate, &TexSubImage3D)
4364
+ );
4365
+
4366
+ tmpl->Set(
4367
+ ConvertToV8String(isolate, "transformFeedbackVaryings"),
4368
+ v8::FunctionTemplate::New(isolate, &TransformFeedbackVaryings)
4369
+ );
4370
+ }
4371
+
4372
+ void WebGL2RenderingContext::SetProps(v8::Isolate *isolate,
4373
+ const v8::Local<v8::ObjectTemplate> &webgl2RenderingContextTpl) {
4374
+
4375
+ }