Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(976)

Unified Diff: Source/core/rendering/FilterEffectRenderer.h

Issue 14652016: Implement filter primitive subregion for reference CSS filters. This required refactoring determin… (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix test failures: ReferenceFilterOperation should ref the Filter which owns its FilterEffects Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/core/rendering/FilterEffectRenderer.h
diff --git a/Source/core/rendering/FilterEffectRenderer.h b/Source/core/rendering/FilterEffectRenderer.h
index 89bfdee33a5f5f46ed9e583dc9e2c41d0dae79a4..eb80830804a25c222a7f03e4b1337b01af3c5f72 100644
--- a/Source/core/rendering/FilterEffectRenderer.h
+++ b/Source/core/rendering/FilterEffectRenderer.h
@@ -71,7 +71,7 @@ public:
private:
GraphicsContext* m_savedGraphicsContext;
RenderLayer* m_renderLayer;
- LayoutPoint m_paintOffset;
+
LayoutRect m_repaintRect;
bool m_haveFilterEffect;
};
@@ -85,18 +85,13 @@ public:
return adoptRef(new FilterEffectRenderer());
}
- virtual void setSourceImageRect(const FloatRect& sourceImageRect)
+ void setSourceImageRect(const FloatRect& sourceImageRect)
{
m_sourceDrawingRegion = sourceImageRect;
- setMaxEffectRects(sourceImageRect);
- setFilterRegion(sourceImageRect);
m_graphicsBufferAttached = false;
}
virtual FloatRect sourceImageRect() const { return m_sourceDrawingRegion; }
- virtual void setFilterRegion(const FloatRect& filterRegion) { m_filterRegion = filterRegion; }
- virtual FloatRect filterRegion() const { return m_filterRegion; }
-
GraphicsContext* inputContext();
ImageBuffer* output() const { return lastEffect()->asImageBuffer(); }
@@ -107,32 +102,24 @@ public:
void clearIntermediateResults();
void apply();
- IntRect outputRect() const { return lastEffect()->hasResult() ? lastEffect()->requestedRegionOfInputImageData(IntRect(m_filterRegion)) : IntRect(); }
+ IntRect outputRect() const { return lastEffect()->hasResult() ? lastEffect()->absolutePaintRect() : IntRect(); }
bool hasFilterThatMovesPixels() const { return m_hasFilterThatMovesPixels; }
LayoutRect computeSourceImageRectForDirtyRect(const LayoutRect& filterBoxRect, const LayoutRect& dirtyRect);
bool hasCustomShaderFilter() const { return m_hasCustomShaderFilter; }
-private:
- void setMaxEffectRects(const FloatRect& effectRect)
- {
- for (size_t i = 0; i < m_effects.size(); ++i) {
- RefPtr<FilterEffect> effect = m_effects.at(i);
- effect->setMaxEffectRect(effectRect);
- }
- }
PassRefPtr<FilterEffect> lastEffect() const
{
if (m_effects.size() > 0)
return m_effects.last();
return 0;
}
+private:
FilterEffectRenderer();
virtual ~FilterEffectRenderer();
FloatRect m_sourceDrawingRegion;
- FloatRect m_filterRegion;
FilterEffectList m_effects;
RefPtr<SourceGraphic> m_sourceGraphic;
« no previous file with comments | « Source/core/platform/graphics/filters/FilterOperations.cpp ('k') | Source/core/rendering/FilterEffectRenderer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698