1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 12:17:44 +00:00

LibWeb: Support implicit lineto commands after moveto in SVG paths

Per SVG2, any coordinate pairs following a moveto command should be
treated as implicit lineto commands with the same absoluteness as the
moveto command.
This commit is contained in:
Andreas Kling 2023-04-17 12:34:00 +02:00 committed by Jelle Raaijmakers
parent 8d0985ef01
commit 7f79208759
3 changed files with 22 additions and 2 deletions

View file

@ -130,12 +130,19 @@ void AttributeParser::parse_drawto()
}
}
// https://www.w3.org/TR/SVG2/paths.html#PathDataMovetoCommands
void AttributeParser::parse_moveto()
{
bool absolute = consume() == 'M';
parse_whitespace();
for (auto& pair : parse_coordinate_pair_sequence())
m_instructions.append({ PathInstructionType::Move, absolute, pair });
bool is_first = true;
for (auto& pair : parse_coordinate_pair_sequence()) {
// NOTE: "M 1 2 3 4" is equivalent to "M 1 2 L 3 4".
auto type = is_first ? PathInstructionType::Move : PathInstructionType::Line;
m_instructions.append({ type, absolute, pair });
is_first = false;
}
}
void AttributeParser::parse_closepath()