Index: Source/platform/graphics/filters/Filter.h |
diff --git a/Source/platform/graphics/filters/Filter.h b/Source/platform/graphics/filters/Filter.h |
index bc6ded50da1361324e5edcf150d2cc9cfe5228e7..cd03654e318dbe4666275f4ad8e23f833b152517 100644 |
--- a/Source/platform/graphics/filters/Filter.h |
+++ b/Source/platform/graphics/filters/Filter.h |
@@ -30,38 +30,55 @@ |
namespace blink { |
+class SourceGraphic; |
+class FilterEffect; |
+ |
class PLATFORM_EXPORT Filter : public RefCountedWillBeGarbageCollectedFinalized<Filter> { |
public: |
- virtual ~Filter() { } |
- DEFINE_INLINE_VIRTUAL_TRACE() { } |
+ static PassRefPtrWillBeRawPtr<Filter> create(const FloatRect& referenceBox, const FloatRect& filterRegion, float scale) |
+ { |
+ return adoptRefWillBeNoop(new Filter(referenceBox, filterRegion, scale)); |
+ } |
+ |
+ static PassRefPtrWillBeRawPtr<Filter> create(float scale) |
+ { |
+ return adoptRefWillBeNoop(new Filter(FloatRect(), FloatRect(), scale)); |
+ } |
+ |
+ virtual ~Filter(); |
+ DECLARE_VIRTUAL_TRACE(); |
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; } |
+ FloatRect mapLocalRectToAbsoluteRect(const FloatRect&) const; |
+ FloatRect mapAbsoluteRectToLocalRect(const FloatRect&) const; |
+ |
virtual float applyHorizontalScale(float value) const { return m_scale * value; } |
virtual float applyVerticalScale(float value) const { return m_scale * value; } |
virtual FloatPoint3D resolve3dPoint(const FloatPoint3D& point) const { return point; } |
- virtual IntRect sourceImageRect() const = 0; |
+ virtual IntRect sourceImageRect() const { return IntRect(); } |
- FloatRect absoluteFilterRegion() const { FloatRect result = m_filterRegion; result.scale(m_scale); return result; } |
+ FloatRect absoluteFilterRegion() const { return mapLocalRectToAbsoluteRect(m_filterRegion); } |
const FloatRect& filterRegion() const { return m_filterRegion; } |
- const FloatRect& targetBoundingBox() const { return m_targetBoundingBox; } |
+ const FloatRect& referenceBox() const { return m_referenceBox; } |
+ |
+ void setLastEffect(PassRefPtrWillBeRawPtr<FilterEffect>); |
+ FilterEffect* lastEffect() const { return m_lastEffect.get(); } |
+ |
+ SourceGraphic* sourceGraphic() const { return m_sourceGraphic.get(); } |
protected: |
- Filter(const FloatRect& targetBoundingBox, const FloatRect& filterRegion, float scale) |
- : m_targetBoundingBox(targetBoundingBox) |
- , m_filterRegion(filterRegion) |
- , m_scale(scale) |
- { |
- } |
+ Filter(const FloatRect& referenceBox, const FloatRect& filterRegion, float scale); |
private: |
- FloatRect m_targetBoundingBox; |
+ FloatRect m_referenceBox; |
FloatRect m_filterRegion; |
float m_scale; |
+ |
+ RefPtrWillBeMember<SourceGraphic> m_sourceGraphic; |
+ RefPtrWillBeMember<FilterEffect> m_lastEffect; |
}; |
} // namespace blink |