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

Side by Side Diff: third_party/WebKit/Source/core/layout/ng/ng_constraint_space.h

Issue 2587283004: [layoutng] Add a shrink-to-fit flag to the constraint space (Closed)
Patch Set: fix incorrect logic Created 3 years, 12 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 #ifndef NGConstraintSpace_h 5 #ifndef NGConstraintSpace_h
6 #define NGConstraintSpace_h 6 #define NGConstraintSpace_h
7 7
8 #include "core/CoreExport.h" 8 #include "core/CoreExport.h"
9 #include "core/layout/ng/ng_units.h" 9 #include "core/layout/ng/ng_units.h"
10 #include "core/layout/ng/ng_writing_mode.h" 10 #include "core/layout/ng/ng_writing_mode.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 } 87 }
88 88
89 // Some layout modes “stretch” their children to a fixed size (e.g. flex, 89 // Some layout modes “stretch” their children to a fixed size (e.g. flex,
90 // grid). These flags represented whether a layout needs to produce a 90 // grid). These flags represented whether a layout needs to produce a
91 // fragment that satisfies a fixed constraint in the inline and block 91 // fragment that satisfies a fixed constraint in the inline and block
92 // direction respectively. 92 // direction respectively.
93 bool IsFixedSizeInline() const { return is_fixed_size_inline_; } 93 bool IsFixedSizeInline() const { return is_fixed_size_inline_; }
94 94
95 bool IsFixedSizeBlock() const { return is_fixed_size_block_; } 95 bool IsFixedSizeBlock() const { return is_fixed_size_block_; }
96 96
97 bool HasForcedShrinkToFit() const { return has_forced_shrink_to_fit_; }
ikilpatrick 2016/12/22 00:06:14 Comment explaining what this does? E.g. Whether t
ikilpatrick 2016/12/22 00:06:14 IsShrinkToFit? to keep in line with other bits?
cbiesinger 2016/12/22 03:34:25 Done (both).
98
97 // If specified a layout should produce a Fragment which fragments at the 99 // If specified a layout should produce a Fragment which fragments at the
98 // blockSize if possible. 100 // blockSize if possible.
99 NGFragmentationType BlockFragmentationType() const; 101 NGFragmentationType BlockFragmentationType() const;
100 102
101 // Modifies constraint space to account for a placed fragment. Depending on 103 // Modifies constraint space to account for a placed fragment. Depending on
102 // the shape of the fragment this will either modify the inline or block 104 // the shape of the fragment this will either modify the inline or block
103 // size, or add an exclusion. 105 // size, or add an exclusion.
104 void Subtract(const NGFragment*); 106 void Subtract(const NGFragment*);
105 107
106 NGLayoutOpportunityIterator* LayoutOpportunities( 108 NGLayoutOpportunityIterator* LayoutOpportunities(
107 unsigned clear = kNGClearNone, 109 unsigned clear = kNGClearNone,
108 bool for_inline_or_bfc = false); 110 bool for_inline_or_bfc = false);
109 111
110 DEFINE_INLINE_VIRTUAL_TRACE() {} 112 DEFINE_INLINE_VIRTUAL_TRACE() {}
111 113
112 String ToString() const; 114 String ToString() const;
113 115
114 private: 116 private:
115 friend class NGConstraintSpaceBuilder; 117 friend class NGConstraintSpaceBuilder;
116 // Default constructor. 118 // Default constructor.
117 NGConstraintSpace(NGWritingMode, 119 NGConstraintSpace(NGWritingMode,
118 TextDirection, 120 TextDirection,
119 NGLogicalSize available_size, 121 NGLogicalSize available_size,
120 NGLogicalSize percentage_resolution_size, 122 NGLogicalSize percentage_resolution_size,
121 bool is_fixed_size_inline, 123 bool is_fixed_size_inline,
122 bool is_fixed_size_block, 124 bool is_fixed_size_block,
125 bool has_forced_shrink_to_fit,
123 bool is_inline_direction_triggers_scrollbar, 126 bool is_inline_direction_triggers_scrollbar,
124 bool is_block_direction_triggers_scrollbar, 127 bool is_block_direction_triggers_scrollbar,
125 NGFragmentationType block_direction_fragmentation_type, 128 NGFragmentationType block_direction_fragmentation_type,
126 bool is_new_fc, 129 bool is_new_fc,
127 const std::shared_ptr<NGExclusions>& exclusions_); 130 const std::shared_ptr<NGExclusions>& exclusions_);
128 131
129 NGLogicalSize available_size_; 132 NGLogicalSize available_size_;
130 NGLogicalSize percentage_resolution_size_; 133 NGLogicalSize percentage_resolution_size_;
131 134
132 unsigned is_fixed_size_inline_ : 1; 135 unsigned is_fixed_size_inline_ : 1;
133 unsigned is_fixed_size_block_ : 1; 136 unsigned is_fixed_size_block_ : 1;
134 137
138 unsigned has_forced_shrink_to_fit_ : 1;
139
135 unsigned is_inline_direction_triggers_scrollbar_ : 1; 140 unsigned is_inline_direction_triggers_scrollbar_ : 1;
136 unsigned is_block_direction_triggers_scrollbar_ : 1; 141 unsigned is_block_direction_triggers_scrollbar_ : 1;
137 142
138 unsigned block_direction_fragmentation_type_ : 2; 143 unsigned block_direction_fragmentation_type_ : 2;
139 144
140 // Whether the current constraint space is for the newly established 145 // Whether the current constraint space is for the newly established
141 // formatting Context 146 // formatting Context
142 unsigned is_new_fc_ : 1; 147 unsigned is_new_fc_ : 1;
143 148
144 NGLogicalOffset offset_; 149 NGLogicalOffset offset_;
145 unsigned writing_mode_ : 3; 150 unsigned writing_mode_ : 3;
146 unsigned direction_ : 1; 151 unsigned direction_ : 1;
147 152
148 const std::shared_ptr<NGExclusions> exclusions_; 153 const std::shared_ptr<NGExclusions> exclusions_;
149 }; 154 };
150 155
151 inline std::ostream& operator<<(std::ostream& stream, 156 inline std::ostream& operator<<(std::ostream& stream,
152 const NGConstraintSpace& value) { 157 const NGConstraintSpace& value) {
153 return stream << value.ToString(); 158 return stream << value.ToString();
154 } 159 }
155 160
156 } // namespace blink 161 } // namespace blink
157 162
158 #endif // NGConstraintSpace_h 163 #endif // NGConstraintSpace_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698