| Index: third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
|
| diff --git a/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp b/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
|
| index 2f9328e6630dd3c0517416601a0cb9517571bfdc..02812f1312bab7a35805c87ae53f78b50d6afbf8 100644
|
| --- a/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
|
| +++ b/third_party/WebKit/Source/core/paint/FilterEffectBuilder.cpp
|
| @@ -27,7 +27,6 @@
|
| #include "core/paint/FilterEffectBuilder.h"
|
|
|
| #include "core/layout/svg/ReferenceFilterBuilder.h"
|
| -#include "core/paint/PaintLayer.h"
|
| #include "core/svg/SVGFilterElement.h"
|
| #include "core/svg/SVGLengthContext.h"
|
| #include "core/svg/graphics/filters/SVGFilterBuilder.h"
|
| @@ -119,18 +118,6 @@ Vector<float> sepiaMatrix(double amount)
|
| return matrix;
|
| }
|
|
|
| -FloatRect computeReferenceBox(const Element& element, const FloatSize* zoomedReferenceBoxSize, float zoom)
|
| -{
|
| - FloatRect box;
|
| - if (zoomedReferenceBoxSize) {
|
| - box = FloatRect(FloatPoint(), *zoomedReferenceBoxSize);
|
| - } else if (element.isConnected() && element.layoutObject() && element.layoutObject()->enclosingLayer()) {
|
| - box = FloatRect(element.layoutObject()->enclosingLayer()->physicalBoundingBoxIncludingReflectionAndStackingChildren(LayoutPoint(), PaintLayer::CalculateBoundsOptions::IncludeTransformsAndCompositedChildLayers));
|
| - }
|
| - box.scale(1.0f / zoom);
|
| - return box;
|
| -}
|
| -
|
| } // namespace
|
|
|
| FilterEffectBuilder::FilterEffectBuilder()
|
| @@ -146,7 +133,7 @@ DEFINE_TRACE(FilterEffectBuilder)
|
| visitor->trace(m_lastEffect);
|
| }
|
|
|
| -bool FilterEffectBuilder::build(Element* element, const FilterOperations& operations, float zoom, const FloatSize* zoomedReferenceBoxSize, const SkPaint* fillPaint, const SkPaint* strokePaint)
|
| +bool FilterEffectBuilder::build(Element* element, const FilterOperations& operations, float zoom, const FloatRect& zoomedReferenceBox, const SkPaint* fillPaint, const SkPaint* strokePaint)
|
| {
|
| // Create a parent filter for shorthand filters. These have already been scaled by the CSS code for page zoom, so scale is 1.0 here.
|
| Filter* parentFilter = Filter::create(1.0f);
|
| @@ -156,7 +143,7 @@ bool FilterEffectBuilder::build(Element* element, const FilterOperations& operat
|
| FilterOperation* filterOperation = operations.operations().at(i).get();
|
| switch (filterOperation->type()) {
|
| case FilterOperation::REFERENCE: {
|
| - Filter* referenceFilter = buildReferenceFilter(toReferenceFilterOperation(*filterOperation), zoomedReferenceBoxSize, fillPaint, strokePaint, *element, previousEffect, zoom);
|
| + Filter* referenceFilter = buildReferenceFilter(toReferenceFilterOperation(*filterOperation), zoomedReferenceBox, fillPaint, strokePaint, *element, previousEffect, zoom);
|
| if (referenceFilter)
|
| effect = referenceFilter->lastEffect();
|
| break;
|
| @@ -277,7 +264,7 @@ bool FilterEffectBuilder::build(Element* element, const FilterOperations& operat
|
|
|
| Filter* FilterEffectBuilder::buildReferenceFilter(
|
| const ReferenceFilterOperation& referenceOperation,
|
| - const FloatSize* zoomedReferenceBoxSize,
|
| + const FloatRect& zoomedReferenceBox,
|
| const SkPaint* fillPaint,
|
| const SkPaint* strokePaint,
|
| Element& element,
|
| @@ -287,8 +274,8 @@ Filter* FilterEffectBuilder::buildReferenceFilter(
|
| SVGFilterElement* filterElement = ReferenceFilterBuilder::resolveFilterReference(referenceOperation, element);
|
| if (!filterElement)
|
| return nullptr;
|
| -
|
| - const FloatRect referenceBox = computeReferenceBox(element, zoomedReferenceBoxSize, zoom);
|
| + FloatRect referenceBox = zoomedReferenceBox;
|
| + referenceBox.scale(1.0f / zoom);
|
| return buildReferenceFilter(*filterElement, referenceBox, fillPaint, strokePaint, previousEffect, zoom);
|
| }
|
|
|
|
|