OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 NGFragmentBuilder_h | 5 #ifndef NGFragmentBuilder_h |
6 #define NGFragmentBuilder_h | 6 #define NGFragmentBuilder_h |
7 | 7 |
8 #include "core/layout/ng/ng_break_token.h" | 8 #include "core/layout/ng/ng_break_token.h" |
9 #include "core/layout/ng/ng_constraint_space.h" | 9 #include "core/layout/ng/ng_constraint_space.h" |
10 #include "core/layout/ng/ng_floating_object.h" | 10 #include "core/layout/ng/ng_floating_object.h" |
11 #include "core/layout/ng/ng_physical_fragment.h" | 11 #include "core/layout/ng/ng_physical_fragment.h" |
12 #include "core/layout/ng/ng_units.h" | 12 #include "core/layout/ng/ng_units.h" |
13 | 13 |
14 namespace blink { | 14 namespace blink { |
15 | 15 |
16 class NGInlineNode; | |
17 class NGPhysicalBoxFragment; | 16 class NGPhysicalBoxFragment; |
18 class NGPhysicalTextFragment; | 17 class NGPhysicalTextFragment; |
19 | 18 |
20 class CORE_EXPORT NGFragmentBuilder final { | 19 class CORE_EXPORT NGFragmentBuilder final { |
21 public: | 20 public: |
22 NGFragmentBuilder(NGPhysicalFragment::NGFragmentType, LayoutObject*); | 21 NGFragmentBuilder(NGPhysicalFragment::NGFragmentType, NGLayoutInputNode*); |
23 | 22 |
24 using WeakBoxList = PersistentHeapLinkedHashSet<WeakMember<NGBlockNode>>; | 23 using WeakBoxList = PersistentHeapLinkedHashSet<WeakMember<NGBlockNode>>; |
25 | 24 |
26 NGFragmentBuilder& SetWritingMode(NGWritingMode); | 25 NGFragmentBuilder& SetWritingMode(NGWritingMode); |
27 NGFragmentBuilder& SetDirection(TextDirection); | 26 NGFragmentBuilder& SetDirection(TextDirection); |
28 | 27 |
29 NGFragmentBuilder& SetInlineSize(LayoutUnit); | 28 NGFragmentBuilder& SetInlineSize(LayoutUnit); |
30 NGFragmentBuilder& SetBlockSize(LayoutUnit); | 29 NGFragmentBuilder& SetBlockSize(LayoutUnit); |
31 NGLogicalSize Size() const { return size_; } | 30 NGLogicalSize Size() const { return size_; } |
32 | 31 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 NGFragmentBuilder& SetEndMarginStrut(const NGMarginStrut& from) { | 83 NGFragmentBuilder& SetEndMarginStrut(const NGMarginStrut& from) { |
85 end_margin_strut_ = from; | 84 end_margin_strut_ = from; |
86 return *this; | 85 return *this; |
87 } | 86 } |
88 | 87 |
89 // Offsets are not supposed to be set during fragment construction, so we | 88 // Offsets are not supposed to be set during fragment construction, so we |
90 // do not provide a setter here. | 89 // do not provide a setter here. |
91 | 90 |
92 // Creates the fragment. Can only be called once. | 91 // Creates the fragment. Can only be called once. |
93 RefPtr<NGPhysicalBoxFragment> ToBoxFragment(); | 92 RefPtr<NGPhysicalBoxFragment> ToBoxFragment(); |
94 RefPtr<NGPhysicalTextFragment> ToTextFragment(NGInlineNode*, | 93 RefPtr<NGPhysicalTextFragment> ToTextFragment(unsigned index, |
95 unsigned index, | |
96 unsigned start_offset, | 94 unsigned start_offset, |
97 unsigned end_offset); | 95 unsigned end_offset); |
98 | 96 |
99 // Mutable list of floats that need to be positioned. | 97 // Mutable list of floats that need to be positioned. |
100 Vector<Persistent<NGFloatingObject>>& MutableUnpositionedFloats() { | 98 Vector<Persistent<NGFloatingObject>>& MutableUnpositionedFloats() { |
101 return unpositioned_floats_; | 99 return unpositioned_floats_; |
102 } | 100 } |
103 | 101 |
104 // List of floats that need to be positioned. | 102 // List of floats that need to be positioned. |
105 const Vector<Persistent<NGFloatingObject>>& UnpositionedFloats() const { | 103 const Vector<Persistent<NGFloatingObject>>& UnpositionedFloats() const { |
(...skipping 20 matching lines...) Expand all Loading... |
126 // be computed until we know fragment's size. | 124 // be computed until we know fragment's size. |
127 struct OutOfFlowPlacement { | 125 struct OutOfFlowPlacement { |
128 NGLogicalOffset child_offset; | 126 NGLogicalOffset child_offset; |
129 NGStaticPosition descendant_position; | 127 NGStaticPosition descendant_position; |
130 }; | 128 }; |
131 | 129 |
132 NGPhysicalFragment::NGFragmentType type_; | 130 NGPhysicalFragment::NGFragmentType type_; |
133 NGWritingMode writing_mode_; | 131 NGWritingMode writing_mode_; |
134 TextDirection direction_; | 132 TextDirection direction_; |
135 | 133 |
136 LayoutObject* layout_object_; | 134 Persistent<NGLayoutInputNode> node_; |
137 | 135 |
138 NGLogicalSize size_; | 136 NGLogicalSize size_; |
139 NGLogicalSize overflow_; | 137 NGLogicalSize overflow_; |
140 | 138 |
141 Vector<RefPtr<NGPhysicalFragment>> children_; | 139 Vector<RefPtr<NGPhysicalFragment>> children_; |
142 Vector<NGLogicalOffset> offsets_; | 140 Vector<NGLogicalOffset> offsets_; |
143 | 141 |
144 WeakBoxList out_of_flow_descendant_candidates_; | 142 WeakBoxList out_of_flow_descendant_candidates_; |
145 Vector<OutOfFlowPlacement> out_of_flow_candidate_placements_; | 143 Vector<OutOfFlowPlacement> out_of_flow_candidate_placements_; |
146 | 144 |
147 WeakBoxList out_of_flow_descendants_; | 145 WeakBoxList out_of_flow_descendants_; |
148 Vector<NGStaticPosition> out_of_flow_positions_; | 146 Vector<NGStaticPosition> out_of_flow_positions_; |
149 | 147 |
150 // Floats that need to be positioned by the next in-flow fragment that can | 148 // Floats that need to be positioned by the next in-flow fragment that can |
151 // determine its block position in space. | 149 // determine its block position in space. |
152 Vector<Persistent<NGFloatingObject>> unpositioned_floats_; | 150 Vector<Persistent<NGFloatingObject>> unpositioned_floats_; |
153 | 151 |
154 Vector<NGLogicalOffset> floating_object_offsets_; | 152 Vector<NGLogicalOffset> floating_object_offsets_; |
155 Vector<Persistent<NGFloatingObject>> positioned_floats_; | 153 Vector<Persistent<NGFloatingObject>> positioned_floats_; |
156 | 154 |
157 Persistent<NGBreakToken> break_token_; | 155 Persistent<NGBreakToken> break_token_; |
158 | 156 |
159 WTF::Optional<NGLogicalOffset> bfc_offset_; | 157 WTF::Optional<NGLogicalOffset> bfc_offset_; |
160 NGMarginStrut end_margin_strut_; | 158 NGMarginStrut end_margin_strut_; |
161 }; | 159 }; |
162 | 160 |
163 } // namespace blink | 161 } // namespace blink |
164 | 162 |
165 #endif // NGFragmentBuilder | 163 #endif // NGFragmentBuilder |
OLD | NEW |