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-2013 Apple Inc. All rights reserved. | 5 * Copyright (C) 2003-2013 Apple Inc. All rights reserved. |
6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
7 * Copyright (C) 2013 Google Inc. All rights reserved. | 7 * Copyright (C) 2013 Google Inc. All rights reserved. |
8 * | 8 * |
9 * Redistribution and use in source and binary forms, with or without | 9 * Redistribution and use in source and binary forms, with or without |
10 * modification, are permitted provided that the following conditions are | 10 * modification, are permitted provided that the following conditions are |
(...skipping 21 matching lines...) Expand all Loading... |
32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
34 */ | 34 */ |
35 | 35 |
36 #ifndef LayoutBlockFlow_h | 36 #ifndef LayoutBlockFlow_h |
37 #define LayoutBlockFlow_h | 37 #define LayoutBlockFlow_h |
38 | 38 |
39 #include "core/CoreExport.h" | 39 #include "core/CoreExport.h" |
40 #include "core/layout/FloatingObjects.h" | 40 #include "core/layout/FloatingObjects.h" |
41 #include "core/layout/LayoutBlock.h" | 41 #include "core/layout/LayoutBlock.h" |
| 42 #include "core/layout/api/LineLayoutItem.h" |
| 43 #include "core/layout/line/LineBoxList.h" |
| 44 #include "core/layout/line/RootInlineBox.h" |
42 #include "core/layout/line/TrailingObjects.h" | 45 #include "core/layout/line/TrailingObjects.h" |
43 #include "core/style/ComputedStyleConstants.h" | 46 #include "core/style/ComputedStyleConstants.h" |
44 | 47 |
45 namespace blink { | 48 namespace blink { |
46 | 49 |
47 class BlockChildrenLayoutInfo; | 50 class BlockChildrenLayoutInfo; |
48 class ClipScope; | 51 class ClipScope; |
49 class MarginInfo; | 52 class MarginInfo; |
50 class LineBreaker; | 53 class LineBreaker; |
51 class LineInfo; | 54 class LineInfo; |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 { | 120 { |
118 return style()->isLeftToRightDirection() ? logicalLeftOffsetForLine(posi
tion, indentText, logicalHeight) | 121 return style()->isLeftToRightDirection() ? logicalLeftOffsetForLine(posi
tion, indentText, logicalHeight) |
119 : logicalWidth() - logicalRightOffsetForLine(position, indentText, l
ogicalHeight); | 122 : logicalWidth() - logicalRightOffsetForLine(position, indentText, l
ogicalHeight); |
120 } | 123 } |
121 LayoutUnit endOffsetForLine(LayoutUnit position, IndentTextOrNot indentText,
LayoutUnit logicalHeight = LayoutUnit()) const | 124 LayoutUnit endOffsetForLine(LayoutUnit position, IndentTextOrNot indentText,
LayoutUnit logicalHeight = LayoutUnit()) const |
122 { | 125 { |
123 return !style()->isLeftToRightDirection() ? logicalLeftOffsetForLine(pos
ition, indentText, logicalHeight) | 126 return !style()->isLeftToRightDirection() ? logicalLeftOffsetForLine(pos
ition, indentText, logicalHeight) |
124 : logicalWidth() - logicalRightOffsetForLine(position, indentText, l
ogicalHeight); | 127 : logicalWidth() - logicalRightOffsetForLine(position, indentText, l
ogicalHeight); |
125 } | 128 } |
126 | 129 |
127 // FIXME-BLOCKFLOW: Move this into LayoutBlockFlow once there are no calls | 130 const LineBoxList& lineBoxes() const { return m_lineBoxes; } |
128 // in LayoutBlock. http://crbug.com/393945, http://crbug.com/302024 | 131 LineBoxList* lineBoxes() { return &m_lineBoxes; } |
129 using LayoutBlock::lineBoxes; | 132 InlineFlowBox* firstLineBox() const { return m_lineBoxes.firstLineBox(); } |
130 using LayoutBlock::firstLineBox; | 133 InlineFlowBox* lastLineBox() const { return m_lineBoxes.lastLineBox(); } |
131 using LayoutBlock::lastLineBox; | 134 RootInlineBox* firstRootBox() const { return static_cast<RootInlineBox*>(fir
stLineBox()); } |
132 using LayoutBlock::firstRootBox; | 135 RootInlineBox* lastRootBox() const { return static_cast<RootInlineBox*>(last
LineBox()); } |
133 using LayoutBlock::lastRootBox; | |
134 | 136 |
135 LayoutUnit logicalLeftSelectionOffset(const LayoutBlock* rootBlock, LayoutUn
it position) const override; | 137 LayoutUnit logicalLeftSelectionOffset(const LayoutBlock* rootBlock, LayoutUn
it position) const override; |
136 LayoutUnit logicalRightSelectionOffset(const LayoutBlock* rootBlock, LayoutU
nit position) const override; | 138 LayoutUnit logicalRightSelectionOffset(const LayoutBlock* rootBlock, LayoutU
nit position) const override; |
137 | 139 |
138 RootInlineBox* createAndAppendRootInlineBox(); | 140 RootInlineBox* createAndAppendRootInlineBox(); |
139 | 141 |
140 // Return the number of lines in *this* block flow. Does not recurse into bl
ock flow children. | 142 // Return the number of lines in *this* block flow. Does not recurse into bl
ock flow children. |
141 // Will start counting from the first line, and stop counting right after |s
topRootInlineBox|, | 143 // Will start counting from the first line, and stop counting right after |s
topRootInlineBox|, |
142 // if specified. | 144 // if specified. |
143 int lineCount(const RootInlineBox* stopRootInlineBox = nullptr) const; | 145 int lineCount(const RootInlineBox* stopRootInlineBox = nullptr) const; |
(...skipping 457 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
601 | 603 |
602 LayoutUnit adjustBlockChildForPagination(LayoutUnit logicalTop, LayoutBox& c
hild, BlockChildrenLayoutInfo&, bool atBeforeSideOfBlock); | 604 LayoutUnit adjustBlockChildForPagination(LayoutUnit logicalTop, LayoutBox& c
hild, BlockChildrenLayoutInfo&, bool atBeforeSideOfBlock); |
603 // Computes a deltaOffset value that put a line at the top of the next page
if it doesn't fit on the current page. | 605 // Computes a deltaOffset value that put a line at the top of the next page
if it doesn't fit on the current page. |
604 void adjustLinePositionForPagination(RootInlineBox&, LayoutUnit& deltaOffset
); | 606 void adjustLinePositionForPagination(RootInlineBox&, LayoutUnit& deltaOffset
); |
605 // If the child is unsplittable and can't fit on the current page, return th
e top of the next page/column. | 607 // If the child is unsplittable and can't fit on the current page, return th
e top of the next page/column. |
606 LayoutUnit adjustForUnsplittableChild(LayoutBox&, LayoutUnit logicalOffset)
const; | 608 LayoutUnit adjustForUnsplittableChild(LayoutBox&, LayoutUnit logicalOffset)
const; |
607 | 609 |
608 // Used to store state between styleWillChange and styleDidChange | 610 // Used to store state between styleWillChange and styleDidChange |
609 static bool s_canPropagateFloatIntoSibling; | 611 static bool s_canPropagateFloatIntoSibling; |
610 | 612 |
| 613 LineBoxList m_lineBoxes; // All of the root line boxes created for this bloc
k flow. For example, <div>Hello<br>world.</div> will have two total lines for t
he <div>. |
| 614 |
611 LayoutBlockFlowRareData& ensureRareData(); | 615 LayoutBlockFlowRareData& ensureRareData(); |
612 | 616 |
613 LayoutUnit m_paintInvalidationLogicalTop; | 617 LayoutUnit m_paintInvalidationLogicalTop; |
614 LayoutUnit m_paintInvalidationLogicalBottom; | 618 LayoutUnit m_paintInvalidationLogicalBottom; |
615 | 619 |
616 bool isSelfCollapsingBlock() const override; | 620 bool isSelfCollapsingBlock() const override; |
617 bool checkIfIsSelfCollapsingBlock() const; | 621 bool checkIfIsSelfCollapsingBlock() const; |
618 | 622 |
619 protected: | 623 protected: |
620 OwnPtr<LayoutBlockFlowRareData> m_rareData; | 624 OwnPtr<LayoutBlockFlowRareData> m_rareData; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
664 | 668 |
665 // END METHODS DEFINED IN LayoutBlockFlowLine | 669 // END METHODS DEFINED IN LayoutBlockFlowLine |
666 | 670 |
667 }; | 671 }; |
668 | 672 |
669 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutBlockFlow, isLayoutBlockFlow()); | 673 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(LayoutBlockFlow, isLayoutBlockFlow()); |
670 | 674 |
671 } // namespace blink | 675 } // namespace blink |
672 | 676 |
673 #endif // LayoutBlockFlow_h | 677 #endif // LayoutBlockFlow_h |
OLD | NEW |