From e35fbbd90dc16493d2846d18ba6faf202e4e4101 Mon Sep 17 00:00:00 2001 From: Yegor Date: Mon, 10 Aug 2020 15:07:17 -0700 Subject: [PATCH] switch to non-overloaded arcTo methods (#20341) --- .../src/engine/compositor/canvaskit_api.dart | 26 +++++++------------ .../lib/src/engine/compositor/path.dart | 4 +-- .../test/canvaskit/canvaskit_api_test.dart | 4 +-- 3 files changed, 14 insertions(+), 20 deletions(-) diff --git a/lib/web_ui/lib/src/engine/compositor/canvaskit_api.dart b/lib/web_ui/lib/src/engine/compositor/canvaskit_api.dart index b9170ec0ed6..baed64f6962 100644 --- a/lib/web_ui/lib/src/engine/compositor/canvaskit_api.dart +++ b/lib/web_ui/lib/src/engine/compositor/canvaskit_api.dart @@ -973,12 +973,21 @@ class SkPath { external void addRect( SkRect rect, ); - external void arcTo( + external void arcToOval( SkRect oval, double startAngleDegrees, double sweepAngleDegrees, bool forceMoveTo, ); + external void arcToRotated( + double radiusX, + double radiusY, + double rotation, + bool useSmallArc, + bool counterClockWise, + double x, + double y, + ); external void close(); external void conicTo( double x1, @@ -1057,21 +1066,6 @@ class SkPath { ); } -/// A different view on [SkPath] used to overload [SkPath.arcTo]. -// TODO(yjbanov): this is a hack to get around https://github.com/flutter/flutter/issues/61305 -@JS() -class SkPathArcToPointOverload { - external void arcTo( - double radiusX, - double radiusY, - double rotation, - bool useSmallArc, - bool counterClockWise, - double x, - double y, - ); -} - @JS('window.flutter_canvas_kit.SkContourMeasureIter') class SkContourMeasureIter { external SkContourMeasureIter(SkPath path, bool forceClosed, int startIndex); diff --git a/lib/web_ui/lib/src/engine/compositor/path.dart b/lib/web_ui/lib/src/engine/compositor/path.dart index 321c6a1246f..723517eb5ce 100644 --- a/lib/web_ui/lib/src/engine/compositor/path.dart +++ b/lib/web_ui/lib/src/engine/compositor/path.dart @@ -116,7 +116,7 @@ class CkPath implements ui.Path { void arcTo( ui.Rect rect, double startAngle, double sweepAngle, bool forceMoveTo) { const double toDegrees = 180.0 / math.pi; - _skPath.arcTo( + _skPath.arcToOval( toSkRect(rect), startAngle * toDegrees, sweepAngle * toDegrees, @@ -130,7 +130,7 @@ class CkPath implements ui.Path { double rotation = 0.0, bool largeArc = false, bool clockwise = true}) { - (_skPath as SkPathArcToPointOverload).arcTo( + _skPath.arcToRotated( radius.x, radius.y, rotation, diff --git a/lib/web_ui/test/canvaskit/canvaskit_api_test.dart b/lib/web_ui/test/canvaskit/canvaskit_api_test.dart index 4787834f198..8dc48df5d44 100644 --- a/lib/web_ui/test/canvaskit/canvaskit_api_test.dart +++ b/lib/web_ui/test/canvaskit/canvaskit_api_test.dart @@ -602,7 +602,7 @@ void _pathTests() { }); test('arcTo', () { - path.arcTo( + path.arcToOval( SkRect(fLeft: 1, fTop: 2, fRight: 3, fBottom: 4), 5, 40, @@ -611,7 +611,7 @@ void _pathTests() { }); test('overloaded arcTo (used for arcToPoint)', () { - (path as SkPathArcToPointOverload).arcTo( + path.arcToRotated( 1, 2, 3,