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

Side by Side Diff: third_party/WebKit/Source/core/paint/ObjectPaintProperties.h

Issue 2495893002: Implement incremental paint property tree rebuilding (Closed)
Patch Set: Suppress main thread scrolling invalidation failures Created 4 years, 1 month 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 #ifndef ObjectPaintProperties_h 5 #ifndef ObjectPaintProperties_h
6 #define ObjectPaintProperties_h 6 #define ObjectPaintProperties_h
7 7
8 #include "core/CoreExport.h" 8 #include "core/CoreExport.h"
9 #include "platform/geometry/LayoutPoint.h" 9 #include "platform/geometry/LayoutPoint.h"
10 #include "platform/graphics/paint/ClipPaintPropertyNode.h" 10 #include "platform/graphics/paint/ClipPaintPropertyNode.h"
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 } 200 }
201 template <typename... Args> 201 template <typename... Args>
202 void updateInnerBorderRadiusClip(Args&&... args) { 202 void updateInnerBorderRadiusClip(Args&&... args) {
203 updateProperty(m_innerBorderRadiusClip, std::forward<Args>(args)...); 203 updateProperty(m_innerBorderRadiusClip, std::forward<Args>(args)...);
204 } 204 }
205 template <typename... Args> 205 template <typename... Args>
206 void updateOverflowClip(Args&&... args) { 206 void updateOverflowClip(Args&&... args) {
207 updateProperty(m_overflowClip, std::forward<Args>(args)...); 207 updateProperty(m_overflowClip, std::forward<Args>(args)...);
208 } 208 }
209 209
210 #if DCHECK_IS_ON()
211 // Used by FindPropertiesNeedingUpdate.h for recording the current properties.
212 std::unique_ptr<ObjectPaintProperties> clone() const {
213 std::unique_ptr<ObjectPaintProperties> cloned = create();
214 if (m_paintOffsetTranslation)
215 cloned->m_paintOffsetTranslation = m_paintOffsetTranslation->clone();
216 if (m_transform)
217 cloned->m_transform = m_transform->clone();
218 if (m_effect)
219 cloned->m_effect = m_effect->clone();
220 if (m_cssClip)
221 cloned->m_cssClip = m_cssClip->clone();
222 if (m_cssClipFixedPosition)
223 cloned->m_cssClipFixedPosition = m_cssClipFixedPosition->clone();
224 if (m_innerBorderRadiusClip)
225 cloned->m_innerBorderRadiusClip = m_innerBorderRadiusClip->clone();
226 if (m_overflowClip)
227 cloned->m_overflowClip = m_overflowClip->clone();
228 if (m_perspective)
229 cloned->m_perspective = m_perspective->clone();
230 if (m_svgLocalToBorderBoxTransform) {
231 cloned->m_svgLocalToBorderBoxTransform =
232 m_svgLocalToBorderBoxTransform->clone();
233 }
234 if (m_scrollTranslation)
235 cloned->m_scrollTranslation = m_scrollTranslation->clone();
236 if (m_scrollbarPaintOffset)
237 cloned->m_scrollbarPaintOffset = m_scrollbarPaintOffset->clone();
238 if (m_scroll)
239 cloned->m_scroll = m_scroll->clone();
240 if (m_localBorderBoxProperties) {
241 auto& state = m_localBorderBoxProperties->propertyTreeState;
242 cloned->m_localBorderBoxProperties =
243 wrapUnique(new PropertyTreeStateWithOffset(
244 m_localBorderBoxProperties->paintOffset,
245 PropertyTreeState(state.transform(), state.clip(), state.effect(),
246 state.scroll())));
247 }
248 return cloned;
249 }
250 #endif
251
210 private: 252 private:
211 ObjectPaintProperties() {} 253 ObjectPaintProperties() {}
212 254
213 template <typename PaintPropertyNode, typename... Args> 255 template <typename PaintPropertyNode, typename... Args>
214 void updateProperty(RefPtr<PaintPropertyNode>& field, Args&&... args) { 256 void updateProperty(RefPtr<PaintPropertyNode>& field, Args&&... args) {
215 if (field) 257 if (field)
216 field->update(std::forward<Args>(args)...); 258 field->update(std::forward<Args>(args)...);
217 else 259 else
218 field = PaintPropertyNode::create(std::forward<Args>(args)...); 260 field = PaintPropertyNode::create(std::forward<Args>(args)...);
219 } 261 }
(...skipping 11 matching lines...) Expand all
231 RefPtr<TransformPaintPropertyNode> m_scrollTranslation; 273 RefPtr<TransformPaintPropertyNode> m_scrollTranslation;
232 RefPtr<TransformPaintPropertyNode> m_scrollbarPaintOffset; 274 RefPtr<TransformPaintPropertyNode> m_scrollbarPaintOffset;
233 RefPtr<ScrollPaintPropertyNode> m_scroll; 275 RefPtr<ScrollPaintPropertyNode> m_scroll;
234 276
235 std::unique_ptr<PropertyTreeStateWithOffset> m_localBorderBoxProperties; 277 std::unique_ptr<PropertyTreeStateWithOffset> m_localBorderBoxProperties;
236 }; 278 };
237 279
238 } // namespace blink 280 } // namespace blink
239 281
240 #endif // ObjectPaintProperties_h 282 #endif // ObjectPaintProperties_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698