Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10)

Side by Side Diff: third_party/WebKit/Source/core/layout/ng/ng_constraint_space_builder.cc

Issue 2714803002: [LayoutNG] Allow block-flow layout to be fragmented using new approach. (Closed)
Patch Set: rebase. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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_(parent_space->IsNewFormattingContext()),
26 is_anonymous_(false),
26 text_direction_(static_cast<unsigned>(parent_space->Direction())), 27 text_direction_(static_cast<unsigned>(parent_space->Direction())),
27 bfc_offset_(parent_space->bfc_offset_), 28 bfc_offset_(parent_space->bfc_offset_),
28 exclusions_(parent_space->Exclusions()) {} 29 exclusions_(parent_space->Exclusions()) {}
29 30
30 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode) 31 NGConstraintSpaceBuilder::NGConstraintSpaceBuilder(NGWritingMode writing_mode)
31 : initial_containing_block_size_{NGSizeIndefinite, NGSizeIndefinite}, 32 : initial_containing_block_size_{NGSizeIndefinite, NGSizeIndefinite},
32 fragmentainer_space_available_(NGSizeIndefinite), 33 fragmentainer_space_available_(NGSizeIndefinite),
33 parent_writing_mode_(writing_mode), 34 parent_writing_mode_(writing_mode),
34 is_fixed_size_inline_(false), 35 is_fixed_size_inline_(false),
35 is_fixed_size_block_(false), 36 is_fixed_size_block_(false),
36 is_shrink_to_fit_(false), 37 is_shrink_to_fit_(false),
37 is_inline_direction_triggers_scrollbar_(false), 38 is_inline_direction_triggers_scrollbar_(false),
38 is_block_direction_triggers_scrollbar_(false), 39 is_block_direction_triggers_scrollbar_(false),
39 fragmentation_type_(kFragmentNone), 40 fragmentation_type_(kFragmentNone),
40 is_new_fc_(false), 41 is_new_fc_(false),
42 is_anonymous_(false),
41 text_direction_(static_cast<unsigned>(TextDirection::kLtr)), 43 text_direction_(static_cast<unsigned>(TextDirection::kLtr)),
42 exclusions_(new NGExclusions()) {} 44 exclusions_(new NGExclusions()) {}
43 45
44 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetAvailableSize( 46 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetAvailableSize(
45 NGLogicalSize available_size) { 47 NGLogicalSize available_size) {
46 available_size_ = available_size; 48 available_size_ = available_size;
47 return *this; 49 return *this;
48 } 50 }
49 51
50 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetPercentageResolutionSize( 52 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetPercentageResolutionSize(
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 fragmentation_type_ = fragmentation_type; 124 fragmentation_type_ = fragmentation_type;
123 return *this; 125 return *this;
124 } 126 }
125 127
126 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsNewFormattingContext( 128 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsNewFormattingContext(
127 bool is_new_fc) { 129 bool is_new_fc) {
128 is_new_fc_ = is_new_fc; 130 is_new_fc_ = is_new_fc;
129 return *this; 131 return *this;
130 } 132 }
131 133
134 NGConstraintSpaceBuilder& NGConstraintSpaceBuilder::SetIsAnonymous(
135 bool is_anonymous) {
136 is_anonymous_ = is_anonymous;
137 return *this;
138 }
139
132 NGConstraintSpace* NGConstraintSpaceBuilder::ToConstraintSpace( 140 NGConstraintSpace* NGConstraintSpaceBuilder::ToConstraintSpace(
133 NGWritingMode out_writing_mode) { 141 NGWritingMode out_writing_mode) {
134 // Whether the child and the containing block are parallel to each other. 142 // Whether the child and the containing block are parallel to each other.
135 // Example: vertical-rl and vertical-lr 143 // Example: vertical-rl and vertical-lr
136 bool is_in_parallel_flow = IsParallelWritingMode( 144 bool is_in_parallel_flow = IsParallelWritingMode(
137 static_cast<NGWritingMode>(parent_writing_mode_), out_writing_mode); 145 static_cast<NGWritingMode>(parent_writing_mode_), out_writing_mode);
138 146
139 NGLogicalSize available_size = available_size_; 147 NGLogicalSize available_size = available_size_;
140 NGLogicalSize percentage_resolution_size = percentage_resolution_size_; 148 NGLogicalSize percentage_resolution_size = percentage_resolution_size_;
141 if (!is_in_parallel_flow) { 149 if (!is_in_parallel_flow) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
176 if (is_in_parallel_flow) { 184 if (is_in_parallel_flow) {
177 return new NGConstraintSpace( 185 return new NGConstraintSpace(
178 static_cast<NGWritingMode>(out_writing_mode), 186 static_cast<NGWritingMode>(out_writing_mode),
179 static_cast<TextDirection>(text_direction_), available_size, 187 static_cast<TextDirection>(text_direction_), available_size,
180 percentage_resolution_size, initial_containing_block_size_, 188 percentage_resolution_size, initial_containing_block_size_,
181 fragmentainer_space_available_, is_fixed_size_inline_, 189 fragmentainer_space_available_, is_fixed_size_inline_,
182 is_fixed_size_block_, is_shrink_to_fit_, 190 is_fixed_size_block_, is_shrink_to_fit_,
183 is_inline_direction_triggers_scrollbar_, 191 is_inline_direction_triggers_scrollbar_,
184 is_block_direction_triggers_scrollbar_, 192 is_block_direction_triggers_scrollbar_,
185 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, 193 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_,
186 margin_strut, bfc_offset, exclusions, clearance_offset); 194 is_anonymous_, margin_strut, bfc_offset, exclusions, clearance_offset);
187 } 195 }
188 return new NGConstraintSpace( 196 return new NGConstraintSpace(
189 out_writing_mode, static_cast<TextDirection>(text_direction_), 197 out_writing_mode, static_cast<TextDirection>(text_direction_),
190 available_size, percentage_resolution_size, 198 available_size, percentage_resolution_size,
191 initial_containing_block_size_, fragmentainer_space_available_, 199 initial_containing_block_size_, fragmentainer_space_available_,
192 is_fixed_size_block_, is_fixed_size_inline_, is_shrink_to_fit_, 200 is_fixed_size_block_, is_fixed_size_inline_, is_shrink_to_fit_,
193 is_block_direction_triggers_scrollbar_, 201 is_block_direction_triggers_scrollbar_,
194 is_inline_direction_triggers_scrollbar_, 202 is_inline_direction_triggers_scrollbar_,
195 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_, 203 static_cast<NGFragmentationType>(fragmentation_type_), is_new_fc_,
196 margin_strut, bfc_offset, exclusions, clearance_offset); 204 is_anonymous_, margin_strut, bfc_offset, exclusions, clearance_offset);
197 } 205 }
198 206
199 } // namespace blink 207 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698