| Index: Source/platform/graphics/filters/Filter.h
|
| diff --git a/Source/platform/graphics/filters/Filter.h b/Source/platform/graphics/filters/Filter.h
|
| index ea7b533de3e170c7322ac598aa2309f97933544e..4f8bde8adb84e04656384f18f239ee995dd5fc75 100644
|
| --- a/Source/platform/graphics/filters/Filter.h
|
| +++ b/Source/platform/graphics/filters/Filter.h
|
| @@ -30,39 +30,16 @@ namespace blink {
|
|
|
| class PLATFORM_EXPORT Filter : public RefCounted<Filter> {
|
| public:
|
| - Filter(const AffineTransform& absoluteTransform)
|
| - : m_absoluteTransform(absoluteTransform)
|
| - , m_inverseTransform(absoluteTransform.inverse())
|
| - {
|
| - // Filters can only accept scaling and translating transformations, as coordinates
|
| - // in most primitives are given in horizontal and vertical directions.
|
| - ASSERT(!absoluteTransform.b() && !absoluteTransform.c());
|
| - }
|
| + Filter(float scale)
|
| + : m_scale(scale) { }
|
| virtual ~Filter() { }
|
|
|
| - const AffineTransform& absoluteTransform() const { return m_absoluteTransform; }
|
| -
|
| - void setAbsoluteTransform(const AffineTransform& absoluteTransform)
|
| - {
|
| - // Filters can only accept scaling and translating transformations, as coordinates
|
| - // in most primitives are given in horizontal and vertical directions.
|
| - ASSERT(!absoluteTransform.b() && !absoluteTransform.c());
|
| - m_absoluteTransform = absoluteTransform;
|
| - m_inverseTransform = absoluteTransform.inverse();
|
| - m_absoluteFilterRegion = m_absoluteTransform.mapRect(m_filterRegion);
|
| - }
|
| - FloatPoint mapAbsolutePointToLocalPoint(const FloatPoint& point) const { return m_inverseTransform.mapPoint(point); }
|
| - FloatRect mapLocalRectToAbsoluteRect(const FloatRect& rect) const { return m_absoluteTransform.mapRect(rect); }
|
| - FloatRect mapAbsoluteRectToLocalRect(const FloatRect& rect) const { return m_inverseTransform.mapRect(rect); }
|
| + float scale() const { return m_scale; }
|
| + FloatRect mapLocalRectToAbsoluteRect(const FloatRect& rect) const { FloatRect result(rect); result.scale(m_scale); return result; }
|
| + FloatRect mapAbsoluteRectToLocalRect(const FloatRect& rect) const { FloatRect result(rect); result.scale(1.0f / m_scale); return result; }
|
| + virtual float applyHorizontalScale(float value) const { return m_scale * value; }
|
| + virtual float applyVerticalScale(float value) const { return m_scale * value; }
|
|
|
| - virtual float applyHorizontalScale(float value) const
|
| - {
|
| - return value * m_absoluteTransform.a();
|
| - }
|
| - virtual float applyVerticalScale(float value) const
|
| - {
|
| - return value * m_absoluteTransform.d();
|
| - }
|
| virtual FloatPoint3D resolve3dPoint(const FloatPoint3D& point) const { return point; }
|
|
|
| virtual IntRect sourceImageRect() const = 0;
|
| @@ -73,12 +50,12 @@ public:
|
| void setFilterRegion(const FloatRect& rect)
|
| {
|
| m_filterRegion = rect;
|
| - m_absoluteFilterRegion = m_absoluteTransform.mapRect(m_filterRegion);
|
| + m_absoluteFilterRegion = rect;
|
| + m_absoluteFilterRegion.scale(m_scale);
|
| }
|
|
|
| private:
|
| - AffineTransform m_absoluteTransform;
|
| - AffineTransform m_inverseTransform;
|
| + float m_scale;
|
| FloatRect m_absoluteFilterRegion;
|
| FloatRect m_filterRegion;
|
| };
|
|
|