diff options
Diffstat (limited to 'WebCore/svg/graphics/filters/SVGFEOffset.cpp')
-rw-r--r-- | WebCore/svg/graphics/filters/SVGFEOffset.cpp | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/WebCore/svg/graphics/filters/SVGFEOffset.cpp b/WebCore/svg/graphics/filters/SVGFEOffset.cpp index ce9ee3d..9fd50ed 100644 --- a/WebCore/svg/graphics/filters/SVGFEOffset.cpp +++ b/WebCore/svg/graphics/filters/SVGFEOffset.cpp @@ -74,17 +74,22 @@ void FEOffset::apply(Filter* filter) if (!filterContext) return; + FloatRect sourceImageRect = filter->sourceImageRect(); + sourceImageRect.scale(filter->filterResolution().width(), filter->filterResolution().height()); + if (filter->effectBoundingBoxMode()) { - setDx(dx() * filter->sourceImageRect().width()); - setDy(dy() * filter->sourceImageRect().height()); + m_dx *= sourceImageRect.width(); + m_dy *= sourceImageRect.height(); } + m_dx *= filter->filterResolution().width(); + m_dy *= filter->filterResolution().height(); - FloatRect dstRect = FloatRect(dx() + m_in->subRegion().x() - subRegion().x(), - dy() + m_in->subRegion().y() - subRegion().y(), - m_in->subRegion().width(), - m_in->subRegion().height()); + FloatRect dstRect = FloatRect(m_dx + m_in->scaledSubRegion().x() - scaledSubRegion().x(), + m_dy + m_in->scaledSubRegion().y() - scaledSubRegion().y(), + m_in->scaledSubRegion().width(), + m_in->scaledSubRegion().height()); - filterContext->drawImage(m_in->resultImage()->image(), dstRect); + filterContext->drawImage(m_in->resultImage()->image(), DeviceColorSpace, dstRect); } void FEOffset::dump() |