@nativescript/canvas 2.0.0-beta.2 → 2.0.0-beta.20

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 (201) hide show
  1. package/Canvas/common.d.ts +23 -15
  2. package/Canvas/common.js +127 -55
  3. package/Canvas/common.js.map +1 -1
  4. package/Canvas/index.android.d.ts +1 -0
  5. package/Canvas/index.android.js +53 -88
  6. package/Canvas/index.android.js.map +1 -1
  7. package/Canvas/index.d.ts +2 -0
  8. package/Canvas/index.ios.d.ts +4 -1
  9. package/Canvas/index.ios.js +58 -52
  10. package/Canvas/index.ios.js.map +1 -1
  11. package/Canvas2D/CanvasRenderingContext2D/index.d.ts +14 -0
  12. package/Canvas2D/CanvasRenderingContext2D/index.js +207 -19
  13. package/Canvas2D/CanvasRenderingContext2D/index.js.map +1 -1
  14. package/Canvas2D/DOMMatrix/index.d.ts +14 -0
  15. package/Canvas2D/DOMMatrix/index.js +62 -0
  16. package/Canvas2D/DOMMatrix/index.js.map +1 -1
  17. package/Canvas2D/ImageData/index.js +4 -6
  18. package/Canvas2D/ImageData/index.js.map +1 -1
  19. package/Canvas2D/Path2D/index.d.ts +2 -1
  20. package/Canvas2D/Path2D/index.js +3 -12
  21. package/Canvas2D/Path2D/index.js.map +1 -1
  22. package/Dom/Dom.d.ts +20 -1
  23. package/Dom/Dom.js +78 -10
  24. package/Dom/Dom.js.map +1 -1
  25. package/Dom/Group.d.ts +5 -0
  26. package/Dom/Group.js +15 -0
  27. package/Dom/Group.js.map +1 -1
  28. package/Dom/Image.d.ts +1 -0
  29. package/Dom/Image.js +20 -0
  30. package/Dom/Image.js.map +1 -1
  31. package/Dom/Paint.d.ts +4 -0
  32. package/Dom/Paint.js +19 -7
  33. package/Dom/Paint.js.map +1 -1
  34. package/Dom/Shadow.js +9 -0
  35. package/Dom/Shadow.js.map +1 -1
  36. package/Dom/Text.js +11 -1
  37. package/Dom/Text.js.map +1 -1
  38. package/Dom/index.d.ts +1 -0
  39. package/Dom/index.js +1 -0
  40. package/Dom/index.js.map +1 -1
  41. package/Dom/shaders/Gradients.d.ts +3 -0
  42. package/Dom/shaders/Gradients.js +4 -0
  43. package/Dom/shaders/Gradients.js.map +1 -0
  44. package/Dom/shaders/LinearGradient.d.ts +14 -0
  45. package/Dom/shaders/LinearGradient.js +44 -0
  46. package/Dom/shaders/LinearGradient.js.map +1 -0
  47. package/Dom/shaders/TwoPointConicalGradient.d.ts +16 -0
  48. package/Dom/shaders/TwoPointConicalGradient.js +60 -0
  49. package/Dom/shaders/TwoPointConicalGradient.js.map +1 -0
  50. package/Dom/shaders/index.d.ts +2 -0
  51. package/Dom/shaders/index.js +3 -0
  52. package/Dom/shaders/index.js.map +1 -0
  53. package/Dom/shapes/Atlas.d.ts +22 -0
  54. package/Dom/shapes/Atlas.js +60 -0
  55. package/Dom/shapes/Atlas.js.map +1 -0
  56. package/Dom/shapes/Circle.js +11 -0
  57. package/Dom/shapes/Circle.js.map +1 -1
  58. package/Dom/shapes/Line.d.ts +16 -4
  59. package/Dom/shapes/Line.js +13 -8
  60. package/Dom/shapes/Line.js.map +1 -1
  61. package/Dom/shapes/Oval.d.ts +12 -0
  62. package/Dom/shapes/Oval.js +87 -0
  63. package/Dom/shapes/Oval.js.map +1 -0
  64. package/Dom/shapes/Path.d.ts +19 -2
  65. package/Dom/shapes/Path.js +68 -4
  66. package/Dom/shapes/Path.js.map +1 -1
  67. package/Dom/shapes/Points.js +9 -1
  68. package/Dom/shapes/Points.js.map +1 -1
  69. package/Dom/shapes/Rect.js +27 -5
  70. package/Dom/shapes/Rect.js.map +1 -1
  71. package/Dom/shapes/RoundedRect.d.ts +2 -1
  72. package/Dom/shapes/RoundedRect.js +13 -2
  73. package/Dom/shapes/RoundedRect.js.map +1 -1
  74. package/Dom/shapes/index.d.ts +17 -0
  75. package/Dom/shapes/index.js +31 -0
  76. package/Dom/shapes/index.js.map +1 -1
  77. package/WebGL/WebGLRenderingContext/index.d.ts +1 -0
  78. package/WebGL/WebGLRenderingContext/index.js +104 -14
  79. package/WebGL/WebGLRenderingContext/index.js.map +1 -1
  80. package/WebGL2/WebGL2RenderingContext/index.d.ts +1 -0
  81. package/WebGL2/WebGL2RenderingContext/index.js +2 -3
  82. package/WebGL2/WebGL2RenderingContext/index.js.map +1 -1
  83. package/index.d.ts +0 -1
  84. package/index.js +14 -15
  85. package/index.js.map +1 -1
  86. package/package.json +1 -4
  87. package/platforms/android/canvas-release.aar +0 -0
  88. package/platforms/ios/CanvasNative.xcframework/Info.plist +4 -0
  89. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/CanvasNative +0 -0
  90. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/CanvasNative-Swift.h +35 -25
  91. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_ios.h +50 -4
  92. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Headers/canvas_native.h +139 -16
  93. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Info.plist +0 -0
  94. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  95. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.abi.json +982 -3319
  96. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.private.swiftinterface +18 -33
  97. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  98. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios.swiftinterface +18 -33
  99. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/Modules/module.modulemap +1 -1
  100. package/platforms/ios/CanvasNative.xcframework/ios-arm64/CanvasNative.framework/NSCCanvas.nib +0 -0
  101. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  102. package/platforms/ios/CanvasNative.xcframework/ios-arm64/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/aarch64/CanvasNative.yml +622 -0
  103. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/CanvasNative +0 -0
  104. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/CanvasNative-Swift.h +70 -50
  105. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_ios.h +50 -4
  106. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Headers/canvas_native.h +139 -16
  107. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Info.plist +0 -0
  108. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  109. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  110. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.abi.json +982 -3319
  111. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +18 -33
  112. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  113. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/arm64-apple-ios-simulator.swiftinterface +18 -33
  114. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.abi.json +982 -3319
  115. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +18 -33
  116. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  117. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/CanvasNative.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +18 -33
  118. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/Modules/module.modulemap +1 -1
  119. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/NSCCanvas.nib +0 -0
  120. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/CanvasNative.framework/_CodeSignature/CodeResources +35 -35
  121. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/DWARF/CanvasNative +0 -0
  122. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/aarch64/CanvasNative.yml +624 -0
  123. package/platforms/ios/CanvasNative.xcframework/ios-arm64_x86_64-simulator/dSYMs/CanvasNative.framework.dSYM/Contents/Resources/Relocations/x86_64/CanvasNative.yml +624 -0
  124. package/platforms/ios/src/cpp/CanvasJSIModule.cpp +297 -397
  125. package/platforms/ios/src/cpp/Helpers.h +3 -4
  126. package/platforms/ios/src/cpp/ImageAssetImpl.cpp +30 -30
  127. package/platforms/ios/src/cpp/ImageAssetImpl.h +8 -5
  128. package/platforms/ios/src/cpp/URLImpl.cpp +73 -0
  129. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.cpp +339 -33
  130. package/platforms/ios/src/cpp/canvas2d/CanvasRenderingContext2DImpl.h +150 -55
  131. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.cpp +409 -3
  132. package/platforms/ios/src/cpp/canvas2d/MatrixImpl.h +27 -0
  133. package/platforms/ios/src/cpp/canvas2d/Path2D.cpp +19 -48
  134. package/platforms/ios/src/cpp/canvas2d/Path2D.h +19 -0
  135. package/platforms/ios/src/cpp/webgl/WebGLRenderingContext.cpp +105 -119
  136. package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.cpp +37 -7
  137. package/platforms/ios/src/cpp/webgl/WebGLRenderingContextBase.h +10 -0
  138. package/platforms/ios/src/cpp/webgl2/WebGL2RenderingContext.cpp +1766 -1659
  139. package/src-native/ios/NativeScript.podspec +1 -1
  140. package/SVG/Circle.d.ts +0 -11
  141. package/SVG/Circle.js +0 -21
  142. package/SVG/Circle.js.map +0 -1
  143. package/SVG/ClipPath.d.ts +0 -4
  144. package/SVG/ClipPath.js +0 -9
  145. package/SVG/ClipPath.js.map +0 -1
  146. package/SVG/Defs.d.ts +0 -4
  147. package/SVG/Defs.js +0 -9
  148. package/SVG/Defs.js.map +0 -1
  149. package/SVG/Ellipse.d.ts +0 -13
  150. package/SVG/Ellipse.js +0 -26
  151. package/SVG/Ellipse.js.map +0 -1
  152. package/SVG/G.d.ts +0 -7
  153. package/SVG/G.js +0 -9
  154. package/SVG/G.js.map +0 -1
  155. package/SVG/Image.d.ts +0 -11
  156. package/SVG/Image.js +0 -40
  157. package/SVG/Image.js.map +0 -1
  158. package/SVG/Line.d.ts +0 -13
  159. package/SVG/Line.js +0 -26
  160. package/SVG/Line.js.map +0 -1
  161. package/SVG/LinearGradient.d.ts +0 -10
  162. package/SVG/LinearGradient.js +0 -13
  163. package/SVG/LinearGradient.js.map +0 -1
  164. package/SVG/Path.d.ts +0 -7
  165. package/SVG/Path.js +0 -14
  166. package/SVG/Path.js.map +0 -1
  167. package/SVG/Pattern.d.ts +0 -4
  168. package/SVG/Pattern.js +0 -9
  169. package/SVG/Pattern.js.map +0 -1
  170. package/SVG/Polygon.d.ts +0 -7
  171. package/SVG/Polygon.js +0 -14
  172. package/SVG/Polygon.js.map +0 -1
  173. package/SVG/Polyline.d.ts +0 -7
  174. package/SVG/Polyline.js +0 -14
  175. package/SVG/Polyline.js.map +0 -1
  176. package/SVG/Rect.d.ts +0 -8
  177. package/SVG/Rect.js +0 -13
  178. package/SVG/Rect.js.map +0 -1
  179. package/SVG/SVG.d.ts +0 -31
  180. package/SVG/SVG.js +0 -190
  181. package/SVG/SVG.js.map +0 -1
  182. package/SVG/SVGItem.d.ts +0 -5
  183. package/SVG/SVGItem.js +0 -8
  184. package/SVG/SVGItem.js.map +0 -1
  185. package/SVG/Stop.d.ts +0 -5
  186. package/SVG/Stop.js +0 -9
  187. package/SVG/Stop.js.map +0 -1
  188. package/SVG/Symbol.d.ts +0 -4
  189. package/SVG/Symbol.js +0 -9
  190. package/SVG/Symbol.js.map +0 -1
  191. package/SVG/Text.d.ts +0 -14
  192. package/SVG/Text.js +0 -26
  193. package/SVG/Text.js.map +0 -1
  194. package/SVG/Use.d.ts +0 -4
  195. package/SVG/Use.js +0 -9
  196. package/SVG/Use.js.map +0 -1
  197. package/SVG/index.d.ts +0 -18
  198. package/SVG/index.js +0 -19
  199. package/SVG/index.js.map +0 -1
  200. package/platforms/ios/src/cpp/PerIsolateData.cpp +0 -49
  201. package/platforms/ios/src/cpp/PerIsolateData.h +0 -54
@@ -5,11 +5,21 @@
5
5
  #include "CanvasRenderingContext2DImpl.h"
6
6
  #include "Caches.h"
7
7
  #include "OneByteStringResource.h"
8
+ #include "WebGLRenderingContextBase.h"
8
9
 
10
+ v8::CFunction CanvasRenderingContext2DImpl::fast_start_raf_(
11
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::__FastStartRaf));
12
+
13
+ v8::CFunction CanvasRenderingContext2DImpl::fast_stop_raf_(
14
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::__FastStopRaf));
9
15
 
10
16
  v8::CFunction CanvasRenderingContext2DImpl::fast_draw_point_(
11
17
  v8::CFunction::Make(CanvasRenderingContext2DImpl::FastDrawPoint));
12
18
 
19
+ //v8::CFunction CanvasRenderingContext2DImpl::fast_draw_atlas_(
20
+ // v8::CFunction::Make(CanvasRenderingContext2DImpl::FastDrawAtlas));
21
+
22
+
13
23
  v8::CFunction CanvasRenderingContext2DImpl::fast_ellipse_(
14
24
  v8::CFunction::Make(CanvasRenderingContext2DImpl::FastEllipse));
15
25
 
@@ -81,13 +91,19 @@ v8::CFunction CanvasRenderingContext2DImpl::fast_clear_rect_(
81
91
  v8::CFunction CanvasRenderingContext2DImpl::fast_fill_rect_(
82
92
  v8::CFunction::Make(CanvasRenderingContext2DImpl::FastFillRect));
83
93
 
94
+ v8::CFunction CanvasRenderingContext2DImpl::fast_fill_oval_(
95
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastFillOval));
96
+
97
+
84
98
  v8::CFunction CanvasRenderingContext2DImpl::fast_stroke_rect_(
85
99
  v8::CFunction::Make(CanvasRenderingContext2DImpl::FastStrokeRect));
86
100
 
101
+ v8::CFunction CanvasRenderingContext2DImpl::fast_stroke_oval_(
102
+ v8::CFunction::Make(CanvasRenderingContext2DImpl::FastStrokeOval));
103
+
87
104
  v8::CFunction CanvasRenderingContext2DImpl::fast_rotate_(
88
105
  v8::CFunction::Make(CanvasRenderingContext2DImpl::FastRotate));
89
106
 
90
-
91
107
  v8::CFunction CanvasRenderingContext2DImpl::fast_fill_(
92
108
  v8::CFunction::Make(CanvasRenderingContext2DImpl::FastFill));
93
109
 
@@ -239,7 +255,7 @@ void CanvasRenderingContext2DImpl::Init(v8::Local<v8::Object> canvasModule, v8::
239
255
  auto context = isolate->GetCurrentContext();
240
256
  auto func = ctor->GetFunction(context).ToLocalChecked();
241
257
 
242
- canvasModule->Set(context, ConvertToV8String(isolate, "CanvasRenderingContext2D"), func);
258
+ canvasModule->Set(context, ConvertToV8String(isolate, "CanvasRenderingContext2D"), func).FromJust();
243
259
  }
244
260
 
245
261
  CanvasRenderingContext2DImpl *
@@ -251,6 +267,27 @@ CanvasRenderingContext2DImpl::GetPointer(const v8::Local<v8::Object> &object) {
251
267
  return static_cast<CanvasRenderingContext2DImpl *>(ptr);
252
268
  }
253
269
 
270
+
271
+ void CanvasRenderingContext2DImpl::StartRaf() {
272
+ auto raf = this->GetRaf();
273
+ if (raf != nullptr) {
274
+ if (!canvas_native_raf_get_started(raf->GetRaf())) {
275
+ canvas_native_raf_start(raf->GetRaf());
276
+ }
277
+ }
278
+ }
279
+
280
+
281
+ void CanvasRenderingContext2DImpl::StopRaf() {
282
+ auto raf = this->GetRaf();
283
+ if (raf != nullptr) {
284
+ if (canvas_native_raf_get_started(raf->GetRaf())) {
285
+ canvas_native_raf_stop(raf->GetRaf());
286
+ }
287
+ }
288
+ }
289
+
290
+
254
291
  v8::Local<v8::FunctionTemplate> CanvasRenderingContext2DImpl::GetCtor(v8::Isolate *isolate) {
255
292
  auto cache = Caches::Get(isolate);
256
293
  auto ctor = cache->CanvasRenderingContext2DTmpl.get();
@@ -264,6 +301,13 @@ v8::Local<v8::FunctionTemplate> CanvasRenderingContext2DImpl::GetCtor(v8::Isolat
264
301
  auto tmpl = ctorTmpl->InstanceTemplate();
265
302
  tmpl->SetInternalFieldCount(2);
266
303
 
304
+
305
+ SetFastMethod(isolate, tmpl, "__startRaf", __StartRaf, &fast_start_raf_,
306
+ v8::Local<v8::Value>());
307
+
308
+ SetFastMethod(isolate, tmpl, "__stopRaf", __StopRaf, &fast_stop_raf_,
309
+ v8::Local<v8::Value>());
310
+
267
311
  SetFastMethod(isolate, tmpl, "drawPoint", DrawPoint, &fast_draw_point_, v8::Local<v8::Value>());
268
312
 
269
313
  tmpl->Set(ConvertToV8String(isolate, "drawPoints"),
@@ -278,6 +322,9 @@ v8::Local<v8::FunctionTemplate> CanvasRenderingContext2DImpl::GetCtor(v8::Isolat
278
322
  v8::FunctionTemplate::New(isolate, __GetPointer));
279
323
  tmpl->Set(ConvertToV8String(isolate, "__resize"), v8::FunctionTemplate::New(isolate, __Resize));
280
324
 
325
+ tmpl->SetAccessor(ConvertToV8String(isolate, "continuousRenderMode"), GetContinuousRenderMode,
326
+ SetContinuousRenderMode);
327
+
281
328
  tmpl->SetAccessor(ConvertToV8String(isolate, "filter"), GetFilter, SetFilter);
282
329
  tmpl->SetAccessor(ConvertToV8String(isolate, "font"), GetFont, SetFont);
283
330
  tmpl->SetAccessor(ConvertToV8String(isolate, "letterSpacing"), GetLetterSpacing,
@@ -319,24 +366,19 @@ v8::Local<v8::FunctionTemplate> CanvasRenderingContext2DImpl::GetCtor(v8::Isolat
319
366
 
320
367
  SetFastMethod(isolate, tmpl, "beginPath", BeginPath, &fast_begin_path_, v8::Local<v8::Value>());
321
368
 
322
-
323
369
  SetFastMethod(isolate, tmpl, "bezierCurveTo", BezierCurveTo, &fast_bezier_curve_to_,
324
370
  v8::Local<v8::Value>());
325
371
 
326
-
327
372
  tmpl->Set(ConvertToV8String(isolate, "clearHitRegions"),
328
373
  v8::FunctionTemplate::New(isolate, &ClearHitRegions));
329
374
 
330
-
331
375
  SetFastMethod(isolate, tmpl, "clearRect", ClearRect, &fast_clear_rect_, v8::Local<v8::Value>());
332
376
 
333
-
334
377
  SetFastMethodWithOverLoads(isolate, tmpl, "clip", Clip, fast_clip_overloads_,
335
378
  v8::Local<v8::Value>());
336
379
 
337
380
  SetFastMethod(isolate, tmpl, "closePath", ClosePath, &fast_close_path_, v8::Local<v8::Value>());
338
381
 
339
-
340
382
  tmpl->Set(ConvertToV8String(isolate, "createImageData"),
341
383
  v8::FunctionTemplate::New(isolate, &CreateImageData));
342
384
  tmpl->Set(ConvertToV8String(isolate, "createPattern"),
@@ -352,6 +394,11 @@ v8::Local<v8::FunctionTemplate> CanvasRenderingContext2DImpl::GetCtor(v8::Isolat
352
394
  tmpl->Set(ConvertToV8String(isolate, "drawFocusIfNeeded"),
353
395
  v8::FunctionTemplate::New(isolate, &DrawFocusIfNeeded));
354
396
 
397
+ tmpl->Set(ConvertToV8String(isolate, "drawAtlas"),
398
+ v8::FunctionTemplate::New(isolate, &DrawAtlas));
399
+
400
+
401
+ // SetFastMethod(isolate, tmpl, "drawAtlas", DrawAtlas, &fast_draw_atlas_, v8::Local<v8::Value>());
355
402
 
356
403
  SetFastMethodWithOverLoads(isolate, tmpl, "drawImage", DrawImage, fast_draw_overloads_,
357
404
  v8::Local<v8::Value>());
@@ -365,6 +412,10 @@ v8::Local<v8::FunctionTemplate> CanvasRenderingContext2DImpl::GetCtor(v8::Isolat
365
412
 
366
413
  tmpl->Set(ConvertToV8String(isolate, "fillText"),
367
414
  v8::FunctionTemplate::New(isolate, &FillText));
415
+
416
+
417
+ SetFastMethod(isolate, tmpl, "fillOval", FillOval, &fast_fill_oval_, v8::Local<v8::Value>());
418
+
368
419
  tmpl->Set(ConvertToV8String(isolate, "getImageData"),
369
420
  v8::FunctionTemplate::New(isolate, &GetImageData));
370
421
  tmpl->Set(ConvertToV8String(isolate, "getLineDash"),
@@ -444,6 +495,10 @@ v8::Local<v8::FunctionTemplate> CanvasRenderingContext2DImpl::GetCtor(v8::Isolat
444
495
  tmpl->Set(ConvertToV8String(isolate, "strokeText"),
445
496
  v8::FunctionTemplate::New(isolate, &StrokeText));
446
497
 
498
+
499
+ SetFastMethod(isolate, tmpl, "strokeOval", StrokeOval, &fast_stroke_oval_,
500
+ v8::Local<v8::Value>());
501
+
447
502
  SetFastMethod(isolate, tmpl, "transform", Transform, &fast_transform_, v8::Local<v8::Value>());
448
503
 
449
504
 
@@ -466,6 +521,59 @@ RafImpl *CanvasRenderingContext2DImpl::GetRaf() {
466
521
  return this->raf_.get();
467
522
  }
468
523
 
524
+
525
+ void CanvasRenderingContext2DImpl::__StartRaf(const v8::FunctionCallbackInfo<v8::Value> &args) {
526
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
527
+ if (ptr == nullptr) {
528
+ return;
529
+ }
530
+
531
+ ptr->StartRaf();
532
+
533
+ }
534
+
535
+ void CanvasRenderingContext2DImpl::__StopRaf(const v8::FunctionCallbackInfo<v8::Value> &args) {
536
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
537
+ if (ptr == nullptr) {
538
+ return;
539
+ }
540
+
541
+ ptr->StopRaf();
542
+
543
+ }
544
+
545
+
546
+ void CanvasRenderingContext2DImpl::GetContinuousRenderMode(v8::Local<v8::String> property,
547
+ const v8::PropertyCallbackInfo<v8::Value> &info) {
548
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
549
+ if (ptr == nullptr) {
550
+ info.GetReturnValue().Set(false);
551
+ return;
552
+ }
553
+ info.GetReturnValue().Set(ptr->continuousRender_);
554
+ }
555
+
556
+ void CanvasRenderingContext2DImpl::SetContinuousRenderMode(v8::Local<v8::String> property,
557
+ v8::Local<v8::Value> value,
558
+ const v8::PropertyCallbackInfo<void> &info) {
559
+ CanvasRenderingContext2DImpl *ptr = GetPointer(info.This());
560
+ if (ptr == nullptr) {
561
+ return;
562
+ }
563
+ auto isolate = info.GetIsolate();
564
+ auto val = value->BooleanValue(isolate);
565
+ if (val == ptr->continuousRender_) {
566
+ return;
567
+ }
568
+ if (val) {
569
+ ptr->StartRaf();
570
+ } else {
571
+ ptr->StopRaf();
572
+ }
573
+ ptr->continuousRender_ = val;
574
+ }
575
+
576
+
469
577
  /* Non Standard 2D */
470
578
 
471
579
  void CanvasRenderingContext2DImpl::DrawPoint(const v8::FunctionCallbackInfo<v8::Value> &args) {
@@ -495,26 +603,16 @@ void CanvasRenderingContext2DImpl::DrawPoints(const v8::FunctionCallbackInfo<v8:
495
603
  auto context = isolate->GetCurrentContext();
496
604
 
497
605
 
498
- auto mode = ConvertFromV8String(isolate, args[0]);
606
+ auto mode = args[0];
499
607
  auto points = args[1].As<v8::Array>();
500
608
  auto size = points->Length();
501
609
 
502
-
503
- if ((size % 2) == 0) {
504
- int32_t pointMode = -1;
505
- if (mode == "points") {
506
- pointMode = 0;
507
- } else if (mode == "lines") {
508
- pointMode = 1;
509
- } else if (mode == "polygon") {
510
- pointMode = 2;
511
- }
512
- if (pointMode == -1) {
513
- return;
514
- }
610
+ if (size == 0) { return; }
611
+ uint32_t pointMode = 0;
612
+ if (mode->IsUint32() && mode->Uint32Value(context).To(&pointMode)) {
515
613
  std::vector<float> store;
516
- store.reserve(size);
517
- int next = 0;
614
+ auto len = size * 2;
615
+ store.reserve(len);
518
616
  for (int i = 0; i < size; i++) {
519
617
 
520
618
  auto object = points->Get(
@@ -526,10 +624,8 @@ void CanvasRenderingContext2DImpl::DrawPoints(const v8::FunctionCallbackInfo<v8:
526
624
  auto y = object->Get(context,
527
625
  ConvertToV8String(isolate, "y")).ToLocalChecked()->NumberValue(
528
626
  context).ToChecked();
529
- store[next] = (float) x;
530
- store[next + 1] = (float) y;
531
-
532
- next = i + 2;
627
+ store.emplace_back((float) x);
628
+ store.emplace_back((float) y);
533
629
  }
534
630
 
535
631
  canvas_native_context_draw_points(
@@ -1285,7 +1381,7 @@ void CanvasRenderingContext2DImpl::GetLineDash(v8::Local<v8::String> property,
1285
1381
  auto ret = v8::Array::New(isolate, (int) size);
1286
1382
  for (int i = 0; i < size; i++) {
1287
1383
  auto item = buf[i];
1288
- ret->Set(context, i, v8::Number::New(isolate, (double) item));
1384
+ ret->Set(context, i, v8::Number::New(isolate, (double) item)).FromJust();
1289
1385
  }
1290
1386
 
1291
1387
  }
@@ -1791,6 +1887,143 @@ CanvasRenderingContext2DImpl::DrawFocusIfNeeded(const v8::FunctionCallbackInfo<v
1791
1887
  }
1792
1888
 
1793
1889
 
1890
+ void
1891
+ CanvasRenderingContext2DImpl::DrawAtlas(const v8::FunctionCallbackInfo<v8::Value> &args) {
1892
+
1893
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
1894
+ if (ptr == nullptr) {
1895
+ return;
1896
+ }
1897
+
1898
+ auto count = args.Length();
1899
+ auto value = args[0];
1900
+
1901
+ if (value->IsNullOrUndefined() || !value->IsObject()) {
1902
+ return;
1903
+ }
1904
+
1905
+ auto isolate = args.GetIsolate();
1906
+ auto context = isolate->GetCurrentContext();
1907
+ auto image = value.As<v8::Object>();
1908
+ auto imageType = GetNativeType(image);
1909
+
1910
+
1911
+ auto xformValue = args[1];
1912
+ auto texValue = args[2];
1913
+ auto colorsValue = args[3];
1914
+ auto blendValue = args[4];
1915
+
1916
+ if (xformValue->IsArray() && texValue->IsArray()) {
1917
+
1918
+ std::vector<float> xform;
1919
+ std::vector<float> tex;
1920
+
1921
+ v8::Local<v8::Array> xformArray = xformValue.As<v8::Array>();
1922
+ v8::Local<v8::Array> texArray = texValue.As<v8::Array>();
1923
+
1924
+ auto xformLen = xformArray->Length();
1925
+ xform.reserve(xformLen);
1926
+ auto texLen = texArray->Length();
1927
+ tex.reserve(texLen);
1928
+
1929
+
1930
+ for (int i = 0; i < xformLen; i++) {
1931
+ xform.emplace_back((float) xformArray->Get(context, i).ToLocalChecked()->NumberValue(
1932
+ context).ToChecked());
1933
+ }
1934
+
1935
+ for (int i = 0; i < texLen; i++) {
1936
+ tex.emplace_back((float) texArray->Get(context, i).ToLocalChecked()->NumberValue(
1937
+ context).ToChecked());
1938
+ }
1939
+
1940
+ std::vector<std::string> colors;
1941
+ std::vector<const char *> colors_ref;
1942
+
1943
+ // dst-over
1944
+ int32_t mode = 4;
1945
+
1946
+ if (blendValue->IsInt32()) {
1947
+ auto val = blendValue->Int32Value(context).To(&mode);
1948
+ }
1949
+
1950
+ if (colorsValue->IsArray()) {
1951
+ auto colorsArray = colorsValue.As<v8::Array>();
1952
+ auto colorsLen = colorsArray->Length();
1953
+ colors.reserve(colorsLen);
1954
+ colors_ref.reserve(colorsLen);
1955
+ for (int i = 0; i < colorsLen; i++) {
1956
+ auto str = ConvertFromV8String(isolate, texArray->Get(context, i).ToLocalChecked());
1957
+ colors.emplace_back(str);
1958
+ colors_ref.emplace_back(str.c_str());
1959
+ }
1960
+ }
1961
+
1962
+ switch (imageType) {
1963
+ case NativeType::ImageAsset: {
1964
+ auto image_asset = ImageAssetImpl::GetPointer(image);
1965
+
1966
+ if (image_asset != nullptr) {
1967
+
1968
+ if (colors.empty()) {
1969
+ canvas_native_context_draw_atlas_asset(ptr->GetContext(),
1970
+ image_asset->GetImageAsset(),
1971
+ xform.data(), xform.size(),
1972
+ tex.data(),
1973
+ tex.size(), nullptr,
1974
+ 0, mode);
1975
+ } else {
1976
+ canvas_native_context_draw_atlas_asset(ptr->GetContext(),
1977
+ image_asset->GetImageAsset(),
1978
+ xform.data(), xform.size(),
1979
+ tex.data(),
1980
+ tex.size(), colors_ref.data(),
1981
+ colors_ref.size(), mode);
1982
+ }
1983
+
1984
+
1985
+ ptr->UpdateInvalidateState();
1986
+ }
1987
+ }
1988
+ break;
1989
+ case NativeType::ImageBitmap: {
1990
+ auto image_bitmap = ImageBitmapImpl::GetPointer(image);
1991
+ if (image_bitmap != nullptr) {
1992
+ if (colors.empty()) {
1993
+ canvas_native_context_draw_atlas_asset(ptr->GetContext(),
1994
+ image_bitmap->GetImageAsset(),
1995
+ xform.data(), xform.size(),
1996
+ tex.data(),
1997
+ tex.size(), nullptr,
1998
+ 0, mode);
1999
+ } else {
2000
+ canvas_native_context_draw_atlas_asset(ptr->GetContext(),
2001
+ image_bitmap->GetImageAsset(),
2002
+ xform.data(), xform.size(),
2003
+ tex.data(),
2004
+ tex.size(), colors_ref.data(),
2005
+ colors_ref.size(), mode);
2006
+ }
2007
+ }
2008
+ }
2009
+ break;
2010
+ case NativeType::CanvasRenderingContext2D: {
2011
+ auto image_canvas = CanvasRenderingContext2DImpl::GetPointer(image);
2012
+ if (image_canvas != nullptr) {
2013
+
2014
+ ptr->UpdateInvalidateState();
2015
+ }
2016
+ }
2017
+ break;
2018
+ default:
2019
+ break;
2020
+ }
2021
+ }
2022
+
2023
+
2024
+ }
2025
+
2026
+
1794
2027
  void
1795
2028
  CanvasRenderingContext2DImpl::DrawImage(const v8::FunctionCallbackInfo<v8::Value> &args) {
1796
2029
 
@@ -1849,6 +2082,17 @@ CanvasRenderingContext2DImpl::DrawImage(const v8::FunctionCallbackInfo<v8::Value
1849
2082
  }
1850
2083
  }
1851
2084
  break;
2085
+ case NativeType::WebGLRenderingContextBase: {
2086
+ auto gl = WebGLRenderingContextBase::GetPointer(image);
2087
+ if (gl != nullptr) {
2088
+ canvas_native_context_draw_image_dx_dy_webgl(
2089
+ ptr->GetContext(),
2090
+ gl->GetState(),
2091
+ dx, dy
2092
+ );
2093
+ }
2094
+ }
2095
+ break;
1852
2096
  default:
1853
2097
  break;
1854
2098
  }
@@ -1899,6 +2143,17 @@ CanvasRenderingContext2DImpl::DrawImage(const v8::FunctionCallbackInfo<v8::Value
1899
2143
  }
1900
2144
  }
1901
2145
  break;
2146
+ case NativeType::WebGLRenderingContextBase: {
2147
+ auto gl = WebGLRenderingContextBase::GetPointer(image);
2148
+ if (gl != nullptr) {
2149
+ canvas_native_context_draw_image_dx_dy_dw_dh_webgl(
2150
+ ptr->GetContext(),
2151
+ gl->GetState(),
2152
+ dx, dy, dWidth, dHeight
2153
+ );
2154
+ }
2155
+ }
2156
+ break;
1902
2157
  default:
1903
2158
  break;
1904
2159
  }
@@ -1957,6 +2212,20 @@ CanvasRenderingContext2DImpl::DrawImage(const v8::FunctionCallbackInfo<v8::Value
1957
2212
  }
1958
2213
  }
1959
2214
  break;
2215
+ case NativeType::WebGLRenderingContextBase: {
2216
+ auto gl = WebGLRenderingContextBase::GetPointer(image);
2217
+ if (gl != nullptr) {
2218
+ canvas_native_context_draw_image_webgl(
2219
+ ptr->GetContext(),
2220
+ gl->GetState(),
2221
+ sx,
2222
+ sy, sWidth, sHeight,
2223
+ dx,
2224
+ dy, dWidth, dHeight
2225
+ );
2226
+ }
2227
+ }
2228
+ break;
1960
2229
  default:
1961
2230
  break;
1962
2231
  }
@@ -2090,6 +2359,26 @@ CanvasRenderingContext2DImpl::FillText(const v8::FunctionCallbackInfo<v8::Value>
2090
2359
 
2091
2360
  }
2092
2361
 
2362
+
2363
+ void
2364
+ CanvasRenderingContext2DImpl::FillOval(const v8::FunctionCallbackInfo<v8::Value> &args) {
2365
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2366
+ if (ptr == nullptr) {
2367
+ return;
2368
+ }
2369
+ auto isolate = args.GetIsolate();
2370
+ auto context = isolate->GetCurrentContext();
2371
+
2372
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2373
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2374
+ auto width = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2375
+ auto height = static_cast<float>(args[3]->NumberValue(context).ToChecked());
2376
+ canvas_native_context_fill_oval(
2377
+ ptr->GetContext(), x, y, width,
2378
+ height);
2379
+ ptr->UpdateInvalidateState();
2380
+ }
2381
+
2093
2382
  void
2094
2383
  CanvasRenderingContext2DImpl::GetImageData(const v8::FunctionCallbackInfo<v8::Value> &args) {
2095
2384
  CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
@@ -2150,7 +2439,7 @@ CanvasRenderingContext2DImpl::GetLineDash(const v8::FunctionCallbackInfo<v8::Val
2150
2439
  for (int i = 0; i < size; ++i) {
2151
2440
  array->Set(context, i,
2152
2441
  v8::Number::New(isolate,
2153
- (double) buf[i]));
2442
+ (double) buf[i])).FromJust();
2154
2443
  }
2155
2444
 
2156
2445
  args.GetReturnValue().Set(array);
@@ -2676,6 +2965,27 @@ CanvasRenderingContext2DImpl::StrokeText(const v8::FunctionCallbackInfo<v8::Valu
2676
2965
  }
2677
2966
  }
2678
2967
 
2968
+ void
2969
+ CanvasRenderingContext2DImpl::StrokeOval(const v8::FunctionCallbackInfo<v8::Value> &args) {
2970
+ CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
2971
+
2972
+ auto isolate = args.GetIsolate();
2973
+ auto context = isolate->GetCurrentContext();
2974
+
2975
+ if (args.Length() == 4) {
2976
+ auto x = static_cast<float>(args[0]->NumberValue(context).ToChecked());
2977
+ auto y = static_cast<float>(args[1]->NumberValue(context).ToChecked());
2978
+ auto width = static_cast<float>(args[2]->NumberValue(context).ToChecked());
2979
+ auto height = static_cast<float>(args[3]->NumberValue(context).ToChecked());
2980
+ canvas_native_context_stroke_oval(
2981
+ ptr->GetContext(), x, y,
2982
+ width,
2983
+ height);
2984
+ ptr->UpdateInvalidateState();
2985
+ }
2986
+ }
2987
+
2988
+
2679
2989
  void
2680
2990
  CanvasRenderingContext2DImpl::Transform(const v8::FunctionCallbackInfo<v8::Value> &args) {
2681
2991
  CanvasRenderingContext2DImpl *ptr = GetPointer(args.This());
@@ -2785,11 +3095,7 @@ void CanvasRenderingContext2DImpl::Flush() {
2785
3095
  auto state = (int) this->GetInvalidateState() & (int) InvalidateState::InvalidateStatePending;
2786
3096
  if (state == (int) InvalidateState::InvalidateStatePending) {
2787
3097
  this->SetInvalidateState(InvalidateState::InvalidateStateInvalidating);
2788
- // canvas_native_context_flush(ptr->GetContext());
2789
-
2790
3098
  canvas_native_context_render(this->GetContext());
2791
- // canvas_native_context_gl_make_current(ptr->GetContext());
2792
- // canvas_native_context_gl_swap_buffers(ptr->GetContext());
2793
3099
  this->SetInvalidateState(InvalidateState::InvalidateStateNone);
2794
3100
  }
2795
3101
  }