LibWeb: SVG parse signed numbers in eliptical arc
This commit is contained in:
parent
cb041d7496
commit
f7dbcb652a
Notes:
sideshowbarker
2024-07-17 18:26:53 +09:00
Author: https://github.com/danners Commit: https://github.com/SerenityOS/serenity/commit/f7dbcb652a Pull-request: https://github.com/SerenityOS/serenity/pull/12632 Reviewed-by: https://github.com/AtkinsSJ ✅ Reviewed-by: https://github.com/IdanHo
2 changed files with 13 additions and 3 deletions
|
@ -230,7 +230,8 @@ void AttributeParser::parse_elliptical_arc()
|
|||
|
||||
float AttributeParser::parse_length()
|
||||
{
|
||||
return parse_sign() * parse_number();
|
||||
// https://www.w3.org/TR/SVG11/types.html#DataTypeLength
|
||||
return parse_number();
|
||||
}
|
||||
|
||||
float AttributeParser::parse_coordinate()
|
||||
|
@ -302,10 +303,10 @@ Vector<float> AttributeParser::parse_coordinate_pair_triplet()
|
|||
Vector<float> AttributeParser::parse_elliptical_arg_argument()
|
||||
{
|
||||
Vector<float> numbers;
|
||||
numbers.append(parse_number());
|
||||
numbers.append(parse_nonnegative_number());
|
||||
if (match_comma_whitespace())
|
||||
parse_comma_whitespace();
|
||||
numbers.append(parse_number());
|
||||
numbers.append(parse_nonnegative_number());
|
||||
if (match_comma_whitespace())
|
||||
parse_comma_whitespace();
|
||||
numbers.append(parse_number());
|
||||
|
@ -368,7 +369,15 @@ float AttributeParser::parse_fractional_constant()
|
|||
return builder.to_string().to_int().value();
|
||||
}
|
||||
|
||||
// https://www.w3.org/TR/SVG11/types.html#DataTypeNumber
|
||||
float AttributeParser::parse_number()
|
||||
{
|
||||
auto sign = parse_sign();
|
||||
return sign * parse_nonnegative_number();
|
||||
}
|
||||
|
||||
// https://www.w3.org/TR/SVG11/paths.html#PathDataBNF
|
||||
float AttributeParser::parse_nonnegative_number()
|
||||
{
|
||||
auto number = parse_fractional_constant();
|
||||
|
||||
|
|
|
@ -70,6 +70,7 @@ private:
|
|||
void parse_comma_whitespace();
|
||||
float parse_fractional_constant();
|
||||
float parse_number();
|
||||
float parse_nonnegative_number();
|
||||
float parse_flag();
|
||||
// -1 if negative, +1 otherwise
|
||||
int parse_sign();
|
||||
|
|
Loading…
Add table
Reference in a new issue