| Index: Source/platform/graphics/filters/Filter.cpp
|
| diff --git a/Source/platform/graphics/filters/Filter.cpp b/Source/platform/graphics/filters/Filter.cpp
|
| index 6aa814174cf3c2b485dbfd493fbab4b508f8ace4..22ba718e5ef557466470ce0ddee8ac86ff241189 100644
|
| --- a/Source/platform/graphics/filters/Filter.cpp
|
| +++ b/Source/platform/graphics/filters/Filter.cpp
|
| @@ -36,10 +36,11 @@
|
|
|
| namespace blink {
|
|
|
| -Filter::Filter(const FloatRect& referenceBox, const FloatRect& filterRegion, float scale)
|
| +Filter::Filter(const FloatRect& referenceBox, const FloatRect& filterRegion, float scale, UnitScaling unitScaling)
|
| : m_referenceBox(referenceBox)
|
| , m_filterRegion(filterRegion)
|
| , m_scale(scale)
|
| + , m_unitScaling(unitScaling)
|
| , m_sourceGraphic(SourceGraphic::create(this))
|
| {
|
| }
|
| @@ -48,6 +49,16 @@ Filter::~Filter()
|
| {
|
| }
|
|
|
| +PassRefPtrWillBeRawPtr<Filter> Filter::create(const FloatRect& referenceBox, const FloatRect& filterRegion, float scale, UnitScaling unitScaling)
|
| +{
|
| + return adoptRefWillBeNoop(new Filter(referenceBox, filterRegion, scale, unitScaling));
|
| +}
|
| +
|
| +PassRefPtrWillBeRawPtr<Filter> Filter::create(float scale)
|
| +{
|
| + return adoptRefWillBeNoop(new Filter(FloatRect(), FloatRect(), scale, UserSpace));
|
| +}
|
| +
|
| DEFINE_TRACE(Filter)
|
| {
|
| visitor->trace(m_sourceGraphic);
|
| @@ -68,6 +79,29 @@ FloatRect Filter::mapAbsoluteRectToLocalRect(const FloatRect& rect) const
|
| return result;
|
| }
|
|
|
| +float Filter::applyHorizontalScale(float value) const
|
| +{
|
| + if (m_unitScaling == BoundingBox)
|
| + value *= referenceBox().width();
|
| + return m_scale * value;
|
| +}
|
| +
|
| +float Filter::applyVerticalScale(float value) const
|
| +{
|
| + if (m_unitScaling == BoundingBox)
|
| + value *= referenceBox().height();
|
| + return m_scale * value;
|
| +}
|
| +
|
| +FloatPoint3D Filter::resolve3dPoint(const FloatPoint3D& point) const
|
| +{
|
| + if (m_unitScaling != BoundingBox)
|
| + return point;
|
| + return FloatPoint3D(point.x() * referenceBox().width() + referenceBox().x(),
|
| + point.y() * referenceBox().height() + referenceBox().y(),
|
| + point.z() * sqrtf(referenceBox().size().diagonalLengthSquared() / 2));
|
| +}
|
| +
|
| void Filter::setLastEffect(PassRefPtrWillBeRawPtr<FilterEffect> effect)
|
| {
|
| m_lastEffect = effect;
|
|
|