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

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

Issue 207223003: Make LayoutState members private (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fixing debug build issues Created 6 years, 9 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 | « Source/core/rendering/RenderInline.cpp ('k') | Source/core/rendering/RenderView.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 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * Copyright (C) 2006 Apple Computer, Inc. 3 * Copyright (C) 2006 Apple Computer, Inc.
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 virtual void absoluteQuads(Vector<FloatQuad>&, bool* wasFixed) const OVERRID E; 102 virtual void absoluteQuads(Vector<FloatQuad>&, bool* wasFixed) const OVERRID E;
103 103
104 virtual LayoutRect viewRect() const OVERRIDE; 104 virtual LayoutRect viewRect() const OVERRIDE;
105 105
106 // layoutDelta is used transiently during layout to store how far an object has moved from its 106 // layoutDelta is used transiently during layout to store how far an object has moved from its
107 // last layout location, in order to repaint correctly. 107 // last layout location, in order to repaint correctly.
108 // If we're doing a full repaint m_layoutState will be 0, but in that case l ayoutDelta doesn't matter. 108 // If we're doing a full repaint m_layoutState will be 0, but in that case l ayoutDelta doesn't matter.
109 LayoutSize layoutDelta() const 109 LayoutSize layoutDelta() const
110 { 110 {
111 ASSERT(!RuntimeEnabledFeatures::repaintAfterLayoutEnabled()); 111 ASSERT(!RuntimeEnabledFeatures::repaintAfterLayoutEnabled());
112 return m_layoutState ? m_layoutState->m_layoutDelta : LayoutSize(); 112 return m_layoutState ? m_layoutState->layoutDelta() : LayoutSize();
113 } 113 }
114 void addLayoutDelta(const LayoutSize& delta) 114 void addLayoutDelta(const LayoutSize& delta)
115 { 115 {
116 ASSERT(!RuntimeEnabledFeatures::repaintAfterLayoutEnabled()); 116 ASSERT(!RuntimeEnabledFeatures::repaintAfterLayoutEnabled());
117 if (m_layoutState) { 117 if (m_layoutState)
118 m_layoutState->m_layoutDelta += delta; 118 m_layoutState->addLayoutDelta(delta);
119 #if !ASSERT_DISABLED
120 m_layoutState->m_layoutDeltaXSaturated |= m_layoutState->m_layoutDel ta.width() == LayoutUnit::max() || m_layoutState->m_layoutDelta.width() == Layou tUnit::min();
121 m_layoutState->m_layoutDeltaYSaturated |= m_layoutState->m_layoutDel ta.height() == LayoutUnit::max() || m_layoutState->m_layoutDelta.height() == Lay outUnit::min();
122 #endif
123 }
124 } 119 }
125 120
126 #if !ASSERT_DISABLED 121 #if !ASSERT_DISABLED
127 bool layoutDeltaMatches(const LayoutSize& delta) 122 bool layoutDeltaMatches(const LayoutSize& delta)
128 { 123 {
129 ASSERT(!RuntimeEnabledFeatures::repaintAfterLayoutEnabled()); 124 ASSERT(!RuntimeEnabledFeatures::repaintAfterLayoutEnabled());
130 if (!m_layoutState) 125 if (!m_layoutState)
131 return false; 126 return false;
132 return (delta.width() == m_layoutState->m_layoutDelta.width() || m_layou tState->m_layoutDeltaXSaturated) && (delta.height() == m_layoutState->m_layoutDe lta.height() || m_layoutState->m_layoutDeltaYSaturated); 127 return (delta.width() == m_layoutState->layoutDelta().width() || m_layou tState->layoutDeltaXSaturated()) && (delta.height() == m_layoutState->layoutDelt a().height() || m_layoutState->layoutDeltaYSaturated());
133 } 128 }
134 #endif 129 #endif
135 130
136 bool doingFullRepaint() const { return m_frameView->needsFullRepaint(); } 131 bool doingFullRepaint() const { return m_frameView->needsFullRepaint(); }
137 132
138 // Subtree push 133 // Subtree push
139 void pushLayoutState(RenderObject&); 134 void pushLayoutState(RenderObject&);
140 135
141 void popLayoutState() 136 void popLayoutState()
142 { 137 {
143 LayoutState* state = m_layoutState; 138 LayoutState* state = m_layoutState;
144 m_layoutState = state->m_next; 139 m_layoutState = state->next();
145 delete state; 140 delete state;
146 popLayoutStateForCurrentFlowThread(); 141 popLayoutStateForCurrentFlowThread();
147 } 142 }
148 143
149 bool shouldDisableLayoutStateForSubtree(RenderObject&) const; 144 bool shouldDisableLayoutStateForSubtree(RenderObject&) const;
150 145
151 // Returns true if layoutState should be used for its cached offset and clip . 146 // Returns true if layoutState should be used for its cached offset and clip .
152 bool layoutStateEnabled() const { return m_layoutStateDisableCount == 0 && m _layoutState; } 147 bool layoutStateEnabled() const { return m_layoutStateDisableCount == 0 && m _layoutState; }
153 LayoutState* layoutState() const { return m_layoutState; } 148 LayoutState* layoutState() const { return m_layoutState; }
154 149
155 virtual void updateHitTestResult(HitTestResult&, const LayoutPoint&) OVERRID E; 150 virtual void updateHitTestResult(HitTestResult&, const LayoutPoint&) OVERRID E;
156 151
157 LayoutUnit pageLogicalHeight() const { return m_pageLogicalHeight; } 152 LayoutUnit pageLogicalHeight() const { return m_pageLogicalHeight; }
158 void setPageLogicalHeight(LayoutUnit height) 153 void setPageLogicalHeight(LayoutUnit height)
159 { 154 {
160 if (m_pageLogicalHeight != height) { 155 if (m_pageLogicalHeight != height) {
161 m_pageLogicalHeight = height; 156 m_pageLogicalHeight = height;
162 m_pageLogicalHeightChanged = true; 157 m_pageLogicalHeightChanged = true;
163 } 158 }
164 } 159 }
160 bool pageLogicalHeightChanged() const { return m_pageLogicalHeightChanged; }
165 161
166 // Notification that this view moved into or out of a native window. 162 // Notification that this view moved into or out of a native window.
167 void setIsInWindow(bool); 163 void setIsInWindow(bool);
168 164
169 RenderLayerCompositor* compositor(); 165 RenderLayerCompositor* compositor();
170 bool usesCompositing() const; 166 bool usesCompositing() const;
171 167
172 IntRect unscaledDocumentRect() const; 168 IntRect unscaledDocumentRect() const;
173 LayoutRect backgroundRect(RenderBox* backgroundRenderer) const; 169 LayoutRect backgroundRect(RenderBox* backgroundRenderer) const;
174 170
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 void enableLayoutState() { ASSERT(m_layoutStateDisableCount > 0); m_layoutSt ateDisableCount--; } 202 void enableLayoutState() { ASSERT(m_layoutStateDisableCount > 0); m_layoutSt ateDisableCount--; }
207 203
208 OutlineRects& outlineRects() { return m_outlineRects; } 204 OutlineRects& outlineRects() { return m_outlineRects; }
209 205
210 private: 206 private:
211 virtual void mapLocalToContainer(const RenderLayerModelObject* repaintContai ner, TransformState&, MapCoordinatesFlags = ApplyContainerFlip, bool* wasFixed = 0) const OVERRIDE; 207 virtual void mapLocalToContainer(const RenderLayerModelObject* repaintContai ner, TransformState&, MapCoordinatesFlags = ApplyContainerFlip, bool* wasFixed = 0) const OVERRIDE;
212 virtual const RenderObject* pushMappingToContainer(const RenderLayerModelObj ect* ancestorToStopAt, RenderGeometryMap&) const OVERRIDE; 208 virtual const RenderObject* pushMappingToContainer(const RenderLayerModelObj ect* ancestorToStopAt, RenderGeometryMap&) const OVERRIDE;
213 virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) c onst OVERRIDE; 209 virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) c onst OVERRIDE;
214 virtual void computeSelfHitTestRects(Vector<LayoutRect>&, const LayoutPoint& layerOffset) const OVERRIDE; 210 virtual void computeSelfHitTestRects(Vector<LayoutRect>&, const LayoutPoint& layerOffset) const OVERRIDE;
215 211
216 void initializeLayoutState(LayoutState&);
217
218 bool shouldRepaint(const LayoutRect&) const; 212 bool shouldRepaint(const LayoutRect&) const;
219 213
220 bool rootFillsViewportBackground(RenderBox* rootBox) const; 214 bool rootFillsViewportBackground(RenderBox* rootBox) const;
221 215
222 // These functions may only be accessed by LayoutStateMaintainer. 216 // These functions may only be accessed by LayoutStateMaintainer.
223 bool pushLayoutState(RenderBox& renderer, const LayoutSize& offset, LayoutUn it pageHeight = 0, bool pageHeightChanged = false, ColumnInfo* colInfo = 0) 217 bool pushLayoutState(RenderBox& renderer, const LayoutSize& offset, LayoutUn it pageHeight = 0, bool pageHeightChanged = false, ColumnInfo* colInfo = 0)
224 { 218 {
225 // We push LayoutState even if layoutState is disabled because it stores layoutDelta too. 219 // We push LayoutState even if layoutState is disabled because it stores layoutDelta too.
226 if (!doingFullRepaint() || m_layoutState->isPaginated() || renderer.hasC olumns() || renderer.flowThreadContainingBlock() 220 if (!doingFullRepaint() || m_layoutState->isPaginated() || renderer.hasC olumns() || renderer.flowThreadContainingBlock()
227 || (renderer.isRenderBlock() && toRenderBlock(renderer).shapeInsideI nfo()) 221 || (renderer.isRenderBlock() && toRenderBlock(renderer).shapeInsideI nfo())
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
272 266
273 OutlineRects m_outlineRects; 267 OutlineRects m_outlineRects;
274 }; 268 };
275 269
276 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderView, isRenderView()); 270 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderView, isRenderView());
277 271
278 class RootLayoutStateScope { 272 class RootLayoutStateScope {
279 public: 273 public:
280 explicit RootLayoutStateScope(RenderView& view) 274 explicit RootLayoutStateScope(RenderView& view)
281 : m_view(view) 275 : m_view(view)
276 , m_rootLayoutState(view.pageLogicalHeight(), view.pageLogicalHeightChan ged())
282 { 277 {
283 ASSERT(!m_view.m_layoutState); 278 ASSERT(!m_view.m_layoutState);
284 initializeLayoutState();
285 m_view.m_layoutState = &m_rootLayoutState; 279 m_view.m_layoutState = &m_rootLayoutState;
286 } 280 }
287 281
288 ~RootLayoutStateScope() 282 ~RootLayoutStateScope()
289 { 283 {
290 ASSERT(m_view.m_layoutState == &m_rootLayoutState); 284 ASSERT(m_view.m_layoutState == &m_rootLayoutState);
291 m_view.m_layoutState = 0; 285 m_view.m_layoutState = 0;
292 } 286 }
293 private: 287 private:
294 void initializeLayoutState();
295 RenderView& m_view; 288 RenderView& m_view;
296 LayoutState m_rootLayoutState; 289 LayoutState m_rootLayoutState;
297 }; 290 };
298 291
299 // Stack-based class to assist with LayoutState push/pop 292 // Stack-based class to assist with LayoutState push/pop
300 class LayoutStateMaintainer { 293 class LayoutStateMaintainer {
301 WTF_MAKE_NONCOPYABLE(LayoutStateMaintainer); 294 WTF_MAKE_NONCOPYABLE(LayoutStateMaintainer);
302 public: 295 public:
303 // ctor to push now 296 // ctor to push now
304 explicit LayoutStateMaintainer(RenderBox& root, const LayoutSize& offset, La youtUnit pageHeight = 0, bool pageHeightChanged = false, ColumnInfo* colInfo = 0 ) 297 explicit LayoutStateMaintainer(RenderBox& root, const LayoutSize& offset, La youtUnit pageHeight = 0, bool pageHeightChanged = false, ColumnInfo* colInfo = 0 )
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 { 366 {
374 m_view.enableLayoutState(); 367 m_view.enableLayoutState();
375 } 368 }
376 private: 369 private:
377 RenderView& m_view; 370 RenderView& m_view;
378 }; 371 };
379 372
380 } // namespace WebCore 373 } // namespace WebCore
381 374
382 #endif // RenderView_h 375 #endif // RenderView_h
OLDNEW
« no previous file with comments | « Source/core/rendering/RenderInline.cpp ('k') | Source/core/rendering/RenderView.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698