@nativescript/canvas 2.0.0-alpha.1 → 2.0.0-alpha.11

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 (375) hide show
  1. package/Canvas/common.js +8 -15
  2. package/Canvas/common.js.map +1 -1
  3. package/Canvas/index.android.d.ts +2 -0
  4. package/Canvas/index.android.js +21 -13
  5. package/Canvas/index.android.js.map +1 -1
  6. package/Canvas/index.d.ts +5 -0
  7. package/Canvas/index.ios.d.ts +8 -2
  8. package/Canvas/index.ios.js +129 -75
  9. package/Canvas/index.ios.js.map +1 -1
  10. package/Canvas2D/CanvasGradient/index.d.ts +9 -2
  11. package/Canvas2D/CanvasGradient/index.js +23 -2
  12. package/Canvas2D/CanvasGradient/index.js.map +1 -1
  13. package/Canvas2D/CanvasPattern/index.d.ts +9 -2
  14. package/Canvas2D/CanvasPattern/index.js +20 -2
  15. package/Canvas2D/CanvasPattern/index.js.map +1 -1
  16. package/Canvas2D/CanvasRenderingContext2D/index.d.ts +120 -132
  17. package/Canvas2D/CanvasRenderingContext2D/{index.android.js → index.js} +134 -123
  18. package/Canvas2D/CanvasRenderingContext2D/index.js.map +1 -0
  19. package/Canvas2D/DOMMatrix/index.d.ts +74 -2
  20. package/Canvas2D/DOMMatrix/index.js +180 -2
  21. package/Canvas2D/DOMMatrix/index.js.map +1 -1
  22. package/Canvas2D/ImageData/index.d.ts +15 -2
  23. package/Canvas2D/ImageData/index.js +66 -2
  24. package/Canvas2D/ImageData/index.js.map +1 -1
  25. package/Canvas2D/Path2D/index.d.ts +21 -2
  26. package/Canvas2D/Path2D/index.js +87 -2
  27. package/Canvas2D/Path2D/index.js.map +1 -1
  28. package/Canvas2D/TextMetrics/index.d.ts +17 -2
  29. package/Canvas2D/TextMetrics/index.js +44 -2
  30. package/Canvas2D/TextMetrics/index.js.map +1 -1
  31. package/Dom/Dom.d.ts +10 -0
  32. package/Dom/Dom.js +36 -0
  33. package/Dom/Dom.js.map +1 -0
  34. package/Dom/Fill.d.ts +4 -0
  35. package/Dom/Fill.js +8 -0
  36. package/Dom/Fill.js.map +1 -0
  37. package/Dom/Group.d.ts +21 -0
  38. package/Dom/Group.js +179 -0
  39. package/Dom/Group.js.map +1 -0
  40. package/Dom/Image.d.ts +12 -0
  41. package/Dom/Image.js +33 -0
  42. package/Dom/Image.js.map +1 -0
  43. package/Dom/Paint.d.ts +15 -0
  44. package/Dom/Paint.js +58 -0
  45. package/Dom/Paint.js.map +1 -0
  46. package/Dom/Shadow.d.ts +10 -0
  47. package/Dom/Shadow.js +26 -0
  48. package/Dom/Shadow.js.map +1 -0
  49. package/Dom/Text.d.ts +9 -0
  50. package/Dom/Text.js +50 -0
  51. package/Dom/Text.js.map +1 -0
  52. package/Dom/index.d.ts +8 -0
  53. package/Dom/index.js +9 -0
  54. package/Dom/index.js.map +1 -0
  55. package/Dom/shapes/Circle.d.ts +21 -0
  56. package/Dom/shapes/Circle.js +99 -0
  57. package/Dom/shapes/Circle.js.map +1 -0
  58. package/Dom/shapes/Line.d.ts +9 -0
  59. package/Dom/shapes/Line.js +37 -0
  60. package/Dom/shapes/Line.js.map +1 -0
  61. package/Dom/shapes/Path.d.ts +8 -0
  62. package/Dom/shapes/Path.js +31 -0
  63. package/Dom/shapes/Path.js.map +1 -0
  64. package/Dom/shapes/Points.d.ts +15 -0
  65. package/Dom/shapes/Points.js +21 -0
  66. package/Dom/shapes/Points.js.map +1 -0
  67. package/Dom/shapes/Rect.d.ts +15 -0
  68. package/Dom/shapes/Rect.js +63 -0
  69. package/Dom/shapes/Rect.js.map +1 -0
  70. package/Dom/shapes/RoundedRect.d.ts +12 -0
  71. package/Dom/shapes/RoundedRect.js +96 -0
  72. package/Dom/shapes/RoundedRect.js.map +1 -0
  73. package/Dom/shapes/index.d.ts +6 -0
  74. package/Dom/shapes/index.js +7 -0
  75. package/Dom/shapes/index.js.map +1 -0
  76. package/ImageAsset/index.d.ts +28 -2
  77. package/ImageAsset/index.js +158 -2
  78. package/ImageAsset/index.js.map +1 -1
  79. package/ImageBitmap/{index.android.d.ts → index.d.ts} +3 -2
  80. package/ImageBitmap/{index.android.js → index.js} +6 -4
  81. package/ImageBitmap/index.js.map +1 -0
  82. package/TextDecoder/index.d.ts +9 -2
  83. package/TextDecoder/index.js +53 -2
  84. package/TextDecoder/index.js.map +1 -1
  85. package/TextEncoder/index.d.ts +9 -2
  86. package/TextEncoder/index.js +51 -2
  87. package/TextEncoder/index.js.map +1 -1
  88. package/WebGL/WebGLExtensions/index.d.ts +159 -242
  89. package/WebGL/WebGLExtensions/{index.android.js → index.js} +1 -1
  90. package/WebGL/WebGLExtensions/index.js.map +1 -0
  91. package/WebGL/WebGLRenderingContext/index.d.ts +153 -293
  92. package/WebGL/WebGLRenderingContext/{index.android.js → index.js} +30 -13
  93. package/WebGL/WebGLRenderingContext/index.js.map +1 -0
  94. package/WebGL2/WebGL2RenderingContext/common.d.ts +1 -0
  95. package/WebGL2/WebGL2RenderingContext/common.js +3 -0
  96. package/WebGL2/WebGL2RenderingContext/common.js.map +1 -1
  97. package/WebGL2/WebGL2RenderingContext/index.d.ts +101 -455
  98. package/WebGL2/WebGL2RenderingContext/{index.android.js → index.js} +17 -6
  99. package/WebGL2/WebGL2RenderingContext/index.js.map +1 -0
  100. package/helpers.js +3 -0
  101. package/helpers.js.map +1 -1
  102. package/package.json +1 -1
  103. package/platforms/android/canvas-release.aar +0 -0
  104. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative +0 -0
  105. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h +135 -1722
  106. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative.h +1 -3
  107. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +142 -0
  108. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist +0 -0
  109. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  110. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.abi.json +5486 -0
  111. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.private.swiftinterface +153 -0
  112. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  113. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +91 -3202
  114. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/module.modulemap +2 -2
  115. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/{TNSCanvas.nib → NSCCanvas.nib} +0 -0
  116. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  117. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/CanvasNative +0 -0
  118. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h +260 -3444
  119. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative.h +1 -3
  120. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +142 -0
  121. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Info.plist +0 -0
  122. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  123. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  124. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.abi.json +5486 -0
  125. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +153 -0
  126. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  127. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftinterface +91 -3202
  128. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.abi.json +5486 -0
  129. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +153 -0
  130. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  131. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +91 -3202
  132. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/module.modulemap +2 -2
  133. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/{TNSCanvas.nib → NSCCanvas.nib} +0 -0
  134. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +49 -93
  135. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  136. package/platforms/ios/Podfile +2 -1
  137. package/platforms/ios/build.xcconfig +5 -0
  138. package/platforms/ios/src/CanvasModule.h +10 -0
  139. package/platforms/ios/src/CanvasModule.mm +14 -0
  140. package/platforms/ios/src/cpp/CanvasJSIModule.h +60 -0
  141. package/platforms/ios/src/cpp/CanvasJSIModule.mm +1105 -0
  142. package/platforms/ios/src/cpp/Helpers.h +63 -0
  143. package/platforms/ios/src/cpp/ImageAssetImpl.h +30 -0
  144. package/platforms/ios/src/cpp/ImageAssetImpl.mm +417 -0
  145. package/platforms/ios/src/cpp/ImageBitmapImpl.h +41 -0
  146. package/platforms/ios/src/cpp/ImageBitmapImpl.mm +126 -0
  147. package/platforms/ios/src/cpp/JSICallback.h +15 -0
  148. package/platforms/ios/src/cpp/JSIReadFileCallback.h +16 -0
  149. package/platforms/ios/src/cpp/OnRafCallback.h +24 -0
  150. package/platforms/ios/src/cpp/OnRafCallback.mm +25 -0
  151. package/platforms/ios/src/cpp/RafImpl.h +27 -0
  152. package/platforms/ios/src/cpp/RafImpl.mm +10 -0
  153. package/platforms/ios/src/cpp/TextDecoderImpl.h +28 -0
  154. package/platforms/ios/src/cpp/TextDecoderImpl.mm +97 -0
  155. package/platforms/ios/src/cpp/TextEncoderImpl.h +28 -0
  156. package/platforms/ios/src/cpp/TextEncoderImpl.mm +60 -0
  157. package/platforms/ios/src/cpp/VecMutableBuffer.h +46 -0
  158. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.cc +6156 -0
  159. package/platforms/ios/src/cpp/canvas-cxx/src/lib.rs.h +2867 -0
  160. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.h +28 -0
  161. package/platforms/ios/src/cpp/canvas2d/CanvasGradient.mm +42 -0
  162. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.h +29 -0
  163. package/platforms/ios/src/cpp/canvas2d/CanvasPattern.mm +49 -0
  164. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.h +75 -0
  165. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.mm +1972 -0
  166. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.h +29 -0
  167. package/platforms/ios/src/cpp/canvas2d/ImageDataImpl.mm +68 -0
  168. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.h +29 -0
  169. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.mm +149 -0
  170. package/platforms/ios/src/cpp/canvas2d/Path2D.h +27 -0
  171. package/platforms/ios/src/cpp/canvas2d/Path2D.mm +335 -0
  172. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.h +29 -0
  173. package/platforms/ios/src/cpp/canvas2d/TextMetricsImpl.mm +68 -0
  174. package/platforms/ios/src/cpp/gl.h +29 -0
  175. package/platforms/ios/src/cpp/rust/cxx.cc +793 -0
  176. package/platforms/ios/src/cpp/rust/cxx.h +1111 -0
  177. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.h +28 -0
  178. package/platforms/ios/src/cpp/webgl/WebGLActiveInfoImpl.mm +39 -0
  179. package/platforms/ios/src/cpp/webgl/WebGLBuffer.h +24 -0
  180. package/platforms/ios/src/cpp/webgl/WebGLFramebuffer.h +24 -0
  181. package/platforms/ios/src/cpp/webgl/WebGLProgram.h +24 -0
  182. package/platforms/ios/src/cpp/webgl/WebGLRenderbuffer.h +24 -0
  183. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.h +517 -0
  184. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.mm +5958 -0
  185. package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.h +90 -0
  186. package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.mm +118 -0
  187. package/platforms/ios/src/cpp/webgl/WebGLShader.h +24 -0
  188. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.h +28 -0
  189. package/platforms/ios/src/cpp/webgl/WebGLShaderPrecisionFormatImpl.mm +40 -0
  190. package/platforms/ios/src/cpp/webgl/WebGLTexture.h +23 -0
  191. package/platforms/ios/src/cpp/webgl/WebGLUniformLocation.h +28 -0
  192. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.h +28 -0
  193. package/platforms/ios/src/cpp/webgl/extensions/ANGLE_instanced_arraysImpl.mm +108 -0
  194. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.h +16 -0
  195. package/platforms/ios/src/cpp/webgl/extensions/EXT_blend_minmaxImpl.mm +28 -0
  196. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.h +17 -0
  197. package/platforms/ios/src/cpp/webgl/extensions/EXT_color_buffer_half_floatImpl.mm +42 -0
  198. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.h +28 -0
  199. package/platforms/ios/src/cpp/webgl/extensions/EXT_disjoint_timer_queryImpl.mm +295 -0
  200. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.h +18 -0
  201. package/platforms/ios/src/cpp/webgl/extensions/EXT_sRGBImpl.mm +40 -0
  202. package/platforms/ios/src/cpp/webgl/extensions/EXT_shader_texture_lodImpl.h +29 -0
  203. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.h +18 -0
  204. package/platforms/ios/src/cpp/webgl/extensions/EXT_texture_filter_anisotropicImpl.mm +37 -0
  205. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.h +18 -0
  206. package/platforms/ios/src/cpp/webgl/extensions/OES_element_index_uintImpl.mm +28 -0
  207. package/platforms/ios/src/cpp/webgl/extensions/OES_fbo_render_mipmap.h +30 -0
  208. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.h +18 -0
  209. package/platforms/ios/src/cpp/webgl/extensions/OES_standard_derivativesImpl.mm +31 -0
  210. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_floatImpl.h +30 -0
  211. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_float_linearImpl.h +31 -0
  212. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.h +18 -0
  213. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_floatImpl.mm +28 -0
  214. package/platforms/ios/src/cpp/webgl/extensions/OES_texture_half_float_linearImpl.h +30 -0
  215. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.h +32 -0
  216. package/platforms/ios/src/cpp/webgl/extensions/OES_vertex_array_objectImpl.mm +127 -0
  217. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.h +20 -0
  218. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_color_buffer_floatImpl.mm +45 -0
  219. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.h +18 -0
  220. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_atcImpl.mm +45 -0
  221. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.h +18 -0
  222. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etc1Impl.mm +31 -0
  223. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.h +18 -0
  224. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_etcImpl.mm +70 -0
  225. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.h +18 -0
  226. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_pvrtcImpl.mm +47 -0
  227. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.h +18 -0
  228. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tcImpl.mm +46 -0
  229. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.h +19 -0
  230. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_compressed_texture_s3tc_srgbImpl.mm +49 -0
  231. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.h +19 -0
  232. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_depth_textureImpl.mm +30 -0
  233. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.h +31 -0
  234. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_draw_buffersImpl.mm +177 -0
  235. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.h +31 -0
  236. package/platforms/ios/src/cpp/webgl/extensions/WEBGL_lose_contextImpl.mm +64 -0
  237. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.h +431 -0
  238. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.mm +4543 -0
  239. package/platforms/ios/src/cpp/webgl2/WebGLQuery.h +21 -0
  240. package/platforms/ios/src/cpp/webgl2/WebGLSampler.h +21 -0
  241. package/platforms/ios/src/cpp/webgl2/WebGLSyncImpl.h +24 -0
  242. package/platforms/ios/src/cpp/webgl2/WebGLTransformFeedback.h +21 -0
  243. package/platforms/ios/src/cpp/webgl2/WebGLVertexArrayObject.h +21 -0
  244. package/platforms/ios/src/module.modulemap +4 -0
  245. package/Canvas2D/CanvasGradient/CanvasGradient.android.d.ts +0 -10
  246. package/Canvas2D/CanvasGradient/CanvasGradient.android.js +0 -26
  247. package/Canvas2D/CanvasGradient/CanvasGradient.android.js.map +0 -1
  248. package/Canvas2D/CanvasGradient/CanvasGradient.d.ts +0 -12
  249. package/Canvas2D/CanvasGradient/CanvasGradient.ios.d.ts +0 -8
  250. package/Canvas2D/CanvasGradient/CanvasGradient.ios.js +0 -19
  251. package/Canvas2D/CanvasGradient/CanvasGradient.ios.js.map +0 -1
  252. package/Canvas2D/CanvasGradient/common.d.ts +0 -3
  253. package/Canvas2D/CanvasGradient/common.js +0 -3
  254. package/Canvas2D/CanvasGradient/common.js.map +0 -1
  255. package/Canvas2D/CanvasPattern/CanvasPattern.android.d.ts +0 -8
  256. package/Canvas2D/CanvasPattern/CanvasPattern.android.js +0 -20
  257. package/Canvas2D/CanvasPattern/CanvasPattern.android.js.map +0 -1
  258. package/Canvas2D/CanvasPattern/CanvasPattern.d.ts +0 -8
  259. package/Canvas2D/CanvasPattern/CanvasPattern.ios.d.ts +0 -6
  260. package/Canvas2D/CanvasPattern/CanvasPattern.ios.js +0 -10
  261. package/Canvas2D/CanvasPattern/CanvasPattern.ios.js.map +0 -1
  262. package/Canvas2D/CanvasPattern/common.d.ts +0 -7
  263. package/Canvas2D/CanvasPattern/common.js +0 -9
  264. package/Canvas2D/CanvasPattern/common.js.map +0 -1
  265. package/Canvas2D/CanvasRenderingContext2D/common.d.ts +0 -87
  266. package/Canvas2D/CanvasRenderingContext2D/common.js +0 -12
  267. package/Canvas2D/CanvasRenderingContext2D/common.js.map +0 -1
  268. package/Canvas2D/CanvasRenderingContext2D/index.android.d.ts +0 -112
  269. package/Canvas2D/CanvasRenderingContext2D/index.android.js.map +0 -1
  270. package/Canvas2D/CanvasRenderingContext2D/index.ios.d.ts +0 -110
  271. package/Canvas2D/CanvasRenderingContext2D/index.ios.js +0 -897
  272. package/Canvas2D/CanvasRenderingContext2D/index.ios.js.map +0 -1
  273. package/Canvas2D/DOMMatrix/DOMMatrix.android.d.ts +0 -72
  274. package/Canvas2D/DOMMatrix/DOMMatrix.android.js +0 -177
  275. package/Canvas2D/DOMMatrix/DOMMatrix.android.js.map +0 -1
  276. package/Canvas2D/DOMMatrix/DOMMatrix.d.ts +0 -30
  277. package/Canvas2D/DOMMatrix/DOMMatrix.ios.d.ts +0 -48
  278. package/Canvas2D/DOMMatrix/DOMMatrix.ios.js +0 -142
  279. package/Canvas2D/DOMMatrix/DOMMatrix.ios.js.map +0 -1
  280. package/Canvas2D/DOMMatrix/common.d.ts +0 -27
  281. package/Canvas2D/DOMMatrix/common.js +0 -9
  282. package/Canvas2D/DOMMatrix/common.js.map +0 -1
  283. package/Canvas2D/ImageData/ImageData.android.d.ts +0 -9
  284. package/Canvas2D/ImageData/ImageData.android.js +0 -65
  285. package/Canvas2D/ImageData/ImageData.android.js.map +0 -1
  286. package/Canvas2D/ImageData/ImageData.d.ts +0 -11
  287. package/Canvas2D/ImageData/ImageData.ios.d.ts +0 -10
  288. package/Canvas2D/ImageData/ImageData.ios.js +0 -45
  289. package/Canvas2D/ImageData/ImageData.ios.js.map +0 -1
  290. package/Canvas2D/ImageData/common.d.ts +0 -9
  291. package/Canvas2D/ImageData/common.js +0 -13
  292. package/Canvas2D/ImageData/common.js.map +0 -1
  293. package/Canvas2D/Path2D/Path2D.android.d.ts +0 -18
  294. package/Canvas2D/Path2D/Path2D.android.js +0 -83
  295. package/Canvas2D/Path2D/Path2D.android.js.map +0 -1
  296. package/Canvas2D/Path2D/Path2D.d.ts +0 -26
  297. package/Canvas2D/Path2D/Path2D.ios.d.ts +0 -15
  298. package/Canvas2D/Path2D/Path2D.ios.js +0 -55
  299. package/Canvas2D/Path2D/Path2D.ios.js.map +0 -1
  300. package/Canvas2D/Path2D/common.d.ts +0 -17
  301. package/Canvas2D/Path2D/common.js +0 -12
  302. package/Canvas2D/Path2D/common.js.map +0 -1
  303. package/Canvas2D/TextMetrics/TextMetrics.android.d.ts +0 -16
  304. package/Canvas2D/TextMetrics/TextMetrics.android.js +0 -43
  305. package/Canvas2D/TextMetrics/TextMetrics.android.js.map +0 -1
  306. package/Canvas2D/TextMetrics/TextMetrics.d.ts +0 -7
  307. package/Canvas2D/TextMetrics/TextMetrics.ios.d.ts +0 -16
  308. package/Canvas2D/TextMetrics/TextMetrics.ios.js +0 -43
  309. package/Canvas2D/TextMetrics/TextMetrics.ios.js.map +0 -1
  310. package/Canvas2D/TextMetrics/common.d.ts +0 -18
  311. package/Canvas2D/TextMetrics/common.js +0 -13
  312. package/Canvas2D/TextMetrics/common.js.map +0 -1
  313. package/ImageAsset/ImageAsset.android.d.ts +0 -20
  314. package/ImageAsset/ImageAsset.android.js +0 -149
  315. package/ImageAsset/ImageAsset.android.js.map +0 -1
  316. package/ImageAsset/ImageAsset.d.ts +0 -31
  317. package/ImageAsset/ImageAsset.ios.d.ts +0 -22
  318. package/ImageAsset/ImageAsset.ios.js +0 -114
  319. package/ImageAsset/ImageAsset.ios.js.map +0 -1
  320. package/ImageAsset/common.d.ts +0 -13
  321. package/ImageAsset/common.js +0 -21
  322. package/ImageAsset/common.js.map +0 -1
  323. package/ImageBitmap/common.d.ts +0 -8
  324. package/ImageBitmap/common.js +0 -9
  325. package/ImageBitmap/common.js.map +0 -1
  326. package/ImageBitmap/index.android.js.map +0 -1
  327. package/ImageBitmap/index.ios.d.ts +0 -12
  328. package/ImageBitmap/index.ios.js +0 -283
  329. package/ImageBitmap/index.ios.js.map +0 -1
  330. package/TextDecoder/TextDecoder.android.d.ts +0 -8
  331. package/TextDecoder/TextDecoder.android.js +0 -52
  332. package/TextDecoder/TextDecoder.android.js.map +0 -1
  333. package/TextDecoder/TextDecoder.d.ts +0 -10
  334. package/TextDecoder/TextDecoder.ios.d.ts +0 -6
  335. package/TextDecoder/TextDecoder.ios.js +0 -37
  336. package/TextDecoder/TextDecoder.ios.js.map +0 -1
  337. package/TextDecoder/common.d.ts +0 -8
  338. package/TextDecoder/common.js +0 -13
  339. package/TextDecoder/common.js.map +0 -1
  340. package/TextEncoder/TextEncoder.android.d.ts +0 -8
  341. package/TextEncoder/TextEncoder.android.js +0 -50
  342. package/TextEncoder/TextEncoder.android.js.map +0 -1
  343. package/TextEncoder/TextEncoder.d.ts +0 -10
  344. package/TextEncoder/TextEncoder.ios.d.ts +0 -6
  345. package/TextEncoder/TextEncoder.ios.js +0 -14
  346. package/TextEncoder/TextEncoder.ios.js.map +0 -1
  347. package/TextEncoder/common.d.ts +0 -7
  348. package/TextEncoder/common.js +0 -9
  349. package/TextEncoder/common.js.map +0 -1
  350. package/WebGL/WebGLExtensions/index.android.d.ts +0 -209
  351. package/WebGL/WebGLExtensions/index.android.js.map +0 -1
  352. package/WebGL/WebGLExtensions/index.ios.d.ts +0 -192
  353. package/WebGL/WebGLExtensions/index.ios.js +0 -250
  354. package/WebGL/WebGLExtensions/index.ios.js.map +0 -1
  355. package/WebGL/WebGLRenderingContext/index.android.d.ts +0 -165
  356. package/WebGL/WebGLRenderingContext/index.android.js.map +0 -1
  357. package/WebGL/WebGLRenderingContext/index.ios.d.ts +0 -163
  358. package/WebGL/WebGLRenderingContext/index.ios.js +0 -1168
  359. package/WebGL/WebGLRenderingContext/index.ios.js.map +0 -1
  360. package/WebGL2/WebGL2RenderingContext/index.android.d.ts +0 -103
  361. package/WebGL2/WebGL2RenderingContext/index.android.js.map +0 -1
  362. package/WebGL2/WebGL2RenderingContext/index.ios.d.ts +0 -102
  363. package/WebGL2/WebGL2RenderingContext/index.ios.js +0 -618
  364. package/WebGL2/WebGL2RenderingContext/index.ios.js.map +0 -1
  365. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/Utils.h +0 -26
  366. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64.swiftsourceinfo +0 -0
  367. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftdoc +0 -0
  368. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftinterface +0 -3264
  369. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/Utils.h +0 -26
  370. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64.swiftsourceinfo +0 -0
  371. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64.swiftsourceinfo +0 -0
  372. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftdoc +0 -0
  373. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64.swiftinterface +0 -3264
  374. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64.swiftdoc +0 -0
  375. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64.swiftinterface +0 -3264
@@ -0,0 +1,63 @@
1
+ //
2
+ // Created by Osei Fortune on 25/02/2023.
3
+ //
4
+
5
+ #pragma once
6
+
7
+ #include <memory>
8
+ #include "rust/cxx.h"
9
+ #import <NativeScript/JSIRuntime.h>
10
+
11
+ using namespace facebook;
12
+
13
+ inline static int64_t getPointerValue(jsi::Runtime &runtime, const facebook::jsi::Value &value) {
14
+ return value.asBigInt(runtime).Int64Value(runtime);
15
+ }
16
+
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
+
23
+ rust::Slice<T> slice(reinterpret_cast<T *>(buf), size);
24
+ return std::move(slice);
25
+ }
26
+
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
+
34
+ auto data = buf + offset;
35
+
36
+ rust::Slice<T> slice(reinterpret_cast<T *>(data), (size / sizeof(T)));
37
+ return std::move(slice);
38
+ }
39
+
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 (...) {}
50
+ }
51
+
52
+ return nullptr;
53
+ }
54
+
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);
60
+ }
61
+ return nullptr;
62
+ }
63
+
@@ -0,0 +1,30 @@
1
+ //
2
+ // Created by Osei Fortune on 22/03/2022.
3
+ //
4
+
5
+ #pragma once
6
+
7
+ #include "rust/cxx.h"
8
+ #include "canvas-cxx/src/lib.rs.h"
9
+ #include <unistd.h>
10
+ #include <thread>
11
+ #include <NativeScript/JSIRuntime.h>
12
+ #include <vector>
13
+
14
+ using namespace org::nativescript::canvas;
15
+
16
+ using namespace facebook;
17
+
18
+ class JSI_EXPORT ImageAssetImpl : public jsi::HostObject {
19
+ public:
20
+ ImageAssetImpl(rust::Box<ImageAsset> asset);
21
+
22
+ jsi::Value get(jsi::Runtime &, const jsi::PropNameID &name) override;
23
+
24
+ std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
25
+
26
+ ImageAsset &GetImageAsset();
27
+
28
+ private:
29
+ rust::Box<ImageAsset> asset_;
30
+ };
@@ -0,0 +1,417 @@
1
+ //
2
+ // Created by Osei Fortune on 22/03/2022.
3
+ //
4
+
5
+ #include "ImageAssetImpl.h"
6
+ #include <string>
7
+ #include "JSICallback.h"
8
+
9
+
10
+
11
+ ImageAssetImpl::ImageAssetImpl(rust::Box<ImageAsset> asset)
12
+ : asset_(std::move(asset)) {
13
+ }
14
+
15
+ std::vector<jsi::PropNameID> ImageAssetImpl::getPropertyNames(jsi::Runtime &rt) {
16
+ std::vector<jsi::PropNameID> ret;
17
+ ret.reserve(12);
18
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("width")));
19
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("height")));
20
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("error")));
21
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("scale")));
22
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("fromUrlSync")));
23
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("fromUrlCb")));
24
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("fromFileSync")));
25
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("fromFileCb")));
26
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("fromBytesSync")));
27
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("fromBytesCb")));
28
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("saveSync")));
29
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("saveCb")));
30
+ return ret;
31
+ }
32
+
33
+ jsi::Value ImageAssetImpl::get(jsi::Runtime &runtime, const jsi::PropNameID &name) {
34
+ auto methodName = name.utf8(runtime);
35
+ if (methodName == "width") {
36
+ return {(double) canvas_native_image_asset_width(this->GetImageAsset())};
37
+ } else if (methodName == "height") {
38
+ return {(double) canvas_native_image_asset_height(this->GetImageAsset())};
39
+ } else if (methodName == "error") {
40
+ auto error = canvas_native_image_asset_get_error(this->GetImageAsset());
41
+ return jsi::String::createFromAscii(runtime, error.data(), error.size());
42
+ } else if (methodName == "scale") {
43
+ return jsi::Function::createFromHostFunction(runtime,
44
+ jsi::PropNameID::forAscii(runtime, methodName),
45
+ 2,
46
+ [this](jsi::Runtime &runtime,
47
+ const jsi::Value &thisValue,
48
+ const jsi::Value *arguments,
49
+ size_t count) -> jsi::Value {
50
+ if (count > 1) {
51
+ auto x = (uint32_t) arguments[0].asNumber();
52
+ auto y = (uint32_t) arguments[1].asNumber();
53
+ if (x > 0 && y > 0) {
54
+ canvas_native_image_asset_scale(
55
+ this->GetImageAsset(), x,
56
+ y);
57
+ }
58
+ }
59
+
60
+
61
+ return jsi::Value::undefined();
62
+ }
63
+ );
64
+ } else if (methodName == "fromUrlSync") {
65
+ return jsi::Function::createFromHostFunction(runtime,
66
+ jsi::PropNameID::forAscii(runtime, methodName),
67
+ 1,
68
+ [this](jsi::Runtime &runtime,
69
+ const jsi::Value &thisValue,
70
+ const jsi::Value *arguments,
71
+ size_t count) -> jsi::Value {
72
+
73
+ auto url = arguments[0].asString(
74
+ runtime).utf8(runtime);
75
+ auto done = canvas_native_image_asset_load_from_url(
76
+ this->GetImageAsset(),
77
+ rust::Str(url.c_str()));
78
+ return {done};
79
+ }
80
+ );
81
+ } else if (methodName == "fromUrlCb") {
82
+ return jsi::Function::createFromHostFunction(runtime,
83
+ jsi::PropNameID::forAscii(runtime, methodName),
84
+ 2,
85
+ [this](jsi::Runtime &runtime,
86
+ const jsi::Value &thisValue,
87
+ const jsi::Value *arguments,
88
+ size_t count) -> jsi::Value {
89
+
90
+ auto current_queue = NSOperationQueue.currentQueue;
91
+
92
+ if (count < 2) {
93
+ return jsi::Value::undefined();
94
+ }
95
+
96
+
97
+ auto url = arguments[0].asString(
98
+ runtime).utf8(runtime);
99
+
100
+ auto asset = canvas_native_image_asset_shared_clone(
101
+ this->GetImageAsset());
102
+
103
+ auto cb = std::make_shared<jsi::Value>(
104
+ runtime, arguments[1]);
105
+
106
+
107
+ auto jsi_callback = new JSICallback(
108
+ std::shared_ptr<jsi::Value>(
109
+ cb));
110
+
111
+
112
+ auto queue = [NSOperationQueue new];
113
+ [queue addOperationWithBlock:^{
114
+ rust::Str asset_url(url.c_str());
115
+
116
+ auto asset = canvas_native_image_asset_shared_clone(
117
+ this->GetImageAsset());
118
+
119
+ auto done = canvas_native_image_asset_load_from_url(
120
+ this->GetImageAsset(), asset_url
121
+ );
122
+ [current_queue addOperationWithBlock:^{
123
+
124
+
125
+
126
+
127
+ auto func = jsi_callback->value_->asObject(
128
+ runtime).asFunction(
129
+ runtime);
130
+
131
+
132
+
133
+ func.call(runtime,
134
+ jsi::Value(
135
+ done));
136
+
137
+ delete static_cast<JSICallback *>(jsi_callback);
138
+ }];
139
+ }];
140
+ return jsi::Value::undefined();
141
+ }
142
+ );
143
+ } else if (methodName == "fromFileSync") {
144
+ return jsi::Function::createFromHostFunction(runtime,
145
+ jsi::PropNameID::forAscii(runtime, methodName),
146
+ 1,
147
+ [this](jsi::Runtime &runtime,
148
+ const jsi::Value &thisValue,
149
+ const jsi::Value *arguments,
150
+ size_t count) -> jsi::Value {
151
+
152
+
153
+ auto path = arguments[0].asString(
154
+ runtime).utf8(runtime);
155
+
156
+ auto done = canvas_native_image_asset_load_from_path(
157
+ this->GetImageAsset(),
158
+ rust::Str(path.c_str()));
159
+
160
+ return {done};
161
+ }
162
+ );
163
+ } else if (methodName == "fromFileCb") {
164
+ auto current_queue = NSOperationQueue.currentQueue;
165
+ return jsi::Function::createFromHostFunction(runtime,
166
+ jsi::PropNameID::forAscii(runtime, methodName),
167
+ 2,
168
+ [this, current_queue](jsi::Runtime &runtime,
169
+ const jsi::Value &thisValue,
170
+ const jsi::Value *arguments,
171
+ size_t count) -> jsi::Value {
172
+
173
+
174
+ auto path = arguments[0].asString(
175
+ runtime).utf8(runtime);
176
+
177
+
178
+
179
+ auto cb = std::make_shared<jsi::Value>(
180
+ runtime, arguments[1]);
181
+
182
+
183
+ auto jsi_callback = new JSICallback(
184
+ std::shared_ptr<jsi::Value>(
185
+ cb));
186
+
187
+
188
+
189
+
190
+ auto queue = [NSOperationQueue new];
191
+ [queue addOperationWithBlock:^{
192
+ rust::Str asset_path(path.c_str());
193
+
194
+ auto asset = canvas_native_image_asset_shared_clone(
195
+ this->GetImageAsset());
196
+
197
+ auto done = canvas_native_image_asset_load_from_path(
198
+ this->GetImageAsset(), asset_path
199
+ );
200
+ [current_queue addOperationWithBlock:^{
201
+
202
+
203
+
204
+
205
+ auto func = jsi_callback->value_->asObject(
206
+ runtime).asFunction(
207
+ runtime);
208
+
209
+
210
+
211
+ func.call(runtime,
212
+ jsi::Value(
213
+ done));
214
+
215
+ delete static_cast<JSICallback *>(jsi_callback);
216
+ }];
217
+ }];
218
+
219
+
220
+ return jsi::Value::undefined();
221
+ }
222
+ );
223
+ } else if (methodName == "fromBytesSync") {
224
+ return jsi::Function::createFromHostFunction(runtime,
225
+ jsi::PropNameID::forAscii(runtime, methodName),
226
+ 1,
227
+ [this](jsi::Runtime &runtime,
228
+ const jsi::Value &thisValue,
229
+ const jsi::Value *arguments,
230
+ size_t count) -> jsi::Value {
231
+
232
+
233
+ if (arguments[0].isObject()) {
234
+ auto object = arguments[0].asObject(
235
+ runtime);
236
+ if (!object.isArrayBuffer(
237
+ runtime)) { return {false}; }
238
+ auto buf = object.getArrayBuffer(
239
+ runtime);
240
+
241
+ auto size = buf.size(runtime);
242
+ auto data = buf.data(runtime);
243
+ auto done = canvas_native_image_asset_load_from_raw(
244
+ this->GetImageAsset(),
245
+ rust::Slice<const uint8_t>(
246
+ data, size));
247
+ return {done};
248
+ }
249
+ return {false};
250
+ }
251
+ );
252
+ } else if (methodName == "fromBytesCb") {
253
+ auto current_queue = NSOperationQueue.currentQueue;
254
+ return jsi::Function::createFromHostFunction(runtime,
255
+ jsi::PropNameID::forAscii(runtime, methodName),
256
+ 2,
257
+ [this, current_queue](jsi::Runtime &runtime,
258
+ const jsi::Value &thisValue,
259
+ const jsi::Value *arguments,
260
+ size_t count) -> jsi::Value {
261
+
262
+
263
+ auto bytes = arguments[0].asObject(
264
+ runtime).getArrayBuffer(runtime);
265
+
266
+ auto size = bytes.size(runtime);
267
+ auto data = bytes.data(runtime);
268
+ auto buf = rust::Slice<const uint8_t>(data,
269
+ size);
270
+
271
+ auto asset = canvas_native_image_asset_shared_clone(
272
+ this->GetImageAsset());
273
+
274
+
275
+ auto cb = std::make_shared<jsi::Value>(
276
+ runtime, arguments[1]);
277
+
278
+ auto jsi_callback = new JSICallback(
279
+ std::shared_ptr<jsi::Value>(
280
+ cb));
281
+
282
+
283
+ auto queue = [NSOperationQueue new];
284
+ [queue addOperationWithBlock:^{
285
+
286
+ auto asset = canvas_native_image_asset_shared_clone(
287
+ this->GetImageAsset());
288
+
289
+
290
+
291
+
292
+ auto done = canvas_native_image_asset_load_from_raw(
293
+ this->GetImageAsset(), buf);
294
+
295
+ [current_queue addOperationWithBlock:^{
296
+
297
+
298
+
299
+
300
+ auto func = jsi_callback->value_->asObject(
301
+ runtime).asFunction(
302
+ runtime);
303
+
304
+
305
+
306
+ func.call(runtime,
307
+ jsi::Value(
308
+ done));
309
+
310
+ delete static_cast<JSICallback *>(jsi_callback);
311
+ }];
312
+ }];
313
+
314
+ return jsi::Value::undefined();
315
+ }
316
+ );
317
+ } else if (methodName == "saveSync") {
318
+ return jsi::Function::createFromHostFunction(runtime,
319
+ jsi::PropNameID::forAscii(runtime, methodName),
320
+ 2,
321
+ [this](jsi::Runtime &runtime,
322
+ const jsi::Value &thisValue,
323
+ const jsi::Value *arguments,
324
+ size_t count) -> jsi::Value {
325
+
326
+ if (count < 2) {
327
+ return {false};
328
+ }
329
+
330
+ auto path = arguments[0].asString(
331
+ runtime).utf8(runtime);
332
+ auto format = (uint32_t) arguments[1].asNumber();
333
+ auto done = canvas_native_image_asset_save_path(
334
+ this->GetImageAsset(),
335
+ rust::Str(path.c_str()), format);
336
+
337
+ return {done};
338
+ }
339
+ );
340
+ } else if (methodName == "saveCb") {
341
+ auto current_queue = NSOperationQueue.currentQueue;
342
+ return jsi::Function::createFromHostFunction(runtime,
343
+ jsi::PropNameID::forAscii(runtime, methodName),
344
+ 3,
345
+ [this, current_queue](jsi::Runtime &runtime,
346
+ const jsi::Value &thisValue,
347
+ const jsi::Value *arguments,
348
+ size_t count) -> jsi::Value {
349
+
350
+
351
+ auto path = arguments[0].asString(
352
+ runtime).utf8(runtime);
353
+
354
+ auto format = (uint32_t) arguments[1].asNumber();
355
+
356
+
357
+ auto asset = canvas_native_image_asset_shared_clone(
358
+ this->GetImageAsset());
359
+
360
+
361
+ auto cb = std::make_shared<jsi::Value>(
362
+ runtime, arguments[1]);
363
+
364
+ auto jsi_callback = new JSICallback(
365
+ std::shared_ptr<jsi::Value>(
366
+ cb));
367
+
368
+
369
+ auto queue = [NSOperationQueue new];
370
+ [queue addOperationWithBlock:^{
371
+
372
+ rust::Str asset_path(
373
+ path.c_str());
374
+
375
+
376
+ auto asset = canvas_native_image_asset_shared_clone(
377
+ this->GetImageAsset());
378
+
379
+
380
+ auto done = canvas_native_image_asset_save_path(
381
+ this->GetImageAsset(),
382
+ asset_path,
383
+ format);
384
+
385
+
386
+
387
+ [current_queue addOperationWithBlock:^{
388
+
389
+
390
+
391
+
392
+ auto func = jsi_callback->value_->asObject(
393
+ runtime).asFunction(
394
+ runtime);
395
+
396
+
397
+
398
+ func.call(runtime,
399
+ jsi::Value(
400
+ done));
401
+
402
+ delete static_cast<JSICallback *>(jsi_callback);
403
+ }];
404
+ }];
405
+
406
+ return jsi::Value::undefined();
407
+ }
408
+ );
409
+ }
410
+
411
+ return jsi::Value::undefined();
412
+
413
+ }
414
+
415
+ ImageAsset &ImageAssetImpl::GetImageAsset() {
416
+ return *this->asset_;
417
+ }
@@ -0,0 +1,41 @@
1
+ //
2
+ // Created by Osei Fortune on 22/03/2022.
3
+ //
4
+
5
+ #pragma once
6
+
7
+ #include "rust/cxx.h"
8
+ #include "canvas-cxx/src/lib.rs.h"
9
+ #include "Helpers.h"
10
+ #import <NativeScript/JSIRuntime.h>
11
+ #include <vector>
12
+ using namespace org::nativescript::canvas;
13
+
14
+ struct Options {
15
+ bool flipY = false;
16
+ ImageBitmapPremultiplyAlpha premultiplyAlpha = ImageBitmapPremultiplyAlpha::Default;
17
+ ImageBitmapColorSpaceConversion colorSpaceConversion = ImageBitmapColorSpaceConversion::Default;
18
+ ImageBitmapResizeQuality resizeQuality = ImageBitmapResizeQuality::Low;
19
+ float resizeWidth = 0;
20
+ float resizeHeight = 0;
21
+ };
22
+
23
+
24
+ using namespace facebook;
25
+
26
+ class JSI_EXPORT ImageBitmapImpl : public jsi::HostObject {
27
+ public:
28
+ ImageBitmapImpl(rust::Box<ImageAsset> asset);
29
+
30
+ jsi::Value get(jsi::Runtime &, const jsi::PropNameID &name) override;
31
+
32
+ std::vector<jsi::PropNameID> getPropertyNames(jsi::Runtime &rt) override;
33
+
34
+ static Options HandleOptions(jsi::Runtime &runtime, const jsi::Value &options);
35
+
36
+ ImageAsset &GetImageAsset();
37
+
38
+ private:
39
+ rust::Box<ImageAsset> bitmap_;
40
+ bool closed_ = false;
41
+ };
@@ -0,0 +1,126 @@
1
+ //
2
+ // Created by Osei Fortune on 22/03/2022.
3
+ //
4
+
5
+ #include "ImageBitmapImpl.h"
6
+ #include "ImageAssetImpl.h"
7
+ #include "rust/cxx.h"
8
+
9
+ ImageBitmapImpl::ImageBitmapImpl(rust::Box<ImageAsset> asset)
10
+ : bitmap_(std::move(asset)) {}
11
+
12
+ jsi::Value ImageBitmapImpl::get(jsi::Runtime &runtime, const jsi::PropNameID &name) {
13
+ auto methodName = name.utf8(runtime);
14
+ if (methodName == "width") {
15
+ if (this->closed_) {
16
+ return {0};
17
+ }
18
+ return {(int32_t) canvas_native_image_asset_width(this->GetImageAsset())};
19
+ } else if (methodName == "height") {
20
+ if (this->closed_) {
21
+ return {0};
22
+ }
23
+ return {(int32_t) canvas_native_image_asset_height(this->GetImageAsset())};
24
+ } else if (methodName == "close") {
25
+ return jsi::Function::createFromHostFunction(runtime,
26
+ jsi::PropNameID::forAscii(runtime, methodName),
27
+ 0,
28
+ [this](jsi::Runtime &runtime,
29
+ const jsi::Value &thisValue,
30
+ const jsi::Value *arguments,
31
+ size_t count) -> jsi::Value {
32
+ this->closed_ = true;
33
+ return jsi::Value::undefined();
34
+ }
35
+ );
36
+ }
37
+ return jsi::Value::undefined();
38
+ }
39
+
40
+
41
+ std::vector<jsi::PropNameID> ImageBitmapImpl::getPropertyNames(jsi::Runtime &rt) {
42
+ std::vector<jsi::PropNameID> ret;
43
+ ret.reserve(3);
44
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("width")));
45
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("height")));
46
+ ret.push_back(jsi::PropNameID::forUtf8(rt, std::string("close")));
47
+ return ret;
48
+ }
49
+
50
+
51
+ Options
52
+ ImageBitmapImpl::HandleOptions(jsi::Runtime &runtime, const jsi::Value &options) {
53
+ Options ret;
54
+
55
+ if (options.isObject()) {
56
+ auto config = options.asObject(runtime);
57
+
58
+
59
+ auto flipYValue = config.getProperty(runtime, "flipY");
60
+ if (flipYValue.isBool()) {
61
+ ret.flipY = flipYValue.asBool();
62
+ }
63
+
64
+ auto premultiplyAlphaValue = config.getProperty(runtime, "premultiplyAlpha");
65
+
66
+ if (premultiplyAlphaValue.isString()) {
67
+ auto premultiplyAlpha = premultiplyAlphaValue.asString(runtime).utf8(runtime);
68
+
69
+ if (premultiplyAlpha == "premultiply") {
70
+ ret.premultiplyAlpha = ImageBitmapPremultiplyAlpha::Premultiply;
71
+ }
72
+
73
+ if (premultiplyAlpha == "none") {
74
+ ret.premultiplyAlpha = ImageBitmapPremultiplyAlpha::None;
75
+ }
76
+ }
77
+
78
+ auto colorSpaceConversionValue = config.getProperty(runtime, "colorSpaceConversion");
79
+
80
+ if (colorSpaceConversionValue.isString()) {
81
+ auto colorSpaceConversion = colorSpaceConversionValue.asString(runtime).utf8(runtime);
82
+
83
+ if (colorSpaceConversion == "none") {
84
+ ret.colorSpaceConversion = ImageBitmapColorSpaceConversion::None;
85
+ }
86
+ }
87
+
88
+ auto resizeQualityValue = config.getProperty(runtime, "resizeQuality");
89
+
90
+ if (resizeQualityValue.isString()) {
91
+ auto resizeQuality = resizeQualityValue.asString(runtime).utf8(runtime);
92
+
93
+ if (resizeQuality == "medium") {
94
+ ret.resizeQuality = ImageBitmapResizeQuality::Medium;
95
+ }
96
+
97
+ if (resizeQuality == "high") {
98
+ ret.resizeQuality = ImageBitmapResizeQuality::High;
99
+ }
100
+
101
+ if (resizeQuality == "pixelated") {
102
+ ret.resizeQuality = ImageBitmapResizeQuality::Pixelated;
103
+ }
104
+ }
105
+
106
+ auto resizeWidthValue = config.getProperty(runtime, "resizeWidth");
107
+
108
+ if (resizeWidthValue.isNumber()) {
109
+ auto val = resizeWidthValue.asNumber();
110
+ ret.resizeWidth = (float) val;
111
+ }
112
+
113
+ auto resizeHeightValue = config.getProperty(runtime, "resizeHeight");
114
+
115
+ if (resizeHeightValue.isNumber()) {
116
+ auto val = resizeHeightValue.asNumber();
117
+ ret.resizeHeight = (float) val;
118
+ }
119
+ }
120
+
121
+ return ret;
122
+ }
123
+
124
+ ImageAsset &ImageBitmapImpl::GetImageAsset() {
125
+ return *this->bitmap_;
126
+ }