Chromium Code Reviews| 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..024858fd43ed388c6701cb7440cc21af24a2bac5 100644 |
| --- a/Source/platform/graphics/filters/Filter.h |
| +++ b/Source/platform/graphics/filters/Filter.h |
| @@ -30,38 +30,64 @@ |
| 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& rect) const |
|
Stephen White
2015/09/14 18:49:34
Nit: maybe we should just de-inline these function
fs
2015/09/15 10:42:56
Done.
|
| + { |
| + 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 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; |
|
Stephen White
2015/09/14 18:49:34
Could you rationalize the namechange here? Is it b
fs
2015/09/15 10:42:56
I think the origin of the term might be: https://d
Stephen White
2015/09/15 14:25:35
OK, that makes sense. Thanks for the pointer.
|
| FloatRect m_filterRegion; |
| float m_scale; |
| + |
| + RefPtrWillBeMember<SourceGraphic> m_sourceGraphic; |
| + RefPtrWillBeMember<FilterEffect> m_lastEffect; |
| }; |
| } // namespace blink |