Browse Source

LibWeb: Support SVG vertical/horizontal lineto with multiple parameters

This now allows v 1 2 3 or h 1 2 3, which are treated like v 1 v 2 v 3
and h 1 h 2 h 3 respectively. This fixes the freeCodeCamp SVG logo.
MacDue 2 years ago
parent
commit
a8b9130ceb
1 changed files with 4 additions and 2 deletions
  1. 4 2
      Userland/Libraries/LibWeb/SVG/AttributeParser.cpp

+ 4 - 2
Userland/Libraries/LibWeb/SVG/AttributeParser.cpp

@@ -188,14 +188,16 @@ void AttributeParser::parse_horizontal_lineto()
 {
     bool absolute = consume() == 'H';
     parse_whitespace();
-    m_instructions.append({ PathInstructionType::HorizontalLine, absolute, parse_coordinate_sequence() });
+    for (auto coordinate : parse_coordinate_sequence())
+        m_instructions.append({ PathInstructionType::HorizontalLine, absolute, { coordinate } });
 }
 
 void AttributeParser::parse_vertical_lineto()
 {
     bool absolute = consume() == 'V';
     parse_whitespace();
-    m_instructions.append({ PathInstructionType::VerticalLine, absolute, parse_coordinate_sequence() });
+    for (auto coordinate : parse_coordinate_sequence())
+        m_instructions.append({ PathInstructionType::VerticalLine, absolute, { coordinate } });
 }
 
 void AttributeParser::parse_curveto()