From 26202c177bd1c2f6bdf9675390bc9aefa76e43be Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Wed, 7 Oct 2020 15:18:41 -0700 Subject: [PATCH 1/6] Pass angles for SweepGradient in degrees, not radians --- lib/web_ui/lib/src/engine/canvaskit/shader.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/web_ui/lib/src/engine/canvaskit/shader.dart b/lib/web_ui/lib/src/engine/canvaskit/shader.dart index 6b0074b609d4c..9237122214a7e 100644 --- a/lib/web_ui/lib/src/engine/canvaskit/shader.dart +++ b/lib/web_ui/lib/src/engine/canvaskit/shader.dart @@ -35,6 +35,7 @@ class CkGradientSweep extends CkShader implements ui.Gradient { @override SkShader createDefault() { + const double toDegrees = 180.0 / math.pi; return canvasKit.SkShader.MakeSweepGradient( center.dx, center.dy, @@ -43,8 +44,8 @@ class CkGradientSweep extends CkShader implements ui.Gradient { toSkTileMode(tileMode), matrix4 != null ? toSkMatrixFromFloat32(matrix4!) : null, 0, - startAngle, - endAngle, + toDegrees * startAngle, + toDegrees * endAngle, ); } From 1a5aff7702bec3f65643948a665cab16b366f1c3 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Thu, 10 Dec 2020 19:16:38 -0800 Subject: [PATCH 2/6] add test --- .../canvaskit/sweep_gradient_golden_test.dart | 74 +++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart diff --git a/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart b/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart new file mode 100644 index 0000000000000..8d6de754e716a --- /dev/null +++ b/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart @@ -0,0 +1,74 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// @dart = 2.12 +import 'dart:html' as html; +import 'dart:math' as math; +import 'dart:typed_data'; + +import 'package:test/bootstrap/browser.dart'; +import 'package:test/test.dart'; +import 'package:ui/src/engine.dart'; +import 'package:ui/ui.dart' as ui; + +import 'package:web_engine_tester/golden_tester.dart'; + +import 'common.dart'; + +void main() { + internalBootstrapBrowserTest(() => testMain); +} + +const ui.Rect region = const ui.Rect.fromLTRB(0, 0, 500, 250); + +Future matchPictureGolden(String goldenFile, CkPicture picture, + {bool write = false}) async { + final EnginePlatformDispatcher dispatcher = + ui.window.platformDispatcher as EnginePlatformDispatcher; + final LayerSceneBuilder sb = LayerSceneBuilder(); + sb.pushOffset(0, 0); + sb.addPicture(ui.Offset.zero, picture); + dispatcher.rasterizer!.draw(sb.build().layerTree); + await matchGoldenFile(goldenFile, region: region, write: write); +} + +void testMain() { + group('SweepGradient', () { + setUpCanvasKitTest(); + + test('is correctly rendered', () async { + final CkPictureRecorder recorder = CkPictureRecorder(); + final CkCanvas canvas = recorder.beginRecording(region); + + final CkGradientSweep gradient = CkGradientSweep( + ui.Offset(250, 125), + [ + ui.Color(0xFF4285F4), + ui.Color(0xFF34A853), + ui.Color(0xFFFBBC05), + ui.Color(0xFFEA4335), + ui.Color(0xFF4285F4), + ], + [ + 0.0, + 0.25, + 0.5, + 0.75, + 1.0, + ], + ui.TileMode.clamp, + -(math.pi / 2), + math.pi * 2 - (math.pi / 2), + null); + + final CkPaint paint = CkPaint()..shader = gradient; + + canvas.drawRect(region, paint); + + await matchPictureGolden( + 'canvaskit_sweep_gradient.png', recorder.endRecording(), + write: true); + }); + }); +} From 8e7719945a7d4c95c7200c12d0c682bf212d83fb Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Thu, 10 Dec 2020 19:21:57 -0800 Subject: [PATCH 3/6] Remove write flag --- lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart b/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart index 8d6de754e716a..2eec910bb95b3 100644 --- a/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart +++ b/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart @@ -67,8 +67,9 @@ void testMain() { canvas.drawRect(region, paint); await matchPictureGolden( - 'canvaskit_sweep_gradient.png', recorder.endRecording(), - write: true); + 'canvaskit_sweep_gradient.png', + recorder.endRecording(), + ); }); }); } From abae9a6ca89d1a9f6a78d5fa3698281bdb346d36 Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Fri, 11 Dec 2020 12:31:16 -0800 Subject: [PATCH 4/6] Skip screenshot tests on safari and firefox --- lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart b/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart index 2eec910bb95b3..4ad2a9de04017 100644 --- a/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart +++ b/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart @@ -71,5 +71,7 @@ void testMain() { recorder.endRecording(), ); }); - }); + // TODO: https://github.com/flutter/flutter/issues/60040 + // TODO: https://github.com/flutter/flutter/issues/71520 + }, skip: isIosSafari || isFirefox); } From b0f4c560c6eac4977e0c00376d3c8d91599fc0bb Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Fri, 11 Dec 2020 13:53:37 -0800 Subject: [PATCH 5/6] Remove unused imports --- lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart | 2 -- 1 file changed, 2 deletions(-) diff --git a/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart b/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart index 4ad2a9de04017..1e2d034206bfd 100644 --- a/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart +++ b/lib/web_ui/test/canvaskit/sweep_gradient_golden_test.dart @@ -3,9 +3,7 @@ // found in the LICENSE file. // @dart = 2.12 -import 'dart:html' as html; import 'dart:math' as math; -import 'dart:typed_data'; import 'package:test/bootstrap/browser.dart'; import 'package:test/test.dart'; From 91463f9c438deedefde21ee1b99458298fe8b7ee Mon Sep 17 00:00:00 2001 From: Harry Terkelsen Date: Fri, 11 Dec 2020 15:54:00 -0800 Subject: [PATCH 6/6] Update goldens lock --- 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 4779b21430011..280ea2ccba9e0 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: ac75f12c6e93461369e1391da6cc20bf8cb08829 +revision: c808c28c81b6c3143ae969e8c49bed4a6d49aabb