From bc3d892068d60eb36ecd3bb816d3bd0ba560fd23 Mon Sep 17 00:00:00 2001 From: ferhatb Date: Wed, 3 Jun 2020 21:23:11 -0700 Subject: [PATCH 1/3] Fix subdivision assertion in Conic to Quad conversion --- lib/web_ui/lib/src/engine/conic.dart | 2 +- lib/web_ui/test/path_test.dart | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/web_ui/lib/src/engine/conic.dart b/lib/web_ui/lib/src/engine/conic.dart index baa10013dd32e..512f95fdeac08 100644 --- a/lib/web_ui/lib/src/engine/conic.dart +++ b/lib/web_ui/lib/src/engine/conic.dart @@ -33,7 +33,7 @@ class Conic { // Split conic into quads, writes quad coordinates into [_pointList] and // returns number of quads. - assert(subdivideCount > 0); + assert(subdivideCount >= 0 && subdivideCount <= 5); int quadCount = 1 << subdivideCount; bool skipSubdivide = false; pointList.add(ui.Offset(p0x, p0y)); diff --git a/lib/web_ui/test/path_test.dart b/lib/web_ui/test/path_test.dart index aeb9c5cec8999..1344ac78b796f 100644 --- a/lib/web_ui/test/path_test.dart +++ b/lib/web_ui/test/path_test.dart @@ -3,9 +3,10 @@ // found in the LICENSE file. // @dart = 2.6 -import 'package:test/test.dart'; import 'dart:js_util' as js_util; import 'dart:html' as html; +import 'dart:math' as math; +import 'package:test/test.dart'; import 'package:ui/ui.dart' hide window; import 'package:ui/src/engine.dart'; @@ -309,4 +310,10 @@ void main() { expect(path2.contains(Offset(100, 100)), isFalse); expect(path2.contains(Offset(50, 100)), isFalse); }); + + test('Should convert conic to quad when approximation error is small', () { + Conic conic = Conic(120.0, 20.0, 160.99470420829266, 20.0, + 190.19301120261332, 34.38770865870253, 0.9252691032413082); + expect(conic.toQuads().length, 3); + }); } From 3c4abba77db251fdf9da2af1dace069644a5cb6e Mon Sep 17 00:00:00 2001 From: ferhatb Date: Wed, 3 Jun 2020 21:25:36 -0700 Subject: [PATCH 2/3] Use const for upper bound --- lib/web_ui/lib/src/engine/conic.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/web_ui/lib/src/engine/conic.dart b/lib/web_ui/lib/src/engine/conic.dart index 512f95fdeac08..5de3968c7431a 100644 --- a/lib/web_ui/lib/src/engine/conic.dart +++ b/lib/web_ui/lib/src/engine/conic.dart @@ -33,7 +33,7 @@ class Conic { // Split conic into quads, writes quad coordinates into [_pointList] and // returns number of quads. - assert(subdivideCount >= 0 && subdivideCount <= 5); + assert(subdivideCount >= 0 && subdivideCount <= _maxSubdivisionCount); int quadCount = 1 << subdivideCount; bool skipSubdivide = false; pointList.add(ui.Offset(p0x, p0y)); From b164a576e7d84674fac3bc4db9eb896f36a2a857 Mon Sep 17 00:00:00 2001 From: ferhatb Date: Fri, 19 Jun 2020 11:13:10 -0700 Subject: [PATCH 3/3] remove unused import --- lib/web_ui/test/path_test.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/web_ui/test/path_test.dart b/lib/web_ui/test/path_test.dart index 1344ac78b796f..08de1029fa16e 100644 --- a/lib/web_ui/test/path_test.dart +++ b/lib/web_ui/test/path_test.dart @@ -5,7 +5,6 @@ // @dart = 2.6 import 'dart:js_util' as js_util; import 'dart:html' as html; -import 'dart:math' as math; import 'package:test/test.dart'; import 'package:ui/ui.dart' hide window; import 'package:ui/src/engine.dart';