Chromium Code Reviews| 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 |