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

Side by Side Diff: third_party/WebKit/Source/core/paint/PaintLayerPainter.h

Issue 2581243002: Simplify and speed up painting of clipping masks (Closed)
Patch Set: Fix cases with no clip recorder Created 4 years 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef PaintLayerPainter_h 5 #ifndef PaintLayerPainter_h
6 #define PaintLayerPainter_h 6 #define PaintLayerPainter_h
7 7
8 #include "core/CoreExport.h" 8 #include "core/CoreExport.h"
9 #include "core/paint/PaintLayerFragment.h" 9 #include "core/paint/PaintLayerFragment.h"
10 #include "core/paint/PaintLayerPaintingInfo.h" 10 #include "core/paint/PaintLayerPaintingInfo.h"
11 #include "core/paint/PaintResult.h" 11 #include "core/paint/PaintResult.h"
12 #include "wtf/Allocator.h" 12 #include "wtf/Allocator.h"
13 13
14 namespace blink { 14 namespace blink {
15 15
16 class ClipRect; 16 class ClipRect;
17 class PaintLayer; 17 class PaintLayer;
18 class GraphicsContext; 18 class GraphicsContext;
19 class LayerClipRecorder;
19 class LayoutPoint; 20 class LayoutPoint;
20 21
21 // This class is responsible for painting self-painting PaintLayer. 22 // This class is responsible for painting self-painting PaintLayer.
22 // 23 //
23 // See PainterLayer SELF-PAINTING LAYER section about what 'self-painting' 24 // See PainterLayer SELF-PAINTING LAYER section about what 'self-painting'
24 // means and how it impacts this class. 25 // means and how it impacts this class.
25 class CORE_EXPORT PaintLayerPainter { 26 class CORE_EXPORT PaintLayerPainter {
26 STACK_ALLOCATED(); 27 STACK_ALLOCATED();
27 28
28 public: 29 public:
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
113 PaintLayerFlags); 114 PaintLayerFlags);
114 void paintMaskForFragments(const PaintLayerFragments&, 115 void paintMaskForFragments(const PaintLayerFragments&,
115 GraphicsContext&, 116 GraphicsContext&,
116 const PaintLayerPaintingInfo&, 117 const PaintLayerPaintingInfo&,
117 PaintLayerFlags); 118 PaintLayerFlags);
118 void paintChildClippingMaskForFragments(const PaintLayerFragments&, 119 void paintChildClippingMaskForFragments(const PaintLayerFragments&,
119 GraphicsContext&, 120 GraphicsContext&,
120 const PaintLayerPaintingInfo&, 121 const PaintLayerPaintingInfo&,
121 PaintLayerFlags); 122 PaintLayerFlags);
122 123
124 void fillMaskingFragment(GraphicsContext&, const LayerClipRecorder&);
125
123 static bool needsToClip(const PaintLayerPaintingInfo& localPaintingInfo, 126 static bool needsToClip(const PaintLayerPaintingInfo& localPaintingInfo,
124 const ClipRect&); 127 const ClipRect&);
125 128
126 // Returns whether this layer should be painted during sofware painting (i.e., 129 // Returns whether this layer should be painted during sofware painting (i.e.,
127 // not via calls from CompositedLayerMapping to draw into composited layers). 130 // not via calls from CompositedLayerMapping to draw into composited layers).
128 bool shouldPaintLayerInSoftwareMode(const GlobalPaintFlags, 131 bool shouldPaintLayerInSoftwareMode(const GlobalPaintFlags,
129 PaintLayerFlags paintFlags); 132 PaintLayerFlags paintFlags);
130 133
131 // Returns true if the painted output of this PaintLayer and its children is 134 // Returns true if the painted output of this PaintLayer and its children is
132 // invisible and therefore can't impact painted output. 135 // invisible and therefore can't impact painted output.
133 bool paintedOutputInvisible(const PaintLayerPaintingInfo&); 136 bool paintedOutputInvisible(const PaintLayerPaintingInfo&);
134 137
135 PaintLayer& m_paintLayer; 138 PaintLayer& m_paintLayer;
136 139
137 FRIEND_TEST_ALL_PREFIXES(PaintLayerPainterTest, DontPaintWithTinyOpacity); 140 FRIEND_TEST_ALL_PREFIXES(PaintLayerPainterTest, DontPaintWithTinyOpacity);
138 FRIEND_TEST_ALL_PREFIXES(PaintLayerPainterTest, 141 FRIEND_TEST_ALL_PREFIXES(PaintLayerPainterTest,
139 DontPaintWithTinyOpacityAndBackdropFilter); 142 DontPaintWithTinyOpacityAndBackdropFilter);
140 FRIEND_TEST_ALL_PREFIXES(PaintLayerPainterTest, 143 FRIEND_TEST_ALL_PREFIXES(PaintLayerPainterTest,
141 DoPaintWithCompositedTinyOpacity); 144 DoPaintWithCompositedTinyOpacity);
142 FRIEND_TEST_ALL_PREFIXES(PaintLayerPainterTest, DoPaintWithNonTinyOpacity); 145 FRIEND_TEST_ALL_PREFIXES(PaintLayerPainterTest, DoPaintWithNonTinyOpacity);
143 }; 146 };
144 147
145 } // namespace blink 148 } // namespace blink
146 149
147 #endif // PaintLayerPainter_h 150 #endif // PaintLayerPainter_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/paint/LayerClipRecorder.cpp ('k') | third_party/WebKit/Source/core/paint/PaintLayerPainter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698