From 878304b570a5335ce2fa24f1f91e0038b4000463 Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Sat, 2 Nov 2024 09:04:59 +0700 Subject: [PATCH 01/18] fix: remove unnecessary tryParse attribute on parseDouble --- .../vector_graphics_compiler/lib/src/svg/numbers.dart | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/vector_graphics_compiler/lib/src/svg/numbers.dart b/packages/vector_graphics_compiler/lib/src/svg/numbers.dart index fbe7563bf86..05c34e0b79f 100644 --- a/packages/vector_graphics_compiler/lib/src/svg/numbers.dart +++ b/packages/vector_graphics_compiler/lib/src/svg/numbers.dart @@ -12,8 +12,7 @@ import 'theme.dart'; /// which is stripped off when parsed to a `double`. /// /// Passing `null` will return `null`. -double? parseDouble(String? rawDouble, {bool tryParse = false}) { - assert(tryParse != null); // ignore: unnecessary_null_comparison +double? parseDouble(String? rawDouble) { if (rawDouble == null) { return null; } @@ -26,10 +25,7 @@ double? parseDouble(String? rawDouble, {bool tryParse = false}) { .replaceFirst('pt', '') .trim(); - if (tryParse) { - return double.tryParse(rawDouble); - } - return double.parse(rawDouble); + return double.tryParse(rawDouble); } /// Convert [degrees] to radians. @@ -81,7 +77,6 @@ double? parseDoubleWithUnits( } final double? value = parseDouble( rawDouble, - tryParse: tryParse, ); return value != null ? value * unit : null; From a14a2967fe8014dadcc7e041defa78729aa26aff Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Sun, 3 Nov 2024 10:40:16 +0700 Subject: [PATCH 02/18] feat: add test, adjust changelog.md and increase version --- packages/vector_graphics_compiler/CHANGELOG.md | 4 ++++ packages/vector_graphics_compiler/pubspec.yaml | 2 +- packages/vector_graphics_compiler/test/parsers_test.dart | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/packages/vector_graphics_compiler/CHANGELOG.md b/packages/vector_graphics_compiler/CHANGELOG.md index 51e080adfa8..caabd887e2a 100644 --- a/packages/vector_graphics_compiler/CHANGELOG.md +++ b/packages/vector_graphics_compiler/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.13 + +* Fixes an issue when parse double with 'none' value + ## 1.1.12 * Transfers the package source from https://github.com/dnfield/vector_graphics diff --git a/packages/vector_graphics_compiler/pubspec.yaml b/packages/vector_graphics_compiler/pubspec.yaml index ae92d689012..bae570eb5c8 100644 --- a/packages/vector_graphics_compiler/pubspec.yaml +++ b/packages/vector_graphics_compiler/pubspec.yaml @@ -5,7 +5,7 @@ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+ # See https://github.com/flutter/flutter/issues/157626 before publishing a new # version. publish_to: none -version: 1.1.12 +version: 1.1.13 executables: vector_graphics_compiler: diff --git a/packages/vector_graphics_compiler/test/parsers_test.dart b/packages/vector_graphics_compiler/test/parsers_test.dart index 56c03891fe3..89be34b9839 100644 --- a/packages/vector_graphics_compiler/test/parsers_test.dart +++ b/packages/vector_graphics_compiler/test/parsers_test.dart @@ -172,6 +172,10 @@ void main() { expect(parseDoubleWithUnits('1pt', theme: const SvgTheme()), 1 + 1 / 3); }); + test('"none" conversion', () { + expect(parseDoubleWithUnits('none', theme: const SvgTheme()), null); + }); + test('Parse a transform with scientific notation', () { expect( parseTransform('translate(9e-6,6.5e-4)'), From 27c512989632122997eafe673b51f7e6355dfdb3 Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Tue, 5 Nov 2024 14:42:55 +0700 Subject: [PATCH 03/18] fix: remove unused attribute --- packages/vector_graphics_compiler/lib/src/svg/numbers.dart | 3 +-- packages/vector_graphics_compiler/lib/src/svg/parser.dart | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/vector_graphics_compiler/lib/src/svg/numbers.dart b/packages/vector_graphics_compiler/lib/src/svg/numbers.dart index 05c34e0b79f..e9e02147ea1 100644 --- a/packages/vector_graphics_compiler/lib/src/svg/numbers.dart +++ b/packages/vector_graphics_compiler/lib/src/svg/numbers.dart @@ -25,7 +25,7 @@ double? parseDouble(String? rawDouble) { .replaceFirst('pt', '') .trim(); - return double.tryParse(rawDouble); + return double.tryParse(rawDouble) ?? 0.0; } /// Convert [degrees] to radians. @@ -58,7 +58,6 @@ const double kPointsToPixelFactor = kCssPixelsPerInch / kCssPointsPerInch; /// Passing `null` will return `null`. double? parseDoubleWithUnits( String? rawDouble, { - bool tryParse = false, required SvgTheme theme, }) { double unit = 1.0; diff --git a/packages/vector_graphics_compiler/lib/src/svg/parser.dart b/packages/vector_graphics_compiler/lib/src/svg/parser.dart index 6cac8884d7f..b0108f19837 100644 --- a/packages/vector_graphics_compiler/lib/src/svg/parser.dart +++ b/packages/vector_graphics_compiler/lib/src/svg/parser.dart @@ -980,7 +980,6 @@ class SvgParser { }) { return numbers.parseDoubleWithUnits( rawDouble, - tryParse: tryParse, theme: theme, ); } From d23b800057a87fc80e6e4f9f3b3e1b458045c28c Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Tue, 5 Nov 2024 14:43:33 +0700 Subject: [PATCH 04/18] feat: add test --- .../test/parsers_test.dart | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/vector_graphics_compiler/test/parsers_test.dart b/packages/vector_graphics_compiler/test/parsers_test.dart index 89be34b9839..d7db69ece21 100644 --- a/packages/vector_graphics_compiler/test/parsers_test.dart +++ b/packages/vector_graphics_compiler/test/parsers_test.dart @@ -172,8 +172,23 @@ void main() { expect(parseDoubleWithUnits('1pt', theme: const SvgTheme()), 1 + 1 / 3); }); - test('"none" conversion', () { - expect(parseDoubleWithUnits('none', theme: const SvgTheme()), null); + test('Parse SVG with "none" value', () { + final TestColorMapper mapper = TestColorMapper(); + final SvgParser parser = SvgParser( + ''' + + ''', + const SvgTheme(), + 'test_key', + true, + mapper, + ) + ..enableMaskingOptimizer = false + ..enableClippingOptimizer = false + ..enableOverdrawOptimizer = false; + + final VectorInstructions instructions = parser.parse(); + expect(instructions.paints.length, 1); }); test('Parse a transform with scientific notation', () { From 75aba47e6f826fce4a2230d2911a048e0ee1c9c8 Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Tue, 5 Nov 2024 15:04:55 +0700 Subject: [PATCH 05/18] fix: parsers_test --- packages/vector_graphics_compiler/test/parsers_test.dart | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/vector_graphics_compiler/test/parsers_test.dart b/packages/vector_graphics_compiler/test/parsers_test.dart index d7db69ece21..31d3e9eb40e 100644 --- a/packages/vector_graphics_compiler/test/parsers_test.dart +++ b/packages/vector_graphics_compiler/test/parsers_test.dart @@ -175,9 +175,7 @@ void main() { test('Parse SVG with "none" value', () { final TestColorMapper mapper = TestColorMapper(); final SvgParser parser = SvgParser( - ''' - - ''', + '', const SvgTheme(), 'test_key', true, From 8d754b7db215f62a4c7eb29bf62fe12fbb9bdb0f Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Sat, 9 Nov 2024 16:37:49 +0700 Subject: [PATCH 06/18] Revert "Roll Flutter from 0fe615343bd9 to f86b77721524 (16 revisions) (#8000)" This reverts commit 1d00782b90d4c57f03c7b6b1b4e4f91d39a0426b. --- .ci/flutter_master.version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/flutter_master.version b/.ci/flutter_master.version index 66689f602d2..64cc261e098 100644 --- a/.ci/flutter_master.version +++ b/.ci/flutter_master.version @@ -1 +1 @@ -f86b77721524890a9bd7fe4c5798081f466678de +0fe615343bd9e9b6ef00eecaa906fe10f4a39040 From 94f616817f4f17cac997081b739076cde0f4d692 Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Sat, 9 Nov 2024 17:02:14 +0700 Subject: [PATCH 07/18] revert parseDouble and parseDoubleWithUnits implementation --- .../lib/src/svg/numbers.dart | 10 ++++++++-- .../lib/src/svg/parser.dart | 1 + .../test/parsers_test.dart | 17 ----------------- 3 files changed, 9 insertions(+), 19 deletions(-) diff --git a/packages/vector_graphics_compiler/lib/src/svg/numbers.dart b/packages/vector_graphics_compiler/lib/src/svg/numbers.dart index e9e02147ea1..fbe7563bf86 100644 --- a/packages/vector_graphics_compiler/lib/src/svg/numbers.dart +++ b/packages/vector_graphics_compiler/lib/src/svg/numbers.dart @@ -12,7 +12,8 @@ import 'theme.dart'; /// which is stripped off when parsed to a `double`. /// /// Passing `null` will return `null`. -double? parseDouble(String? rawDouble) { +double? parseDouble(String? rawDouble, {bool tryParse = false}) { + assert(tryParse != null); // ignore: unnecessary_null_comparison if (rawDouble == null) { return null; } @@ -25,7 +26,10 @@ double? parseDouble(String? rawDouble) { .replaceFirst('pt', '') .trim(); - return double.tryParse(rawDouble) ?? 0.0; + if (tryParse) { + return double.tryParse(rawDouble); + } + return double.parse(rawDouble); } /// Convert [degrees] to radians. @@ -58,6 +62,7 @@ const double kPointsToPixelFactor = kCssPixelsPerInch / kCssPointsPerInch; /// Passing `null` will return `null`. double? parseDoubleWithUnits( String? rawDouble, { + bool tryParse = false, required SvgTheme theme, }) { double unit = 1.0; @@ -76,6 +81,7 @@ double? parseDoubleWithUnits( } final double? value = parseDouble( rawDouble, + tryParse: tryParse, ); return value != null ? value * unit : null; diff --git a/packages/vector_graphics_compiler/lib/src/svg/parser.dart b/packages/vector_graphics_compiler/lib/src/svg/parser.dart index b0108f19837..6cac8884d7f 100644 --- a/packages/vector_graphics_compiler/lib/src/svg/parser.dart +++ b/packages/vector_graphics_compiler/lib/src/svg/parser.dart @@ -980,6 +980,7 @@ class SvgParser { }) { return numbers.parseDoubleWithUnits( rawDouble, + tryParse: tryParse, theme: theme, ); } diff --git a/packages/vector_graphics_compiler/test/parsers_test.dart b/packages/vector_graphics_compiler/test/parsers_test.dart index 31d3e9eb40e..56c03891fe3 100644 --- a/packages/vector_graphics_compiler/test/parsers_test.dart +++ b/packages/vector_graphics_compiler/test/parsers_test.dart @@ -172,23 +172,6 @@ void main() { expect(parseDoubleWithUnits('1pt', theme: const SvgTheme()), 1 + 1 / 3); }); - test('Parse SVG with "none" value', () { - final TestColorMapper mapper = TestColorMapper(); - final SvgParser parser = SvgParser( - '', - const SvgTheme(), - 'test_key', - true, - mapper, - ) - ..enableMaskingOptimizer = false - ..enableClippingOptimizer = false - ..enableOverdrawOptimizer = false; - - final VectorInstructions instructions = parser.parse(); - expect(instructions.paints.length, 1); - }); - test('Parse a transform with scientific notation', () { expect( parseTransform('translate(9e-6,6.5e-4)'), From 71830eebbab4ca80276d7ce98c745e1c1ace04b9 Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Sat, 9 Nov 2024 20:03:07 +0700 Subject: [PATCH 08/18] fix: handle stroke-width parsing --- .../lib/src/svg/parser.dart | 15 ++++- .../test/parser_test.dart | 58 +++++++++++++++++++ 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/packages/vector_graphics_compiler/lib/src/svg/parser.dart b/packages/vector_graphics_compiler/lib/src/svg/parser.dart index 6cac8884d7f..4d8c057ddb5 100644 --- a/packages/vector_graphics_compiler/lib/src/svg/parser.dart +++ b/packages/vector_graphics_compiler/lib/src/svg/parser.dart @@ -1214,6 +1214,19 @@ class SvgParser { } } + double? _parseWidth(String? rawWidth) { + try { + return parseDoubleWithUnits(rawWidth)!; + } on FormatException catch (e) { + switch (e.message) { + case 'Invalid double': + return 1.0; + default: + return 1.0; + } + } + } + List? _parseDashArray(String? rawDashArray) { if (rawDashArray == null || rawDashArray == '') { return null; @@ -1584,7 +1597,7 @@ class SvgParser { cap: _parseCap(rawStrokeCap, null), join: _parseJoin(rawLineJoin, null), miterLimit: parseDouble(rawMiterLimit), - width: parseDoubleWithUnits(rawStrokeWidth), + width: _parseWidth(rawStrokeWidth), dashArray: _parseDashArray(rawStrokeDashArray), dashOffset: _parseDashOffset(rawStrokeDashOffset), hasPattern: hasPattern, diff --git a/packages/vector_graphics_compiler/test/parser_test.dart b/packages/vector_graphics_compiler/test/parser_test.dart index 24743c82f5f..51998bb8ca6 100644 --- a/packages/vector_graphics_compiler/test/parser_test.dart +++ b/packages/vector_graphics_compiler/test/parser_test.dart @@ -703,6 +703,64 @@ void main() { ]); }); + test('stroke-width with invalid value', () { + const String svg = ''; + + final VectorInstructions instructions = parseWithoutOptimizers(svg); + + expect(instructions.paints, const [ + Paint(stroke: Stroke(color: Color(0xff0000ff), width: 1.0), fill: Fill(color: Color(0xffff0000))), + ]); + + expect(instructions.paths, [ + Path( + commands: const [ + MoveToCommand(100.0, 10.0), + LineToCommand(180.0, 10.0), + LineToCommand(180.0, 90.0), + LineToCommand(100.0, 90.0), + CloseCommand(), + ], + ), + ]); + }); + + test('stroke-width with unit value', () { + const SvgTheme theme = SvgTheme(); + + const String svg_px = ''; + const String svg_pt = ''; + const String svg_ex = ''; + const String svg_em = ''; + const String svg_rem = ''; + + final VectorInstructions instructionsPx = parseWithoutOptimizers(svg_px); + final VectorInstructions instructionsPt = parseWithoutOptimizers(svg_pt); + final VectorInstructions instructionsEx = parseWithoutOptimizers(svg_ex); + final VectorInstructions instructionsEm = parseWithoutOptimizers(svg_em); + final VectorInstructions instructionsRem = parseWithoutOptimizers(svg_rem); + + expect(instructionsPx.paints, [ + const Paint(stroke: Stroke(color: Color(0xff0000ff), width: 1.0), fill: Fill(color: Color(0xffff0000))), + ]); + + expect(instructionsPt.paints, [ + const Paint(stroke: Stroke(color: Color(0xff0000ff), width: 1 + 1 / 3), fill: Fill(color: Color(0xffff0000))), + ]); + + expect(instructionsEx.paints, [ + Paint(stroke: Stroke(color: const Color(0xff0000ff), width: 1.0 * theme.xHeight), fill: const Fill(color: Color(0xffff0000))), + ]); + + expect(instructionsEm.paints, [ + Paint(stroke: Stroke(color: const Color(0xff0000ff), width: 1.0 * theme.fontSize), fill: const Fill(color: Color(0xffff0000))), + ]); + + expect(instructionsRem.paints, [ + Paint(stroke: Stroke(color: const Color(0xff0000ff), width: 1.0 * theme.fontSize), fill: const Fill(color: Color(0xffff0000))), + ]); + }); + test('Dashed path', () { final VectorInstructions instructions = parseWithoutOptimizers( ''' From 6fbe33bb4e98e056ce82750a90ae61c59e38e0d2 Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Sat, 9 Nov 2024 20:04:07 +0700 Subject: [PATCH 09/18] update CHANGELOG.md --- packages/vector_graphics_compiler/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vector_graphics_compiler/CHANGELOG.md b/packages/vector_graphics_compiler/CHANGELOG.md index caabd887e2a..d61c749cb0d 100644 --- a/packages/vector_graphics_compiler/CHANGELOG.md +++ b/packages/vector_graphics_compiler/CHANGELOG.md @@ -1,6 +1,6 @@ ## 1.1.13 -* Fixes an issue when parse double with 'none' value +* Fixes an issue when parsing stroke-width with an invalid value ## 1.1.12 From 7cd502123c99536594800053cbca949eb91c33b0 Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Sat, 9 Nov 2024 20:30:37 +0700 Subject: [PATCH 10/18] fix: null check error --- packages/vector_graphics_compiler/lib/src/svg/parser.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vector_graphics_compiler/lib/src/svg/parser.dart b/packages/vector_graphics_compiler/lib/src/svg/parser.dart index 4d8c057ddb5..2f75afb9dd4 100644 --- a/packages/vector_graphics_compiler/lib/src/svg/parser.dart +++ b/packages/vector_graphics_compiler/lib/src/svg/parser.dart @@ -1216,7 +1216,7 @@ class SvgParser { double? _parseWidth(String? rawWidth) { try { - return parseDoubleWithUnits(rawWidth)!; + return parseDoubleWithUnits(rawWidth); } on FormatException catch (e) { switch (e.message) { case 'Invalid double': From 4aa435c9995cce367706e661c0248c89061092a9 Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Sun, 10 Nov 2024 06:45:28 +0700 Subject: [PATCH 11/18] fix: code format --- .../test/parser_test.dart | 49 +++++++++++++------ 1 file changed, 35 insertions(+), 14 deletions(-) diff --git a/packages/vector_graphics_compiler/test/parser_test.dart b/packages/vector_graphics_compiler/test/parser_test.dart index 51998bb8ca6..488f0ba25b3 100644 --- a/packages/vector_graphics_compiler/test/parser_test.dart +++ b/packages/vector_graphics_compiler/test/parser_test.dart @@ -704,12 +704,15 @@ void main() { }); test('stroke-width with invalid value', () { - const String svg = ''; + const String svg = + ''; final VectorInstructions instructions = parseWithoutOptimizers(svg); expect(instructions.paints, const [ - Paint(stroke: Stroke(color: Color(0xff0000ff), width: 1.0), fill: Fill(color: Color(0xffff0000))), + Paint( + stroke: Stroke(color: Color(0xff0000ff), width: 1.0), + fill: Fill(color: Color(0xffff0000))), ]); expect(instructions.paths, [ @@ -728,11 +731,16 @@ void main() { test('stroke-width with unit value', () { const SvgTheme theme = SvgTheme(); - const String svg_px = ''; - const String svg_pt = ''; - const String svg_ex = ''; - const String svg_em = ''; - const String svg_rem = ''; + const String svg_px = + ''; + const String svg_pt = + ''; + const String svg_ex = + ''; + const String svg_em = + ''; + const String svg_rem = + ''; final VectorInstructions instructionsPx = parseWithoutOptimizers(svg_px); final VectorInstructions instructionsPt = parseWithoutOptimizers(svg_pt); @@ -741,23 +749,36 @@ void main() { final VectorInstructions instructionsRem = parseWithoutOptimizers(svg_rem); expect(instructionsPx.paints, [ - const Paint(stroke: Stroke(color: Color(0xff0000ff), width: 1.0), fill: Fill(color: Color(0xffff0000))), + const Paint( + stroke: Stroke(color: Color(0xff0000ff), width: 1.0), + fill: Fill(color: Color(0xffff0000))), ]); - + expect(instructionsPt.paints, [ - const Paint(stroke: Stroke(color: Color(0xff0000ff), width: 1 + 1 / 3), fill: Fill(color: Color(0xffff0000))), + const Paint( + stroke: Stroke(color: Color(0xff0000ff), width: 1 + 1 / 3), + fill: Fill(color: Color(0xffff0000))), ]); expect(instructionsEx.paints, [ - Paint(stroke: Stroke(color: const Color(0xff0000ff), width: 1.0 * theme.xHeight), fill: const Fill(color: Color(0xffff0000))), + Paint( + stroke: Stroke( + color: const Color(0xff0000ff), width: 1.0 * theme.xHeight), + fill: const Fill(color: Color(0xffff0000))), ]); expect(instructionsEm.paints, [ - Paint(stroke: Stroke(color: const Color(0xff0000ff), width: 1.0 * theme.fontSize), fill: const Fill(color: Color(0xffff0000))), + Paint( + stroke: Stroke( + color: const Color(0xff0000ff), width: 1.0 * theme.fontSize), + fill: const Fill(color: Color(0xffff0000))), ]); - + expect(instructionsRem.paints, [ - Paint(stroke: Stroke(color: const Color(0xff0000ff), width: 1.0 * theme.fontSize), fill: const Fill(color: Color(0xffff0000))), + Paint( + stroke: Stroke( + color: const Color(0xff0000ff), width: 1.0 * theme.fontSize), + fill: const Fill(color: Color(0xffff0000))), ]); }); From a69d531446eb1fc5d11b0cac706cdc6ec763ae91 Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Sun, 10 Nov 2024 10:55:36 +0700 Subject: [PATCH 12/18] update CHANGELOG.md and version --- packages/vector_graphics_compiler/CHANGELOG.md | 4 ++++ packages/vector_graphics_compiler/pubspec.yaml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/vector_graphics_compiler/CHANGELOG.md b/packages/vector_graphics_compiler/CHANGELOG.md index ba4804c871c..408a30fcf3e 100644 --- a/packages/vector_graphics_compiler/CHANGELOG.md +++ b/packages/vector_graphics_compiler/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.1.16 + +* Fixes an issue when parsing stroke-width with an invalid value + ## 1.1.15 * Fixes a bug where empty tags caused the parser to crash. diff --git a/packages/vector_graphics_compiler/pubspec.yaml b/packages/vector_graphics_compiler/pubspec.yaml index 1eba55f247b..5beb9df9624 100644 --- a/packages/vector_graphics_compiler/pubspec.yaml +++ b/packages/vector_graphics_compiler/pubspec.yaml @@ -2,7 +2,7 @@ name: vector_graphics_compiler description: A compiler to convert SVGs to the binary format used by `package:vector_graphics`. repository: https://github.com/flutter/packages/tree/main/packages/vector_graphics_compiler issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+vector_graphics%22 -version: 1.1.15 +version: 1.1.16 executables: vector_graphics_compiler: From e103432901df63c45b1944e0ddbaa190d73baccb Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Sun, 10 Nov 2024 19:57:00 +0700 Subject: [PATCH 13/18] fix: handle stroke-width parsing --- .../lib/src/svg/parser.dart | 14 +------------- .../vector_graphics_compiler/test/parser_test.dart | 2 +- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/packages/vector_graphics_compiler/lib/src/svg/parser.dart b/packages/vector_graphics_compiler/lib/src/svg/parser.dart index e8d1c96a650..5afae45ca1a 100644 --- a/packages/vector_graphics_compiler/lib/src/svg/parser.dart +++ b/packages/vector_graphics_compiler/lib/src/svg/parser.dart @@ -1217,18 +1217,6 @@ class SvgParser { } } - double? _parseWidth(String? rawWidth) { - try { - return parseDoubleWithUnits(rawWidth); - } on FormatException catch (e) { - switch (e.message) { - case 'Invalid double': - return 1.0; - default: - return 1.0; - } - } - } List? _parseDashArray(String? rawDashArray) { if (rawDashArray == null || rawDashArray == '') { @@ -1600,7 +1588,7 @@ class SvgParser { cap: _parseCap(rawStrokeCap, null), join: _parseJoin(rawLineJoin, null), miterLimit: parseDouble(rawMiterLimit), - width: _parseWidth(rawStrokeWidth), + width: parseDoubleWithUnits(rawStrokeWidth, tryParse: true), dashArray: _parseDashArray(rawStrokeDashArray), dashOffset: _parseDashOffset(rawStrokeDashOffset), hasPattern: hasPattern, diff --git a/packages/vector_graphics_compiler/test/parser_test.dart b/packages/vector_graphics_compiler/test/parser_test.dart index 45e9fe41f11..80c2981e4d2 100644 --- a/packages/vector_graphics_compiler/test/parser_test.dart +++ b/packages/vector_graphics_compiler/test/parser_test.dart @@ -712,7 +712,7 @@ void main() { expect(instructions.paints, const [ Paint( - stroke: Stroke(color: Color(0xff0000ff), width: 1.0), + stroke: Stroke(color: Color(0xff0000ff)), fill: Fill(color: Color(0xffff0000))), ]); From 724c7b9c1f3c6f9b9af0b63f481b6ce3db9f957e Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Mon, 11 Nov 2024 10:01:03 +0700 Subject: [PATCH 14/18] fix: code format --- packages/vector_graphics_compiler/lib/src/svg/parser.dart | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/vector_graphics_compiler/lib/src/svg/parser.dart b/packages/vector_graphics_compiler/lib/src/svg/parser.dart index 5afae45ca1a..6a4f280adcf 100644 --- a/packages/vector_graphics_compiler/lib/src/svg/parser.dart +++ b/packages/vector_graphics_compiler/lib/src/svg/parser.dart @@ -1217,7 +1217,6 @@ class SvgParser { } } - List? _parseDashArray(String? rawDashArray) { if (rawDashArray == null || rawDashArray == '') { return null; From 66d11b48999a888598cc13d2aa33813852f0322a Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Mon, 25 Nov 2024 12:45:40 +0700 Subject: [PATCH 15/18] fix: parsers_test --- packages/vector_graphics_compiler/test/parser_test.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/vector_graphics_compiler/test/parser_test.dart b/packages/vector_graphics_compiler/test/parser_test.dart index 80c2981e4d2..626e5c7c463 100644 --- a/packages/vector_graphics_compiler/test/parser_test.dart +++ b/packages/vector_graphics_compiler/test/parser_test.dart @@ -731,6 +731,7 @@ void main() { test('stroke-width with unit value', () { const SvgTheme theme = SvgTheme(); + const double ptConversionFactor = 96 / 72; const String svg_px = ''; @@ -757,7 +758,7 @@ void main() { expect(instructionsPt.paints, [ const Paint( - stroke: Stroke(color: Color(0xff0000ff), width: 1 + 1 / 3), + stroke: Stroke(color: Color(0xff0000ff), width: 1 * ptConversionFactor), fill: Fill(color: Color(0xffff0000))), ]); From 8a1440fe3271ca1562246fc165226e2fb2bb5c89 Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Mon, 25 Nov 2024 12:48:01 +0700 Subject: [PATCH 16/18] fix: CHANGELOG style --- packages/vector_graphics_compiler/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vector_graphics_compiler/CHANGELOG.md b/packages/vector_graphics_compiler/CHANGELOG.md index 408a30fcf3e..b282d0aa658 100644 --- a/packages/vector_graphics_compiler/CHANGELOG.md +++ b/packages/vector_graphics_compiler/CHANGELOG.md @@ -1,6 +1,6 @@ ## 1.1.16 -* Fixes an issue when parsing stroke-width with an invalid value +* Set stroke-width to 1 by default when an invalid value is parsed instead of throwing an exception. ## 1.1.15 From 7674b9bf0cbddae045b507ec7650134f5df40ec4 Mon Sep 17 00:00:00 2001 From: fransdhinta Date: Mon, 25 Nov 2024 14:16:53 +0700 Subject: [PATCH 17/18] fix: code format --- packages/vector_graphics_compiler/test/parser_test.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/vector_graphics_compiler/test/parser_test.dart b/packages/vector_graphics_compiler/test/parser_test.dart index 626e5c7c463..cfbec4732e6 100644 --- a/packages/vector_graphics_compiler/test/parser_test.dart +++ b/packages/vector_graphics_compiler/test/parser_test.dart @@ -758,7 +758,8 @@ void main() { expect(instructionsPt.paints, [ const Paint( - stroke: Stroke(color: Color(0xff0000ff), width: 1 * ptConversionFactor), + stroke: + Stroke(color: Color(0xff0000ff), width: 1 * ptConversionFactor), fill: Fill(color: Color(0xffff0000))), ]); From 141c99ac60bccedbf2043c97c912055502fee899 Mon Sep 17 00:00:00 2001 From: stuartmorgan Date: Mon, 25 Nov 2024 09:41:58 -0500 Subject: [PATCH 18/18] Fix CHANGELOG style --- packages/vector_graphics_compiler/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/vector_graphics_compiler/CHANGELOG.md b/packages/vector_graphics_compiler/CHANGELOG.md index b282d0aa658..e132bbc01f7 100644 --- a/packages/vector_graphics_compiler/CHANGELOG.md +++ b/packages/vector_graphics_compiler/CHANGELOG.md @@ -1,6 +1,6 @@ ## 1.1.16 -* Set stroke-width to 1 by default when an invalid value is parsed instead of throwing an exception. +* Sets stroke-width to 1 by default when an invalid value is parsed instead of throwing an exception. ## 1.1.15