| 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_fragment_builder.h" | 5 #include "core/layout/ng/ng_fragment_builder.h" |
| 6 | 6 |
| 7 #include "core/layout/ng/inline/ng_physical_text_fragment.h" | 7 #include "core/layout/ng/inline/ng_physical_text_fragment.h" |
| 8 #include "core/layout/ng/ng_block_break_token.h" | 8 #include "core/layout/ng/ng_block_break_token.h" |
| 9 #include "core/layout/ng/ng_block_node.h" | 9 #include "core/layout/ng/ng_block_node.h" |
| 10 #include "core/layout/ng/ng_break_token.h" | 10 #include "core/layout/ng/ng_break_token.h" |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 NOTREACHED(); | 102 NOTREACHED(); |
| 103 break; | 103 break; |
| 104 } | 104 } |
| 105 | 105 |
| 106 children_.push_back(std::move(child)); | 106 children_.push_back(std::move(child)); |
| 107 offsets_.push_back(child_offset); | 107 offsets_.push_back(child_offset); |
| 108 | 108 |
| 109 return *this; | 109 return *this; |
| 110 } | 110 } |
| 111 | 111 |
| 112 NGFragmentBuilder& NGFragmentBuilder::AddFloatingObject( | |
| 113 RefPtr<NGFloatingObject> floating_object, | |
| 114 const NGLogicalOffset& floating_object_offset) { | |
| 115 positioned_floats_.push_back(floating_object); | |
| 116 floating_object_offsets_.push_back(floating_object_offset); | |
| 117 return *this; | |
| 118 } | |
| 119 | |
| 120 NGFragmentBuilder& NGFragmentBuilder::SetBfcOffset( | 112 NGFragmentBuilder& NGFragmentBuilder::SetBfcOffset( |
| 121 const NGLogicalOffset& offset) { | 113 const NGLogicalOffset& offset) { |
| 122 bfc_offset_ = offset; | 114 bfc_offset_ = offset; |
| 123 return *this; | 115 return *this; |
| 124 } | 116 } |
| 125 | 117 |
| 126 NGFragmentBuilder& NGFragmentBuilder::AddOutOfFlowChildCandidate( | 118 NGFragmentBuilder& NGFragmentBuilder::AddOutOfFlowChildCandidate( |
| 127 NGBlockNode* child, | 119 NGBlockNode* child, |
| 128 NGLogicalOffset child_offset) { | 120 NGLogicalOffset child_offset) { |
| 129 out_of_flow_descendant_candidates_.insert(child); | 121 out_of_flow_descendant_candidates_.insert(child); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 197 child_break_tokens_.push_back(std::move(last_inline_break_token_)); | 189 child_break_tokens_.push_back(std::move(last_inline_break_token_)); |
| 198 did_break_ = true; | 190 did_break_ = true; |
| 199 } | 191 } |
| 200 if (did_break_) { | 192 if (did_break_) { |
| 201 break_token = NGBlockBreakToken::Create(node_.Get(), used_block_size_, | 193 break_token = NGBlockBreakToken::Create(node_.Get(), used_block_size_, |
| 202 child_break_tokens_); | 194 child_break_tokens_); |
| 203 } else { | 195 } else { |
| 204 break_token = NGBlockBreakToken::Create(node_.Get()); | 196 break_token = NGBlockBreakToken::Create(node_.Get()); |
| 205 } | 197 } |
| 206 | 198 |
| 207 for (size_t i = 0; i < positioned_floats_.size(); ++i) { | 199 for (auto& floating_object : positioned_floats_) { |
| 208 RefPtr<NGFloatingObject>& floating_object = positioned_floats_[i]; | 200 DCHECK(floating_object->logical_offset) |
| 201 << "logical_offset should be set for a positioned float."; |
| 209 NGPhysicalFragment* floating_fragment = floating_object->fragment.Get(); | 202 NGPhysicalFragment* floating_fragment = floating_object->fragment.Get(); |
| 210 floating_fragment->SetOffset(floating_object_offsets_[i].ConvertToPhysical( | 203 floating_fragment->SetOffset( |
| 211 writing_mode_, direction_, physical_size, floating_fragment->Size())); | 204 floating_object->logical_offset.value().ConvertToPhysical( |
| 205 writing_mode_, direction_, physical_size, |
| 206 floating_fragment->Size())); |
| 212 } | 207 } |
| 213 | 208 |
| 214 RefPtr<NGPhysicalBoxFragment> fragment = AdoptRef(new NGPhysicalBoxFragment( | 209 RefPtr<NGPhysicalBoxFragment> fragment = AdoptRef(new NGPhysicalBoxFragment( |
| 215 node_->GetLayoutObject(), physical_size, | 210 node_->GetLayoutObject(), physical_size, |
| 216 overflow_.ConvertToPhysical(writing_mode_), children_, positioned_floats_, | 211 overflow_.ConvertToPhysical(writing_mode_), children_, positioned_floats_, |
| 217 bfc_offset_, end_margin_strut_, std::move(break_token))); | 212 bfc_offset_, end_margin_strut_, std::move(break_token))); |
| 218 | 213 |
| 219 return AdoptRef( | 214 return AdoptRef( |
| 220 new NGLayoutResult(std::move(fragment), out_of_flow_descendants_, | 215 new NGLayoutResult(std::move(fragment), out_of_flow_descendants_, |
| 221 out_of_flow_positions_, unpositioned_floats_)); | 216 out_of_flow_positions_, unpositioned_floats_)); |
| 222 } | 217 } |
| 223 | 218 |
| 224 } // namespace blink | 219 } // namespace blink |
| OLD | NEW |