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

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

Issue 14852010: Revert 150342 "Implement filter primitive subregion for referenc..." (Closed) Base URL: svn://svn.chromium.org/blink/
Patch Set: 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: trunk/Source/core/rendering/FilterEffectRenderer.h
===================================================================
--- trunk/Source/core/rendering/FilterEffectRenderer.h (revision 150368)
+++ trunk/Source/core/rendering/FilterEffectRenderer.h (working copy)
@@ -71,7 +71,7 @@
private:
GraphicsContext* m_savedGraphicsContext;
RenderLayer* m_renderLayer;
-
+ LayoutPoint m_paintOffset;
LayoutRect m_repaintRect;
bool m_haveFilterEffect;
};
@@ -85,13 +85,18 @@
return adoptRef(new FilterEffectRenderer());
}
- void setSourceImageRect(const FloatRect& sourceImageRect)
+ virtual 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(); }
@@ -102,24 +107,32 @@
void clearIntermediateResults();
void apply();
- IntRect outputRect() const { return lastEffect()->hasResult() ? lastEffect()->absolutePaintRect() : IntRect(); }
+ IntRect outputRect() const { return lastEffect()->hasResult() ? lastEffect()->requestedRegionOfInputImageData(IntRect(m_filterRegion)) : 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 | « trunk/Source/core/platform/graphics/filters/FilterOperations.cpp ('k') | trunk/Source/core/rendering/FilterEffectRenderer.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698