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

Side by Side Diff: Source/core/paint/FilterPainter.cpp

Issue 713823005: Factor painting code for filters out of FilterEffectRenderer into FilterPainter. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "config.h"
6 #include "core/paint/FilterPainter.h"
7
8 #include "core/rendering/FilterEffectRenderer.h"
9 #include "core/rendering/RenderLayer.h"
10 #include "platform/graphics/GraphicsContext.h"
11 #include "platform/graphics/filters/FilterEffect.h"
12 #include "platform/graphics/filters/SkiaImageFilterBuilder.h"
13
14 namespace blink {
15
16 bool FilterPainter::beginFilterEffect(GraphicsContext* context, const FloatRect& filterBoxRect)
17 {
18 SkiaImageFilterBuilder builder(context);
19 RefPtr<FilterEffect> lastEffect = m_renderLayer.filterRenderer()->lastEffect ();
20 lastEffect->determineFilterPrimitiveSubregion(MapRectForward);
21 RefPtr<ImageFilter> imageFilter = builder.build(lastEffect.get(), ColorSpace DeviceRGB);
22 if (!imageFilter)
23 return false;
24 context->save();
25 FloatRect boundaries = mapImageFilterRect(imageFilter.get(), filterBoxRect);
26 context->translate(filterBoxRect.x(), filterBoxRect.y());
27 boundaries.move(-filterBoxRect.x(), -filterBoxRect.y());
28 context->beginLayer(1, CompositeSourceOver, &boundaries, ColorFilterNone, im ageFilter.get());
29 context->translate(-filterBoxRect.x(), -filterBoxRect.y());
30 return true;
31 }
32
33 void FilterPainter::endFilterEffect(GraphicsContext* context)
34 {
35 context->endLayer();
36 context->restore();
37 }
38
39 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698