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 #include "core/layout/ng/ng_constraint_space_builder.h" | 5 #include "core/layout/ng/ng_constraint_space_builder.h" |
6 | 6 |
7 #include "core/layout/ng/ng_length_utils.h" | 7 #include "core/layout/ng/ng_length_utils.h" |
8 | 8 |
9 namespace blink { | 9 namespace blink { |
10 | 10 |
11 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder( | 11 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder( |
12 const NGConstraintSpace* parent_space) | 12 const NGConstraintSpace* parent_space) |
13 : available_size_(parent_space->AvailableSize()), | 13 : available_size_(parent_space->AvailableSize()), |
14 percentage_resolution_size_(parent_space->PercentageResolutionSize()), | 14 percentage_resolution_size_(parent_space->PercentageResolutionSize()), |
15 initial_containing_block_size_( | 15 initial_containing_block_size_( |
16 parent_space->InitialContainingBlockSize()), | 16 parent_space->InitialContainingBlockSize()), |
17 fragmentainer_space_available_(NGSizeIndefinite), | 17 fragmentainer_space_available_(NGSizeIndefinite), |
18 parent_writing_mode_(parent_space->WritingMode()), | 18 parent_writing_mode_(parent_space->WritingMode()), |
19 is_fixed_size_inline_(false), | 19 is_fixed_size_inline_(false), |
20 is_fixed_size_block_(false), | 20 is_fixed_size_block_(false), |
21 is_shrink_to_fit_(false), | 21 is_shrink_to_fit_(false), |
22 is_inline_direction_triggers_scrollbar_(false), | 22 is_inline_direction_triggers_scrollbar_(false), |
23 is_block_direction_triggers_scrollbar_(false), | 23 is_block_direction_triggers_scrollbar_(false), |
24 fragmentation_type_(parent_space->BlockFragmentationType()), | 24 fragmentation_type_(parent_space->BlockFragmentationType()), |
25 is_new_fc_(parent_space->IsNewFormattingContext()), | 25 is_new_fc_(false), |
26 is_parent_new_fc_(parent_space->IsNewFormattingContext()), | |
26 is_anonymous_(false), | 27 is_anonymous_(false), |
27 text_direction_(static_cast<unsigned>(parent_space->Direction())), | 28 text_direction_(static_cast<unsigned>(parent_space->Direction())), |
28 bfc_offset_(parent_space->bfc_offset_), | 29 bfc_offset_(parent_space->bfc_offset_), |
29 exclusions_(parent_space->Exclusions()) {} | 30 exclusions_(parent_space->Exclusions()) {} |
30 | 31 |
31 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode) | 32 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode) |
32 : initial_containing_block_size_{NGSizeIndefinite, NGSizeIndefinite}, | 33 : initial_containing_block_size_{NGSizeIndefinite, NGSizeIndefinite}, |
33 fragmentainer_space_available_(NGSizeIndefinite), | 34 fragmentainer_space_available_(NGSizeIndefinite), |
34 parent_writing_mode_(writing_mode), | 35 parent_writing_mode_(writing_mode), |
35 is_fixed_size_inline_(false), | 36 is_fixed_size_inline_(false), |
36 is_fixed_size_block_(false), | 37 is_fixed_size_block_(false), |
37 is_shrink_to_fit_(false), | 38 is_shrink_to_fit_(false), |
38 is_inline_direction_triggers_scrollbar_(false), | 39 is_inline_direction_triggers_scrollbar_(false), |
39 is_block_direction_triggers_scrollbar_(false), | 40 is_block_direction_triggers_scrollbar_(false), |
40 fragmentation_type_(kFragmentNone), | 41 fragmentation_type_(kFragmentNone), |
41 is_new_fc_(false), | 42 is_new_fc_(false), |
43 is_parent_new_fc_(false), | |
42 is_anonymous_(false), | 44 is_anonymous_(false), |
43 text_direction_(static_cast<unsigned>(TextDirection::kLtr)), | 45 text_direction_(static_cast<unsigned>(TextDirection::kLtr)), |
44 exclusions_(new NGExclusions()) {} | 46 exclusions_(new NGExclusions()) {} |
45 | 47 |
46 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetAvailableSize( | 48 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetAvailableSize( |
47 NGLogicalSize available_size) { | 49 NGLogicalSize available_size) { |
48 available_size_ = available_size; | 50 available_size_ = available_size; |
49 return *this; | 51 return *this; |
50 } | 52 } |
51 | 53 |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
168 percentage_resolution_size.inline_size = | 170 percentage_resolution_size.inline_size = |
169 initial_containing_block_size_.width; | 171 initial_containing_block_size_.width; |
170 } else { | 172 } else { |
171 percentage_resolution_size.inline_size = | 173 percentage_resolution_size.inline_size = |
172 initial_containing_block_size_.height; | 174 initial_containing_block_size_.height; |
173 } | 175 } |
174 } | 176 } |
175 | 177 |
176 // Reset things that do not pass the Formatting Context boundary. | 178 // Reset things that do not pass the Formatting Context boundary. |
177 std::shared_ptr<NGExclusions> exclusions( | 179 std::shared_ptr<NGExclusions> exclusions( |
178 is_new_fc_ ? std::make_shared<NGExclusions>() : exclusions_); | 180 is_parent_new_fc_ ? std::make_shared<NGExclusions>() : exclusions_); |
ikilpatrick
2017/03/23 16:39:59
yeah i'm not sure that I understand this, exclusio
Gleb Lanbin
2017/03/24 20:10:05
updated based on the offline discussion.
| |
179 NGLogicalOffset bfc_offset = is_new_fc_ ? NGLogicalOffset() : bfc_offset_; | |
180 NGMarginStrut margin_strut = is_new_fc_ ? NGMarginStrut() : margin_strut_; | 181 NGMarginStrut margin_strut = is_new_fc_ ? NGMarginStrut() : margin_strut_; |
181 WTF::Optional<LayoutUnit> clearance_offset = | 182 WTF::Optional<LayoutUnit> clearance_offset = |
182 is_new_fc_ ? WTF::nullopt : clearance_offset_; | 183 is_new_fc_ ? WTF::nullopt : clearance_offset_; |
183 | 184 |
184 if (is_in_parallel_flow) { | 185 if (is_in_parallel_flow) { |
185 return adoptRef(new NGConstraintSpace( | 186 return adoptRef(new NGConstraintSpace( |
186 static_cast<NGWritingMode>(out_writing_mode), | 187 static_cast<NGWritingMode>(out_writing_mode), |
187 static_cast<TextDirection>(text_direction_), available_size, | 188 static_cast<TextDirection>(text_direction_), available_size, |
188 percentage_resolution_size, initial_containing_block_size_, | 189 percentage_resolution_size, initial_containing_block_size_, |
189 fragmentainer_space_available_, is_fixed_size_inline_, | 190 fragmentainer_space_available_, is_fixed_size_inline_, |
190 is_fixed_size_block_, is_shrink_to_fit_, | 191 is_fixed_size_block_, is_shrink_to_fit_, |
191 is_inline_direction_triggers_scrollbar_, | 192 is_inline_direction_triggers_scrollbar_, |
192 is_block_direction_triggers_scrollbar_, | 193 is_block_direction_triggers_scrollbar_, |
193 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, | 194 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, |
194 is_anonymous_, margin_strut, bfc_offset, exclusions, clearance_offset)); | 195 is_anonymous_, margin_strut, bfc_offset_, exclusions, |
196 clearance_offset)); | |
195 } | 197 } |
196 return adoptRef(new NGConstraintSpace( | 198 return adoptRef(new NGConstraintSpace( |
197 out_writing_mode, static_cast<TextDirection>(text_direction_), | 199 out_writing_mode, static_cast<TextDirection>(text_direction_), |
198 available_size, percentage_resolution_size, | 200 available_size, percentage_resolution_size, |
199 initial_containing_block_size_, fragmentainer_space_available_, | 201 initial_containing_block_size_, fragmentainer_space_available_, |
200 is_fixed_size_block_, is_fixed_size_inline_, is_shrink_to_fit_, | 202 is_fixed_size_block_, is_fixed_size_inline_, is_shrink_to_fit_, |
201 is_block_direction_triggers_scrollbar_, | 203 is_block_direction_triggers_scrollbar_, |
202 is_inline_direction_triggers_scrollbar_, | 204 is_inline_direction_triggers_scrollbar_, |
203 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, | 205 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, |
204 is_anonymous_, margin_strut, bfc_offset, exclusions, clearance_offset)); | 206 is_anonymous_, margin_strut, bfc_offset_, exclusions, clearance_offset)); |
205 } | 207 } |
206 | 208 |
207 } // namespace blink | 209 } // namespace blink |
OLD | NEW |