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

Side by Side Diff: Source/core/rendering/RenderObject.h

Issue 18601002: Add infrastructure for partial layouts (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix release compile, minor cleanups Created 7 years, 4 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
3 * (C) 2000 Antti Koivisto (koivisto@kde.org) 3 * (C) 2000 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org) 4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com)
6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r ights reserved. 6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All r ights reserved.
7 * Copyright (C) 2009 Google Inc. All rights reserved. 7 * Copyright (C) 2009 Google Inc. All rights reserved.
8 * 8 *
9 * This library is free software; you can redistribute it and/or 9 * This library is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU Library General Public 10 * modify it under the terms of the GNU Library General Public
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
60 class RenderInline; 60 class RenderInline;
61 class RenderBlock; 61 class RenderBlock;
62 class RenderFlowThread; 62 class RenderFlowThread;
63 class RenderGeometryMap; 63 class RenderGeometryMap;
64 class RenderLayer; 64 class RenderLayer;
65 class RenderLayerModelObject; 65 class RenderLayerModelObject;
66 class RenderNamedFlowThread; 66 class RenderNamedFlowThread;
67 class RenderSVGResourceContainer; 67 class RenderSVGResourceContainer;
68 class RenderTable; 68 class RenderTable;
69 class RenderTheme; 69 class RenderTheme;
70 class RenderView;
70 class TransformState; 71 class TransformState;
71 72
72 struct PaintInfo; 73 struct PaintInfo;
73 74
74 enum CursorDirective { 75 enum CursorDirective {
75 SetCursorBasedOnStyle, 76 SetCursorBasedOnStyle,
76 SetCursor, 77 SetCursor,
77 DoNotSetCursor 78 DoNotSetCursor
78 }; 79 };
79 80
(...skipping 590 matching lines...) Expand 10 before | Expand all | Expand 10 after
670 671
671 // Recursive function that computes the size and position of this object and all its descendants. 672 // Recursive function that computes the size and position of this object and all its descendants.
672 virtual void layout(); 673 virtual void layout();
673 674
674 /* This function performs a layout only if one is needed. */ 675 /* This function performs a layout only if one is needed. */
675 void layoutIfNeeded() { if (needsLayout()) layout(); } 676 void layoutIfNeeded() { if (needsLayout()) layout(); }
676 677
677 void forceLayout(); 678 void forceLayout();
678 void forceChildLayout(); 679 void forceChildLayout();
679 680
681 // True if we can abort layout, leaving a partially laid out tree.
682 virtual bool supportsPartialLayout() const { return false; }
683
680 // used for element state updates that cannot be fixed with a 684 // used for element state updates that cannot be fixed with a
681 // repaint and do not need a relayout 685 // repaint and do not need a relayout
682 virtual void updateFromElement() { } 686 virtual void updateFromElement() { }
683 687
684 virtual void addAnnotatedRegions(Vector<AnnotatedRegionValue>&); 688 virtual void addAnnotatedRegions(Vector<AnnotatedRegionValue>&);
685 void collectAnnotatedRegions(Vector<AnnotatedRegionValue>&); 689 void collectAnnotatedRegions(Vector<AnnotatedRegionValue>&);
686 690
687 bool isComposited() const; 691 bool isComposited() const;
688 692
689 bool hitTest(const HitTestRequest&, HitTestResult&, const HitTestLocation& l ocationInContainer, const LayoutPoint& accumulatedOffset, HitTestFilter = HitTes tAll); 693 bool hitTest(const HitTestRequest&, HitTestResult&, const HitTestLocation& l ocationInContainer, const LayoutPoint& accumulatedOffset, HitTestFilter = HitTes tAll);
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
1069 StyleColor styleColor = color; 1073 StyleColor styleColor = color;
1070 for (const RenderObject* object = this; UNLIKELY(styleColor.isCurrentCol or()) && object && object->style(); object = object->parent()) 1074 for (const RenderObject* object = this; UNLIKELY(styleColor.isCurrentCol or()) && object && object->style(); object = object->parent())
1071 styleColor = object->style()->visitedDependentColor(CSSPropertyColor ); 1075 styleColor = object->style()->visitedDependentColor(CSSPropertyColor );
1072 return styleColor; 1076 return styleColor;
1073 } 1077 }
1074 1078
1075 void removeShapeImageClient(ShapeValue*); 1079 void removeShapeImageClient(ShapeValue*);
1076 1080
1077 #ifndef NDEBUG 1081 #ifndef NDEBUG
1078 void checkBlockPositionedObjectsNeedLayout(); 1082 void checkBlockPositionedObjectsNeedLayout();
1083 void checkNotInPartialLayout();
1079 #endif 1084 #endif
1080 1085
1081 RefPtr<RenderStyle> m_style; 1086 RefPtr<RenderStyle> m_style;
1082 1087
1083 Node* m_node; 1088 Node* m_node;
1084 1089
1085 RenderObject* m_parent; 1090 RenderObject* m_parent;
1086 RenderObject* m_previous; 1091 RenderObject* m_previous;
1087 RenderObject* m_next; 1092 RenderObject* m_next;
1088 1093
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1239 return true; 1244 return true;
1240 } 1245 }
1241 1246
1242 inline bool RenderObject::isBeforeOrAfterContent() const 1247 inline bool RenderObject::isBeforeOrAfterContent() const
1243 { 1248 {
1244 return isBeforeContent() || isAfterContent(); 1249 return isBeforeContent() || isAfterContent();
1245 } 1250 }
1246 1251
1247 inline void RenderObject::setNeedsLayout(MarkingBehavior markParents, SubtreeLay outScope* layouter) 1252 inline void RenderObject::setNeedsLayout(MarkingBehavior markParents, SubtreeLay outScope* layouter)
1248 { 1253 {
1254 #ifndef NDEBUG
1255 checkNotInPartialLayout();
1256 #endif
1249 ASSERT(!isSetNeedsLayoutForbidden()); 1257 ASSERT(!isSetNeedsLayoutForbidden());
1250 bool alreadyNeededLayout = m_bitfields.needsLayout(); 1258 bool alreadyNeededLayout = m_bitfields.needsLayout();
1251 m_bitfields.setNeedsLayout(true); 1259 m_bitfields.setNeedsLayout(true);
1252 if (!alreadyNeededLayout) { 1260 if (!alreadyNeededLayout) {
1253 if (markParents == MarkContainingBlockChain && (!layouter || layouter->r oot() != this)) 1261 if (markParents == MarkContainingBlockChain && (!layouter || layouter->r oot() != this))
1254 markContainingBlocksForLayout(true, 0, layouter); 1262 markContainingBlocksForLayout(true, 0, layouter);
1255 if (hasLayer()) 1263 if (hasLayer())
1256 setLayerNeedsFullRepaint(); 1264 setLayerNeedsFullRepaint();
1257 } 1265 }
1258 } 1266 }
1259 1267
1260 inline void RenderObject::clearNeedsLayout() 1268 inline void RenderObject::clearNeedsLayout()
1261 { 1269 {
1270 #ifndef NDEBUG
1271 checkNotInPartialLayout();
1272 #endif
1262 m_bitfields.setNeedsLayout(false); 1273 m_bitfields.setNeedsLayout(false);
1263 setEverHadLayout(true); 1274 setEverHadLayout(true);
1264 setPosChildNeedsLayout(false); 1275 setPosChildNeedsLayout(false);
1265 setNeedsSimplifiedNormalFlowLayout(false); 1276 setNeedsSimplifiedNormalFlowLayout(false);
1266 setNormalChildNeedsLayout(false); 1277 setNormalChildNeedsLayout(false);
1267 setNeedsPositionedMovementLayout(false); 1278 setNeedsPositionedMovementLayout(false);
1268 setAncestorLineBoxDirty(false); 1279 setAncestorLineBoxDirty(false);
1269 #ifndef NDEBUG 1280 #ifndef NDEBUG
1270 checkBlockPositionedObjectsNeedLayout(); 1281 checkBlockPositionedObjectsNeedLayout();
1271 #endif 1282 #endif
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1396 // Outside the WebCore namespace for ease of invocation from gdb. 1407 // Outside the WebCore namespace for ease of invocation from gdb.
1397 void showTree(const WebCore::RenderObject*); 1408 void showTree(const WebCore::RenderObject*);
1398 void showLineTree(const WebCore::RenderObject*); 1409 void showLineTree(const WebCore::RenderObject*);
1399 void showRenderTree(const WebCore::RenderObject* object1); 1410 void showRenderTree(const WebCore::RenderObject* object1);
1400 // We don't make object2 an optional parameter so that showRenderTree 1411 // We don't make object2 an optional parameter so that showRenderTree
1401 // can be called from gdb easily. 1412 // can be called from gdb easily.
1402 void showRenderTree(const WebCore::RenderObject* object1, const WebCore::RenderO bject* object2); 1413 void showRenderTree(const WebCore::RenderObject* object1, const WebCore::RenderO bject* object2);
1403 #endif 1414 #endif
1404 1415
1405 #endif // RenderObject_h 1416 #endif // RenderObject_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698