LibWeb: Parse stroke-{linejoin,miterlimit} attributes

Similar to LadybirdBrowser/ladybird#1714.

We don't implement the linejoin values `miter-clip` and `arcs`, because
according to the SVG 2 spec:

> The values miter-clip and arcs of the stroke-linejoin property are at
> risk. There are no known browser implementations. See issue Github
> issue w3c/svgwg#592.

Nothing uses this yet. The next step is to change
SVGPathPaintable::paint() to read `graphics_element.stroke_linejoin()`
and `graphics_element.stroke_miterlimit()` when painting.
This commit is contained in:
Nico Weber 2024-10-28 20:51:16 -04:00 committed by Sam Atkins
commit 421cf8d9bf
Notes: github-actions[bot] 2024-10-29 22:37:55 +00:00
10 changed files with 80 additions and 1 deletions

View file

@ -326,6 +326,25 @@ Optional<CSS::StrokeLinecap> StyleProperties::stroke_linecap() const
return keyword_to_stroke_linecap(value->to_keyword());
}
Optional<CSS::StrokeLinejoin> StyleProperties::stroke_linejoin() const
{
auto value = property(CSS::PropertyID::StrokeLinejoin);
return keyword_to_stroke_linejoin(value->to_keyword());
}
NumberOrCalculated StyleProperties::stroke_miterlimit() const
{
auto value = property(CSS::PropertyID::StrokeMiterlimit);
if (value->is_math()) {
auto const& math_value = value->as_math();
VERIFY(math_value.resolves_to_number());
return NumberOrCalculated { math_value };
}
return NumberOrCalculated { value->as_number().number() };
}
float StyleProperties::stroke_opacity() const
{
auto value = property(CSS::PropertyID::StrokeOpacity);