#include "config.h"
#include "SVGFilter.h"
namespace WebCore {
SVGFilter::SVGFilter(const AffineTransform& absoluteTransform, const FloatRect& absoluteSourceDrawingRegion, const FloatRect& targetBoundingBox, const FloatRect& filterRegion, bool effectBBoxMode)
: Filter(absoluteTransform)
, m_absoluteSourceDrawingRegion(absoluteSourceDrawingRegion)
, m_targetBoundingBox(targetBoundingBox)
, m_filterRegion(filterRegion)
, m_effectBBoxMode(effectBBoxMode)
{
m_absoluteFilterRegion = absoluteTransform.mapRect(filterRegion);
}
float SVGFilter::applyHorizontalScale(float value) const
{
if (m_effectBBoxMode)
value *= m_targetBoundingBox.width();
return Filter::applyHorizontalScale(value) * m_absoluteFilterRegion.width() / m_filterRegion.width();
}
float SVGFilter::applyVerticalScale(float value) const
{
if (m_effectBBoxMode)
value *= m_targetBoundingBox.height();
return Filter::applyVerticalScale(value) * m_absoluteFilterRegion.height() / m_filterRegion.height();
}
Ref<SVGFilter> SVGFilter::create(const AffineTransform& absoluteTransform, const FloatRect& absoluteSourceDrawingRegion, const FloatRect& targetBoundingBox, const FloatRect& filterRegion, bool effectBBoxMode)
{
return adoptRef(*new SVGFilter(absoluteTransform, absoluteSourceDrawingRegion, targetBoundingBox, filterRegion, effectBBoxMode));
}
}