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

Side by Side Diff: Source/core/paint/DeprecatedPaintLayerClipper.h

Issue 1312203004: Revert of Add documentation to 2 DeprecatedPaintLayer objects (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 3 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2003, 2009, 2012 Apple Inc. All rights reserved.
3 * Copyright (C) 2013 Intel Corporation. All rights reserved. 3 * Copyright (C) 2013 Intel Corporation. All rights reserved.
4 * 4 *
5 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 5 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
6 * 6 *
7 * Other contributors: 7 * Other contributors:
8 * Robert O'Callahan <roc+@cs.cmu.edu> 8 * Robert O'Callahan <roc+@cs.cmu.edu>
9 * David Baron <dbaron@fas.harvard.edu> 9 * David Baron <dbaron@fas.harvard.edu>
10 * Christian Biesinger <cbiesinger@web.de> 10 * Christian Biesinger <cbiesinger@web.de>
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
120 120
121 private: 121 private:
122 friend class DeprecatedPaintLayerClipper; 122 friend class DeprecatedPaintLayerClipper;
123 123
124 ClipRectsCacheSlot m_cacheSlot; 124 ClipRectsCacheSlot m_cacheSlot;
125 LayoutSize subPixelAccumulation; 125 LayoutSize subPixelAccumulation;
126 ShouldRespectOverflowClip respectOverflowClip; 126 ShouldRespectOverflowClip respectOverflowClip;
127 ShouldRespectOverflowClip respectOverflowClipForViewport; 127 ShouldRespectOverflowClip respectOverflowClipForViewport;
128 }; 128 };
129 129
130 // DeprecatedPaintLayerClipper is responsible for computing and caching clip
131 // rects.
132 //
133 // The main reason for this cache is that we compute the clip rects during
134 // a layout tree walk but need them during a paint tree walk (see example
135 // below for some explanations).
136 //
137 // A lot of complexity in this class come from the difference in inheritance
138 // between 'overflow' and 'clip':
139 // * 'overflow' applies based on the containing blocks chain.
140 // (http://www.w3.org/TR/CSS2/visufx.html#propdef-overflow)
141 // * 'clip' applies to all descendants.
142 // (http://www.w3.org/TR/CSS2/visufx.html#propdef-clip)
143 //
144 // Let's take an example:
145 // <!DOCTYPE html>
146 // <div id="container" style="position: absolute; height: 100px; width: 100px">
147 // <div id="inflow" style="height: 200px; width: 200px;
148 // background-color: purple"></div>
149 // <div id="fixed" style="height: 200px; width: 200px; position: fixed;
150 // background-color: orange"></div>
151 // </div>
152 //
153 // The paint tree looks like:
154 // html
155 // / \
156 // / \
157 // / \
158 // container fixed
159 // |
160 // |
161 // inflow
162 //
163 // If we add "overflow: hidden" to #container, the overflow clip will apply to
164 // #inflow but not to #fixed. That's because #fixed's containing block is above
165 // #container and thus 'overflow' doesn't apply to it. During our tree walk,
166 // #fixed is a child of #container, which is the reason why we keep 3 clip rects
167 // depending on the 'position' of the elements.
168 //
169 // Now instead if we add "clip: rect(0px, 100px, 100px, 0px)" to #container,
170 // the clip will apply to both #inflow and #fixed. That's because 'clip'
171 // applies to any descendant, regardless of containing blocks. Note that
172 // #container and #fixed are siblings in the paint tree but #container does
173 // clip #fixed. This is the reason why we compute the painting clip rects during
174 // a layout tree walk and cache them for painting.
175 //
176 // This class is NOT DEPRECATED, DeprecatedPaintLayer is and we match its
177 // naming.
178 class DeprecatedPaintLayerClipper { 130 class DeprecatedPaintLayerClipper {
179 DISALLOW_ALLOCATION(); 131 DISALLOW_ALLOCATION();
180 WTF_MAKE_NONCOPYABLE(DeprecatedPaintLayerClipper); 132 WTF_MAKE_NONCOPYABLE(DeprecatedPaintLayerClipper);
181 public: 133 public:
182 explicit DeprecatedPaintLayerClipper(LayoutBoxModelObject&); 134 explicit DeprecatedPaintLayerClipper(LayoutBoxModelObject&);
183 135
184 void clearClipRectsIncludingDescendants(); 136 void clearClipRectsIncludingDescendants();
185 void clearClipRectsIncludingDescendants(ClipRectsCacheSlot); 137 void clearClipRectsIncludingDescendants(ClipRectsCacheSlot);
186 138
187 LayoutRect childrenClipRect() const; // Returns the foreground clip rect of the layer in the document's coordinate space. 139 LayoutRect childrenClipRect() const; // Returns the foreground clip rect of the layer in the document's coordinate space.
(...skipping 26 matching lines...) Expand all
214 bool shouldRespectOverflowClip(const ClipRectsContext&) const; 166 bool shouldRespectOverflowClip(const ClipRectsContext&) const;
215 167
216 // FIXME: Could this be a LayoutBox? 168 // FIXME: Could this be a LayoutBox?
217 LayoutBoxModelObject& m_layoutObject; 169 LayoutBoxModelObject& m_layoutObject;
218 mutable OwnPtr<ClipRect> m_clips[NumberOfClipRectsCacheSlots]; 170 mutable OwnPtr<ClipRect> m_clips[NumberOfClipRectsCacheSlots];
219 }; 171 };
220 172
221 } // namespace blink 173 } // namespace blink
222 174
223 #endif // LayerClipper_h 175 #endif // LayerClipper_h
OLDNEW
« no previous file with comments | « Source/core/paint/DeprecatedPaintLayer.h ('k') | Source/core/paint/DeprecatedPaintLayerStackingNode.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698