OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/PaintInvalidator.h" | 5 #include "core/paint/PaintInvalidator.h" |
6 | 6 |
7 #include "core/editing/FrameSelection.h" | 7 #include "core/editing/FrameSelection.h" |
8 #include "core/frame/FrameView.h" | 8 #include "core/frame/FrameView.h" |
9 #include "core/frame/LocalFrame.h" | 9 #include "core/frame/LocalFrame.h" |
10 #include "core/frame/Settings.h" | 10 #include "core/frame/Settings.h" |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
120 // enclosingIntRect is applied in the last step of paint invalidation | 120 // enclosingIntRect is applied in the last step of paint invalidation |
121 // (see CompositedLayerMapping::setContentsNeedDisplayInRect()). | 121 // (see CompositedLayerMapping::setContentsNeedDisplayInRect()). |
122 if (!isSVGChild && | 122 if (!isSVGChild && |
123 context.treeBuilderContext.current.transform != | 123 context.treeBuilderContext.current.transform != |
124 containerContentsProperties->transform()) | 124 containerContentsProperties->transform()) |
125 rect = Rect(enclosingIntRect(rect)); | 125 rect = Rect(enclosingIntRect(rect)); |
126 | 126 |
127 PropertyTreeState currentTreeState( | 127 PropertyTreeState currentTreeState( |
128 context.treeBuilderContext.current.transform, | 128 context.treeBuilderContext.current.transform, |
129 context.treeBuilderContext.current.clip, nullptr); | 129 context.treeBuilderContext.current.clip, nullptr); |
130 result = LayoutRect( | 130 |
131 geometryMapper | 131 FloatRect floatRect(rect); |
132 .sourceToDestinationVisualRect(FloatRect(rect), currentTreeState, | 132 geometryMapper.sourceToDestinationVisualRect( |
133 *containerContentsProperties) | 133 currentTreeState, *containerContentsProperties, floatRect); |
134 .rect()); | 134 result = LayoutRect(floatRect); |
135 } | 135 } |
136 | 136 |
137 // Convert the result to the container's contents space. | 137 // Convert the result to the container's contents space. |
138 result.moveBy(-context.paintInvalidationContainer->paintOffset()); | 138 result.moveBy(-context.paintInvalidationContainer->paintOffset()); |
139 } | 139 } |
140 | 140 |
141 object.adjustVisualRectForRasterEffects(result); | 141 object.adjustVisualRectForRasterEffects(result); |
142 | 142 |
143 PaintLayer::mapRectInPaintInvalidationContainerToBacking( | 143 PaintLayer::mapRectInPaintInvalidationContainerToBacking( |
144 *context.paintInvalidationContainer, result); | 144 *context.paintInvalidationContainer, result); |
(...skipping 30 matching lines...) Expand all Loading... |
175 | 175 |
176 LayoutPoint point; | 176 LayoutPoint point; |
177 if (object != context.paintInvalidationContainer) { | 177 if (object != context.paintInvalidationContainer) { |
178 point.moveBy(object.paintOffset()); | 178 point.moveBy(object.paintOffset()); |
179 | 179 |
180 const auto* containerTransform = | 180 const auto* containerTransform = |
181 context.paintInvalidationContainer->paintProperties() | 181 context.paintInvalidationContainer->paintProperties() |
182 ->contentsProperties() | 182 ->contentsProperties() |
183 ->transform(); | 183 ->transform(); |
184 if (context.treeBuilderContext.current.transform != containerTransform) { | 184 if (context.treeBuilderContext.current.transform != containerTransform) { |
185 point = LayoutPoint(m_geometryMapper | 185 FloatRect rect = FloatRect(FloatPoint(point), FloatSize()); |
186 .sourceToDestinationRect( | 186 m_geometryMapper.sourceToDestinationRect( |
187 FloatRect(FloatPoint(point), FloatSize()), | 187 context.treeBuilderContext.current.transform, containerTransform, |
188 context.treeBuilderContext.current.transform, | 188 rect); |
189 containerTransform) | 189 point = LayoutPoint(rect.location()); |
190 .location()); | |
191 } | 190 } |
192 | 191 |
193 // Convert the result to the container's contents space. | 192 // Convert the result to the container's contents space. |
194 point.moveBy(-context.paintInvalidationContainer->paintOffset()); | 193 point.moveBy(-context.paintInvalidationContainer->paintOffset()); |
195 } | 194 } |
196 | 195 |
197 if (context.paintInvalidationContainer->layer()->groupedMapping()) { | 196 if (context.paintInvalidationContainer->layer()->groupedMapping()) { |
198 FloatPoint floatPoint(point); | 197 FloatPoint floatPoint(point); |
199 PaintLayer::mapPointInPaintInvalidationContainerToBacking( | 198 PaintLayer::mapPointInPaintInvalidationContainerToBacking( |
200 *context.paintInvalidationContainer, floatPoint); | 199 *context.paintInvalidationContainer, floatPoint); |
(...skipping 290 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 } | 490 } |
492 } | 491 } |
493 | 492 |
494 void PaintInvalidator::processPendingDelayedPaintInvalidations() { | 493 void PaintInvalidator::processPendingDelayedPaintInvalidations() { |
495 for (auto target : m_pendingDelayedPaintInvalidations) | 494 for (auto target : m_pendingDelayedPaintInvalidations) |
496 target->getMutableForPainting().setShouldDoFullPaintInvalidation( | 495 target->getMutableForPainting().setShouldDoFullPaintInvalidation( |
497 PaintInvalidationDelayedFull); | 496 PaintInvalidationDelayedFull); |
498 } | 497 } |
499 | 498 |
500 } // namespace blink | 499 } // namespace blink |
OLD | NEW |