@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
@@ -183,6 +183,71 @@ v8::Local<v8::FunctionTemplate> MatrixImpl::GetCtor(v8::Isolate *isolate) {
183
183
  );
184
184
 
185
185
 
186
+ tmpl->Set(
187
+ ConvertToV8String(isolate, "translate"),
188
+ v8::FunctionTemplate::New(isolate, Translate)
189
+ );
190
+
191
+ tmpl->Set(
192
+ ConvertToV8String(isolate, "translateSelf"),
193
+ v8::FunctionTemplate::New(isolate, TranslateSelf)
194
+ );
195
+
196
+
197
+ tmpl->Set(
198
+ ConvertToV8String(isolate, "multiplySelf"),
199
+ v8::FunctionTemplate::New(isolate, MultiplySelf)
200
+ );
201
+
202
+ tmpl->Set(
203
+ ConvertToV8String(isolate, "premultiplySelf"),
204
+ v8::FunctionTemplate::New(isolate, PremultiplySelf)
205
+ );
206
+
207
+
208
+ tmpl->Set(
209
+ ConvertToV8String(isolate, "scaleNonUniform"),
210
+ v8::FunctionTemplate::New(isolate, ScaleNonUniform)
211
+ );
212
+
213
+ tmpl->Set(
214
+ ConvertToV8String(isolate, "scaleNonUniformSelf"),
215
+ v8::FunctionTemplate::New(isolate, ScaleNonUniformSelf)
216
+ );
217
+
218
+ tmpl->Set(
219
+ ConvertToV8String(isolate, "rotate"),
220
+ v8::FunctionTemplate::New(isolate, Rotate)
221
+ );
222
+
223
+ tmpl->Set(
224
+ ConvertToV8String(isolate, "rotateSelf"),
225
+ v8::FunctionTemplate::New(isolate, RotateSelf)
226
+ );
227
+
228
+
229
+ tmpl->Set(
230
+ ConvertToV8String(isolate, "skewX"),
231
+ v8::FunctionTemplate::New(isolate, SkewX)
232
+ );
233
+
234
+ tmpl->Set(
235
+ ConvertToV8String(isolate, "skewXSelf"),
236
+ v8::FunctionTemplate::New(isolate, SkewXSelf)
237
+ );
238
+
239
+
240
+ tmpl->Set(
241
+ ConvertToV8String(isolate, "skewY"),
242
+ v8::FunctionTemplate::New(isolate, SkewY)
243
+ );
244
+
245
+ tmpl->Set(
246
+ ConvertToV8String(isolate, "skewYSelf"),
247
+ v8::FunctionTemplate::New(isolate, SkewYSelf)
248
+ );
249
+
250
+
186
251
  cache->MatrixTmpl =
187
252
  std::make_unique<v8::Persistent<v8::FunctionTemplate>>(isolate, ctorTmpl);
188
253
  return ctorTmpl;
@@ -216,7 +281,7 @@ void MatrixImpl::Ctor(const v8::FunctionCallbackInfo<v8::Value> &args) {
216
281
 
217
282
  ret->SetAlignedPointerInInternalField(0, object);
218
283
 
219
- SetNativeType( ret, NativeType::Matrix);
284
+ SetNativeType(ret, NativeType::Matrix);
220
285
 
221
286
  object->BindFinalizer(isolate, ret);
222
287
 
@@ -242,7 +307,7 @@ void MatrixImpl::Ctor(const v8::FunctionCallbackInfo<v8::Value> &args) {
242
307
 
243
308
  ret->SetAlignedPointerInInternalField(0, object);
244
309
 
245
- SetNativeType( ret, NativeType::Matrix);
310
+ SetNativeType(ret, NativeType::Matrix);
246
311
 
247
312
  object->BindFinalizer(isolate, ret);
248
313
 
@@ -257,7 +322,7 @@ void MatrixImpl::Ctor(const v8::FunctionCallbackInfo<v8::Value> &args) {
257
322
 
258
323
  ret->SetAlignedPointerInInternalField(0, object);
259
324
 
260
- SetNativeType( ret, NativeType::Matrix);
325
+ SetNativeType(ret, NativeType::Matrix);
261
326
 
262
327
  object->BindFinalizer(isolate, ret);
263
328
 
@@ -802,6 +867,347 @@ void MatrixImpl::SetM44(v8::Local<v8::String> property,
802
867
  canvas_native_matrix_set_m44(ptr->GetMatrix(), (float) value->NumberValue(context).ToChecked());
803
868
  }
804
869
 
870
+
871
+ void MatrixImpl::Translate(const v8::FunctionCallbackInfo<v8::Value> &args) {
872
+ auto count = args.Length();
873
+ auto isolate = args.GetIsolate();
874
+
875
+
876
+ if (count >= 3) {
877
+ auto context = isolate->GetCurrentContext();
878
+ auto x = args[0];
879
+ auto y = args[1];
880
+ auto value = args[2];
881
+ auto type = GetNativeType(value);
882
+ if (type == NativeType::Matrix) {
883
+ auto ptr = MatrixImpl::GetPointer(value.As<v8::Object>());
884
+ auto matrix = canvas_native_matrix_translate(
885
+ (float) x->NumberValue(context).ToChecked(),
886
+ (float) y->NumberValue(context).ToChecked(),
887
+ ptr->GetMatrix());
888
+ if (matrix == nullptr) {
889
+ args.GetReturnValue().SetUndefined();
890
+ return;
891
+ }
892
+
893
+
894
+ auto ret = MatrixImpl::GetCtor(isolate)->GetFunction(
895
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
896
+ auto object = new MatrixImpl(matrix);
897
+
898
+ ret->SetAlignedPointerInInternalField(0, object);
899
+
900
+ SetNativeType(ret, NativeType::Matrix);
901
+
902
+ object->BindFinalizer(isolate, ret);
903
+
904
+ args.GetReturnValue().Set(ret);
905
+ return;
906
+ }
907
+ }
908
+
909
+ args.GetReturnValue().SetUndefined();
910
+ }
911
+
912
+ void MatrixImpl::TranslateSelf(const v8::FunctionCallbackInfo<v8::Value> &args) {
913
+ auto count = args.Length();
914
+ auto isolate = args.GetIsolate();
915
+
916
+ MatrixImpl *ptr = GetPointer(args.This());
917
+
918
+ if (count >= 2) {
919
+ auto context = isolate->GetCurrentContext();
920
+ auto x = args[0];
921
+ auto y = args[1];
922
+
923
+ canvas_native_matrix_translate_self(ptr->GetMatrix(),
924
+ (float) x->NumberValue(context).ToChecked(),
925
+ (float) y->NumberValue(context).ToChecked());
926
+ }
927
+ }
928
+
929
+ void MatrixImpl::MultiplySelf(const v8::FunctionCallbackInfo<v8::Value> &args) {
930
+ auto count = args.Length();
931
+ auto isolate = args.GetIsolate();
932
+
933
+ MatrixImpl *ptr = GetPointer(args.This());
934
+
935
+ if (count >= 1) {
936
+ auto context = isolate->GetCurrentContext();
937
+ auto value = args[0];
938
+ auto type = GetNativeType(value);
939
+ if (type == NativeType::Matrix) {
940
+ auto matrix = GetPointer(value.As<v8::Object>());
941
+ canvas_native_matrix_multiply_self(ptr->GetMatrix(), matrix->GetMatrix());
942
+ }
943
+ }
944
+ }
945
+
946
+ void MatrixImpl::PremultiplySelf(const v8::FunctionCallbackInfo<v8::Value> &args) {
947
+ auto count = args.Length();
948
+ auto isolate = args.GetIsolate();
949
+
950
+ MatrixImpl *ptr = GetPointer(args.This());
951
+
952
+ if (count >= 1) {
953
+ auto context = isolate->GetCurrentContext();
954
+ auto value = args[0];
955
+ auto type = GetNativeType(value);
956
+ if (type == NativeType::Matrix) {
957
+ auto matrix = GetPointer(value.As<v8::Object>());
958
+ canvas_native_matrix_premultiply_self(ptr->GetMatrix(), matrix->GetMatrix());
959
+ }
960
+ }
961
+ }
962
+
963
+ void MatrixImpl::ScaleNonUniform(const v8::FunctionCallbackInfo<v8::Value> &args) {
964
+ auto count = args.Length();
965
+ auto isolate = args.GetIsolate();
966
+
967
+
968
+ if (count >= 3) {
969
+ auto context = isolate->GetCurrentContext();
970
+ auto sx = args[0];
971
+ auto sy = args[1];
972
+ auto value = args[2];
973
+ auto type = GetNativeType(value);
974
+ if (type == NativeType::Matrix) {
975
+ auto ptr = MatrixImpl::GetPointer(value.As<v8::Object>());
976
+ auto matrix = canvas_native_matrix_scale_non_uniform(
977
+ (float) sx->NumberValue(context).ToChecked(),
978
+ (float) sy->NumberValue(context).ToChecked(),
979
+ ptr->GetMatrix());
980
+ if (matrix == nullptr) {
981
+ args.GetReturnValue().SetUndefined();
982
+ return;
983
+ }
984
+
985
+
986
+ auto ret = MatrixImpl::GetCtor(isolate)->GetFunction(
987
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
988
+ auto object = new MatrixImpl(matrix);
989
+
990
+ ret->SetAlignedPointerInInternalField(0, object);
991
+
992
+ SetNativeType(ret, NativeType::Matrix);
993
+
994
+ object->BindFinalizer(isolate, ret);
995
+
996
+ args.GetReturnValue().Set(ret);
997
+ return;
998
+ }
999
+ }
1000
+
1001
+ args.GetReturnValue().SetUndefined();
1002
+ }
1003
+
1004
+ void MatrixImpl::ScaleNonUniformSelf(const v8::FunctionCallbackInfo<v8::Value> &args) {
1005
+ auto count = args.Length();
1006
+ auto isolate = args.GetIsolate();
1007
+
1008
+ MatrixImpl *ptr = GetPointer(args.This());
1009
+
1010
+ if (count >= 2) {
1011
+ auto context = isolate->GetCurrentContext();
1012
+ auto x = args[0];
1013
+ auto y = args[1];
1014
+ canvas_native_matrix_scale_non_uniform_self(ptr->GetMatrix(),
1015
+ (float) x->NumberValue(context).ToChecked(),
1016
+ (float) y->NumberValue(context).ToChecked());
1017
+ }
1018
+ }
1019
+
1020
+ void MatrixImpl::Rotate(const v8::FunctionCallbackInfo<v8::Value> &args) {
1021
+ auto count = args.Length();
1022
+ auto isolate = args.GetIsolate();
1023
+
1024
+
1025
+ if (count >= 4) {
1026
+ auto context = isolate->GetCurrentContext();
1027
+ auto angle = args[0];
1028
+ auto cx = args[1];
1029
+ auto cy = args[2];
1030
+ auto value = args[3];
1031
+ auto type = GetNativeType(value);
1032
+ if (type == NativeType::Matrix) {
1033
+ auto ptr = MatrixImpl::GetPointer(value.As<v8::Object>());
1034
+ auto matrix = canvas_native_matrix_rotate(
1035
+ (float) angle->NumberValue(context).ToChecked(),
1036
+ (float) cx->NumberValue(context).ToChecked(),
1037
+ (float) cy->NumberValue(context).ToChecked(),
1038
+ ptr->GetMatrix());
1039
+ if (matrix == nullptr) {
1040
+ args.GetReturnValue().SetUndefined();
1041
+ return;
1042
+ }
1043
+
1044
+
1045
+ auto ret = MatrixImpl::GetCtor(isolate)->GetFunction(
1046
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
1047
+ auto object = new MatrixImpl(matrix);
1048
+
1049
+ ret->SetAlignedPointerInInternalField(0, object);
1050
+
1051
+ SetNativeType(ret, NativeType::Matrix);
1052
+
1053
+ object->BindFinalizer(isolate, ret);
1054
+
1055
+ args.GetReturnValue().Set(ret);
1056
+ return;
1057
+ }
1058
+ }
1059
+
1060
+ args.GetReturnValue().SetUndefined();
1061
+ }
1062
+
1063
+ void MatrixImpl::RotateSelf(const v8::FunctionCallbackInfo<v8::Value> &args) {
1064
+ auto count = args.Length();
1065
+ auto isolate = args.GetIsolate();
1066
+
1067
+ MatrixImpl *ptr = GetPointer(args.This());
1068
+
1069
+ if (count >= 2) {
1070
+ auto context = isolate->GetCurrentContext();
1071
+ auto angle = args[0];
1072
+ auto cx = args[1];
1073
+ auto cy = args[2];
1074
+ canvas_native_matrix_rotate_self(ptr->GetMatrix(),
1075
+ (float) angle->NumberValue(context).ToChecked(),
1076
+ (float) cx->NumberValue(context).ToChecked(),
1077
+ (float) cy->NumberValue(context).ToChecked());
1078
+ }
1079
+ }
1080
+
1081
+ void MatrixImpl::SkewX(const v8::FunctionCallbackInfo<v8::Value> &args) {
1082
+ auto count = args.Length();
1083
+ auto isolate = args.GetIsolate();
1084
+
1085
+
1086
+ if (count >= 2) {
1087
+ auto context = isolate->GetCurrentContext();
1088
+ auto angle = args[0];
1089
+ auto value = args[1];
1090
+ auto type = GetNativeType(value);
1091
+ if (type == NativeType::Matrix) {
1092
+ auto ptr = MatrixImpl::GetPointer(value.As<v8::Object>());
1093
+ auto matrix = canvas_native_matrix_skew_x(
1094
+ (float) angle->NumberValue(context).ToChecked(),
1095
+ ptr->GetMatrix());
1096
+ if (matrix == nullptr) {
1097
+ args.GetReturnValue().SetUndefined();
1098
+ return;
1099
+ }
1100
+
1101
+
1102
+ auto ret = MatrixImpl::GetCtor(isolate)->GetFunction(
1103
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
1104
+ auto object = new MatrixImpl(matrix);
1105
+
1106
+ ret->SetAlignedPointerInInternalField(0, object);
1107
+
1108
+ SetNativeType(ret, NativeType::Matrix);
1109
+
1110
+ object->BindFinalizer(isolate, ret);
1111
+
1112
+ args.GetReturnValue().Set(ret);
1113
+ return;
1114
+ }
1115
+ }
1116
+
1117
+ args.GetReturnValue().SetUndefined();
1118
+ }
1119
+
1120
+ void MatrixImpl::SkewXSelf(const v8::FunctionCallbackInfo<v8::Value> &args) {
1121
+ auto count = args.Length();
1122
+ auto isolate = args.GetIsolate();
1123
+
1124
+ MatrixImpl *ptr = GetPointer(args.This());
1125
+
1126
+ if (count >= 1) {
1127
+ auto context = isolate->GetCurrentContext();
1128
+ auto angle = args[0];
1129
+ canvas_native_matrix_skew_x_self(ptr->GetMatrix(),
1130
+ (float) angle->NumberValue(context).ToChecked());
1131
+ }
1132
+ }
1133
+
1134
+ void MatrixImpl::SkewY(const v8::FunctionCallbackInfo<v8::Value> &args) {
1135
+ auto count = args.Length();
1136
+ auto isolate = args.GetIsolate();
1137
+
1138
+
1139
+ if (count >= 2) {
1140
+ auto context = isolate->GetCurrentContext();
1141
+ auto angle = args[0];
1142
+ auto value = args[1];
1143
+ auto type = GetNativeType(value);
1144
+ if (type == NativeType::Matrix) {
1145
+ auto ptr = MatrixImpl::GetPointer(value.As<v8::Object>());
1146
+ auto matrix = canvas_native_matrix_skew_y(
1147
+ angle->NumberValue(context).ToChecked(),
1148
+ ptr->GetMatrix());
1149
+ if (matrix == nullptr) {
1150
+ args.GetReturnValue().SetUndefined();
1151
+ return;
1152
+ }
1153
+
1154
+
1155
+ auto ret = MatrixImpl::GetCtor(isolate)->GetFunction(
1156
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
1157
+ auto object = new MatrixImpl(matrix);
1158
+
1159
+ ret->SetAlignedPointerInInternalField(0, object);
1160
+
1161
+ SetNativeType(ret, NativeType::Matrix);
1162
+
1163
+ object->BindFinalizer(isolate, ret);
1164
+
1165
+ args.GetReturnValue().Set(ret);
1166
+ return;
1167
+ }
1168
+ }
1169
+
1170
+ args.GetReturnValue().SetUndefined();
1171
+ }
1172
+
1173
+ void MatrixImpl::SkewYSelf(const v8::FunctionCallbackInfo<v8::Value> &args) {
1174
+ auto count = args.Length();
1175
+ auto isolate = args.GetIsolate();
1176
+
1177
+ MatrixImpl *ptr = GetPointer(args.This());
1178
+
1179
+ if (count >= 1) {
1180
+ auto context = isolate->GetCurrentContext();
1181
+ auto angle = args[0];
1182
+ canvas_native_matrix_skew_y_self(ptr->GetMatrix(),
1183
+ (float) angle->NumberValue(context).ToChecked());
1184
+ }
1185
+ }
1186
+
1187
+ void MatrixImpl::Clone(const v8::FunctionCallbackInfo<v8::Value> &args) {
1188
+ auto isolate = args.GetIsolate();
1189
+ auto context = isolate->GetCurrentContext();
1190
+ MatrixImpl *ptr = GetPointer(args.This());
1191
+
1192
+ auto matrix = canvas_native_matrix_clone(ptr->GetMatrix());
1193
+
1194
+
1195
+ auto ret = MatrixImpl::GetCtor(isolate)->GetFunction(
1196
+ context).ToLocalChecked()->NewInstance(context).ToLocalChecked();
1197
+ auto object = new MatrixImpl(matrix);
1198
+
1199
+ ret->SetAlignedPointerInInternalField(0, object);
1200
+
1201
+ SetNativeType(ret, NativeType::Matrix);
1202
+
1203
+ object->BindFinalizer(isolate, ret);
1204
+
1205
+ args.GetReturnValue().Set(ret);
1206
+ }
1207
+
1208
+
805
1209
  Matrix *MatrixImpl::GetMatrix() {
806
1210
  return this->matrix_;
807
1211
  }
1212
+
1213
+
@@ -184,6 +184,33 @@ public:
184
184
  v8::Local<v8::Value> value,
185
185
  const v8::PropertyCallbackInfo<void> &info);
186
186
 
187
+
188
+ static void Translate(const v8::FunctionCallbackInfo<v8::Value> &args);
189
+
190
+ static void TranslateSelf(const v8::FunctionCallbackInfo<v8::Value> &args);
191
+
192
+ static void MultiplySelf(const v8::FunctionCallbackInfo<v8::Value> &args);
193
+
194
+ static void PremultiplySelf(const v8::FunctionCallbackInfo<v8::Value> &args);
195
+
196
+ static void ScaleNonUniform(const v8::FunctionCallbackInfo<v8::Value> &args);
197
+
198
+ static void ScaleNonUniformSelf(const v8::FunctionCallbackInfo<v8::Value> &args);
199
+
200
+ static void Rotate(const v8::FunctionCallbackInfo<v8::Value> &args);
201
+
202
+ static void RotateSelf(const v8::FunctionCallbackInfo<v8::Value> &args);
203
+
204
+ static void SkewX(const v8::FunctionCallbackInfo<v8::Value> &args);
205
+
206
+ static void SkewXSelf(const v8::FunctionCallbackInfo<v8::Value> &args);
207
+
208
+ static void SkewY(const v8::FunctionCallbackInfo<v8::Value> &args);
209
+
210
+ static void SkewYSelf(const v8::FunctionCallbackInfo<v8::Value> &args);
211
+
212
+ static void Clone(const v8::FunctionCallbackInfo<v8::Value> &args);
213
+
187
214
  private:
188
215
  Matrix* matrix_;
189
216
  };
@@ -51,9 +51,6 @@ v8::CFunction Path2D::fast_quadratic_curve_to_(v8::CFunction::Make(Path2D::FastQ
51
51
 
52
52
  v8::CFunction Path2D::fast_rect_(v8::CFunction::Make(Path2D::FastRect));
53
53
 
54
- //v8::CFunction Path2D::fast_round_rect_(v8::CFunction::Make(Path2D::FastRoundRect));
55
-
56
-
57
54
  v8::CFunction Path2D::fast_round_rect_(
58
55
  v8::CFunction::Make(Path2D::FastRoundRect));
59
56
 
@@ -65,6 +62,8 @@ const v8::CFunction fast_round_rect_overloads_[] = {
65
62
  Path2D::fast_round_rect_array_
66
63
  };
67
64
 
65
+ v8::CFunction Path2D::fast_trim_(v8::CFunction::Make(Path2D::FastTrim));
66
+
68
67
 
69
68
 
70
69
  //v8::CFunction Path2D::fast_to_svg_(v8::CFunction::Make(Path2D::FastToSVG));
@@ -76,7 +75,7 @@ void Path2D::Ctor(const v8::FunctionCallbackInfo<v8::Value> &args) {
76
75
 
77
76
  auto ret = args.This();
78
77
 
79
- SetNativeType( ret, NativeType::Path2D);
78
+ SetNativeType(ret, NativeType::Path2D);
80
79
 
81
80
  if (count > 0) {
82
81
  if (value->IsString()) {
@@ -385,6 +384,21 @@ void Path2D::RoundRect(const v8::FunctionCallbackInfo<v8::Value> &args) {
385
384
  args.GetReturnValue().SetUndefined();
386
385
  }
387
386
 
387
+ void Path2D::Trim(const v8::FunctionCallbackInfo<v8::Value> &args) {
388
+ Path2D *ptr = GetPointer(args.This());
389
+ if (ptr == nullptr) {
390
+ return;
391
+ }
392
+
393
+ auto isolate = args.GetIsolate();
394
+ auto context = isolate->GetCurrentContext();
395
+
396
+
397
+ canvas_native_path_trim(ptr->GetPath(),
398
+ static_cast<float>(args[0]->NumberValue(context).ToChecked()),
399
+ static_cast<float>(args[1]->NumberValue(context).ToChecked()));
400
+ }
401
+
388
402
  void Path2D::__toSVG(const v8::FunctionCallbackInfo<v8::Value> &args) {
389
403
  Path2D *ptr = GetPointer(args.This());
390
404
  if (ptr == nullptr) {
@@ -443,50 +457,7 @@ v8::Local<v8::FunctionTemplate> Path2D::GetCtor(v8::Isolate *isolate) {
443
457
  SetFastMethodWithOverLoads(isolate, tmpl, "roundRect", RoundRect,
444
458
  fast_round_rect_overloads_, v8::Local<v8::Value>());
445
459
 
446
- // tmpl->Set(
447
- // ConvertToV8String(isolate, "addPath"),
448
- // v8::FunctionTemplate::New(isolate, &AddPath));
449
-
450
- // tmpl->Set(
451
- // ConvertToV8String(isolate, "arc"),
452
- // v8::FunctionTemplate::New(isolate, &Arc));
453
-
454
-
455
- // tmpl->Set(
456
- // ConvertToV8String(isolate, "bezierCurveTo"),
457
- // v8::FunctionTemplate::New(isolate, &BezierCurveTo));
458
-
459
-
460
- // tmpl->Set(
461
- // ConvertToV8String(isolate, "closePath"),
462
- // v8::FunctionTemplate::New(isolate, &ClosePath));
463
-
464
-
465
- // tmpl->Set(
466
- // ConvertToV8String(isolate, "ellipse"),
467
- // v8::FunctionTemplate::New(isolate, &Ellipse));
468
-
469
- // tmpl->Set(
470
- // ConvertToV8String(isolate, "lineTo"),
471
- // v8::FunctionTemplate::New(isolate, &LineTo));
472
-
473
-
474
- // tmpl->Set(
475
- // ConvertToV8String(isolate, "moveTo"),
476
- // v8::FunctionTemplate::New(isolate, &MoveTo));
477
-
478
-
479
- // tmpl->Set(
480
- // ConvertToV8String(isolate, "quadraticCurveTo"),
481
- // v8::FunctionTemplate::New(isolate, &QuadraticCurveTo));
482
-
483
- // tmpl->Set(
484
- // ConvertToV8String(isolate, "rect"),
485
- // v8::FunctionTemplate::New(isolate, &Rect));
486
-
487
- // tmpl->Set(
488
- // ConvertToV8String(isolate, "roundRect"),
489
- // v8::FunctionTemplate::New(isolate, &RoundRect));
460
+ SetFastMethod(isolate, tmpl, "trim", Trim, &fast_trim_, v8::Local<v8::Value>());
490
461
 
491
462
  tmpl->Set(
492
463
  ConvertToV8String(isolate, "__toSVG"),
@@ -64,6 +64,8 @@ public:
64
64
  static v8::CFunction fast_round_rect_array_;
65
65
  // static v8::CFunction fast_to_svg_; // todo after v8 upgrade
66
66
 
67
+ static v8::CFunction fast_trim_;
68
+
67
69
 
68
70
  static void Arc(const v8::FunctionCallbackInfo<v8::Value> &args);
69
71
 
@@ -429,6 +431,23 @@ public:
429
431
 
430
432
  static void RoundRect(const v8::FunctionCallbackInfo<v8::Value> &args);
431
433
 
434
+ static void Trim(const v8::FunctionCallbackInfo<v8::Value> &args);
435
+
436
+ static void
437
+ FastTrim(v8::Local<v8::Object> receiver_obj, double start, double end) {
438
+
439
+ Path2D *ptr = GetPointer(receiver_obj);
440
+ if (ptr == nullptr) {
441
+ return;
442
+ }
443
+
444
+ canvas_native_path_trim(
445
+ ptr->GetPath(),
446
+ static_cast<float>(start),
447
+ static_cast<float>(end)
448
+ );
449
+ }
450
+
432
451
  static void __toSVG(const v8::FunctionCallbackInfo<v8::Value> &args);
433
452
 
434
453