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

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 -24
  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 +2391 -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 +6457 -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 +4380 -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
@@ -6,10 +6,7 @@
6
6
 
7
7
  #include <memory>
8
8
  #include <array>
9
- #include <NativeScript/JSIRuntime.h>
10
9
  #include "canvas2d/CanvasRenderingContext2DImpl.h"
11
-
12
- #import "canvas-cxx/src/lib.rs.h"
13
10
  #include "Helpers.h"
14
11
 
15
12
  #include "ImageAssetImpl.h"
@@ -22,39 +19,15 @@
22
19
  #include "webgl/WebGLRenderingContext.h"
23
20
  #include "webgl2/WebGL2RenderingContext.h"
24
21
 
25
- using namespace facebook;
26
- using namespace org::nativescript::canvas;
27
-
28
- template<typename NativeFunc>
29
- static void
30
- createGlobalFunc(jsi::Runtime &jsiRuntime, const char *prop, int paramCount, NativeFunc &&func) {
31
- auto f = jsi::Function::createFromHostFunction(jsiRuntime,
32
- jsi::PropNameID::forAscii(jsiRuntime, prop),
33
- paramCount,
34
- std::forward<NativeFunc>(func));
35
- jsiRuntime.global().setProperty(jsiRuntime, prop, std::move(f));
36
- }
37
-
38
- #define CREATE_GLOBAL_FUNC(prop, paramCount, func) \
39
- createFunc(jsiRuntime, prop, paramCount, func)
40
-
41
-
42
- template<typename NativeFunc>
43
- static void
44
- createFunc(jsi::Runtime &jsiRuntime, jsi::Object &object, const char *prop, int paramCount,
45
- NativeFunc &&func) {
46
- auto f = jsi::Function::createFromHostFunction(jsiRuntime,
47
- jsi::PropNameID::forAscii(jsiRuntime, prop),
48
- paramCount,
49
- std::forward<NativeFunc>(func));
50
- object.setProperty(jsiRuntime, prop, std::move(f));
51
- }
52
-
53
- #define CREATE_FUNC(prop, object, paramCount, func) \
54
- createFunc(jsiRuntime, object, prop, paramCount, func)
55
22
 
56
23
  class CanvasJSIModule {
57
24
  public:
58
- static void install(facebook::jsi::Runtime &rt);
25
+ static void install(v8::Isolate * isolate);
26
+ static void CreateImageBitmap(const v8::FunctionCallbackInfo<v8::Value> &args);
27
+ static void Create2DContext(const v8::FunctionCallbackInfo<v8::Value> &args);
28
+ static void Create2DContextWithPointer(const v8::FunctionCallbackInfo<v8::Value> &args);
29
+ static void ReadFile(const v8::FunctionCallbackInfo<v8::Value> &args);
30
+ static void CreateWebGLContext(const v8::FunctionCallbackInfo<v8::Value> &args);
31
+ static void CreateWebGL2Context(const v8::FunctionCallbackInfo<v8::Value> &args);
59
32
  };
60
33
 
@@ -0,0 +1,30 @@
1
+ //
2
+ // Created by Osei Fortune on 10/06/2022.
3
+ //
4
+
5
+ #pragma once
6
+ #include <stdint.h>
7
+ #include <string.h>
8
+
9
+ #ifdef __APPLE__
10
+ #include <NativeScript/include/v8.h>
11
+
12
+ #ifdef __cplusplus
13
+ extern "C" {
14
+ #endif
15
+
16
+ #include <CanvasNative/canvas_ios.h>
17
+ #include <CanvasNative/canvas_native.h>
18
+
19
+ #ifdef __cplusplus
20
+ }
21
+ #endif
22
+ #endif
23
+
24
+ #ifdef __ANDROID__
25
+ #include "include/v8.h"
26
+ #include "include/canvas_android.h"
27
+ #include <android/log.h>
28
+ #include <thread>
29
+ #endif
30
+
@@ -0,0 +1,54 @@
1
+ //
2
+ // Created by Osei Fortune on 10/06/2022.
3
+ //
4
+
5
+ #pragma once
6
+
7
+ #include <shared_mutex>
8
+ #include "include/robin_hood.h"
9
+ template<class TKey, class TValue>
10
+ class ConcurrentMap {
11
+ public:
12
+ void Insert(TKey &key, TValue value) {
13
+ std::lock_guard <std::mutex> writerLock(this->containerMutex_);
14
+ this->container_[key] = value;
15
+ }
16
+
17
+ TValue Get(TKey &key) {
18
+ bool found;
19
+ return this->Get(key, found);
20
+ }
21
+
22
+ TValue Get(TKey &key, bool &found) {
23
+ // std::shared_lock<std::shared_timed_mutex> readerLock(this->containerMutex_);
24
+ std::lock_guard <std::mutex> writerLock(this->containerMutex_);
25
+ auto it = this->container_.find(key);
26
+ found = it != this->container_.end();
27
+ if (found) {
28
+ return it->second;
29
+ }
30
+ return nullptr;
31
+ }
32
+
33
+ bool ContainsKey(TKey &key) {
34
+ // std::shared_lock<std::shared_timed_mutex> readerLock(this->containerMutex_);
35
+ std::lock_guard <std::mutex> writerLock(this->containerMutex_);
36
+ auto it = this->container_.find(key);
37
+ return it != this->container_.end();
38
+ }
39
+
40
+ void Remove(TKey &key) {
41
+ std::lock_guard <std::mutex> writerLock(this->containerMutex_);
42
+ this->container_.erase(key);
43
+ }
44
+
45
+ ConcurrentMap() = default;
46
+
47
+ ConcurrentMap(const ConcurrentMap &) = delete;
48
+
49
+ ConcurrentMap &operator=(const ConcurrentMap &) = delete;
50
+
51
+ private:
52
+ std::mutex containerMutex_;
53
+ robin_hood::unordered_map<TKey, TValue> container_;
54
+ };
@@ -5,59 +5,325 @@
5
5
  #pragma once
6
6
 
7
7
  #include <memory>
8
- #include "rust/cxx.h"
9
- #import <NativeScript/JSIRuntime.h>
8
+ #include "Common.h"
9
+ #include "OneByteStringResource.h"
10
10
 
11
- using namespace facebook;
11
+ //#ifdef __APPLE__
12
+ //#ifdef __OBJC__
13
+ //#include <Foundation/Foundation.h>
14
+ //#else
15
+ //#include <CoreFoundation/CoreFoundation.h>
16
+ //extern "C" void NSLog(CFStringRef format, ...);
17
+ //#endif
18
+ //#endif
12
19
 
13
- inline static int64_t getPointerValue(jsi::Runtime &runtime, const facebook::jsi::Value &value) {
14
- return value.asBigInt(runtime).Int64Value(runtime);
20
+
21
+
22
+ static const char *LOG_TAG = "JS";
23
+ static int m_maxLogcatObjectSize = 4096;
24
+
25
+ #ifdef __ANDROID__
26
+ static void sendToADBLogcat(const std::string &message, android_LogPriority logPriority) {
27
+ // limit the size of the message that we send to logcat using the predefined value in package.json
28
+ auto messageToLog = message;
29
+ if (messageToLog.length() > m_maxLogcatObjectSize) {
30
+ messageToLog = messageToLog.erase(m_maxLogcatObjectSize, std::string::npos);
31
+ messageToLog = messageToLog + "...";
32
+ }
33
+
34
+ // split strings into chunks of 4000 characters
35
+ // __android_log_write can't send more than 4000 to the stdout at a time
36
+ auto messageLength = messageToLog.length();
37
+ int maxStringLength = 4000;
38
+
39
+ if (messageLength < maxStringLength) {
40
+ __android_log_write(logPriority, LOG_TAG, messageToLog.c_str());
41
+ } else {
42
+ for (int i = 0; i < messageLength; i += maxStringLength) {
43
+ auto messagePart = messageToLog.substr(i, maxStringLength);
44
+
45
+ __android_log_write(logPriority, LOG_TAG, messagePart.c_str());
46
+ }
47
+ }
15
48
  }
49
+ #endif
50
+
51
+ //#ifdef __APPLE__
52
+ //#ifndef __OBJC__
53
+ //#define Log(fmt, ...) NSLog(CFSTR(fmt), ##__VA_ARGS__)
54
+ //#else
55
+ //#define Log(...) NSLog(__VA_ARGS__)
56
+ //#endif
57
+ //#endif
58
+
16
59
 
17
- template<typename T>
18
- inline static rust::Slice<T>
19
- GetArrayBufferData(jsi::Runtime &runtime, facebook::jsi::ArrayBuffer &array) {
20
- auto buf = array.data(runtime);
21
- auto size = array.size(runtime);
22
60
 
23
- rust::Slice<T> slice(reinterpret_cast<T *>(buf), size);
24
- return std::move(slice);
61
+ static void LogToConsole(const std::string &message) {
62
+ #ifdef __ANDROID__
63
+ sendToADBLogcat(message, android_LogPriority::ANDROID_LOG_INFO);
64
+ #endif
65
+
66
+ #ifdef __APPLE__
67
+ // Log("%s", message.c_str());
68
+ #endif
25
69
  }
26
70
 
27
- template<typename T>
28
- inline static rust::Slice<T>
29
- GetTypedArrayData(jsi::Runtime &runtime, facebook::jsi::TypedArray &array) {
30
- auto buf = array.data(runtime);
31
- auto offset = array.offset(runtime);
32
- auto size = array.size(runtime);
33
71
 
34
- auto data = buf + offset;
35
72
 
36
- rust::Slice<T> slice(reinterpret_cast<T *>(data), (size / sizeof(T)));
37
- return std::move(slice);
73
+ enum class NativeType {
74
+ None,
75
+ CanvasGradient,
76
+ CanvasPattern,
77
+ ImageData,
78
+ ImageAsset,
79
+ CanvasRenderingContext2D,
80
+ WebGLRenderingContextBase,
81
+ Path2D,
82
+ Matrix,
83
+ ImageBitmap,
84
+ TextMetrics,
85
+
86
+ WebGLQuery,
87
+ WebGLProgram,
88
+ WebGLShader,
89
+ WebGLBuffer,
90
+ WebGLFramebuffer,
91
+ WebGLRenderbuffer,
92
+ WebGLTexture,
93
+ WebGLActiveInfo,
94
+ OES_fbo_render_mipmap,
95
+ EXT_blend_minmax,
96
+ EXT_color_buffer_half_float,
97
+ EXT_disjoint_timer_query,
98
+ EXT_sRGB,
99
+ EXT_shader_texture_lod,
100
+ EXT_texture_filter_anisotropic,
101
+ OES_element_index_uint,
102
+ OES_standard_derivatives,
103
+ OES_texture_float,
104
+ OES_texture_float_linear,
105
+ OES_texture_half_float_linear,
106
+ OES_texture_half_float,
107
+ WEBGL_color_buffer_float,
108
+ OES_vertex_array_object,
109
+ WebGLVertexArrayObject,
110
+ WEBGL_compressed_texture_atc,
111
+ WEBGL_compressed_texture_etc1,
112
+ WEBGL_compressed_texture_s3tc,
113
+ WEBGL_compressed_texture_s3tc_srgb,
114
+ WEBGL_compressed_texture_etc,
115
+ WEBGL_compressed_texture_pvrtc,
116
+ WEBGL_lose_context,
117
+ ANGLE_instanced_arrays,
118
+ WEBGL_depth_texture,
119
+ WEBGL_draw_buffers,
120
+ WebGLShaderPrecisionFormat,
121
+ WebGLUniformLocation,
122
+ WebGLSampler,
123
+ WebGLTransformFeedback,
124
+ WebGLSync
125
+ };
126
+
127
+
128
+ inline static v8::Local<v8::String>
129
+ ConvertToV8OneByteString(v8::Isolate *isolate, char* string) {
130
+ auto value = new OneByteStringResource(string);
131
+ auto ret = v8::String::NewExternalOneByte(isolate, value);
132
+ return ret.ToLocalChecked();
38
133
  }
39
134
 
40
- template<typename T>
41
- inline static std::shared_ptr<T>
42
- getHostObject(jsi::Runtime &runtime, const facebook::jsi::Value &value) {
43
- if (value.isObject()) {
44
- auto valueObject = value.asObject(runtime);
45
- try {
46
- if (valueObject.template isHostObject(runtime)) {
47
- return valueObject.template asHostObject<T>(runtime);
48
- }
49
- } catch (...) {}
135
+ inline static v8::Local<v8::String>
136
+ ConvertToV8String(v8::Isolate *isolate, const std::string &string) {
137
+ return v8::String::NewFromUtf8(isolate, string.c_str()).ToLocalChecked();
138
+ }
139
+
140
+ inline static std::string
141
+ ConvertFromV8String(v8::Isolate *isolate, const v8::Local<v8::Value> &value) {
142
+ if (value.IsEmpty()) {
143
+ return {};
50
144
  }
51
145
 
52
- return nullptr;
146
+ if (value->IsStringObject()) {
147
+ v8::Local<v8::String> obj = value.As<v8::StringObject>()->ValueOf();
148
+ return ConvertFromV8String(isolate, obj);
149
+ }
150
+
151
+ v8::String::Utf8Value result(isolate, value);
152
+
153
+ const char *val = *result;
154
+
155
+ if (val == nullptr) {
156
+ return {};
157
+ }
158
+
159
+ return {*result};
160
+ }
161
+
162
+
163
+ static void SetPrivateValue(v8::Isolate *isolate, const v8::Local<v8::Object> &obj,
164
+ const v8::Local<v8::String> &propName,
165
+ const v8::Local<v8::Value> &value) {
166
+ v8::Local<v8::Context> context;
167
+ obj->GetCreationContext().ToLocal(&context);
168
+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(isolate, propName);
169
+ obj->SetPrivate(context, privateKey, value);
53
170
  }
54
171
 
55
- template<typename T>
56
- inline static std::shared_ptr<T>
57
- getHostObject(jsi::Runtime &runtime, const facebook::jsi::Object &value) {
58
- if (value.template isHostObject(runtime)) {
59
- return value.template asHostObject<T>(runtime);
172
+ static v8::Local<v8::Value>
173
+ GetPrivateValue(v8::Isolate *isolate, const v8::Local<v8::Object> &obj,
174
+ const v8::Local<v8::String> &propName) {
175
+ v8::Local<v8::Context> context;
176
+ obj->GetCreationContext().ToLocal(&context);
177
+ v8::Local<v8::Private> privateKey = v8::Private::ForApi(isolate, propName);
178
+
179
+ v8::Maybe<bool> hasPrivate = obj->HasPrivate(context, privateKey);
180
+
181
+ if (!hasPrivate.FromMaybe(false)) {
182
+ return v8::Local<v8::Value>();
60
183
  }
61
- return nullptr;
184
+
185
+ v8::Local<v8::Value> result;
186
+
187
+ obj->GetPrivate(context, privateKey).ToLocal(&result);
188
+
189
+ return result;
190
+ }
191
+
192
+ static void SetNativeType(v8::Isolate *isolate, const v8::Local<v8::Object> &obj, NativeType type) {
193
+ v8::Local<v8::String> name = ConvertToV8String(isolate, "__type");
194
+ v8::Local<v8::Value> typeValue = v8::Number::New(isolate, (double) type).As<v8::Value>();
195
+ SetPrivateValue(isolate, obj, name, typeValue);
196
+ }
197
+
198
+ inline static NativeType GetNativeType(v8::Isolate *isolate, const v8::Local<v8::Value> &obj) {
199
+ if (!obj->IsNullOrUndefined() && obj->IsObject()) {
200
+ v8::Local<v8::String> name = ConvertToV8String(isolate, "__type");
201
+ auto ret = GetPrivateValue(isolate, obj.As<v8::Object>(), name);
202
+ auto context = isolate->GetCurrentContext();
203
+
204
+ if (!ret.IsEmpty() && ret->IsNumber()) {
205
+ auto value = (int) ret->NumberValue(context).ToChecked();
206
+ if (value >= (int) NativeType::CanvasGradient &&
207
+ value <= (int) NativeType::WebGLSync) {
208
+ return (NativeType) value;
209
+ }
210
+ }
211
+ }
212
+
213
+ return NativeType::None;
62
214
  }
63
215
 
216
+
217
+ //template<typename T>
218
+ //inline static rust::Slice<T>
219
+ //GetArrayBufferData(v8::Local<v8::ArrayBuffer> &array) {
220
+ // auto buf = array->GetBackingStore()->Data();
221
+ // auto size = array->ByteLength();
222
+ //
223
+ // rust::Slice<T> slice(reinterpret_cast<T *>(buf), size);
224
+ // return std::move(slice);
225
+ //}
226
+
227
+
228
+ //template<typename T>
229
+ //inline static rust::Slice<T>
230
+ //GetTypedArrayData(v8::Local<v8::TypedArray> &array) {
231
+ // auto buf = array->Buffer();
232
+ // auto offset = array->ByteOffset();
233
+ // auto size = buf->ByteLength();
234
+ // rust::Slice<T> slice(reinterpret_cast<T *>(buf->GetBackingStore()->Data()) + offset,
235
+ // (size / sizeof(T)));
236
+ // return std::move(slice);
237
+ //}
238
+
239
+
240
+
241
+ static void SetFastMethod(v8::Isolate* isolate,
242
+ v8::Local<v8::Template> that,
243
+ const char* name,
244
+ v8::FunctionCallback slow_callback,
245
+ const v8::CFunction* c_function,
246
+ v8::Local<v8::Value> data) {
247
+ v8::Local<v8::FunctionTemplate> t =
248
+ v8::FunctionTemplate::New(isolate,
249
+ slow_callback,
250
+ data,
251
+ v8::Local<v8::Signature>(),
252
+ 0,
253
+ v8::ConstructorBehavior::kThrow,
254
+ v8::SideEffectType::kHasSideEffect,
255
+ c_function);
256
+ // kInternalized strings are created in the old space.
257
+ const v8::NewStringType type = v8::NewStringType::kInternalized;
258
+ v8::Local<v8::String> name_string =
259
+ v8::String::NewFromUtf8(isolate, name, type).ToLocalChecked();
260
+ that->Set(name_string, t);
261
+ }
262
+ static void SetFastMethod(v8::Local<v8::Context> context,
263
+ v8::Local<v8::Object> that,
264
+ const char* name,
265
+ v8::FunctionCallback slow_callback,
266
+ const v8::CFunction* c_function,
267
+ v8::Local<v8::Value> data = v8::Local<v8::Value>()) {
268
+ v8::Isolate* isolate = context->GetIsolate();
269
+ v8::Local<v8::Function> function =
270
+ v8::FunctionTemplate::New(isolate,
271
+ slow_callback,
272
+ data,
273
+ v8::Local<v8::Signature>(),
274
+ 0,
275
+ v8::ConstructorBehavior::kThrow,
276
+ v8::SideEffectType::kHasSideEffect,
277
+ c_function)
278
+ ->GetFunction(context)
279
+ .ToLocalChecked();
280
+ const v8::NewStringType type = v8::NewStringType::kInternalized;
281
+ v8::Local<v8::String> name_string =
282
+ v8::String::NewFromUtf8(isolate, name, type).ToLocalChecked();
283
+ that->Set(context, name_string, function).Check();
284
+ }
285
+
286
+ static void SetFastMethodNoSideEffect(v8::Local<v8::Context> context,
287
+ v8::Local<v8::Object> that,
288
+ const char* name,
289
+ v8::FunctionCallback slow_callback,
290
+ const v8::CFunction* c_function,
291
+ v8::Local<v8::Value> data) {
292
+ v8::Isolate* isolate = context->GetIsolate();
293
+ v8::Local<v8::Function> function =
294
+ v8::FunctionTemplate::New(isolate,
295
+ slow_callback,
296
+ data,
297
+ v8::Local<v8::Signature>(),
298
+ 0,
299
+ v8::ConstructorBehavior::kThrow,
300
+ v8::SideEffectType::kHasNoSideEffect,
301
+ c_function)
302
+ ->GetFunction(context)
303
+ .ToLocalChecked();
304
+ const v8::NewStringType type = v8::NewStringType::kInternalized;
305
+ v8::Local<v8::String> name_string =
306
+ v8::String::NewFromUtf8(isolate, name, type).ToLocalChecked();
307
+ that->Set(context, name_string, function).Check();
308
+ }
309
+ static void SetFastMethodNoSideEffect(v8::Isolate* isolate,
310
+ v8::Local<v8::Template> that,
311
+ const char* name,
312
+ v8::FunctionCallback slow_callback,
313
+ const v8::CFunction* c_function,
314
+ v8::Local<v8::Value> data) {
315
+ v8::Local<v8::FunctionTemplate> t =
316
+ v8::FunctionTemplate::New(isolate,
317
+ slow_callback,
318
+ data,
319
+ v8::Local<v8::Signature>(),
320
+ 0,
321
+ v8::ConstructorBehavior::kThrow,
322
+ v8::SideEffectType::kHasNoSideEffect,
323
+ c_function);
324
+ // kInternalized strings are created in the old space.
325
+ const v8::NewStringType type = v8::NewStringType::kInternalized;
326
+ v8::Local<v8::String> name_string =
327
+ v8::String::NewFromUtf8(isolate, name, type).ToLocalChecked();
328
+ that->Set(name_string, t);
329
+ }