From ff57a88eb705ec8152ce660e903d43f1c771bd04 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 21 Aug 2017 13:32:39 +0100 Subject: [PATCH 1/5] correctly parse bezier curve seperators. --- src/Avalonia.Visuals/Media/PathMarkupParser.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Avalonia.Visuals/Media/PathMarkupParser.cs b/src/Avalonia.Visuals/Media/PathMarkupParser.cs index fad55ed531..145013d76b 100644 --- a/src/Avalonia.Visuals/Media/PathMarkupParser.cs +++ b/src/Avalonia.Visuals/Media/PathMarkupParser.cs @@ -126,7 +126,9 @@ namespace Avalonia.Media case Command.CubicBezierCurve: { Point point1 = ReadPoint(reader, point, relative); + ReadSeparator(reader); Point point2 = ReadPoint(reader, point, relative); + ReadSeparator(reader); point = ReadPoint(reader, point, relative); _context.CubicBezierTo(point1, point2, point); break; From c79be3d6ebc03b61d14ffde891cd252a0667f9ba Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 21 Aug 2017 13:32:39 +0100 Subject: [PATCH 2/5] Revert "correctly parse bezier curve seperators." This reverts commit ff57a88eb705ec8152ce660e903d43f1c771bd04. --- src/Avalonia.Visuals/Media/PathMarkupParser.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/Avalonia.Visuals/Media/PathMarkupParser.cs b/src/Avalonia.Visuals/Media/PathMarkupParser.cs index 145013d76b..fad55ed531 100644 --- a/src/Avalonia.Visuals/Media/PathMarkupParser.cs +++ b/src/Avalonia.Visuals/Media/PathMarkupParser.cs @@ -126,9 +126,7 @@ namespace Avalonia.Media case Command.CubicBezierCurve: { Point point1 = ReadPoint(reader, point, relative); - ReadSeparator(reader); Point point2 = ReadPoint(reader, point, relative); - ReadSeparator(reader); point = ReadPoint(reader, point, relative); _context.CubicBezierTo(point1, point2, point); break; From b18d91ff7409165c3f5e5af8064c50ea6ce4c5a9 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 21 Aug 2017 16:33:45 +0100 Subject: [PATCH 3/5] Add inline data that tests comma seperated bezier curves. --- tests/Avalonia.Visuals.UnitTests/Media/PathMarkupParserTests.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/Avalonia.Visuals.UnitTests/Media/PathMarkupParserTests.cs b/tests/Avalonia.Visuals.UnitTests/Media/PathMarkupParserTests.cs index 3b903b4436..a13088f70a 100644 --- a/tests/Avalonia.Visuals.UnitTests/Media/PathMarkupParserTests.cs +++ b/tests/Avalonia.Visuals.UnitTests/Media/PathMarkupParserTests.cs @@ -74,6 +74,7 @@ namespace Avalonia.Visuals.UnitTests.Media " M 16.6309 19.9063C 21.6309 24.1563 25.1309 26.1562 31.6309 28.6562C 31.6309 28.6562 26.3809 39.1562 18" + ".3809 36.1563C 18.3809 36.1563 18 38 16.3809 36.9063C 15 36 16.3809 34.9063 16.3809 34.9063C 16.3809 34" + ".9063 10.1309 30.9062 16.6309 19.9063 Z ")] + [InlineData("F1M16,12C16,14.209 14.209,16 12,16 9.791,16 8,14.209 8,12 8,11.817 8.03,11.644 8.054,11.467L6.585,10 4,10 4,6.414 2.5,7.914 0,5.414 0,3.586 3.586,0 4.414,0 7.414,3 7.586,3 9,1.586 11.914,4.5 10.414,6 12.461,8.046C14.45,8.278,16,9.949,16,12")] public void Should_Parse(string pathData) { using (AvaloniaLocator.EnterScope()) From b6949b920e5cec8e78b4e1c5bdaabfdf3045368f Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Mon, 21 Aug 2017 13:32:39 +0100 Subject: [PATCH 4/5] correctly parse bezier curve seperators. --- src/Avalonia.Visuals/Media/PathMarkupParser.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Avalonia.Visuals/Media/PathMarkupParser.cs b/src/Avalonia.Visuals/Media/PathMarkupParser.cs index fad55ed531..145013d76b 100644 --- a/src/Avalonia.Visuals/Media/PathMarkupParser.cs +++ b/src/Avalonia.Visuals/Media/PathMarkupParser.cs @@ -126,7 +126,9 @@ namespace Avalonia.Media case Command.CubicBezierCurve: { Point point1 = ReadPoint(reader, point, relative); + ReadSeparator(reader); Point point2 = ReadPoint(reader, point, relative); + ReadSeparator(reader); point = ReadPoint(reader, point, relative); _context.CubicBezierTo(point1, point2, point); break; From b5317085af0de64068cedcc19863528c16c59a89 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Tue, 22 Aug 2017 10:30:33 +0200 Subject: [PATCH 5/5] Tweaked formatting. --- .../Media/PathMarkupParserTests.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/Avalonia.Visuals.UnitTests/Media/PathMarkupParserTests.cs b/tests/Avalonia.Visuals.UnitTests/Media/PathMarkupParserTests.cs index a13088f70a..e63d23283c 100644 --- a/tests/Avalonia.Visuals.UnitTests/Media/PathMarkupParserTests.cs +++ b/tests/Avalonia.Visuals.UnitTests/Media/PathMarkupParserTests.cs @@ -74,7 +74,10 @@ namespace Avalonia.Visuals.UnitTests.Media " M 16.6309 19.9063C 21.6309 24.1563 25.1309 26.1562 31.6309 28.6562C 31.6309 28.6562 26.3809 39.1562 18" + ".3809 36.1563C 18.3809 36.1563 18 38 16.3809 36.9063C 15 36 16.3809 34.9063 16.3809 34.9063C 16.3809 34" + ".9063 10.1309 30.9062 16.6309 19.9063 Z ")] - [InlineData("F1M16,12C16,14.209 14.209,16 12,16 9.791,16 8,14.209 8,12 8,11.817 8.03,11.644 8.054,11.467L6.585,10 4,10 4,6.414 2.5,7.914 0,5.414 0,3.586 3.586,0 4.414,0 7.414,3 7.586,3 9,1.586 11.914,4.5 10.414,6 12.461,8.046C14.45,8.278,16,9.949,16,12")] + [InlineData( + "F1M16,12C16,14.209 14.209,16 12,16 9.791,16 8,14.209 8,12 8,11.817 8.03,11.644 8.054,11.467L6.585,10 4,10 " + + "4,6.414 2.5,7.914 0,5.414 0,3.586 3.586,0 4.414,0 7.414,3 7.586,3 9,1.586 11.914,4.5 10.414,6 " + + "12.461,8.046C14.45,8.278,16,9.949,16,12")] public void Should_Parse(string pathData) { using (AvaloniaLocator.EnterScope())