summaryrefslogtreecommitdiffstats
path: root/WebCore/svg/graphics
diff options
context:
space:
mode:
authorJohn Reck <jreck@google.com>2010-11-04 12:00:17 -0700
committerJohn Reck <jreck@google.com>2010-11-09 11:35:04 -0800
commite14391e94c850b8bd03680c23b38978db68687a8 (patch)
tree3fed87e6620fecaf3edc7259ae58a11662bedcb2 /WebCore/svg/graphics
parent1bd705833a68f07850cf7e204b26f8d328d16951 (diff)
downloadexternal_webkit-e14391e94c850b8bd03680c23b38978db68687a8.zip
external_webkit-e14391e94c850b8bd03680c23b38978db68687a8.tar.gz
external_webkit-e14391e94c850b8bd03680c23b38978db68687a8.tar.bz2
Merge Webkit at r70949: Initial merge by git.
Change-Id: I77b8645c083b5d0da8dba73ed01d4014aab9848e
Diffstat (limited to 'WebCore/svg/graphics')
-rw-r--r--WebCore/svg/graphics/filters/SVGFilter.cpp60
-rw-r--r--WebCore/svg/graphics/filters/SVGFilter.h6
2 files changed, 2 insertions, 64 deletions
diff --git a/WebCore/svg/graphics/filters/SVGFilter.cpp b/WebCore/svg/graphics/filters/SVGFilter.cpp
index dfdccd7..e7b61db 100644
--- a/WebCore/svg/graphics/filters/SVGFilter.cpp
+++ b/WebCore/svg/graphics/filters/SVGFilter.cpp
@@ -23,8 +23,6 @@
#if ENABLE(SVG) && ENABLE(FILTERS)
#include "SVGFilter.h"
-#include "SVGFEImage.h"
-
namespace WebCore {
SVGFilter::SVGFilter(const AffineTransform& absoluteTransform, const FloatRect& absoluteSourceDrawingRegion, const FloatRect& targetBoundingBox, const FloatRect& filterRegion, bool effectBBoxMode)
@@ -38,64 +36,6 @@ SVGFilter::SVGFilter(const AffineTransform& absoluteTransform, const FloatRect&
m_absoluteFilterRegion = absoluteTransform.mapRect(filterRegion);
}
-void SVGFilter::determineFilterPrimitiveSubregion(FilterEffect* effect, const FloatRect& unionOfPreviousPrimitiveSubregions)
-{
- FloatRect subRegionBBox = effect->effectBoundaries();
- FloatRect newSubRegion = subRegionBBox;
-
- if (m_effectBBoxMode) {
- newSubRegion = unionOfPreviousPrimitiveSubregions;
-
- if (effect->hasX())
- newSubRegion.setX(m_targetBoundingBox.x() + subRegionBBox.x() * m_targetBoundingBox.width());
-
- if (effect->hasY())
- newSubRegion.setY(m_targetBoundingBox.y() + subRegionBBox.y() * m_targetBoundingBox.height());
-
- if (effect->hasWidth())
- newSubRegion.setWidth(subRegionBBox.width() * m_targetBoundingBox.width());
-
- if (effect->hasHeight())
- newSubRegion.setHeight(subRegionBBox.height() * m_targetBoundingBox.height());
- } else {
- if (!effect->hasX())
- newSubRegion.setX(unionOfPreviousPrimitiveSubregions.x());
-
- if (!effect->hasY())
- newSubRegion.setY(unionOfPreviousPrimitiveSubregions.y());
-
- if (!effect->hasWidth())
- newSubRegion.setWidth(unionOfPreviousPrimitiveSubregions.width());
-
- if (!effect->hasHeight())
- newSubRegion.setHeight(unionOfPreviousPrimitiveSubregions.height());
- }
-
- effect->setFilterPrimitiveSubregion(newSubRegion);
- // TODO: Everything above should be moved to a first phase of layout in RenderSVGResourceFilterPrimitive.
- // The scaling of the subregion to the repaint rect should be merged with a more intelligent repaint logic
- // and moved to the second phase of layout in RenderSVGResourceFilterPrimitive.
- // See bug https://bugs.webkit.org/show_bug.cgi?id=45614.
- newSubRegion = m_absoluteTransform.mapRect(newSubRegion);
- newSubRegion.scale(filterResolution().width(), filterResolution().height());
-
- // FEImage needs the unclipped subregion in absolute coordinates to determine the correct
- // destination rect in combination with preserveAspectRatio.
- if (effect->filterEffectType() == FilterEffectTypeImage) {
- FEImage* imageEffect = static_cast<FEImage*>(effect);
- imageEffect->setAbsoluteSubregion(newSubRegion);
- }
-
- // Clip every filter effect to the filter region.
- FloatRect absoluteScaledFilterRegion = m_absoluteFilterRegion;
- absoluteScaledFilterRegion.scale(filterResolution().width(), filterResolution().height());
- newSubRegion.intersect(absoluteScaledFilterRegion);
-
- effect->setMaxEffectRect(enclosingIntRect(newSubRegion));
- if (effect->filterEffectType() != FilterEffectTypeSourceInput)
- m_maxImageSize = m_maxImageSize.expandedTo(newSubRegion.size());
-}
-
float SVGFilter::applyHorizontalScale(float value) const
{
if (m_effectBBoxMode)
diff --git a/WebCore/svg/graphics/filters/SVGFilter.h b/WebCore/svg/graphics/filters/SVGFilter.h
index 1b19e9f..6465f9f 100644
--- a/WebCore/svg/graphics/filters/SVGFilter.h
+++ b/WebCore/svg/graphics/filters/SVGFilter.h
@@ -43,14 +43,13 @@ public:
virtual FloatRect filterRegion() const { return m_absoluteFilterRegion; }
virtual FloatPoint mapAbsolutePointToLocalPoint(const FloatPoint& point) const { return m_absoluteTransform.inverse().mapPoint(point); }
+ FloatRect mapLocalRectToAbsoluteRect(const FloatRect& rect) const { return m_absoluteTransform.mapRect(rect); }
virtual float applyHorizontalScale(float value) const;
virtual float applyVerticalScale(float value) const;
virtual FloatRect sourceImageRect() const { return m_absoluteSourceDrawingRegion; }
-
- virtual FloatSize maxImageSize() const { return m_maxImageSize; }
- virtual void determineFilterPrimitiveSubregion(FilterEffect*, const FloatRect&);
+ FloatRect targetBoundingBox() const { return m_targetBoundingBox; }
private:
SVGFilter(const AffineTransform& absoluteTransform, const FloatRect& absoluteSourceDrawingRegion, const FloatRect& targetBoundingBox, const FloatRect& filterRegion, bool effectBBoxMode);
@@ -61,7 +60,6 @@ private:
FloatRect m_absoluteFilterRegion;
FloatRect m_filterRegion;
bool m_effectBBoxMode;
- FloatSize m_maxImageSize;
};
} // namespace WebCore