OLD | NEW |
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 "core/paint/BlockPainter.h" | 5 #include "core/paint/BlockPainter.h" |
6 | 6 |
7 #include "core/editing/DragCaretController.h" | 7 #include "core/editing/DragCaretController.h" |
8 #include "core/editing/FrameSelection.h" | 8 #include "core/editing/FrameSelection.h" |
9 #include "core/layout/LayoutFlexibleBox.h" | 9 #include "core/layout/LayoutFlexibleBox.h" |
10 #include "core/layout/LayoutInline.h" | 10 #include "core/layout/LayoutInline.h" |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 // Our scrollbar widgets paint exactly when we tell them to, so that they wo
rk properly with | 63 // Our scrollbar widgets paint exactly when we tell them to, so that they wo
rk properly with |
64 // z-index. We paint after we painted the background/border, so that the scr
ollbars will | 64 // z-index. We paint after we painted the background/border, so that the scr
ollbars will |
65 // sit above the background/border. | 65 // sit above the background/border. |
66 localPaintInfo.phase = originalPhase; | 66 localPaintInfo.phase = originalPhase; |
67 paintOverflowControlsIfNeeded(localPaintInfo, adjustedPaintOffset); | 67 paintOverflowControlsIfNeeded(localPaintInfo, adjustedPaintOffset); |
68 } | 68 } |
69 | 69 |
70 void BlockPainter::paintOverflowControlsIfNeeded(const PaintInfo& paintInfo, con
st LayoutPoint& paintOffset) | 70 void BlockPainter::paintOverflowControlsIfNeeded(const PaintInfo& paintInfo, con
st LayoutPoint& paintOffset) |
71 { | 71 { |
72 if (m_layoutBlock.hasOverflowClip() | 72 if (m_layoutBlock.hasOverflowClip() |
73 && m_layoutBlock.style()->visibility() == VISIBLE | 73 && m_layoutBlock.style()->visibility() == EVisibility::Visible |
74 && shouldPaintSelfBlockBackground(paintInfo.phase) | 74 && shouldPaintSelfBlockBackground(paintInfo.phase) |
75 && !paintInfo.paintRootBackgroundOnly()) { | 75 && !paintInfo.paintRootBackgroundOnly()) { |
76 Optional<ClipRecorder> clipRecorder; | 76 Optional<ClipRecorder> clipRecorder; |
77 if (!m_layoutBlock.layer()->isSelfPaintingLayer()) { | 77 if (!m_layoutBlock.layer()->isSelfPaintingLayer()) { |
78 LayoutRect clipRect = m_layoutBlock.borderBoxRect(); | 78 LayoutRect clipRect = m_layoutBlock.borderBoxRect(); |
79 clipRect.moveBy(paintOffset); | 79 clipRect.moveBy(paintOffset); |
80 clipRecorder.emplace(paintInfo.context, m_layoutBlock, DisplayItem::
ClipScrollbarsToBoxBounds, pixelSnappedIntRect(clipRect)); | 80 clipRecorder.emplace(paintInfo.context, m_layoutBlock, DisplayItem::
ClipScrollbarsToBoxBounds, pixelSnappedIntRect(clipRect)); |
81 } | 81 } |
82 ScrollableAreaPainter(*m_layoutBlock.layer()->getScrollableArea()).paint
OverflowControls(paintInfo.context, roundedIntPoint(paintOffset), paintInfo.cull
Rect(), false /* paintingOverlayControls */); | 82 ScrollableAreaPainter(*m_layoutBlock.layer()->getScrollableArea()).paint
OverflowControls(paintInfo.context, roundedIntPoint(paintOffset), paintInfo.cull
Rect(), false /* paintingOverlayControls */); |
83 } | 83 } |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 childPoint = LineLayoutAPIShim::layoutObjectFrom(inlineBox.getLineLayout
Item())->containingBlock()->flipForWritingModeForChild(toLayoutBox(LineLayoutAPI
Shim::layoutObjectFrom(inlineBox.getLineLayoutItem())), childPoint); | 122 childPoint = LineLayoutAPIShim::layoutObjectFrom(inlineBox.getLineLayout
Item())->containingBlock()->flipForWritingModeForChild(toLayoutBox(LineLayoutAPI
Shim::layoutObjectFrom(inlineBox.getLineLayoutItem())), childPoint); |
123 | 123 |
124 ObjectPainter(*LineLayoutAPIShim::constLayoutObjectFrom(inlineBox.getLineLay
outItem())).paintAllPhasesAtomically(paintInfo, childPoint); | 124 ObjectPainter(*LineLayoutAPIShim::constLayoutObjectFrom(inlineBox.getLineLay
outItem())).paintAllPhasesAtomically(paintInfo, childPoint); |
125 } | 125 } |
126 | 126 |
127 void BlockPainter::paintObject(const PaintInfo& paintInfo, const LayoutPoint& pa
intOffset) | 127 void BlockPainter::paintObject(const PaintInfo& paintInfo, const LayoutPoint& pa
intOffset) |
128 { | 128 { |
129 const PaintPhase paintPhase = paintInfo.phase; | 129 const PaintPhase paintPhase = paintInfo.phase; |
130 | 130 |
131 if (shouldPaintSelfBlockBackground(paintPhase)) { | 131 if (shouldPaintSelfBlockBackground(paintPhase)) { |
132 if (m_layoutBlock.style()->visibility() == VISIBLE && m_layoutBlock.hasB
oxDecorationBackground()) | 132 if (m_layoutBlock.style()->visibility() == EVisibility::Visible && m_lay
outBlock.hasBoxDecorationBackground()) |
133 m_layoutBlock.paintBoxDecorationBackground(paintInfo, paintOffset); | 133 m_layoutBlock.paintBoxDecorationBackground(paintInfo, paintOffset); |
134 // We're done. We don't bother painting any children. | 134 // We're done. We don't bother painting any children. |
135 if (paintPhase == PaintPhaseSelfBlockBackgroundOnly) | 135 if (paintPhase == PaintPhaseSelfBlockBackgroundOnly) |
136 return; | 136 return; |
137 } | 137 } |
138 | 138 |
139 if (paintInfo.paintRootBackgroundOnly()) | 139 if (paintInfo.paintRootBackgroundOnly()) |
140 return; | 140 return; |
141 | 141 |
142 if (paintPhase == PaintPhaseMask && m_layoutBlock.style()->visibility() == V
ISIBLE) { | 142 if (paintPhase == PaintPhaseMask && m_layoutBlock.style()->visibility() == E
Visibility::Visible) { |
143 m_layoutBlock.paintMask(paintInfo, paintOffset); | 143 m_layoutBlock.paintMask(paintInfo, paintOffset); |
144 return; | 144 return; |
145 } | 145 } |
146 | 146 |
147 if (paintPhase == PaintPhaseClippingMask && m_layoutBlock.style()->visibilit
y() == VISIBLE) { | 147 if (paintPhase == PaintPhaseClippingMask && m_layoutBlock.style()->visibilit
y() == EVisibility::Visible) { |
148 BoxPainter(m_layoutBlock).paintClippingMask(paintInfo, paintOffset); | 148 BoxPainter(m_layoutBlock).paintClippingMask(paintInfo, paintOffset); |
149 return; | 149 return; |
150 } | 150 } |
151 | 151 |
152 if (paintPhase == PaintPhaseForeground && paintInfo.isPrinting()) | 152 if (paintPhase == PaintPhaseForeground && paintInfo.isPrinting()) |
153 ObjectPainter(m_layoutBlock).addPDFURLRectIfNeeded(paintInfo, paintOffse
t); | 153 ObjectPainter(m_layoutBlock).addPDFURLRectIfNeeded(paintInfo, paintOffse
t); |
154 | 154 |
155 if (paintPhase != PaintPhaseSelfOutlineOnly) { | 155 if (paintPhase != PaintPhaseSelfOutlineOnly) { |
156 Optional<ScopedPaintChunkProperties> m_scopedScrollProperty; | 156 Optional<ScopedPaintChunkProperties> m_scopedScrollProperty; |
157 Optional<ScrollRecorder> scrollRecorder; | 157 Optional<ScrollRecorder> scrollRecorder; |
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
244 } | 244 } |
245 | 245 |
246 void BlockPainter::paintContents(const PaintInfo& paintInfo, const LayoutPoint&
paintOffset) | 246 void BlockPainter::paintContents(const PaintInfo& paintInfo, const LayoutPoint&
paintOffset) |
247 { | 247 { |
248 DCHECK(!m_layoutBlock.childrenInline()); | 248 DCHECK(!m_layoutBlock.childrenInline()); |
249 PaintInfo paintInfoForDescendants = paintInfo.forDescendants(); | 249 PaintInfo paintInfoForDescendants = paintInfo.forDescendants(); |
250 m_layoutBlock.paintChildren(paintInfoForDescendants, paintOffset); | 250 m_layoutBlock.paintChildren(paintInfoForDescendants, paintOffset); |
251 } | 251 } |
252 | 252 |
253 } // namespace blink | 253 } // namespace blink |
OLD | NEW |