LibWeb: Update SVG get_path() API to take a viewport size

This will allow resolving paths that use sizes that are relative to the
viewport. This necessarily removes the on element caching, which has
been redundant for a while as computed paths are stored on the
paintable.
This commit is contained in:
MacDue 2024-03-03 20:15:06 +00:00 committed by Andreas Kling
parent 1fbf1073ab
commit b9afea40e6
Notes: sideshowbarker 2024-07-19 01:59:31 +09:00
16 changed files with 55 additions and 126 deletions

View file

@ -99,10 +99,8 @@ void SVGPathElement::attribute_changed(FlyString const& name, Optional<String> c
{
SVGGeometryElement::attribute_changed(name, value);
if (name == "d") {
if (name == "d")
m_instructions = AttributeParser::parse_path_data(value.value_or(String {}));
m_path.clear();
}
}
Gfx::Path path_from_path_instructions(ReadonlySpan<PathInstruction> instructions)
@ -273,12 +271,9 @@ Gfx::Path path_from_path_instructions(ReadonlySpan<PathInstruction> instructions
return path;
}
Gfx::Path& SVGPathElement::get_path()
Gfx::Path SVGPathElement::get_path(CSSPixelSize)
{
if (!m_path.has_value()) {
m_path = path_from_path_instructions(m_instructions);
}
return m_path.value();
return path_from_path_instructions(m_instructions);
}
}