mirror of
https://github.com/RGBCube/serenity
synced 2025-06-01 02:38:13 +00:00
LibWeb: Cache reference to <svg> element in SVGFormattingContext
This commit is contained in:
parent
e1dab7b63d
commit
557006f5be
1 changed files with 7 additions and 7 deletions
|
@ -22,6 +22,8 @@ SVGFormattingContext::~SVGFormattingContext() = default;
|
|||
|
||||
void SVGFormattingContext::run(Box const& box, LayoutMode)
|
||||
{
|
||||
auto& svg_svg_element = verify_cast<SVG::SVGSVGElement>(*box.dom_node());
|
||||
|
||||
box.for_each_in_subtree_of_type<SVGBox>([&](SVGBox const& descendant) {
|
||||
if (is<SVGGeometryBox>(descendant)) {
|
||||
auto const& geometry_box = static_cast<SVGGeometryBox const&>(descendant);
|
||||
|
@ -30,11 +32,9 @@ void SVGFormattingContext::run(Box const& box, LayoutMode)
|
|||
|
||||
auto& dom_node = const_cast<SVGGeometryBox&>(geometry_box).dom_node();
|
||||
|
||||
SVG::SVGSVGElement* svg_element = dom_node.first_ancestor_of_type<SVG::SVGSVGElement>();
|
||||
|
||||
if (svg_element->has_attribute(HTML::AttributeNames::width) && svg_element->has_attribute(HTML::AttributeNames::height)) {
|
||||
if (svg_svg_element.has_attribute(HTML::AttributeNames::width) && svg_svg_element.has_attribute(HTML::AttributeNames::height)) {
|
||||
geometry_box_state.offset = { 0, 0 };
|
||||
auto& layout_node = static_cast<Layout::Node&>(*(svg_element->layout_node()));
|
||||
auto& layout_node = *svg_svg_element.layout_node();
|
||||
|
||||
// FIXME: Allow for relative lengths here
|
||||
geometry_box_state.content_width = layout_node.computed_values().width().resolved(layout_node, { 0, CSS::Length::Type::Px }).to_px(layout_node);
|
||||
|
@ -44,10 +44,10 @@ void SVGFormattingContext::run(Box const& box, LayoutMode)
|
|||
}
|
||||
|
||||
// FIXME: Allow for one of {width, height} to not be specified}
|
||||
if (svg_element->has_attribute(HTML::AttributeNames::width)) {
|
||||
if (svg_svg_element.has_attribute(HTML::AttributeNames::width)) {
|
||||
}
|
||||
|
||||
if (svg_element->has_attribute(HTML::AttributeNames::height)) {
|
||||
if (svg_svg_element.has_attribute(HTML::AttributeNames::height)) {
|
||||
}
|
||||
|
||||
auto& path = dom_node.get_path();
|
||||
|
@ -57,7 +57,7 @@ void SVGFormattingContext::run(Box const& box, LayoutMode)
|
|||
auto stroke_width = geometry_box.dom_node().stroke_width().value_or(0);
|
||||
path_bounding_box.inflate(stroke_width, stroke_width);
|
||||
|
||||
auto& maybe_view_box = svg_element->view_box();
|
||||
auto& maybe_view_box = svg_svg_element.view_box();
|
||||
|
||||
if (maybe_view_box.has_value()) {
|
||||
auto view_box = maybe_view_box.value();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue