Pass oBB to SVGLayoutSupport::AdjustVisualRectWithResources
Most callsites have easy (even trivial) access to the object bounding
box (oBB), so just pass it as a parameter.
Change-Id: I2ec67dbea178356a3130bcef27204875143cf26c
Reviewed-on: https://chromium-review.googlesource.com/1245444
Reviewed-by: Stephen Chenney <schenney@chromium.org>
Commit-Queue: Fredrik Söderquist <fs@opera.com>
Cr-Commit-Position: refs/heads/master@{#594300}
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_image.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_image.cc
index 9b9cb77..0bd47f43 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_image.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_image.cc
@@ -142,7 +142,8 @@
if (needs_boundaries_update_) {
local_visual_rect_ = object_bounding_box_;
- SVGLayoutSupport::AdjustVisualRectWithResources(*this, local_visual_rect_);
+ SVGLayoutSupport::AdjustVisualRectWithResources(*this, object_bounding_box_,
+ local_visual_rect_);
needs_boundaries_update_ = false;
update_parent_boundaries = true;
}
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc
index 69fd4258..931ccd8 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc
@@ -277,7 +277,8 @@
needs_shape_update_ = false;
local_visual_rect_ = StrokeBoundingBox();
- SVGLayoutSupport::AdjustVisualRectWithResources(*this, local_visual_rect_);
+ SVGLayoutSupport::AdjustVisualRectWithResources(*this, ObjectBoundingBox(),
+ local_visual_rect_);
needs_boundaries_update_ = false;
update_parent_boundaries = true;
diff --git a/third_party/blink/renderer/core/layout/svg/layout_svg_text.cc b/third_party/blink/renderer/core/layout/svg/layout_svg_text.cc
index 78cad04..dbff4629 100644
--- a/third_party/blink/renderer/core/layout/svg/layout_svg_text.cc
+++ b/third_party/blink/renderer/core/layout/svg/layout_svg_text.cc
@@ -391,7 +391,8 @@
FloatRect LayoutSVGText::VisualRectInLocalSVGCoordinates() const {
FloatRect visual_rect = StrokeBoundingBox();
- SVGLayoutSupport::AdjustVisualRectWithResources(*this, visual_rect);
+ SVGLayoutSupport::AdjustVisualRectWithResources(*this, ObjectBoundingBox(),
+ visual_rect);
if (const ShadowList* text_shadow = StyleRef().TextShadow())
text_shadow->AdjustRectForShadow(visual_rect);
diff --git a/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc b/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc
index 2fb3a01..02b022f 100644
--- a/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc
+++ b/third_party/blink/renderer/core/layout/svg/svg_layout_support.cc
@@ -262,7 +262,8 @@
}
local_visual_rect = stroke_bounding_box;
- AdjustVisualRectWithResources(*container, local_visual_rect);
+ AdjustVisualRectWithResources(*container, object_bounding_box,
+ local_visual_rect);
}
const LayoutSVGRoot* SVGLayoutSupport::FindTreeRootObject(
@@ -386,26 +387,21 @@
void SVGLayoutSupport::AdjustVisualRectWithResources(
const LayoutObject& layout_object,
+ const FloatRect& object_bounding_box,
FloatRect& visual_rect) {
SVGResources* resources =
SVGResourcesCache::CachedResourcesForLayoutObject(layout_object);
if (!resources)
return;
- if (LayoutSVGResourceFilter* filter = resources->Filter()) {
- visual_rect =
- filter->ResourceBoundingBox(layout_object.ObjectBoundingBox());
- }
+ if (LayoutSVGResourceFilter* filter = resources->Filter())
+ visual_rect = filter->ResourceBoundingBox(object_bounding_box);
- if (LayoutSVGResourceClipper* clipper = resources->Clipper()) {
- visual_rect.Intersect(
- clipper->ResourceBoundingBox(layout_object.ObjectBoundingBox()));
- }
+ if (LayoutSVGResourceClipper* clipper = resources->Clipper())
+ visual_rect.Intersect(clipper->ResourceBoundingBox(object_bounding_box));
- if (LayoutSVGResourceMasker* masker = resources->Masker()) {
- visual_rect.Intersect(
- masker->ResourceBoundingBox(layout_object.ObjectBoundingBox()));
- }
+ if (LayoutSVGResourceMasker* masker = resources->Masker())
+ visual_rect.Intersect(masker->ResourceBoundingBox(object_bounding_box));
}
bool SVGLayoutSupport::HasFilterResource(const LayoutObject& object) {
diff --git a/third_party/blink/renderer/core/layout/svg/svg_layout_support.h b/third_party/blink/renderer/core/layout/svg/svg_layout_support.h
index 8737a84c..98abb7c 100644
--- a/third_party/blink/renderer/core/layout/svg/svg_layout_support.h
+++ b/third_party/blink/renderer/core/layout/svg/svg_layout_support.h
@@ -65,7 +65,10 @@
// Adjusts the visualRect in combination with filter, clipper and masker
// in local coordinates.
- static void AdjustVisualRectWithResources(const LayoutObject&, FloatRect&);
+ static void AdjustVisualRectWithResources(
+ const LayoutObject&,
+ const FloatRect& object_bounding_box,
+ FloatRect&);
// Determine if the LayoutObject references a filter resource object.
static bool HasFilterResource(const LayoutObject&);