OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2007 David Smith (catfish.man@gmail.com) | 4 * (C) 2007 David Smith (catfish.man@gmail.com) |
5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All r
ights reserved. | 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Apple Inc. All r
ights reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 | 55 |
56 class RenderBlock : public RenderBox { | 56 class RenderBlock : public RenderBox { |
57 public: | 57 public: |
58 friend class LineLayoutState; | 58 friend class LineLayoutState; |
59 | 59 |
60 protected: | 60 protected: |
61 explicit RenderBlock(ContainerNode*); | 61 explicit RenderBlock(ContainerNode*); |
62 virtual ~RenderBlock(); | 62 virtual ~RenderBlock(); |
63 | 63 |
64 public: | 64 public: |
65 RenderObject* firstChild() const { ASSERT(children() == virtualChildren());
return children()->firstChild(); } | 65 LayoutObject* firstChild() const { ASSERT(children() == virtualChildren());
return children()->firstChild(); } |
66 RenderObject* lastChild() const { ASSERT(children() == virtualChildren()); r
eturn children()->lastChild(); } | 66 LayoutObject* lastChild() const { ASSERT(children() == virtualChildren()); r
eturn children()->lastChild(); } |
67 | 67 |
68 // If you have a RenderBlock, use firstChild or lastChild instead. | 68 // If you have a RenderBlock, use firstChild or lastChild instead. |
69 void slowFirstChild() const = delete; | 69 void slowFirstChild() const = delete; |
70 void slowLastChild() const = delete; | 70 void slowLastChild() const = delete; |
71 | 71 |
72 const RenderObjectChildList* children() const { return &m_children; } | 72 const LayoutObjectChildList* children() const { return &m_children; } |
73 RenderObjectChildList* children() { return &m_children; } | 73 LayoutObjectChildList* children() { return &m_children; } |
74 | 74 |
75 bool beingDestroyed() const { return m_beingDestroyed; } | 75 bool beingDestroyed() const { return m_beingDestroyed; } |
76 | 76 |
77 // These two functions are overridden for inline-block. | 77 // These two functions are overridden for inline-block. |
78 virtual LayoutUnit lineHeight(bool firstLine, LineDirectionMode, LinePositio
nMode = PositionOnContainingLine) const override final; | 78 virtual LayoutUnit lineHeight(bool firstLine, LineDirectionMode, LinePositio
nMode = PositionOnContainingLine) const override final; |
79 virtual int baselinePosition(FontBaseline, bool firstLine, LineDirectionMode
, LinePositionMode = PositionOnContainingLine) const override; | 79 virtual int baselinePosition(FontBaseline, bool firstLine, LineDirectionMode
, LinePositionMode = PositionOnContainingLine) const override; |
80 | 80 |
81 LayoutUnit minLineHeightForReplacedRenderer(bool isFirstLine, LayoutUnit rep
lacedHeight) const; | 81 LayoutUnit minLineHeightForReplacedRenderer(bool isFirstLine, LayoutUnit rep
lacedHeight) const; |
82 | 82 |
83 RenderLineBoxList* lineBoxes() { return &m_lineBoxes; } | 83 RenderLineBoxList* lineBoxes() { return &m_lineBoxes; } |
84 | 84 |
85 protected: | 85 protected: |
86 InlineFlowBox* firstLineBox() const { return m_lineBoxes.firstLineBox(); } | 86 InlineFlowBox* firstLineBox() const { return m_lineBoxes.firstLineBox(); } |
87 InlineFlowBox* lastLineBox() const { return m_lineBoxes.lastLineBox(); } | 87 InlineFlowBox* lastLineBox() const { return m_lineBoxes.lastLineBox(); } |
88 | 88 |
89 RootInlineBox* firstRootBox() const { return static_cast<RootInlineBox*>(fir
stLineBox()); } | 89 RootInlineBox* firstRootBox() const { return static_cast<RootInlineBox*>(fir
stLineBox()); } |
90 RootInlineBox* lastRootBox() const { return static_cast<RootInlineBox*>(last
LineBox()); } | 90 RootInlineBox* lastRootBox() const { return static_cast<RootInlineBox*>(last
LineBox()); } |
91 | 91 |
92 public: | 92 public: |
93 // FIXME-BLOCKFLOW: Remove virtualizaion when all callers have moved to Rend
erBlockFlow | 93 // FIXME-BLOCKFLOW: Remove virtualizaion when all callers have moved to Rend
erBlockFlow |
94 virtual void deleteLineBoxTree(); | 94 virtual void deleteLineBoxTree(); |
95 | 95 |
96 virtual void addChild(RenderObject* newChild, RenderObject* beforeChild = 0)
override; | 96 virtual void addChild(LayoutObject* newChild, LayoutObject* beforeChild = 0)
override; |
97 virtual void removeChild(RenderObject*) override; | 97 virtual void removeChild(LayoutObject*) override; |
98 | 98 |
99 virtual void layoutBlock(bool relayoutChildren); | 99 virtual void layoutBlock(bool relayoutChildren); |
100 | 100 |
101 void insertPositionedObject(RenderBox*); | 101 void insertPositionedObject(RenderBox*); |
102 static void removePositionedObject(RenderBox*); | 102 static void removePositionedObject(RenderBox*); |
103 void removePositionedObjects(RenderBlock*, ContainingBlockState = SameContai
ningBlock); | 103 void removePositionedObjects(RenderBlock*, ContainingBlockState = SameContai
ningBlock); |
104 | 104 |
105 TrackedRendererListHashSet* positionedObjects() const; | 105 TrackedRendererListHashSet* positionedObjects() const; |
106 bool hasPositionedObjects() const | 106 bool hasPositionedObjects() const |
107 { | 107 { |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
174 void addContinuationWithOutline(RenderInline*); | 174 void addContinuationWithOutline(RenderInline*); |
175 | 175 |
176 virtual RenderBoxModelObject* virtualContinuation() const override final { r
eturn continuation(); } | 176 virtual RenderBoxModelObject* virtualContinuation() const override final { r
eturn continuation(); } |
177 bool isAnonymousBlockContinuation() const { return continuation() && isAnony
mousBlock(); } | 177 bool isAnonymousBlockContinuation() const { return continuation() && isAnony
mousBlock(); } |
178 RenderInline* inlineElementContinuation() const; | 178 RenderInline* inlineElementContinuation() const; |
179 RenderBlock* blockElementContinuation() const; | 179 RenderBlock* blockElementContinuation() const; |
180 | 180 |
181 using RenderBoxModelObject::continuation; | 181 using RenderBoxModelObject::continuation; |
182 using RenderBoxModelObject::setContinuation; | 182 using RenderBoxModelObject::setContinuation; |
183 | 183 |
184 static RenderBlock* createAnonymousWithParentRendererAndDisplay(const Render
Object*, EDisplay = BLOCK); | 184 static RenderBlock* createAnonymousWithParentRendererAndDisplay(const Layout
Object*, EDisplay = BLOCK); |
185 static RenderBlockFlow* createAnonymousColumnsWithParentRenderer(const Rende
rObject*); | 185 static RenderBlockFlow* createAnonymousColumnsWithParentRenderer(const Layou
tObject*); |
186 static RenderBlockFlow* createAnonymousColumnSpanWithParentRenderer(const Re
nderObject*); | 186 static RenderBlockFlow* createAnonymousColumnSpanWithParentRenderer(const La
youtObject*); |
187 RenderBlock* createAnonymousBlock(EDisplay display = BLOCK) const { return c
reateAnonymousWithParentRendererAndDisplay(this, display); } | 187 RenderBlock* createAnonymousBlock(EDisplay display = BLOCK) const { return c
reateAnonymousWithParentRendererAndDisplay(this, display); } |
188 RenderBlockFlow* createAnonymousColumnsBlock() const { return createAnonymou
sColumnsWithParentRenderer(this); } | 188 RenderBlockFlow* createAnonymousColumnsBlock() const { return createAnonymou
sColumnsWithParentRenderer(this); } |
189 RenderBlockFlow* createAnonymousColumnSpanBlock() const { return createAnony
mousColumnSpanWithParentRenderer(this); } | 189 RenderBlockFlow* createAnonymousColumnSpanBlock() const { return createAnony
mousColumnSpanWithParentRenderer(this); } |
190 | 190 |
191 virtual RenderBox* createAnonymousBoxWithSameTypeAs(const RenderObject* pare
nt) const override; | 191 virtual RenderBox* createAnonymousBoxWithSameTypeAs(const LayoutObject* pare
nt) const override; |
192 | 192 |
193 ColumnInfo* columnInfo() const; | 193 ColumnInfo* columnInfo() const; |
194 int columnGap() const; | 194 int columnGap() const; |
195 | 195 |
196 // These two functions take the ColumnInfo* to avoid repeated lookups of the
info in the global HashMap. | 196 // These two functions take the ColumnInfo* to avoid repeated lookups of the
info in the global HashMap. |
197 unsigned columnCount(ColumnInfo*) const; | 197 unsigned columnCount(ColumnInfo*) const; |
198 LayoutRect columnRectAt(ColumnInfo*, unsigned) const; | 198 LayoutRect columnRectAt(ColumnInfo*, unsigned) const; |
199 | 199 |
200 // The page logical offset is the object's offset from the top of the page i
n the page progression | 200 // The page logical offset is the object's offset from the top of the page i
n the page progression |
201 // direction (so an x-offset in vertical text and a y-offset for horizontal
text). | 201 // direction (so an x-offset in vertical text and a y-offset for horizontal
text). |
(...skipping 27 matching lines...) Expand all Loading... |
229 LayoutUnit endOffsetForContent() const { return !style()->isLeftToRightDirec
tion() ? logicalLeftOffsetForContent() : logicalWidth() - logicalRightOffsetForC
ontent(); } | 229 LayoutUnit endOffsetForContent() const { return !style()->isLeftToRightDirec
tion() ? logicalLeftOffsetForContent() : logicalWidth() - logicalRightOffsetForC
ontent(); } |
230 | 230 |
231 virtual LayoutUnit logicalLeftSelectionOffset(const RenderBlock* rootBlock,
LayoutUnit position) const; | 231 virtual LayoutUnit logicalLeftSelectionOffset(const RenderBlock* rootBlock,
LayoutUnit position) const; |
232 virtual LayoutUnit logicalRightSelectionOffset(const RenderBlock* rootBlock,
LayoutUnit position) const; | 232 virtual LayoutUnit logicalRightSelectionOffset(const RenderBlock* rootBlock,
LayoutUnit position) const; |
233 | 233 |
234 #if ENABLE(ASSERT) | 234 #if ENABLE(ASSERT) |
235 void checkPositionedObjectsNeedLayout(); | 235 void checkPositionedObjectsNeedLayout(); |
236 bool paintsContinuationOutline(RenderInline* flow); | 236 bool paintsContinuationOutline(RenderInline* flow); |
237 #endif | 237 #endif |
238 #ifndef NDEBUG | 238 #ifndef NDEBUG |
239 void showLineTreeAndMark(const InlineBox* = 0, const char* = 0, const Inline
Box* = 0, const char* = 0, const RenderObject* = 0) const; | 239 void showLineTreeAndMark(const InlineBox* = 0, const char* = 0, const Inline
Box* = 0, const char* = 0, const LayoutObject* = 0) const; |
240 #endif | 240 #endif |
241 | 241 |
242 bool recalcChildOverflowAfterStyleChange(); | 242 bool recalcChildOverflowAfterStyleChange(); |
243 bool recalcOverflowAfterStyleChange(); | 243 bool recalcOverflowAfterStyleChange(); |
244 | 244 |
245 protected: | 245 protected: |
246 virtual void willBeDestroyed() override; | 246 virtual void willBeDestroyed() override; |
247 | 247 |
248 void dirtyForLayoutFromPercentageHeightDescendants(SubtreeLayoutScope&); | 248 void dirtyForLayoutFromPercentageHeightDescendants(SubtreeLayoutScope&); |
249 | 249 |
250 virtual void layout() override; | 250 virtual void layout() override; |
251 virtual bool updateImageLoadingPriorities() override final; | 251 virtual bool updateImageLoadingPriorities() override final; |
252 | 252 |
253 enum PositionedLayoutBehavior { | 253 enum PositionedLayoutBehavior { |
254 DefaultLayout, | 254 DefaultLayout, |
255 LayoutOnlyFixedPositionedObjects, | 255 LayoutOnlyFixedPositionedObjects, |
256 ForcedLayoutAfterContainingBlockMoved | 256 ForcedLayoutAfterContainingBlockMoved |
257 }; | 257 }; |
258 | 258 |
259 void layoutPositionedObjects(bool relayoutChildren, PositionedLayoutBehavior
= DefaultLayout); | 259 void layoutPositionedObjects(bool relayoutChildren, PositionedLayoutBehavior
= DefaultLayout); |
260 void markFixedPositionObjectForLayoutIfNeeded(RenderObject* child, SubtreeLa
youtScope&); | 260 void markFixedPositionObjectForLayoutIfNeeded(LayoutObject* child, SubtreeLa
youtScope&); |
261 | 261 |
262 LayoutUnit marginIntrinsicLogicalWidthForChild(RenderBox& child) const; | 262 LayoutUnit marginIntrinsicLogicalWidthForChild(RenderBox& child) const; |
263 | 263 |
264 int beforeMarginInLineDirection(LineDirectionMode) const; | 264 int beforeMarginInLineDirection(LineDirectionMode) const; |
265 | 265 |
266 virtual void paint(const PaintInfo&, const LayoutPoint&) override; | 266 virtual void paint(const PaintInfo&, const LayoutPoint&) override; |
267 public: | 267 public: |
268 virtual void paintObject(const PaintInfo&, const LayoutPoint&) override; | 268 virtual void paintObject(const PaintInfo&, const LayoutPoint&) override; |
269 virtual void paintChildren(const PaintInfo&, const LayoutPoint&); | 269 virtual void paintChildren(const PaintInfo&, const LayoutPoint&); |
270 | 270 |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 | 317 |
318 virtual void computeSelfHitTestRects(Vector<LayoutRect>&, const LayoutPoint&
layerOffset) const override; | 318 virtual void computeSelfHitTestRects(Vector<LayoutRect>&, const LayoutPoint&
layerOffset) const override; |
319 | 319 |
320 void updateBlockChildDirtyBitsBeforeLayout(bool relayoutChildren, RenderBox&
); | 320 void updateBlockChildDirtyBitsBeforeLayout(bool relayoutChildren, RenderBox&
); |
321 | 321 |
322 virtual bool isInlineBlockOrInlineTable() const override final { return isIn
line() && isReplaced(); } | 322 virtual bool isInlineBlockOrInlineTable() const override final { return isIn
line() && isReplaced(); } |
323 | 323 |
324 virtual void invalidatePaintOfSubtreesIfNeeded(const PaintInvalidationState&
childPaintInvalidationState) override; | 324 virtual void invalidatePaintOfSubtreesIfNeeded(const PaintInvalidationState&
childPaintInvalidationState) override; |
325 | 325 |
326 private: | 326 private: |
327 virtual RenderObjectChildList* virtualChildren() override final { return chi
ldren(); } | 327 virtual LayoutObjectChildList* virtualChildren() override final { return chi
ldren(); } |
328 virtual const RenderObjectChildList* virtualChildren() const override final
{ return children(); } | 328 virtual const LayoutObjectChildList* virtualChildren() const override final
{ return children(); } |
329 | 329 |
330 virtual const char* renderName() const override; | 330 virtual const char* renderName() const override; |
331 | 331 |
332 virtual bool isRenderBlock() const override final { return true; } | 332 virtual bool isRenderBlock() const override final { return true; } |
333 | 333 |
334 void makeChildrenNonInline(RenderObject* insertionPoint = 0); | 334 void makeChildrenNonInline(LayoutObject* insertionPoint = 0); |
335 virtual void removeLeftoverAnonymousBlock(RenderBlock* child); | 335 virtual void removeLeftoverAnonymousBlock(RenderBlock* child); |
336 | 336 |
337 static void collapseAnonymousBlockChild(RenderBlock* parent, RenderBlock* ch
ild); | 337 static void collapseAnonymousBlockChild(RenderBlock* parent, RenderBlock* ch
ild); |
338 | 338 |
339 virtual void dirtyLinesFromChangedChild(RenderObject* child) override final
{ m_lineBoxes.dirtyLinesFromChangedChild(this, child); } | 339 virtual void dirtyLinesFromChangedChild(LayoutObject* child) override final
{ m_lineBoxes.dirtyLinesFromChangedChild(this, child); } |
340 | 340 |
341 void addChildToContinuation(RenderObject* newChild, RenderObject* beforeChil
d); | 341 void addChildToContinuation(LayoutObject* newChild, LayoutObject* beforeChil
d); |
342 virtual void addChildIgnoringContinuation(RenderObject* newChild, RenderObje
ct* beforeChild) override; | 342 virtual void addChildIgnoringContinuation(LayoutObject* newChild, LayoutObje
ct* beforeChild) override; |
343 void addChildToAnonymousColumnBlocks(RenderObject* newChild, RenderObject* b
eforeChild); | 343 void addChildToAnonymousColumnBlocks(LayoutObject* newChild, LayoutObject* b
eforeChild); |
344 | 344 |
345 void addChildIgnoringAnonymousColumnBlocks(RenderObject* newChild, RenderObj
ect* beforeChild = 0); | 345 void addChildIgnoringAnonymousColumnBlocks(LayoutObject* newChild, LayoutObj
ect* beforeChild = 0); |
346 | 346 |
347 virtual bool isSelfCollapsingBlock() const override; | 347 virtual bool isSelfCollapsingBlock() const override; |
348 | 348 |
349 void removeAnonymousWrappersIfRequired(); | 349 void removeAnonymousWrappersIfRequired(); |
350 | 350 |
351 void insertIntoTrackedRendererMaps(RenderBox* descendant, TrackedDescendants
Map*&, TrackedContainerMap*&); | 351 void insertIntoTrackedRendererMaps(RenderBox* descendant, TrackedDescendants
Map*&, TrackedContainerMap*&); |
352 static void removeFromTrackedRendererMaps(RenderBox* descendant, TrackedDesc
endantsMap*&, TrackedContainerMap*&); | 352 static void removeFromTrackedRendererMaps(RenderBox* descendant, TrackedDesc
endantsMap*&, TrackedContainerMap*&); |
353 | 353 |
354 Node* nodeForHitTest() const; | 354 Node* nodeForHitTest() const; |
355 | 355 |
356 bool tryLayoutDoingPositionedMovementOnly(); | 356 bool tryLayoutDoingPositionedMovementOnly(); |
357 | 357 |
358 virtual bool avoidsFloats() const override { return true; } | 358 virtual bool avoidsFloats() const override { return true; } |
359 | 359 |
360 bool hitTestColumns(const HitTestRequest&, HitTestResult&, const HitTestLoca
tion& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction); | 360 bool hitTestColumns(const HitTestRequest&, HitTestResult&, const HitTestLoca
tion& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction); |
361 bool hitTestContents(const HitTestRequest&, HitTestResult&, const HitTestLoc
ation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction)
; | 361 bool hitTestContents(const HitTestRequest&, HitTestResult&, const HitTestLoc
ation& locationInContainer, const LayoutPoint& accumulatedOffset, HitTestAction)
; |
362 // FIXME-BLOCKFLOW: Remove virtualizaion when all callers have moved to Rend
erBlockFlow | 362 // FIXME-BLOCKFLOW: Remove virtualizaion when all callers have moved to Rend
erBlockFlow |
363 virtual bool hitTestFloats(const HitTestRequest&, HitTestResult&, const HitT
estLocation&, const LayoutPoint&) { return false; } | 363 virtual bool hitTestFloats(const HitTestRequest&, HitTestResult&, const HitT
estLocation&, const LayoutPoint&) { return false; } |
364 | 364 |
365 virtual bool isPointInOverflowControl(HitTestResult&, const LayoutPoint& loc
ationInContainer, const LayoutPoint& accumulatedOffset); | 365 virtual bool isPointInOverflowControl(HitTestResult&, const LayoutPoint& loc
ationInContainer, const LayoutPoint& accumulatedOffset); |
366 | 366 |
367 void computeBlockPreferredLogicalWidths(LayoutUnit& minLogicalWidth, LayoutU
nit& maxLogicalWidth) const; | 367 void computeBlockPreferredLogicalWidths(LayoutUnit& minLogicalWidth, LayoutU
nit& maxLogicalWidth) const; |
368 | 368 |
369 // Obtains the nearest enclosing block (including this block) that contribut
es a first-line style to our inline | 369 // Obtains the nearest enclosing block (including this block) that contribut
es a first-line style to our inline |
370 // children. | 370 // children. |
371 virtual RenderBlock* firstLineBlock() const override; | 371 virtual RenderBlock* firstLineBlock() const override; |
372 | 372 |
373 virtual LayoutRect rectWithOutlineForPaintInvalidation(const LayoutLayerMode
lObject* paintInvalidationContainer, LayoutUnit outlineWidth, const PaintInvalid
ationState* = 0) const override final; | 373 virtual LayoutRect rectWithOutlineForPaintInvalidation(const LayoutLayerMode
lObject* paintInvalidationContainer, LayoutUnit outlineWidth, const PaintInvalid
ationState* = 0) const override final; |
374 | 374 |
375 virtual RenderObject* hoverAncestor() const override final; | 375 virtual LayoutObject* hoverAncestor() const override final; |
376 virtual void updateDragState(bool dragOn) override final; | 376 virtual void updateDragState(bool dragOn) override final; |
377 virtual void childBecameNonInline(RenderObject* child) override final; | 377 virtual void childBecameNonInline(LayoutObject* child) override final; |
378 | 378 |
379 bool isSelectionRoot() const; | 379 bool isSelectionRoot() const; |
380 | 380 |
381 // FIXME-BLOCKFLOW: Remove virtualizaion when all callers have moved to Rend
erBlockFlow | 381 // FIXME-BLOCKFLOW: Remove virtualizaion when all callers have moved to Rend
erBlockFlow |
382 virtual void clipOutFloatingObjects(const RenderBlock*, const PaintInfo*, co
nst LayoutPoint&, const LayoutSize&) const { }; | 382 virtual void clipOutFloatingObjects(const RenderBlock*, const PaintInfo*, co
nst LayoutPoint&, const LayoutSize&) const { }; |
383 | 383 |
384 virtual void absoluteRects(Vector<IntRect>&, const LayoutPoint& accumulatedO
ffset) const override; | 384 virtual void absoluteRects(Vector<IntRect>&, const LayoutPoint& accumulatedO
ffset) const override; |
385 virtual void absoluteQuads(Vector<FloatQuad>&, bool* wasFixed) const overrid
e; | 385 virtual void absoluteQuads(Vector<FloatQuad>&, bool* wasFixed) const overrid
e; |
386 | 386 |
387 LayoutUnit desiredColumnWidth() const; | 387 LayoutUnit desiredColumnWidth() const; |
388 | 388 |
389 private: | 389 private: |
390 virtual LayoutRect localCaretRect(InlineBox*, int caretOffset, LayoutUnit* e
xtraWidthToEndOfLine = 0) override final; | 390 virtual LayoutRect localCaretRect(InlineBox*, int caretOffset, LayoutUnit* e
xtraWidthToEndOfLine = 0) override final; |
391 bool isInlineBoxWrapperActuallyChild() const; | 391 bool isInlineBoxWrapperActuallyChild() const; |
392 | 392 |
393 void adjustPointToColumnContents(LayoutPoint&) const; | 393 void adjustPointToColumnContents(LayoutPoint&) const; |
394 | 394 |
395 void markLinesDirtyInBlockRange(LayoutUnit logicalTop, LayoutUnit logicalBot
tom, RootInlineBox* highest = 0); | 395 void markLinesDirtyInBlockRange(LayoutUnit logicalTop, LayoutUnit logicalBot
tom, RootInlineBox* highest = 0); |
396 | 396 |
397 Position positionForBox(InlineBox*, bool start = true) const; | 397 Position positionForBox(InlineBox*, bool start = true) const; |
398 PositionWithAffinity positionForPointWithInlineChildren(const LayoutPoint&); | 398 PositionWithAffinity positionForPointWithInlineChildren(const LayoutPoint&); |
399 | 399 |
400 void calcColumnWidth(); | 400 void calcColumnWidth(); |
401 void makeChildrenAnonymousColumnBlocks(RenderObject* beforeChild, RenderBloc
kFlow* newBlockBox, RenderObject* newChild); | 401 void makeChildrenAnonymousColumnBlocks(LayoutObject* beforeChild, RenderBloc
kFlow* newBlockBox, LayoutObject* newChild); |
402 | 402 |
403 void splitBlocks(RenderBlock* fromBlock, RenderBlock* toBlock, RenderBlock*
middleBlock, | 403 void splitBlocks(RenderBlock* fromBlock, RenderBlock* toBlock, RenderBlock*
middleBlock, |
404 RenderObject* beforeChild, RenderBoxModelObject* oldCont); | 404 LayoutObject* beforeChild, RenderBoxModelObject* oldCont); |
405 void splitFlow(RenderObject* beforeChild, RenderBlock* newBlockBox, | 405 void splitFlow(LayoutObject* beforeChild, RenderBlock* newBlockBox, |
406 RenderObject* newChild, RenderBoxModelObject* oldCont); | 406 LayoutObject* newChild, RenderBoxModelObject* oldCont); |
407 RenderBlock* clone() const; | 407 RenderBlock* clone() const; |
408 RenderBlock* continuationBefore(RenderObject* beforeChild); | 408 RenderBlock* continuationBefore(LayoutObject* beforeChild); |
409 RenderBlockFlow* containingColumnsBlock(bool allowAnonymousColumnBlock = tru
e); | 409 RenderBlockFlow* containingColumnsBlock(bool allowAnonymousColumnBlock = tru
e); |
410 RenderBlockFlow* columnsBlockForSpanningElement(RenderObject* newChild); | 410 RenderBlockFlow* columnsBlockForSpanningElement(LayoutObject* newChild); |
411 | 411 |
412 // End helper functions and structs used by layoutBlockChildren. | 412 // End helper functions and structs used by layoutBlockChildren. |
413 | 413 |
414 void removeFromGlobalMaps(); | 414 void removeFromGlobalMaps(); |
415 bool widthAvailableToChildrenHasChanged(); | 415 bool widthAvailableToChildrenHasChanged(); |
416 | 416 |
417 protected: | 417 protected: |
418 // Returns the logicalOffset at the top of the next page. If the offset pass
ed in is already at the top of the current page, | 418 // Returns the logicalOffset at the top of the next page. If the offset pass
ed in is already at the top of the current page, |
419 // then nextPageLogicalTop with ExcludePageBoundary will still move to the t
op of the next page. nextPageLogicalTop with | 419 // then nextPageLogicalTop with ExcludePageBoundary will still move to the t
op of the next page. nextPageLogicalTop with |
420 // IncludePageBoundary set will not. | 420 // IncludePageBoundary set will not. |
(...skipping 23 matching lines...) Expand all Loading... |
444 bool requiresColumns(int desiredColumnCount) const; | 444 bool requiresColumns(int desiredColumnCount) const; |
445 | 445 |
446 virtual bool updateLogicalWidthAndColumnWidth(); | 446 virtual bool updateLogicalWidthAndColumnWidth(); |
447 | 447 |
448 virtual bool canCollapseAnonymousBlockChild() const { return true; } | 448 virtual bool canCollapseAnonymousBlockChild() const { return true; } |
449 | 449 |
450 public: | 450 public: |
451 virtual LayoutUnit offsetFromLogicalTopOfFirstPage() const override final; | 451 virtual LayoutUnit offsetFromLogicalTopOfFirstPage() const override final; |
452 | 452 |
453 protected: | 453 protected: |
454 RenderObjectChildList m_children; | 454 LayoutObjectChildList m_children; |
455 RenderLineBoxList m_lineBoxes; // All of the root line boxes created for t
his block flow. For example, <div>Hello<br>world.</div> will have two total lin
es for the <div>. | 455 RenderLineBoxList m_lineBoxes; // All of the root line boxes created for t
his block flow. For example, <div>Hello<br>world.</div> will have two total lin
es for the <div>. |
456 | 456 |
457 LayoutUnit m_pageLogicalOffset; | 457 LayoutUnit m_pageLogicalOffset; |
458 | 458 |
459 unsigned m_hasMarginBeforeQuirk : 1; // Note these quirk values can't be put
in RenderBlockRareData since they are set too frequently. | 459 unsigned m_hasMarginBeforeQuirk : 1; // Note these quirk values can't be put
in RenderBlockRareData since they are set too frequently. |
460 unsigned m_hasMarginAfterQuirk : 1; | 460 unsigned m_hasMarginAfterQuirk : 1; |
461 unsigned m_beingDestroyed : 1; | 461 unsigned m_beingDestroyed : 1; |
462 unsigned m_hasMarkupTruncation : 1; | 462 unsigned m_hasMarkupTruncation : 1; |
463 unsigned m_widthAvailableToChildrenChanged : 1; | 463 unsigned m_widthAvailableToChildrenChanged : 1; |
464 mutable unsigned m_hasOnlySelfCollapsingChildren : 1; | 464 mutable unsigned m_hasOnlySelfCollapsingChildren : 1; |
465 mutable unsigned m_descendantsWithFloatsMarkedForLayout : 1; | 465 mutable unsigned m_descendantsWithFloatsMarkedForLayout : 1; |
466 | 466 |
467 // LayoutRubyBase objects need to be able to split and merge, moving their c
hildren around | 467 // LayoutRubyBase objects need to be able to split and merge, moving their c
hildren around |
468 // (calling moveChildTo, moveAllChildrenTo, and makeChildrenNonInline). | 468 // (calling moveChildTo, moveAllChildrenTo, and makeChildrenNonInline). |
469 friend class LayoutRubyBase; | 469 friend class LayoutRubyBase; |
470 // FIXME-BLOCKFLOW: Remove this when the line layout stuff has all moved out
of RenderBlock | 470 // FIXME-BLOCKFLOW: Remove this when the line layout stuff has all moved out
of RenderBlock |
471 friend class LineBreaker; | 471 friend class LineBreaker; |
472 | 472 |
473 // FIXME: This is temporary as we move code that accesses block flow | 473 // FIXME: This is temporary as we move code that accesses block flow |
474 // member variables out of RenderBlock and into RenderBlockFlow. | 474 // member variables out of RenderBlock and into RenderBlockFlow. |
475 friend class RenderBlockFlow; | 475 friend class RenderBlockFlow; |
476 }; | 476 }; |
477 | 477 |
478 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderBlock, isRenderBlock()); | 478 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(RenderBlock, isRenderBlock()); |
479 | 479 |
480 } // namespace blink | 480 } // namespace blink |
481 | 481 |
482 #endif // RenderBlock_h | 482 #endif // RenderBlock_h |
OLD | NEW |