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

Side by Side Diff: sky/engine/core/rendering/RenderLayer.cpp

Issue 772473004: Get rid of PaintBehaviorSelectionOnly. (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 6 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
« no previous file with comments | « sky/engine/core/rendering/RenderLayer.h ('k') | sky/engine/core/rendering/RenderObject.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
3 * 3 *
4 * Portions are Copyright (C) 1998 Netscape Communications Corporation. 4 * Portions are Copyright (C) 1998 Netscape Communications Corporation.
5 * 5 *
6 * Other contributors: 6 * Other contributors:
7 * Robert O'Callahan <roc+@cs.cmu.edu> 7 * Robert O'Callahan <roc+@cs.cmu.edu>
8 * David Baron <dbaron@fas.harvard.edu> 8 * David Baron <dbaron@fas.harvard.edu>
9 * Christian Biesinger <cbiesinger@web.de> 9 * Christian Biesinger <cbiesinger@web.de>
10 * Randall Jesup <rjesup@wgate.com> 10 * Randall Jesup <rjesup@wgate.com>
(...skipping 1143 matching lines...) Expand 10 before | Expand all | Expand 10 after
1154 1154
1155 // If this layer's renderer is a child of the paintingRoot, we render uncond itionally, which 1155 // If this layer's renderer is a child of the paintingRoot, we render uncond itionally, which
1156 // is done by passing a nil paintingRoot down to our renderer (as if no pain tingRoot was ever set). 1156 // is done by passing a nil paintingRoot down to our renderer (as if no pain tingRoot was ever set).
1157 // Else, our renderer tree may or may not contain the painting root, so we p ass that root along 1157 // Else, our renderer tree may or may not contain the painting root, so we p ass that root along
1158 // so it will be tested against as we descend through the renderers. 1158 // so it will be tested against as we descend through the renderers.
1159 RenderObject* paintingRootForRenderer = 0; 1159 RenderObject* paintingRootForRenderer = 0;
1160 if (localPaintingInfo.paintingRoot && !renderer()->isDescendantOf(localPaint ingInfo.paintingRoot)) 1160 if (localPaintingInfo.paintingRoot && !renderer()->isDescendantOf(localPaint ingInfo.paintingRoot))
1161 paintingRootForRenderer = localPaintingInfo.paintingRoot; 1161 paintingRootForRenderer = localPaintingInfo.paintingRoot;
1162 1162
1163 ASSERT(!(localPaintingInfo.paintBehavior & PaintBehaviorForceBlackText)); 1163 ASSERT(!(localPaintingInfo.paintBehavior & PaintBehaviorForceBlackText));
1164 bool selectionOnly = localPaintingInfo.paintBehavior & PaintBehaviorSelecti onOnly;
1165 1164
1166 bool shouldPaintBackground = isPaintingCompositedBackground && shouldPaintCo ntent && !selectionOnly; 1165 bool shouldPaintBackground = isPaintingCompositedBackground && shouldPaintCo ntent;
1167 bool shouldPaintNegZOrderList = (isPaintingScrollingContent && isPaintingOve rflowContents) || (!isPaintingScrollingContent && isPaintingCompositedBackground ); 1166 bool shouldPaintNegZOrderList = (isPaintingScrollingContent && isPaintingOve rflowContents) || (!isPaintingScrollingContent && isPaintingCompositedBackground );
1168 bool shouldPaintOwnContents = isPaintingCompositedForeground && shouldPaintC ontent; 1167 bool shouldPaintOwnContents = isPaintingCompositedForeground && shouldPaintC ontent;
1169 bool shouldPaintNormalFlowAndPosZOrderLists = isPaintingCompositedForeground ; 1168 bool shouldPaintNormalFlowAndPosZOrderLists = isPaintingCompositedForeground ;
1170 bool shouldPaintOverlayScrollbars = isPaintingOverlayScrollbars; 1169 bool shouldPaintOverlayScrollbars = isPaintingOverlayScrollbars;
1171 bool shouldPaintMask = (paintFlags & PaintLayerPaintingCompositingMaskPhase) && shouldPaintContent && renderer()->hasMask() && !selectionOnly; 1170 bool shouldPaintMask = (paintFlags & PaintLayerPaintingCompositingMaskPhase) && shouldPaintContent && renderer()->hasMask();
1172 bool shouldPaintClippingMask = (paintFlags & PaintLayerPaintingChildClipping MaskPhase) && shouldPaintContent && !selectionOnly; 1171 bool shouldPaintClippingMask = (paintFlags & PaintLayerPaintingChildClipping MaskPhase) && shouldPaintContent;
1173 1172
1174 PaintBehavior paintBehavior = PaintBehaviorNormal; 1173 PaintBehavior paintBehavior = PaintBehaviorNormal;
1175 if (paintFlags & PaintLayerPaintingSkipRootBackground) 1174 if (paintFlags & PaintLayerPaintingSkipRootBackground)
1176 paintBehavior |= PaintBehaviorSkipRootBackground; 1175 paintBehavior |= PaintBehaviorSkipRootBackground;
1177 else if (paintFlags & PaintLayerPaintingRootBackgroundOnly) 1176 else if (paintFlags & PaintLayerPaintingRootBackgroundOnly)
1178 paintBehavior |= PaintBehaviorRootBackgroundOnly; 1177 paintBehavior |= PaintBehaviorRootBackgroundOnly;
1179 1178
1180 if (shouldPaintBackground) { 1179 if (shouldPaintBackground) {
1181 paintBackgroundForFragments(layerFragments, context, transparencyLayerCo ntext, paintingInfo.paintDirtyRect, haveTransparency, 1180 paintBackgroundForFragments(layerFragments, context, transparencyLayerCo ntext, paintingInfo.paintDirtyRect, haveTransparency,
1182 localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlag s); 1181 localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlag s);
1183 } 1182 }
1184 1183
1185 if (shouldPaintNegZOrderList) 1184 if (shouldPaintNegZOrderList)
1186 paintChildren(NegativeZOrderChildren, context, paintingInfo, paintFlags) ; 1185 paintChildren(NegativeZOrderChildren, context, paintingInfo, paintFlags) ;
1187 1186
1188 if (shouldPaintOwnContents) { 1187 if (shouldPaintOwnContents) {
1189 paintForegroundForFragments(layerFragments, context, transparencyLayerCo ntext, paintingInfo.paintDirtyRect, haveTransparency, 1188 paintForegroundForFragments(layerFragments, context, transparencyLayerCo ntext, paintingInfo.paintDirtyRect, haveTransparency,
1190 localPaintingInfo, paintBehavior, paintingRootForRenderer, selection Only, paintFlags); 1189 localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlag s);
1191 } 1190 }
1192 1191
1193 if (shouldPaintOutline) 1192 if (shouldPaintOutline)
1194 paintOutlineForFragments(layerFragments, context, localPaintingInfo, pai ntBehavior, paintingRootForRenderer, paintFlags); 1193 paintOutlineForFragments(layerFragments, context, localPaintingInfo, pai ntBehavior, paintingRootForRenderer, paintFlags);
1195 1194
1196 if (shouldPaintNormalFlowAndPosZOrderLists) 1195 if (shouldPaintNormalFlowAndPosZOrderLists)
1197 paintChildren(NormalFlowChildren | PositiveZOrderChildren, context, pain tingInfo, paintFlags); 1196 paintChildren(NormalFlowChildren | PositiveZOrderChildren, context, pain tingInfo, paintFlags);
1198 1197
1199 if (shouldPaintOverlayScrollbars) 1198 if (shouldPaintOverlayScrollbars)
1200 paintOverflowControlsForFragments(layerFragments, context, localPainting Info, paintFlags); 1199 paintOverflowControlsForFragments(layerFragments, context, localPainting Info, paintFlags);
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1320 PaintInfo paintInfo(context, pixelSnappedIntRect(fragment.backgroundRect .rect()), PaintPhaseBlockBackground, paintBehavior, paintingRootForRenderer, 0, localPaintingInfo.rootLayer->renderer()); 1319 PaintInfo paintInfo(context, pixelSnappedIntRect(fragment.backgroundRect .rect()), PaintPhaseBlockBackground, paintBehavior, paintingRootForRenderer, 0, localPaintingInfo.rootLayer->renderer());
1321 renderer()->paint(paintInfo, toPoint(fragment.layerBounds.location() - r enderBoxLocation() + localPaintingInfo.subPixelAccumulation)); 1320 renderer()->paint(paintInfo, toPoint(fragment.layerBounds.location() - r enderBoxLocation() + localPaintingInfo.subPixelAccumulation));
1322 1321
1323 if (localPaintingInfo.clipToDirtyRect) 1322 if (localPaintingInfo.clipToDirtyRect)
1324 restoreClip(context, localPaintingInfo.paintDirtyRect, fragment.back groundRect); 1323 restoreClip(context, localPaintingInfo.paintDirtyRect, fragment.back groundRect);
1325 } 1324 }
1326 } 1325 }
1327 1326
1328 void RenderLayer::paintForegroundForFragments(const LayerFragments& layerFragmen ts, GraphicsContext* context, GraphicsContext* transparencyLayerContext, 1327 void RenderLayer::paintForegroundForFragments(const LayerFragments& layerFragmen ts, GraphicsContext* context, GraphicsContext* transparencyLayerContext,
1329 const LayoutRect& transparencyPaintDirtyRect, bool haveTransparency, const L ayerPaintingInfo& localPaintingInfo, PaintBehavior paintBehavior, 1328 const LayoutRect& transparencyPaintDirtyRect, bool haveTransparency, const L ayerPaintingInfo& localPaintingInfo, PaintBehavior paintBehavior,
1330 RenderObject* paintingRootForRenderer, bool selectionOnly, PaintLayerFlags p aintFlags) 1329 RenderObject* paintingRootForRenderer, PaintLayerFlags paintFlags)
1331 { 1330 {
1332 // Begin transparency if we have something to paint. 1331 // Begin transparency if we have something to paint.
1333 if (haveTransparency) { 1332 if (haveTransparency) {
1334 for (size_t i = 0; i < layerFragments.size(); ++i) { 1333 for (size_t i = 0; i < layerFragments.size(); ++i) {
1335 const LayerFragment& fragment = layerFragments.at(i); 1334 const LayerFragment& fragment = layerFragments.at(i);
1336 if (fragment.shouldPaintContent && !fragment.foregroundRect.isEmpty( )) { 1335 if (fragment.shouldPaintContent && !fragment.foregroundRect.isEmpty( )) {
1337 beginTransparencyLayers(transparencyLayerContext, localPaintingI nfo.rootLayer, transparencyPaintDirtyRect, localPaintingInfo.subPixelAccumulatio n, localPaintingInfo.paintBehavior); 1336 beginTransparencyLayers(transparencyLayerContext, localPaintingI nfo.rootLayer, transparencyPaintDirtyRect, localPaintingInfo.subPixelAccumulatio n, localPaintingInfo.paintBehavior);
1338 break; 1337 break;
1339 } 1338 }
1340 } 1339 }
1341 } 1340 }
1342 1341
1343 // Optimize clipping for the single fragment case. 1342 // Optimize clipping for the single fragment case.
1344 bool shouldClip = localPaintingInfo.clipToDirtyRect && layerFragments.size() == 1 && layerFragments[0].shouldPaintContent && !layerFragments[0].foregroundRe ct.isEmpty(); 1343 bool shouldClip = localPaintingInfo.clipToDirtyRect && layerFragments.size() == 1 && layerFragments[0].shouldPaintContent && !layerFragments[0].foregroundRe ct.isEmpty();
1345 if (shouldClip) 1344 if (shouldClip)
1346 clipToRect(localPaintingInfo, context, layerFragments[0].foregroundRect, paintFlags); 1345 clipToRect(localPaintingInfo, context, layerFragments[0].foregroundRect, paintFlags);
1347 1346
1348 // We have to loop through every fragment multiple times, since we have to i ssue paint invalidations in each specific phase in order for 1347 // We have to loop through every fragment multiple times, since we have to i ssue paint invalidations in each specific phase in order for
1349 // interleaving of the fragments to work properly. 1348 // interleaving of the fragments to work properly.
1350 paintForegroundForFragmentsWithPhase(selectionOnly ? PaintPhaseSelection : P aintPhaseChildBlockBackgrounds, layerFragments, 1349 paintForegroundForFragmentsWithPhase(PaintPhaseChildBlockBackgrounds, layerF ragments,
1351 context, localPaintingInfo, paintBehavior, paintingRootForRenderer, pain tFlags); 1350 context, localPaintingInfo, paintBehavior, paintingRootForRenderer, pain tFlags);
1352 1351 paintForegroundForFragmentsWithPhase(PaintPhaseForeground, layerFragments, c ontext, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlags);
1353 if (!selectionOnly) { 1352 paintForegroundForFragmentsWithPhase(PaintPhaseChildOutlines, layerFragments , context, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlags );
1354 paintForegroundForFragmentsWithPhase(PaintPhaseForeground, layerFragment s, context, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintFlag s);
1355 paintForegroundForFragmentsWithPhase(PaintPhaseChildOutlines, layerFragm ents, context, localPaintingInfo, paintBehavior, paintingRootForRenderer, paintF lags);
1356 }
1357 1353
1358 if (shouldClip) 1354 if (shouldClip)
1359 restoreClip(context, localPaintingInfo.paintDirtyRect, layerFragments[0] .foregroundRect); 1355 restoreClip(context, localPaintingInfo.paintDirtyRect, layerFragments[0] .foregroundRect);
1360 } 1356 }
1361 1357
1362 void RenderLayer::paintForegroundForFragmentsWithPhase(PaintPhase phase, const L ayerFragments& layerFragments, GraphicsContext* context, 1358 void RenderLayer::paintForegroundForFragmentsWithPhase(PaintPhase phase, const L ayerFragments& layerFragments, GraphicsContext* context,
1363 const LayerPaintingInfo& localPaintingInfo, PaintBehavior paintBehavior, Ren derObject* paintingRootForRenderer, PaintLayerFlags paintFlags) 1359 const LayerPaintingInfo& localPaintingInfo, PaintBehavior paintBehavior, Ren derObject* paintingRootForRenderer, PaintLayerFlags paintFlags)
1364 { 1360 {
1365 bool shouldClip = localPaintingInfo.clipToDirtyRect && layerFragments.size() > 1; 1361 bool shouldClip = localPaintingInfo.clipToDirtyRect && layerFragments.size() > 1;
1366 1362
(...skipping 883 matching lines...) Expand 10 before | Expand all | Expand 10 after
2250 } 2246 }
2251 } 2247 }
2252 2248
2253 void showLayerTree(const blink::RenderObject* renderer) 2249 void showLayerTree(const blink::RenderObject* renderer)
2254 { 2250 {
2255 if (!renderer) 2251 if (!renderer)
2256 return; 2252 return;
2257 showLayerTree(renderer->enclosingLayer()); 2253 showLayerTree(renderer->enclosingLayer());
2258 } 2254 }
2259 #endif 2255 #endif
OLDNEW
« no previous file with comments | « sky/engine/core/rendering/RenderLayer.h ('k') | sky/engine/core/rendering/RenderObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698