@nativescript/canvas 2.0.0-alpha.20 → 2.0.0-alpha.21

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 (234) hide show
  1. package/Canvas/common.d.ts +2 -0
  2. package/Canvas/common.js +6 -0
  3. package/Canvas/common.js.map +1 -1
  4. package/Canvas/index.android.d.ts +0 -2
  5. package/Canvas/index.android.js +8 -22
  6. package/Canvas/index.android.js.map +1 -1
  7. package/Canvas/index.d.ts +7 -0
  8. package/Canvas/index.ios.d.ts +0 -2
  9. package/Canvas/index.ios.js +7 -26
  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 +0 -2
  18. package/Canvas2D/CanvasRenderingContext2D/index.js +120 -138
  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 +5 -5
  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/ImageAsset/index.d.ts +2 -2
  28. package/ImageAsset/index.js +33 -37
  29. package/ImageAsset/index.js.map +1 -1
  30. package/ImageBitmap/index.d.ts +0 -2
  31. package/ImageBitmap/index.js +23 -29
  32. package/ImageBitmap/index.js.map +1 -1
  33. package/SVG/SVG.js +1 -1
  34. package/TextDecoder/index.d.ts +0 -2
  35. package/TextDecoder/index.js +3 -12
  36. package/TextDecoder/index.js.map +1 -1
  37. package/TextEncoder/index.d.ts +0 -2
  38. package/TextEncoder/index.js +4 -13
  39. package/TextEncoder/index.js.map +1 -1
  40. package/WebGL/WebGLExtensions/index.d.ts +0 -9
  41. package/WebGL/WebGLExtensions/index.js +17 -74
  42. package/WebGL/WebGLExtensions/index.js.map +1 -1
  43. package/WebGL/WebGLRenderingContext/common.d.ts +0 -2
  44. package/WebGL/WebGLRenderingContext/common.js +0 -10
  45. package/WebGL/WebGLRenderingContext/common.js.map +1 -1
  46. package/WebGL/WebGLRenderingContext/index.js +159 -298
  47. package/WebGL/WebGLRenderingContext/index.js.map +1 -1
  48. package/WebGL2/WebGL2RenderingContext/index.js +107 -195
  49. package/WebGL2/WebGL2RenderingContext/index.js.map +1 -1
  50. package/angular/esm2020/index.mjs +5 -5
  51. package/angular/fesm2015/nativescript-canvas-angular.mjs +4 -4
  52. package/angular/fesm2015/nativescript-canvas-angular.mjs.map +1 -1
  53. package/angular/fesm2020/nativescript-canvas-angular.mjs +4 -4
  54. package/angular/fesm2020/nativescript-canvas-angular.mjs.map +1 -1
  55. package/index.js.map +1 -1
  56. package/package.json +1 -1
  57. package/platforms/android/canvas-release.aar +0 -0
  58. package/platforms/android/include.gradle +15 -0
  59. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative +0 -0
  60. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h +87 -57
  61. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative.h +10 -0
  62. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_ios.h +142 -0
  63. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +2589 -110
  64. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist +0 -0
  65. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  66. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.abi.json +1174 -89
  67. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.private.swiftinterface +2 -2
  68. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  69. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +2 -2
  70. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  71. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/CanvasNative +0 -0
  72. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h +174 -114
  73. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative.h +10 -0
  74. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_ios.h +142 -0
  75. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +2589 -110
  76. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Info.plist +0 -0
  77. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  78. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  79. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.abi.json +1174 -89
  80. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +2 -2
  81. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  82. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftinterface +2 -2
  83. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.abi.json +1174 -89
  84. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +2 -2
  85. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  86. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +2 -2
  87. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +42 -31
  88. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  89. package/platforms/ios/Podfile +3 -0
  90. package/platforms/ios/build.xcconfig +3 -3
  91. package/platforms/ios/src/CanvasModule.h +0 -2
  92. package/platforms/ios/src/CanvasModule.mm +4 -4
  93. package/platforms/ios/src/NSOperationQueueWrapper.h +11 -0
  94. package/platforms/ios/src/NSOperationQueueWrapper.mm +74 -0
  95. package/platforms/ios/src/cpp/Caches.cpp +35 -0
  96. package/platforms/ios/src/cpp/Caches.h +186 -0
  97. package/platforms/ios/src/cpp/CanvasJSIModule.cpp +1582 -0
  98. package/platforms/ios/src/cpp/CanvasJSIModule.h +7 -34
  99. package/platforms/ios/src/cpp/Common.h +30 -0
  100. package/platforms/ios/src/cpp/ConcurrentMap.h +54 -0
  101. package/platforms/ios/src/cpp/Helpers.h +304 -38
  102. package/platforms/ios/src/cpp/ImageAssetImpl.cpp +802 -0
  103. package/platforms/ios/src/cpp/ImageAssetImpl.h +44 -12
  104. package/platforms/ios/src/cpp/ImageBitmapImpl.cpp +189 -0
  105. package/platforms/ios/src/cpp/ImageBitmapImpl.h +22 -16
  106. package/platforms/ios/src/cpp/JSICallback.h +61 -5
  107. package/platforms/ios/src/cpp/JSIReadFileCallback.h +86 -6
  108. package/platforms/ios/src/cpp/JSIRuntime.cpp +21 -0
  109. package/platforms/ios/src/cpp/JSIRuntime.h +7 -0
  110. package/platforms/ios/src/cpp/OneByteStringResource.cpp +25 -0
  111. package/platforms/ios/src/cpp/OneByteStringResource.h +21 -0
  112. package/platforms/ios/src/cpp/RafImpl.cpp +8 -0
  113. package/platforms/ios/src/cpp/RafImpl.h +11 -8
  114. package/platforms/ios/src/cpp/TextDecoderImpl.cpp +188 -0
  115. package/platforms/ios/src/cpp/TextDecoderImpl.h +20 -14
  116. package/platforms/ios/src/cpp/TextEncoderImpl.cpp +139 -0
  117. package/platforms/ios/src/cpp/TextEncoderImpl.h +20 -11
  118. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.cpp +71 -0
  119. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.h +27 -13
  120. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.cpp +89 -0
  121. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.h +26 -13
  122. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.cpp +2402 -0
  123. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.h +264 -21
  124. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.cpp +203 -0
  125. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.h +26 -12
  126. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.cpp +800 -0
  127. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.h +172 -13
  128. package/platforms/ios/src/cpp/canvas2d/Path2D.cpp +449 -0
  129. package/platforms/ios/src/cpp/canvas2d/Path2D.h +41 -12
  130. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.cpp +253 -0
  131. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.h +50 -12
  132. package/platforms/ios/src/cpp/gl.h +57 -7
  133. package/platforms/ios/src/cpp/gl3stub.c +425 -0
  134. package/platforms/ios/src/cpp/gl3stub.h +665 -0
  135. package/platforms/ios/src/cpp/gles3jni.h +37 -0
  136. package/platforms/ios/src/cpp/include/robin_hood.h +2544 -0
  137. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.cpp +93 -0
  138. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.h +33 -13
  139. package/platforms/ios/src/cpp/webgl/WebGLBuffer.h +41 -6
  140. package/platforms/ios/src/cpp/webgl/WebGLFramebuffer.h +46 -10
  141. package/platforms/ios/src/cpp/webgl/WebGLProgram.h +40 -5
  142. package/platforms/ios/src/cpp/webgl/WebGLRenderbuffer.h +40 -6
  143. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.cpp +6691 -0
  144. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.h +261 -390
  145. package/platforms/ios/src/cpp/webgl/{WebGLRenderingContextBase.mm → WebGLRenderingContextBase.cpp} +17 -16
  146. package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.h +15 -36
  147. package/platforms/ios/src/cpp/webgl/WebGLShader.h +40 -6
  148. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.cpp +50 -0
  149. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.h +66 -11
  150. package/platforms/ios/src/cpp/webgl/WebGLTexture.h +40 -6
  151. package/platforms/ios/src/cpp/webgl/WebGLUniformLocation.h +44 -8
  152. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.cpp +126 -0
  153. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.h +25 -12
  154. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.cpp +35 -0
  155. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.h +25 -5
  156. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.cpp +41 -0
  157. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.h +25 -5
  158. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.cpp +323 -0
  159. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.h +47 -13
  160. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.h +49 -6
  161. package/platforms/ios/src/cpp/webgl/extensions/EXT_shader_texture_lodImpl.h +37 -15
  162. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.h +47 -6
  163. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.h +49 -6
  164. package/platforms/ios/src/cpp/webgl/extensions/OES_fbo_render_mipmap.h +36 -15
  165. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.h +44 -6
  166. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_floatImpl.h +38 -15
  167. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_float_linearImpl.h +37 -16
  168. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.h +41 -6
  169. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_float_linearImpl.h +40 -16
  170. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.cpp +102 -0
  171. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.h +69 -14
  172. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.h +51 -8
  173. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.h +49 -6
  174. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.h +49 -8
  175. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.h +76 -6
  176. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.h +57 -6
  177. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.h +53 -6
  178. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.h +59 -6
  179. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.h +46 -6
  180. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.cpp +43 -0
  181. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.h +126 -14
  182. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.cpp +32 -0
  183. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.h +61 -12
  184. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.cpp +4517 -0
  185. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.h +139 -343
  186. package/platforms/ios/src/cpp/webgl2/WebGLQuery.h +40 -4
  187. package/platforms/ios/src/cpp/webgl2/WebGLSampler.h +42 -3
  188. package/platforms/ios/src/cpp/webgl2/WebGLSyncImpl.h +44 -11
  189. package/platforms/ios/src/cpp/webgl2/WebGLTransformFeedback.h +42 -4
  190. package/platforms/ios/src/cpp/webgl2/WebGLVertexArrayObject.h +43 -4
  191. package/platforms/ios/src/module.modulemap +1 -0
  192. package/platforms/ios/src/cpp/CanvasJSIModule.mm +0 -1105
  193. package/platforms/ios/src/cpp/ImageAssetImpl.mm +0 -417
  194. package/platforms/ios/src/cpp/ImageBitmapImpl.mm +0 -126
  195. package/platforms/ios/src/cpp/RafImpl.mm +0 -10
  196. package/platforms/ios/src/cpp/TextDecoderImpl.mm +0 -97
  197. package/platforms/ios/src/cpp/TextEncoderImpl.mm +0 -60
  198. package/platforms/ios/src/cpp/VecMutableBuffer.h +0 -46
  199. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.cc +0 -6156
  200. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.h +0 -2867
  201. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.mm +0 -42
  202. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.mm +0 -49
  203. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.mm +0 -1972
  204. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.mm +0 -68
  205. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.mm +0 -149
  206. package/platforms/ios/src/cpp/canvas2d/Path2D.mm +0 -335
  207. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.mm +0 -68
  208. package/platforms/ios/src/cpp/rust/cxx.cc +0 -793
  209. package/platforms/ios/src/cpp/rust/cxx.h +0 -1111
  210. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.mm +0 -39
  211. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.mm +0 -5958
  212. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.mm +0 -40
  213. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.mm +0 -108
  214. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.mm +0 -28
  215. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.mm +0 -42
  216. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.mm +0 -295
  217. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.mm +0 -40
  218. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.mm +0 -37
  219. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.mm +0 -28
  220. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.mm +0 -31
  221. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.mm +0 -28
  222. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.mm +0 -127
  223. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.mm +0 -45
  224. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.mm +0 -45
  225. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.mm +0 -31
  226. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.mm +0 -70
  227. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.mm +0 -47
  228. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.mm +0 -46
  229. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.mm +0 -49
  230. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.mm +0 -30
  231. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.mm +0 -177
  232. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.mm +0 -64
  233. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.mm +0 -4551
  234. /package/platforms/ios/src/cpp/{OnRafCallback.mm → OnRafCallback.cpp} +0 -0
@@ -4,15 +4,56 @@
4
4
 
5
5
  #pragma once
6
6
 
7
- #include "rust/cxx.h"
8
- #import <NativeScript/JSIRuntime.h>
9
7
  #include "gl.h"
10
8
  #include <vector>
9
+ #include "Helpers.h"
10
+ #include "Common.h"
11
+ #include "Caches.h"
11
12
 
12
- using namespace facebook;
13
+ class EXT_texture_filter_anisotropicImpl {
14
+ public:
15
+ static v8::Local<v8::FunctionTemplate> GetCtor(v8::Isolate *isolate) {
16
+ auto cache = Caches::Get(isolate);
17
+ auto ctor = cache->EXT_texture_filter_anisotropicTmpl.get();
18
+ if (ctor != nullptr) {
19
+ return ctor->Get(isolate);
20
+ }
13
21
 
14
- class JSI_EXPORT EXT_texture_filter_anisotropicImpl : public jsi::HostObject {
15
- jsi::Value get(jsi::Runtime &, const jsi::PropNameID &name) override;
22
+ v8::Local<v8::FunctionTemplate> ctorTmpl = v8::FunctionTemplate::New(isolate);
23
+ ctorTmpl->InstanceTemplate()->SetInternalFieldCount(1);
24
+ ctorTmpl->SetClassName(ConvertToV8String(isolate, "EXT_texture_filter_anisotropic"));
16
25
 
17
- std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
26
+ auto tmpl = ctorTmpl->InstanceTemplate();
27
+ tmpl->SetInternalFieldCount(1);
28
+ tmpl->Set(ConvertToV8String(isolate, "MAX_TEXTURE_MAX_ANISOTROPY_EXT"),
29
+ v8::Number::New(isolate, (double) GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT));
30
+ tmpl->Set(ConvertToV8String(isolate, "TEXTURE_MAX_ANISOTROPY_EXT"),
31
+ v8::Number::New(isolate, (double) GL_TEXTURE_MAX_ANISOTROPY_EXT));
32
+ tmpl->Set(ConvertToV8String(isolate, "ext_name"),
33
+ ConvertToV8String(isolate, "EXT_texture_filter_anisotropic"));
34
+
35
+ cache->EXT_texture_filter_anisotropicTmpl =
36
+ std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
37
+ return ctorTmpl;
38
+ }
39
+
40
+ static v8::Local<v8::Object>
41
+ NewInstance(v8::Isolate *isolate, EXT_texture_filter_anisotropicImpl *filterAnisotropic) {
42
+ auto context = isolate->GetCurrentContext();
43
+ v8::EscapableHandleScope scope(isolate);
44
+ auto object = EXT_texture_filter_anisotropicImpl::GetCtor(isolate)->GetFunction(
45
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
46
+ SetNativeType(isolate, object, NativeType::EXT_texture_filter_anisotropic);
47
+ auto ext = v8::External::New(isolate, filterAnisotropic);
48
+ object->SetInternalField(0, ext);
49
+ return scope.Escape(object);
50
+ }
51
+
52
+ static EXT_texture_filter_anisotropicImpl *GetPointer(const v8::Local<v8::Object> &object) {
53
+ auto ptr = object->GetInternalField(0).As<v8::External>()->Value();
54
+ if (ptr == nullptr) {
55
+ return nullptr;
56
+ }
57
+ return static_cast<EXT_texture_filter_anisotropicImpl *>(ptr);
58
+ }
18
59
  };
@@ -4,15 +4,58 @@
4
4
 
5
5
  #pragma once
6
6
 
7
- #include "rust/cxx.h"
8
- #import <NativeScript/JSIRuntime.h>
9
7
  #include "gl.h"
10
8
  #include <vector>
9
+ #include "Helpers.h"
10
+ #include "Common.h"
11
+ #include "Caches.h"
11
12
 
12
- using namespace facebook;
13
+ class OES_element_index_uintImpl {
14
+ public:
15
+ static v8::Local<v8::FunctionTemplate> GetCtor(v8::Isolate *isolate) {
16
+ auto cache = Caches::Get(isolate);
17
+ auto ctor = cache->OES_element_index_uintTmpl.get();
18
+ if (ctor != nullptr) {
19
+ return ctor->Get(isolate);
20
+ }
13
21
 
14
- class JSI_EXPORT OES_element_index_uintImpl : public jsi::HostObject {
15
- jsi::Value get(jsi::Runtime &, const jsi::PropNameID &name) override;
22
+ v8::Local<v8::FunctionTemplate> ctorTmpl = v8::FunctionTemplate::New(isolate);
23
+ ctorTmpl->InstanceTemplate()->SetInternalFieldCount(1);
24
+ ctorTmpl->SetClassName(ConvertToV8String(isolate, "OES_element_index_uint"));
16
25
 
17
- std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
26
+ auto tmpl = ctorTmpl->InstanceTemplate();
27
+ tmpl->SetInternalFieldCount(1);
28
+
29
+ tmpl->Set(ConvertToV8String(isolate, "UNSIGNED_INT"),
30
+ v8::Number::New(isolate, (double) GL_UNSIGNED_INT));
31
+
32
+ tmpl->Set(ConvertToV8String(isolate, "ext_name"),
33
+ ConvertToV8String(isolate, "OES_element_index_uint"));
34
+
35
+ cache->OES_element_index_uintTmpl =
36
+ std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
37
+ return ctorTmpl;
38
+ }
39
+
40
+ static v8::Local<v8::Object>
41
+ NewInstance(v8::Isolate *isolate, OES_element_index_uintImpl *element) {
42
+ auto context = isolate->GetCurrentContext();
43
+ v8::EscapableHandleScope scope(isolate);
44
+ auto object = OES_element_index_uintImpl::GetCtor(isolate)->GetFunction(
45
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
46
+ SetNativeType(isolate, object, NativeType::OES_element_index_uint);
47
+ auto ext = v8::External::New(isolate, element);
48
+ object->SetInternalField(0, ext);
49
+ object->Set(context, ConvertToV8String(isolate, "ext_name"),
50
+ ConvertToV8String(isolate, "OES_element_index_uint"));
51
+ return scope.Escape(object);
52
+ }
53
+
54
+ static OES_element_index_uintImpl *GetPointer(const v8::Local<v8::Object> &object) {
55
+ auto ptr = object->GetInternalField(0).As<v8::External>()->Value();
56
+ if (ptr == nullptr) {
57
+ return nullptr;
58
+ }
59
+ return static_cast<OES_element_index_uintImpl *>(ptr);
60
+ }
18
61
  };
@@ -4,27 +4,48 @@
4
4
 
5
5
  #pragma once
6
6
 
7
- #include "rust/cxx.h"
8
- #include <NativeScript/JSIRuntime.h>
9
7
 
10
- using namespace facebook;
11
8
 
12
- class JSI_EXPORT OES_fbo_render_mipmapImpl : public jsi::HostObject {
9
+ class OES_fbo_render_mipmapImpl {
13
10
  public:
14
- std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override {
15
- std::vector<jsi::PropNameID> ret;
16
- ret.emplace_back(
17
- jsi::PropNameID::forUtf8(rt, std::string("ext_name")));
18
- return ret;
11
+ static v8::Local<v8::FunctionTemplate> GetCtor(v8::Isolate *isolate) {
12
+ auto cache = Caches::Get(isolate);
13
+ auto ctor = cache->OES_fbo_render_mipmapTmpl.get();
14
+ if (ctor != nullptr) {
15
+ return ctor->Get(isolate);
16
+ }
17
+
18
+ v8::Local<v8::FunctionTemplate> ctorTmpl = v8::FunctionTemplate::New(isolate);
19
+ ctorTmpl->InstanceTemplate()->SetInternalFieldCount(1);
20
+ ctorTmpl->SetClassName(ConvertToV8String(isolate, "OES_fbo_render_mipmap"));
21
+
22
+ auto tmpl = ctorTmpl->InstanceTemplate();
23
+ tmpl->SetInternalFieldCount(1);
24
+
25
+ cache->OES_fbo_render_mipmapTmpl =
26
+ std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
27
+ return ctorTmpl;
19
28
  }
20
29
 
21
- jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override {
22
- auto methodName = name.utf8(runtime);
30
+ static v8::Local<v8::Object>
31
+ NewInstance(v8::Isolate *isolate, OES_fbo_render_mipmapImpl *texture) {
32
+ auto context = isolate->GetCurrentContext();
33
+ v8::EscapableHandleScope scope(isolate);
34
+ auto object = OES_fbo_render_mipmapImpl::GetCtor(isolate)->GetFunction(
35
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
36
+ SetNativeType(isolate, object, NativeType::OES_fbo_render_mipmap);
37
+ auto ext = v8::External::New(isolate, texture);
38
+ object->SetInternalField(0, ext);
39
+ object->Set(context, ConvertToV8String(isolate, "ext_name"),
40
+ ConvertToV8String(isolate, "OES_fbo_render_mipmap"));
41
+ return scope.Escape(object);
42
+ }
23
43
 
24
- if (methodName == "ext_name") {
25
- return jsi::String::createFromAscii(runtime, "OES_fbo_render_mipmap");
44
+ static OES_fbo_render_mipmapImpl *GetPointer(const v8::Local<v8::Object> &object) {
45
+ auto ptr = object->GetInternalField(0).As<v8::External>()->Value();
46
+ if (ptr == nullptr) {
47
+ return nullptr;
26
48
  }
27
-
28
- return jsi::Value::undefined();
49
+ return static_cast<OES_fbo_render_mipmapImpl *>(ptr);
29
50
  }
30
51
  };
@@ -4,15 +4,53 @@
4
4
 
5
5
  #pragma once
6
6
 
7
- #include "rust/cxx.h"
8
- #import <NativeScript/JSIRuntime.h>
9
7
  #include "gl.h"
10
8
  #include <vector>
9
+ #include "Caches.h"
10
+ #include "Common.h"
11
+ #include "Helpers.h"
11
12
 
12
- using namespace facebook;
13
+ class OES_standard_derivativesImpl {
14
+ public:
15
+ static v8::Local<v8::FunctionTemplate> GetCtor(v8::Isolate *isolate) {
16
+ auto cache = Caches::Get(isolate);
17
+ auto ctor = cache->OES_standard_derivativesTmpl.get();
18
+ if (ctor != nullptr) {
19
+ return ctor->Get(isolate);
20
+ }
13
21
 
14
- class JSI_EXPORT OES_standard_derivativesImpl : public jsi::HostObject {
15
- jsi::Value get(jsi::Runtime &, const jsi::PropNameID &name) override;
22
+ v8::Local<v8::FunctionTemplate> ctorTmpl = v8::FunctionTemplate::New(isolate);
23
+ ctorTmpl->InstanceTemplate()->SetInternalFieldCount(1);
24
+ ctorTmpl->SetClassName(ConvertToV8String(isolate, "OES_standard_derivatives"));
16
25
 
17
- std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
26
+ auto tmpl = ctorTmpl->InstanceTemplate();
27
+ tmpl->SetInternalFieldCount(1);
28
+ tmpl->Set(ConvertToV8String(isolate, "FRAGMENT_SHADER_DERIVATIVE_HINT_OES"),
29
+ v8::Number::New(isolate, GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES));
30
+ tmpl->Set(ConvertToV8String(isolate, "ext_name"),
31
+ ConvertToV8String(isolate, "OES_standard_derivatives"));
32
+ cache->OES_standard_derivativesTmpl =
33
+ std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
34
+ return ctorTmpl;
35
+ }
36
+
37
+ static v8::Local<v8::Object>
38
+ NewInstance(v8::Isolate *isolate, OES_standard_derivativesImpl *derivatives) {
39
+ auto context = isolate->GetCurrentContext();
40
+ v8::EscapableHandleScope scope(isolate);
41
+ auto object = OES_standard_derivativesImpl::GetCtor(isolate)->GetFunction(
42
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
43
+ SetNativeType(isolate, object, NativeType::OES_standard_derivatives);
44
+ auto ext = v8::External::New(isolate, derivatives);
45
+ object->SetInternalField(0, ext);
46
+ return scope.Escape(object);
47
+ }
48
+
49
+ static OES_standard_derivativesImpl *GetPointer(const v8::Local<v8::Object> &object) {
50
+ auto ptr = object->GetInternalField(0).As<v8::External>()->Value();
51
+ if (ptr == nullptr) {
52
+ return nullptr;
53
+ }
54
+ return static_cast<OES_standard_derivativesImpl *>(ptr);
55
+ }
18
56
  };
@@ -4,27 +4,50 @@
4
4
 
5
5
  #pragma once
6
6
 
7
- #include "rust/cxx.h"
8
- #import <NativeScript/JSIRuntime.h>
7
+ #include "Common.h"
8
+ #include "Helpers.h"
9
9
 
10
- using namespace facebook;
11
10
 
12
- class JSI_EXPORT OES_texture_floatImpl : public jsi::HostObject {
11
+ class OES_texture_floatImpl {
13
12
  public:
14
- std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override {
15
- std::vector<jsi::PropNameID> ret;
16
- ret.emplace_back(
17
- jsi::PropNameID::forUtf8(rt, std::string("ext_name")));
18
- return ret;
13
+ static v8::Local<v8::FunctionTemplate> GetCtor(v8::Isolate *isolate) {
14
+ auto cache = Caches::Get(isolate);
15
+ auto ctor = cache->OES_texture_floatTmpl.get();
16
+ if (ctor != nullptr) {
17
+ return ctor->Get(isolate);
18
+ }
19
+
20
+ v8::Local<v8::FunctionTemplate> ctorTmpl = v8::FunctionTemplate::New(isolate);
21
+ ctorTmpl->InstanceTemplate()->SetInternalFieldCount(1);
22
+ ctorTmpl->SetClassName(ConvertToV8String(isolate, "OES_texture_float"));
23
+
24
+ auto tmpl = ctorTmpl->InstanceTemplate();
25
+ tmpl->SetInternalFieldCount(1);
26
+ tmpl->Set(ConvertToV8String(isolate, "ext_name"),
27
+ ConvertToV8String(isolate, "OES_texture_float"));
28
+
29
+ cache->OES_texture_floatTmpl =
30
+ std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
31
+ return ctorTmpl;
19
32
  }
20
33
 
21
- jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override {
22
- auto methodName = name.utf8(runtime);
34
+ static v8::Local<v8::Object> NewInstance(v8::Isolate *isolate, OES_texture_floatImpl *texture) {
35
+ auto context = isolate->GetCurrentContext();
36
+ v8::EscapableHandleScope scope(isolate);
37
+ auto object = WebGLShader::GetCtor(isolate)->GetFunction(
38
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
39
+ SetNativeType(isolate, object, NativeType::OES_texture_float);
40
+ auto ext = v8::External::New(isolate, texture);
41
+ object->SetInternalField(0, ext);
42
+ return scope.Escape(object);
43
+ }
23
44
 
24
- if (methodName == "ext_name") {
25
- return jsi::String::createFromAscii(runtime, "OES_texture_float");
45
+ static OES_texture_floatImpl *GetPointer(const v8::Local<v8::Object> &object) {
46
+ auto ptr = object->GetInternalField(0).As<v8::External>()->Value();
47
+ if (ptr == nullptr) {
48
+ return nullptr;
26
49
  }
27
-
28
- return jsi::Value::undefined();
50
+ return static_cast<OES_texture_floatImpl *>(ptr);
29
51
  }
52
+
30
53
  };
@@ -4,28 +4,49 @@
4
4
 
5
5
  #pragma once
6
6
 
7
- #include "rust/cxx.h"
8
- #import <NativeScript/JSIRuntime.h>
7
+ #include "Helpers.h"
8
+ #include "Common.h"
9
9
 
10
- using namespace facebook;
10
+ class OES_texture_float_linearImpl {
11
+ public:
12
+
13
+ static v8::Local<v8::FunctionTemplate> GetCtor(v8::Isolate *isolate) {
14
+ auto cache = Caches::Get(isolate);
15
+ auto ctor = cache->OES_texture_float_linearTmpl.get();
16
+ if (ctor != nullptr) {
17
+ return ctor->Get(isolate);
18
+ }
11
19
 
12
- class JSI_EXPORT OES_texture_float_linearImpl : public jsi::HostObject {
20
+ v8::Local<v8::FunctionTemplate> ctorTmpl = v8::FunctionTemplate::New(isolate);
21
+ ctorTmpl->InstanceTemplate()->SetInternalFieldCount(1);
22
+ ctorTmpl->SetClassName(ConvertToV8String(isolate, "OES_texture_float_linear"));
13
23
 
14
- public:
15
- std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override {
16
- std::vector<jsi::PropNameID> ret;
17
- ret.emplace_back(
18
- jsi::PropNameID::forUtf8(rt, std::string("ext_name")));
19
- return ret;
24
+ auto tmpl = ctorTmpl->InstanceTemplate();
25
+ tmpl->SetInternalFieldCount(1);
26
+ tmpl->Set(ConvertToV8String(isolate, "ext_name"), ConvertToV8String(isolate, "OES_texture_float_linear"));
27
+
28
+ cache->OES_texture_float_linearTmpl =
29
+ std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
30
+ return ctorTmpl;
20
31
  }
21
32
 
22
- jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override {
23
- auto methodName = name.utf8(runtime);
33
+ static v8::Local<v8::Object> NewInstance(v8::Isolate *isolate, OES_texture_float_linearImpl *texture) {
34
+ auto context = isolate->GetCurrentContext();
35
+ v8::EscapableHandleScope scope(isolate);
36
+ auto object = OES_texture_float_linearImpl::GetCtor(isolate)->GetFunction(
37
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
38
+ SetNativeType(isolate, object, NativeType::OES_texture_float_linear);
39
+ auto ext = v8::External::New(isolate, texture);
40
+ object->SetInternalField(0, ext);
41
+ return scope.Escape(object);
42
+ }
24
43
 
25
- if (methodName == "ext_name") {
26
- return jsi::String::createFromAscii(runtime, "OES_texture_float_linear");
44
+ static OES_texture_float_linearImpl *GetPointer(const v8::Local<v8::Object> &object) {
45
+ auto ptr = object->GetInternalField(0).As<v8::External>()->Value();
46
+ if (ptr == nullptr) {
47
+ return nullptr;
27
48
  }
28
-
29
- return jsi::Value::undefined();
49
+ return static_cast<OES_texture_float_linearImpl *>(ptr);
30
50
  }
51
+
31
52
  };
@@ -4,15 +4,50 @@
4
4
 
5
5
  #pragma once
6
6
 
7
- #include "rust/cxx.h"
8
- #import <NativeScript/JSIRuntime.h>
9
7
  #include "gl.h"
10
8
  #include <vector>
9
+ #include "Helpers.h"
10
+ #include "Common.h"
11
+ #include "Caches.h"
11
12
 
12
- using namespace facebook;
13
+ class OES_texture_half_floatImpl {
14
+ public:
15
+ static v8::Local<v8::FunctionTemplate> GetCtor(v8::Isolate *isolate) {
16
+ auto cache = Caches::Get(isolate);
17
+ auto ctor = cache->OES_texture_half_floatTmpl.get();
18
+ if (ctor != nullptr) {
19
+ return ctor->Get(isolate);
20
+ }
13
21
 
14
- class JSI_EXPORT OES_texture_half_floatImpl : public jsi::HostObject {
15
- jsi::Value get(jsi::Runtime &, const jsi::PropNameID &name) override;
22
+ v8::Local<v8::FunctionTemplate> ctorTmpl = v8::FunctionTemplate::New(isolate);
23
+ ctorTmpl->InstanceTemplate()->SetInternalFieldCount(1);
24
+ ctorTmpl->SetClassName(ConvertToV8String(isolate, "OES_texture_half_float"));
16
25
 
17
- std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
26
+ auto tmpl = ctorTmpl->InstanceTemplate();
27
+ tmpl->SetInternalFieldCount(1);
28
+ tmpl->Set(ConvertToV8String(isolate, "ext_name"), ConvertToV8String(isolate, "OES_texture_half_float"));
29
+ tmpl->Set(ConvertToV8String(isolate, "HALF_FLOAT_OES"), v8::Number::New(isolate, (double ) GL_HALF_FLOAT_OES));
30
+ cache->OES_texture_half_floatTmpl =
31
+ std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
32
+ return ctorTmpl;
33
+ }
34
+
35
+ static v8::Local<v8::Object> NewInstance(v8::Isolate *isolate, OES_texture_half_floatImpl *texture) {
36
+ auto context = isolate->GetCurrentContext();
37
+ v8::EscapableHandleScope scope(isolate);
38
+ auto object = OES_texture_half_floatImpl::GetCtor(isolate)->GetFunction(
39
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
40
+ SetNativeType(isolate, object, NativeType::OES_texture_half_float);
41
+ auto ext = v8::External::New(isolate, texture);
42
+ object->SetInternalField(0, ext);
43
+ return scope.Escape(object);
44
+ }
45
+
46
+ static OES_texture_half_floatImpl *GetPointer(const v8::Local<v8::Object> &object) {
47
+ auto ptr = object->GetInternalField(0).As<v8::External>()->Value();
48
+ if (ptr == nullptr) {
49
+ return nullptr;
50
+ }
51
+ return static_cast<OES_texture_half_floatImpl *>(ptr);
52
+ }
18
53
  };
@@ -4,27 +4,51 @@
4
4
 
5
5
  #pragma once
6
6
 
7
- #include "rust/cxx.h"
8
- #import <NativeScript/JSIRuntime.h>
7
+ #include "Helpers.h"
8
+ #include "Common.h"
9
+ #include "Caches.h"
9
10
 
10
- using namespace facebook;
11
-
12
- class JSI_EXPORT OES_texture_half_float_linearImpl : public jsi::HostObject {
11
+ class OES_texture_half_float_linearImpl {
13
12
  public:
14
- std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override {
15
- std::vector<jsi::PropNameID> ret;
16
- ret.emplace_back(
17
- jsi::PropNameID::forUtf8(rt, std::string("ext_name")));
18
- return ret;
13
+
14
+ static v8::Local<v8::FunctionTemplate> GetCtor(v8::Isolate *isolate) {
15
+ auto cache = Caches::Get(isolate);
16
+ auto ctor = cache->OES_texture_half_float_linearTmpl.get();
17
+ if (ctor != nullptr) {
18
+ return ctor->Get(isolate);
19
+ }
20
+
21
+ v8::Local<v8::FunctionTemplate> ctorTmpl = v8::FunctionTemplate::New(isolate);
22
+ ctorTmpl->InstanceTemplate()->SetInternalFieldCount(1);
23
+ ctorTmpl->SetClassName(ConvertToV8String(isolate, "OES_texture_half_float_linear"));
24
+
25
+ auto tmpl = ctorTmpl->InstanceTemplate();
26
+ tmpl->SetInternalFieldCount(1);
27
+ tmpl->Set(ConvertToV8String(isolate, "ext_name"),
28
+ ConvertToV8String(isolate, "OES_texture_half_float_linear"));
29
+
30
+ cache->OES_texture_half_float_linearTmpl =
31
+ std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
32
+ return ctorTmpl;
19
33
  }
20
34
 
21
- jsi::Value get(jsi::Runtime &runtime, const jsi::PropNameID &name) override {
22
- auto methodName = name.utf8(runtime);
35
+ static v8::Local<v8::Object>
36
+ NewInstance(v8::Isolate *isolate, OES_texture_half_float_linearImpl *texture) {
37
+ auto context = isolate->GetCurrentContext();
38
+ v8::EscapableHandleScope scope(isolate);
39
+ auto object = OES_texture_half_float_linearImpl::GetCtor(isolate)->GetFunction(
40
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
41
+ SetNativeType(isolate, object, NativeType::OES_texture_half_float_linear);
42
+ auto ext = v8::External::New(isolate, texture);
43
+ object->SetInternalField(0, ext);
44
+ return scope.Escape(object);
45
+ }
23
46
 
24
- if (methodName == "ext_name") {
25
- return jsi::String::createFromAscii(runtime, "OES_texture_half_float_linear");
47
+ static OES_texture_half_float_linearImpl *GetPointer(const v8::Local<v8::Object> &object) {
48
+ auto ptr = object->GetInternalField(0).As<v8::External>()->Value();
49
+ if (ptr == nullptr) {
50
+ return nullptr;
26
51
  }
27
-
28
- return jsi::Value::undefined();
52
+ return static_cast<OES_texture_half_float_linearImpl *>(ptr);
29
53
  }
30
54
  };
@@ -0,0 +1,102 @@
1
+ //
2
+ // Created by Osei Fortune on 29/04/2022.
3
+ //
4
+
5
+ #include "OES_vertex_array_objectImpl.h"
6
+
7
+
8
+ OES_vertex_array_objectImpl::OES_vertex_array_objectImpl(OES_vertex_array_object* object)
9
+ : object_(object) {
10
+
11
+ }
12
+
13
+ void OES_vertex_array_objectImpl::CreateVertexArrayOES(
14
+ const v8::FunctionCallbackInfo<v8::Value> &args) {
15
+ OES_vertex_array_objectImpl *ptr = GetPointer(args.This());
16
+ if (ptr == nullptr) {
17
+ args.GetReturnValue().SetNull();
18
+ return;
19
+ }
20
+ auto isolate = args.GetIsolate();
21
+
22
+ auto ret = canvas_native_webgl_oes_vertex_array_object_create_vertex_array_oes(
23
+ ptr->GetVertexArrayObject());
24
+ auto vertex = WebGLVertexArrayObject::NewInstance(isolate, new WebGLVertexArrayObject(
25
+ ret));
26
+
27
+ args.GetReturnValue().Set(vertex);
28
+ }
29
+
30
+
31
+ void OES_vertex_array_objectImpl::DeleteVertexArrayOES(
32
+ const v8::FunctionCallbackInfo<v8::Value> &args) {
33
+ OES_vertex_array_objectImpl *ptr = GetPointer(args.This());
34
+ if (ptr == nullptr) {
35
+ return;
36
+ }
37
+ auto isolate = args.GetIsolate();
38
+
39
+ auto value = args[0];
40
+ auto type = GetNativeType(isolate, value);
41
+
42
+ if (type == NativeType::WebGLVertexArrayObject) {
43
+ auto array_object = WebGLVertexArrayObject::GetPointer(value.As<v8::Object>());
44
+ if (array_object != nullptr) {
45
+ canvas_native_webgl_oes_vertex_array_object_delete_vertex_array_oes(
46
+ array_object->GetVertexArrayObject(),
47
+ ptr->GetVertexArrayObject()
48
+ );
49
+ }
50
+ }
51
+ }
52
+
53
+ void OES_vertex_array_objectImpl::IsVertexArrayOES(
54
+ const v8::FunctionCallbackInfo<v8::Value> &args) {
55
+ OES_vertex_array_objectImpl *ptr = GetPointer(args.This());
56
+ if (ptr == nullptr) {
57
+ args.GetReturnValue().Set(false);
58
+ return;
59
+ }
60
+ auto isolate = args.GetIsolate();
61
+
62
+ auto value = args[0];
63
+ auto type = GetNativeType(isolate, value);
64
+
65
+ if (type == NativeType::WebGLVertexArrayObject) {
66
+ auto array_object = WebGLVertexArrayObject::GetPointer(value.As<v8::Object>());
67
+ if (array_object != nullptr) {
68
+ auto ret = canvas_native_webgl_oes_vertex_array_object_is_vertex_array_oes(
69
+ array_object->GetVertexArrayObject(),
70
+ ptr->GetVertexArrayObject()
71
+ );
72
+
73
+ args.GetReturnValue().Set(ret);
74
+ return;
75
+ }
76
+ }
77
+
78
+ args.GetReturnValue().Set(false);
79
+ }
80
+
81
+
82
+ void OES_vertex_array_objectImpl::BindVertexArrayOES(
83
+ const v8::FunctionCallbackInfo<v8::Value> &args) {
84
+ OES_vertex_array_objectImpl *ptr = GetPointer(args.This());
85
+ if (ptr == nullptr) {
86
+ return;
87
+ }
88
+ auto isolate = args.GetIsolate();
89
+
90
+ auto value = args[0];
91
+ auto type = GetNativeType(isolate, value);
92
+
93
+ if (type == NativeType::WebGLVertexArrayObject) {
94
+ auto array_object = WebGLVertexArrayObject::GetPointer(value.As<v8::Object>());
95
+ if (array_object != nullptr) {
96
+ canvas_native_webgl_oes_vertex_array_object_bind_vertex_array_oes(
97
+ array_object->GetVertexArrayObject(),
98
+ ptr->GetVertexArrayObject()
99
+ );
100
+ }
101
+ }
102
+ }