From 557006f5bef959a14fc773427ea2a4f1e7867bb0 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 11 Jul 2022 00:27:54 +0200 Subject: [PATCH] LibWeb: Cache reference to element in SVGFormattingContext --- .../LibWeb/Layout/SVGFormattingContext.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/Userland/Libraries/LibWeb/Layout/SVGFormattingContext.cpp b/Userland/Libraries/LibWeb/Layout/SVGFormattingContext.cpp index f2a2a83354..9010f11f77 100644 --- a/Userland/Libraries/LibWeb/Layout/SVGFormattingContext.cpp +++ b/Userland/Libraries/LibWeb/Layout/SVGFormattingContext.cpp @@ -22,6 +22,8 @@ SVGFormattingContext::~SVGFormattingContext() = default; void SVGFormattingContext::run(Box const& box, LayoutMode) { + auto& svg_svg_element = verify_cast(*box.dom_node()); + box.for_each_in_subtree_of_type([&](SVGBox const& descendant) { if (is(descendant)) { auto const& geometry_box = static_cast(descendant); @@ -30,11 +32,9 @@ void SVGFormattingContext::run(Box const& box, LayoutMode) auto& dom_node = const_cast(geometry_box).dom_node(); - SVG::SVGSVGElement* svg_element = dom_node.first_ancestor_of_type(); - - 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(*(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();