| 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 fragmentainer_space_available_(NGSizeIndefinite), | 15 fragmentainer_space_available_(NGSizeIndefinite), |
| 16 writing_mode_(parent_space->WritingMode()), | 16 writing_mode_(parent_space->WritingMode()), |
| 17 parent_writing_mode_(writing_mode_), | 17 parent_writing_mode_(writing_mode_), |
| 18 is_fixed_size_inline_(false), | 18 is_fixed_size_inline_(false), |
| 19 is_fixed_size_block_(false), | 19 is_fixed_size_block_(false), |
| 20 is_shrink_to_fit_(false), | 20 is_shrink_to_fit_(false), |
| 21 is_inline_direction_triggers_scrollbar_(false), | 21 is_inline_direction_triggers_scrollbar_(false), |
| 22 is_block_direction_triggers_scrollbar_(false), | 22 is_block_direction_triggers_scrollbar_(false), |
| 23 fragmentation_type_(parent_space->BlockFragmentationType()), | 23 fragmentation_type_(parent_space->BlockFragmentationType()), |
| 24 is_new_fc_(parent_space->IsNewFormattingContext()), | 24 is_new_fc_(parent_space->IsNewFormattingContext()), |
| 25 text_direction_(static_cast<unsigned>(parent_space->Direction())), | 25 text_direction_(static_cast<unsigned>(parent_space->Direction())), |
| 26 bfc_offset_(parent_space->bfc_offset_), |
| 26 exclusions_(parent_space->Exclusions()) {} | 27 exclusions_(parent_space->Exclusions()) {} |
| 27 | 28 |
| 28 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode) | 29 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode) |
| 29 : fragmentainer_space_available_(NGSizeIndefinite), | 30 : fragmentainer_space_available_(NGSizeIndefinite), |
| 30 writing_mode_(writing_mode), | 31 writing_mode_(writing_mode), |
| 31 parent_writing_mode_(writing_mode_), | 32 parent_writing_mode_(writing_mode_), |
| 32 is_fixed_size_inline_(false), | 33 is_fixed_size_inline_(false), |
| 33 is_fixed_size_block_(false), | 34 is_fixed_size_block_(false), |
| 34 is_shrink_to_fit_(false), | 35 is_shrink_to_fit_(false), |
| 35 is_inline_direction_triggers_scrollbar_(false), | 36 is_inline_direction_triggers_scrollbar_(false), |
| (...skipping 14 matching lines...) Expand all Loading... |
| 50 percentage_resolution_size_ = percentage_resolution_size; | 51 percentage_resolution_size_ = percentage_resolution_size; |
| 51 return *this; | 52 return *this; |
| 52 } | 53 } |
| 53 | 54 |
| 54 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetTextDirection( | 55 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetTextDirection( |
| 55 TextDirection text_direction) { | 56 TextDirection text_direction) { |
| 56 text_direction_ = static_cast<unsigned>(text_direction); | 57 text_direction_ = static_cast<unsigned>(text_direction); |
| 57 return *this; | 58 return *this; |
| 58 } | 59 } |
| 59 | 60 |
| 61 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetMarginStrut( |
| 62 const NGMarginStrut& margin_strut) { |
| 63 margin_strut_ = margin_strut; |
| 64 return *this; |
| 65 } |
| 66 |
| 60 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsFixedSizeInline( | 67 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsFixedSizeInline( |
| 61 bool is_fixed_size_inline) { | 68 bool is_fixed_size_inline) { |
| 62 is_fixed_size_inline_ = is_fixed_size_inline; | 69 is_fixed_size_inline_ = is_fixed_size_inline; |
| 63 return *this; | 70 return *this; |
| 64 } | 71 } |
| 65 | 72 |
| 66 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsFixedSizeBlock( | 73 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsFixedSizeBlock( |
| 67 bool is_fixed_size_block) { | 74 bool is_fixed_size_block) { |
| 68 is_fixed_size_block_ = is_fixed_size_block; | 75 is_fixed_size_block_ = is_fixed_size_block; |
| 69 return *this; | 76 return *this; |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 112 NGConstraintSpace* NGConstraintSpaceBuilder::ToConstraintSpace() { | 119 NGConstraintSpace* NGConstraintSpaceBuilder::ToConstraintSpace() { |
| 113 // Exclusions do not pass the formatting context boundary. | 120 // Exclusions do not pass the formatting context boundary. |
| 114 std::shared_ptr<NGExclusions> exclusions( | 121 std::shared_ptr<NGExclusions> exclusions( |
| 115 is_new_fc_ ? std::make_shared<NGExclusions>() : exclusions_); | 122 is_new_fc_ ? std::make_shared<NGExclusions>() : exclusions_); |
| 116 | 123 |
| 117 // Whether the child and the containing block are parallel to each other. | 124 // Whether the child and the containing block are parallel to each other. |
| 118 // Example: vertical-rl and vertical-lr | 125 // Example: vertical-rl and vertical-lr |
| 119 bool is_in_parallel_flow = (parent_writing_mode_ == kHorizontalTopBottom) == | 126 bool is_in_parallel_flow = (parent_writing_mode_ == kHorizontalTopBottom) == |
| 120 (writing_mode_ == kHorizontalTopBottom); | 127 (writing_mode_ == kHorizontalTopBottom); |
| 121 | 128 |
| 129 NGMarginStrut margin_strut = is_new_fc_ ? NGMarginStrut() : margin_strut_; |
| 130 NGLogicalOffset bfc_offset = is_new_fc_ ? NGLogicalOffset() : bfc_offset_; |
| 131 |
| 122 if (is_in_parallel_flow) { | 132 if (is_in_parallel_flow) { |
| 123 return new NGConstraintSpace( | 133 return new NGConstraintSpace( |
| 124 static_cast<NGWritingMode>(writing_mode_), | 134 static_cast<NGWritingMode>(writing_mode_), |
| 125 static_cast<TextDirection>(text_direction_), | 135 static_cast<TextDirection>(text_direction_), |
| 126 {available_size_.inline_size, available_size_.block_size}, | 136 {available_size_.inline_size, available_size_.block_size}, |
| 127 {percentage_resolution_size_.inline_size, | 137 {percentage_resolution_size_.inline_size, |
| 128 percentage_resolution_size_.block_size}, | 138 percentage_resolution_size_.block_size}, |
| 129 fragmentainer_space_available_, is_fixed_size_inline_, | 139 fragmentainer_space_available_, is_fixed_size_inline_, |
| 130 is_fixed_size_block_, is_shrink_to_fit_, | 140 is_fixed_size_block_, is_shrink_to_fit_, |
| 131 is_inline_direction_triggers_scrollbar_, | 141 is_inline_direction_triggers_scrollbar_, |
| 132 is_block_direction_triggers_scrollbar_, | 142 is_block_direction_triggers_scrollbar_, |
| 133 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, | 143 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, |
| 134 exclusions); | 144 margin_strut, bfc_offset, exclusions); |
| 135 } | 145 } |
| 136 | 146 |
| 137 return new NGConstraintSpace( | 147 return new NGConstraintSpace( |
| 138 static_cast<NGWritingMode>(writing_mode_), | 148 static_cast<NGWritingMode>(writing_mode_), |
| 139 static_cast<TextDirection>(text_direction_), | 149 static_cast<TextDirection>(text_direction_), |
| 140 {available_size_.block_size, available_size_.inline_size}, | 150 {available_size_.block_size, available_size_.inline_size}, |
| 141 {percentage_resolution_size_.block_size, | 151 {percentage_resolution_size_.block_size, |
| 142 percentage_resolution_size_.inline_size}, | 152 percentage_resolution_size_.inline_size}, |
| 143 fragmentainer_space_available_, is_fixed_size_block_, | 153 fragmentainer_space_available_, is_fixed_size_block_, |
| 144 is_fixed_size_inline_, is_shrink_to_fit_, | 154 is_fixed_size_inline_, is_shrink_to_fit_, |
| 145 is_block_direction_triggers_scrollbar_, | 155 is_block_direction_triggers_scrollbar_, |
| 146 is_inline_direction_triggers_scrollbar_, | 156 is_inline_direction_triggers_scrollbar_, |
| 147 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, | 157 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, |
| 148 exclusions); | 158 margin_strut, bfc_offset, exclusions); |
| 149 } | 159 } |
| 150 | 160 |
| 151 } // namespace blink | 161 } // namespace blink |
| OLD | NEW |