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

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

Issue 654713003: Fix slimming paint clipping and add a debug fill color (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 2 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
« no previous file with comments | « no previous file | Source/core/paint/LineBoxListPainter.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 // 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 #include "config.h" 5 #include "config.h"
6 #include "core/paint/BlockPainter.h" 6 #include "core/paint/BlockPainter.h"
7 7
8 #include "core/editing/Caret.h" 8 #include "core/editing/Caret.h"
9 #include "core/editing/FrameSelection.h" 9 #include "core/editing/FrameSelection.h"
10 #include "core/frame/LocalFrame.h" 10 #include "core/frame/LocalFrame.h"
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
65 m_renderBlock.paintObject(paintInfo, adjustedPaintOffset); 65 m_renderBlock.paintObject(paintInfo, adjustedPaintOffset);
66 } 66 }
67 // FIXME: move popContentsClip out of RenderBox. 67 // FIXME: move popContentsClip out of RenderBox.
68 if (pushedClip) 68 if (pushedClip)
69 m_renderBlock.popContentsClip(paintInfo, phase, adjustedPaintOffset); 69 m_renderBlock.popContentsClip(paintInfo, phase, adjustedPaintOffset);
70 70
71 // Our scrollbar widgets paint exactly when we tell them to, so that they wo rk properly with 71 // Our scrollbar widgets paint exactly when we tell them to, so that they wo rk properly with
72 // z-index. We paint after we painted the background/border, so that the scr ollbars will 72 // z-index. We paint after we painted the background/border, so that the scr ollbars will
73 // sit above the background/border. 73 // sit above the background/border.
74 if (m_renderBlock.hasOverflowClip() && m_renderBlock.style()->visibility() = = VISIBLE && (phase == PaintPhaseBlockBackground || phase == PaintPhaseChildBloc kBackground) && paintInfo.shouldPaintWithinRoot(&m_renderBlock) && !paintInfo.pa intRootBackgroundOnly()) { 74 if (m_renderBlock.hasOverflowClip() && m_renderBlock.style()->visibility() = = VISIBLE && (phase == PaintPhaseBlockBackground || phase == PaintPhaseChildBloc kBackground) && paintInfo.shouldPaintWithinRoot(&m_renderBlock) && !paintInfo.pa intRootBackgroundOnly()) {
75 PaintCommandRecorder recorder(paintInfo.context, &m_renderBlock, paintIn fo.phase, m_renderBlock.visualOverflowRect()); 75 PaintCommandRecorder recorder(paintInfo.context, &m_renderBlock, paintIn fo.phase, pixelSnappedIntRect(adjustedPaintOffset, m_renderBlock.visualOverflowR ect().size()));
76 m_renderBlock.layer()->scrollableArea()->paintOverflowControls(paintInfo .context, roundedIntPoint(adjustedPaintOffset), paintInfo.rect, false /* paintin gOverlayControls */); 76 m_renderBlock.layer()->scrollableArea()->paintOverflowControls(paintInfo .context, roundedIntPoint(adjustedPaintOffset), paintInfo.rect, false /* paintin gOverlayControls */);
77 } 77 }
78 } 78 }
79 79
80 void BlockPainter::paintChildren(PaintInfo& paintInfo, const LayoutPoint& paintO ffset) 80 void BlockPainter::paintChildren(PaintInfo& paintInfo, const LayoutPoint& paintO ffset)
81 { 81 {
82 for (RenderBox* child = m_renderBlock.firstChildBox(); child; child = child- >nextSiblingBox()) 82 for (RenderBox* child = m_renderBlock.firstChildBox(); child; child = child- >nextSiblingBox())
83 paintChild(child, paintInfo, paintOffset); 83 paintChild(child, paintInfo, paintOffset);
84 } 84 }
85 85
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 renderer->paint(info, childPoint); 137 renderer->paint(info, childPoint);
138 info.phase = PaintPhaseOutline; 138 info.phase = PaintPhaseOutline;
139 renderer->paint(info, childPoint); 139 renderer->paint(info, childPoint);
140 } 140 }
141 } 141 }
142 142
143 void BlockPainter::paintObject(PaintInfo& paintInfo, const LayoutPoint& paintOff set) 143 void BlockPainter::paintObject(PaintInfo& paintInfo, const LayoutPoint& paintOff set)
144 { 144 {
145 PaintPhase paintPhase = paintInfo.phase; 145 PaintPhase paintPhase = paintInfo.phase;
146 146
147 LayoutRect bounds;
148 if (RuntimeEnabledFeatures::slimmingPaintEnabled())
149 bounds = m_renderBlock.visualOverflowRect();
150
151 // Adjust our painting position if we're inside a scrolled layer (e.g., an o verflow:auto div). 147 // Adjust our painting position if we're inside a scrolled layer (e.g., an o verflow:auto div).
152 LayoutPoint scrolledOffset = paintOffset; 148 LayoutPoint scrolledOffset = paintOffset;
153 if (m_renderBlock.hasOverflowClip()) 149 if (m_renderBlock.hasOverflowClip())
154 scrolledOffset.move(-m_renderBlock.scrolledContentOffset()); 150 scrolledOffset.move(-m_renderBlock.scrolledContentOffset());
155 151
152 LayoutRect bounds;
153 if (RuntimeEnabledFeatures::slimmingPaintEnabled()) {
154 bounds = m_renderBlock.visualOverflowRect();
155 bounds.moveBy(scrolledOffset);
156 }
157
156 // 1. paint background, borders etc 158 // 1. paint background, borders etc
157 if ((paintPhase == PaintPhaseBlockBackground || paintPhase == PaintPhaseChil dBlockBackground) && m_renderBlock.style()->visibility() == VISIBLE) { 159 if ((paintPhase == PaintPhaseBlockBackground || paintPhase == PaintPhaseChil dBlockBackground) && m_renderBlock.style()->visibility() == VISIBLE) {
158 if (m_renderBlock.hasBoxDecorationBackground()) { 160 if (m_renderBlock.hasBoxDecorationBackground()) {
159 PaintCommandRecorder recorder(paintInfo.context, &m_renderBlock, pai ntPhase, bounds); 161 PaintCommandRecorder recorder(paintInfo.context, &m_renderBlock, pai ntPhase, bounds);
160 m_renderBlock.paintBoxDecorationBackground(paintInfo, paintOffset); 162 m_renderBlock.paintBoxDecorationBackground(paintInfo, paintOffset);
161 } 163 }
162 if (m_renderBlock.hasColumns() && !paintInfo.paintRootBackgroundOnly()) { 164 if (m_renderBlock.hasColumns() && !paintInfo.paintRootBackgroundOnly()) {
163 // FIXME: PaintCommandRecorder needs to learn to handle this. 165 // FIXME: PaintCommandRecorder needs to learn to handle this.
164 paintColumnRules(paintInfo, scrolledOffset); 166 paintColumnRules(paintInfo, scrolledOffset);
165 } 167 }
(...skipping 344 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 RenderBlock* block = flow->containingBlock(); 512 RenderBlock* block = flow->containingBlock();
511 for ( ; block && block != &m_renderBlock; block = block->containingBlock ()) 513 for ( ; block && block != &m_renderBlock; block = block->containingBlock ())
512 accumulatedPaintOffset.moveBy(block->location()); 514 accumulatedPaintOffset.moveBy(block->location());
513 ASSERT(block); 515 ASSERT(block);
514 InlinePainter(*flow).paintOutline(info, accumulatedPaintOffset); 516 InlinePainter(*flow).paintOutline(info, accumulatedPaintOffset);
515 } 517 }
516 } 518 }
517 519
518 520
519 } // namespace blink 521 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | Source/core/paint/LineBoxListPainter.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698