From a449f1275053deb541fa8aaa6d72b5a8c220b753 Mon Sep 17 00:00:00 2001 From: ferhatb Date: Wed, 20 May 2020 12:47:41 -0700 Subject: [PATCH 1/3] Fix Path.addArc failure due to incorrect start position --- lib/web_ui/lib/src/engine/canvas_pool.dart | 5 +++++ .../engine/canvas_arc_golden_test.dart | 16 +++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/web_ui/lib/src/engine/canvas_pool.dart b/lib/web_ui/lib/src/engine/canvas_pool.dart index 1f55400bd4745..0be145972fdb7 100644 --- a/lib/web_ui/lib/src/engine/canvas_pool.dart +++ b/lib/web_ui/lib/src/engine/canvas_pool.dart @@ -520,6 +520,11 @@ class _CanvasPool extends _SaveStackTracking { break; case PathCommandTypes.ellipse: final Ellipse ellipse = command; + if (c == 0) { + // Ellipses that start a new path need to set start point, + // otherwise it incorrectly uses last point. + ctx.moveTo(subpath.startX, subpath.startY); + } DomRenderer.ellipse(ctx, ellipse.x, ellipse.y, diff --git a/lib/web_ui/test/golden_tests/engine/canvas_arc_golden_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_arc_golden_test.dart index b977e9b1310ed..8cb94a99ccef7 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_arc_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_arc_golden_test.dart @@ -4,7 +4,7 @@ // @dart = 2.6 import 'dart:html' as html; - +import 'dart:math' as math; import 'package:ui/src/engine.dart'; import 'package:ui/ui.dart'; import 'package:test/test.dart'; @@ -47,6 +47,20 @@ void main() async { await matchGoldenFile('canvas_arc_to_point.png', region: region); }); + test('Path.addArc that starts new path has correct start point', () async { + final Rect rect = Rect.fromLTWH(20, 20, 200, 200); + final Path p = Path() + ..fillType = PathFillType.evenOdd + ..addRect(rect) + ..addArc(Rect.fromCircle(center: rect.center, + radius: rect.size.shortestSide / 2), 0.25 * math.pi, 1.5 * math.pi); + canvas.drawPath(p, SurfacePaintData() + ..color = Color(0xFFFF9800) // orange + ..style = PaintingStyle.fill); + + html.document.body.append(canvas.rootElement); + await matchGoldenFile('canvas_addarc.png', region: region, write: true); + }); } void paintArc(BitmapCanvas canvas, Offset offset, From 0d2044ddb0c4dec87d967299ae6274dc81aac8cd Mon Sep 17 00:00:00 2001 From: ferhatb Date: Wed, 20 May 2020 12:48:22 -0700 Subject: [PATCH 2/3] Remove golden write flag --- lib/web_ui/test/golden_tests/engine/canvas_arc_golden_test.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web_ui/test/golden_tests/engine/canvas_arc_golden_test.dart b/lib/web_ui/test/golden_tests/engine/canvas_arc_golden_test.dart index 8cb94a99ccef7..4c2255cbcf656 100644 --- a/lib/web_ui/test/golden_tests/engine/canvas_arc_golden_test.dart +++ b/lib/web_ui/test/golden_tests/engine/canvas_arc_golden_test.dart @@ -59,7 +59,7 @@ void main() async { ..style = PaintingStyle.fill); html.document.body.append(canvas.rootElement); - await matchGoldenFile('canvas_addarc.png', region: region, write: true); + await matchGoldenFile('canvas_addarc.png', region: region); }); } From f8aa5e68f352fcf2a228db5a86b4c4a61228327a Mon Sep 17 00:00:00 2001 From: ferhatb Date: Wed, 20 May 2020 13:53:09 -0700 Subject: [PATCH 3/3] update golden locks --- lib/web_ui/dev/goldens_lock.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web_ui/dev/goldens_lock.yaml b/lib/web_ui/dev/goldens_lock.yaml index 36047faa0629a..593346a142d27 100644 --- a/lib/web_ui/dev/goldens_lock.yaml +++ b/lib/web_ui/dev/goldens_lock.yaml @@ -1,2 +1,2 @@ repository: https://github.com/flutter/goldens.git -revision: f80e019e225915e220f0f37884c8cd1b942d9bc2 +revision: 993752770817654e362b85f4781d300a9b215d4c