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

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

Issue 2651853002: Deprecate the currently used NGMarginStrut in favor of the new one. (Closed)
Patch Set: git rebase-update Created 3 years, 10 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 NGUnits_h 5 #ifndef NGUnits_h
6 #define NGUnits_h 6 #define NGUnits_h
7 7
8 #include "core/CoreExport.h" 8 #include "core/CoreExport.h"
9 #include "core/layout/ng/ng_writing_mode.h" 9 #include "core/layout/ng/ng_writing_mode.h"
10 #include "platform/LayoutUnit.h" 10 #include "platform/LayoutUnit.h"
(...skipping 26 matching lines...) Expand all
37 37
38 LayoutUnit inline_size; 38 LayoutUnit inline_size;
39 LayoutUnit block_size; 39 LayoutUnit block_size;
40 40
41 NGPhysicalSize ConvertToPhysical(NGWritingMode mode) const; 41 NGPhysicalSize ConvertToPhysical(NGWritingMode mode) const;
42 bool operator==(const NGLogicalSize& other) const; 42 bool operator==(const NGLogicalSize& other) const;
43 43
44 bool IsEmpty() const { 44 bool IsEmpty() const {
45 return inline_size == LayoutUnit() || block_size == LayoutUnit(); 45 return inline_size == LayoutUnit() || block_size == LayoutUnit();
46 } 46 }
47
48 private:
49 friend class NGBlockLayoutAlgorithmTest;
50 // Used in tests.
51 NGLogicalSize(int inline_size, int block_size)
52 : inline_size(LayoutUnit(inline_size)),
53 block_size(LayoutUnit(block_size)) {}
47 }; 54 };
48 55
49 inline std::ostream& operator<<(std::ostream& stream, 56 inline std::ostream& operator<<(std::ostream& stream,
50 const NGLogicalSize& value) { 57 const NGLogicalSize& value) {
51 return stream << value.inline_size << "x" << value.block_size; 58 return stream << value.inline_size << "x" << value.block_size;
52 } 59 }
53 60
54 // NGLogicalOffset is the position of a rect (typically a fragment) relative to 61 // NGLogicalOffset is the position of a rect (typically a fragment) relative to
55 // its parent rect in the logical coordinate system. 62 // its parent rect in the logical coordinate system.
56 struct NGLogicalOffset { 63 struct NGLogicalOffset {
(...skipping 13 matching lines...) Expand all
70 // @param inner_size the size of the inner rect (typically a child fragment). 77 // @param inner_size the size of the inner rect (typically a child fragment).
71 CORE_EXPORT NGPhysicalOffset 78 CORE_EXPORT NGPhysicalOffset
72 ConvertToPhysical(NGWritingMode, 79 ConvertToPhysical(NGWritingMode,
73 TextDirection, 80 TextDirection,
74 NGPhysicalSize outer_size, 81 NGPhysicalSize outer_size,
75 NGPhysicalSize inner_size) const; 82 NGPhysicalSize inner_size) const;
76 83
77 bool operator==(const NGLogicalOffset& other) const; 84 bool operator==(const NGLogicalOffset& other) const;
78 85
79 NGLogicalOffset operator+(const NGLogicalOffset& other) const; 86 NGLogicalOffset operator+(const NGLogicalOffset& other) const;
87 NGLogicalOffset& operator+=(const NGLogicalOffset& other);
80 88
81 NGLogicalOffset& operator+=(const NGLogicalOffset& other); 89 NGLogicalOffset operator-(const NGLogicalOffset& other) const;
90 NGLogicalOffset& operator-=(const NGLogicalOffset& other);
82 91
83 bool operator>(const NGLogicalOffset& other) const; 92 bool operator>(const NGLogicalOffset& other) const;
84 bool operator>=(const NGLogicalOffset& other) const; 93 bool operator>=(const NGLogicalOffset& other) const;
85 94
86 bool operator<(const NGLogicalOffset& other) const; 95 bool operator<(const NGLogicalOffset& other) const;
87 bool operator<=(const NGLogicalOffset& other) const; 96 bool operator<=(const NGLogicalOffset& other) const;
88 97
89 String ToString() const; 98 String ToString() const;
99
100 private:
101 friend class NGBlockLayoutAlgorithmTest;
102 // Used in tests.
103 NGLogicalOffset(int inline_offset, int block_offset)
104 : inline_offset(LayoutUnit(inline_offset)),
105 block_offset(LayoutUnit(block_offset)) {}
90 }; 106 };
91 107
92 CORE_EXPORT inline std::ostream& operator<<(std::ostream& os, 108 CORE_EXPORT inline std::ostream& operator<<(std::ostream& os,
93 const NGLogicalOffset& value) { 109 const NGLogicalOffset& value) {
94 return os << value.ToString(); 110 return os << value.ToString();
95 } 111 }
96 112
97 // NGPhysicalOffset is the position of a rect (typically a fragment) relative to 113 // NGPhysicalOffset is the position of a rect (typically a fragment) relative to
98 // its parent rect in the physical coordinate system. 114 // its parent rect in the physical coordinate system.
99 struct NGPhysicalOffset { 115 struct NGPhysicalOffset {
100 NGPhysicalOffset() {} 116 NGPhysicalOffset() {}
101 NGPhysicalOffset(LayoutUnit left, LayoutUnit top) : left(left), top(top) {} 117 NGPhysicalOffset(LayoutUnit left, LayoutUnit top) : left(left), top(top) {}
102 118
103 LayoutUnit left; 119 LayoutUnit left;
104 LayoutUnit top; 120 LayoutUnit top;
105 121
106 NGPhysicalOffset operator+(const NGPhysicalOffset& other) const; 122 NGPhysicalOffset operator+(const NGPhysicalOffset& other) const;
107 NGPhysicalOffset& operator+=(const NGPhysicalOffset& other); 123 NGPhysicalOffset& operator+=(const NGPhysicalOffset& other);
124
108 NGPhysicalOffset operator-(const NGPhysicalOffset& other) const; 125 NGPhysicalOffset operator-(const NGPhysicalOffset& other) const;
109 NGPhysicalOffset& operator-=(const NGPhysicalOffset& other); 126 NGPhysicalOffset& operator-=(const NGPhysicalOffset& other);
127
128 String ToString() const {
129 return String::format("%dx%d", left.toInt(), top.toInt());
130 }
110 }; 131 };
111 132
112 struct NGPhysicalSize { 133 struct NGPhysicalSize {
113 NGPhysicalSize() {} 134 NGPhysicalSize() {}
114 NGPhysicalSize(LayoutUnit width, LayoutUnit height) 135 NGPhysicalSize(LayoutUnit width, LayoutUnit height)
115 : width(width), height(height) {} 136 : width(width), height(height) {}
116 137
117 LayoutUnit width; 138 LayoutUnit width;
118 LayoutUnit height; 139 LayoutUnit height;
119 140
120 NGLogicalSize ConvertToLogical(NGWritingMode mode) const; 141 NGLogicalSize ConvertToLogical(NGWritingMode mode) const;
121 142
143 bool operator==(const NGPhysicalSize& other) const;
144
122 String ToString() const { 145 String ToString() const {
123 return String::format("%dx%d", width.toInt(), height.toInt()); 146 return String::format("%dx%d", width.toInt(), height.toInt());
124 } 147 }
125 }; 148 };
126 149
150 inline std::ostream& operator<<(std::ostream& stream,
151 const NGPhysicalSize& value) {
152 return stream << value.ToString();
153 }
154
127 // NGPhysicalLocation is the position of a rect (typically a fragment) relative 155 // NGPhysicalLocation is the position of a rect (typically a fragment) relative
128 // to the root document. 156 // to the root document.
129 struct NGPhysicalLocation { 157 struct NGPhysicalLocation {
130 LayoutUnit left; 158 LayoutUnit left;
131 LayoutUnit top; 159 LayoutUnit top;
132 }; 160 };
133 161
134 struct NGPhysicalRect { 162 struct NGPhysicalRect {
135 NGPhysicalOffset offset; 163 NGPhysicalOffset offset;
136 NGPhysicalSize size; 164 NGPhysicalSize size;
137 }; 165 };
138 166
139 // TODO(glebl): move to a separate file in layout/ng/units. 167 // TODO(glebl): move to a separate file in layout/ng/units.
140 struct CORE_EXPORT NGLogicalRect { 168 struct CORE_EXPORT NGLogicalRect {
141 NGLogicalRect() {} 169 NGLogicalRect() {}
170 NGLogicalRect(const NGLogicalOffset& offset, const NGLogicalSize& size)
171 : offset(offset), size(size) {}
142 NGLogicalRect(LayoutUnit inline_offset, 172 NGLogicalRect(LayoutUnit inline_offset,
143 LayoutUnit block_offset, 173 LayoutUnit block_offset,
144 LayoutUnit inline_size, 174 LayoutUnit inline_size,
145 LayoutUnit block_size) 175 LayoutUnit block_size)
146 : offset(inline_offset, block_offset), size(inline_size, block_size) {} 176 : offset(inline_offset, block_offset), size(inline_size, block_size) {}
147 177
148 bool IsEmpty() const; 178 bool IsEmpty() const;
149 179
150 // Whether this rectangle is contained by the provided rectangle. 180 // Whether this rectangle is contained by the provided rectangle.
151 bool IsContained(const NGLogicalRect& other) const; 181 bool IsContained(const NGLogicalRect& other) const;
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 kFloatLeft = 1, 220 kFloatLeft = 1,
191 // Exclusion that is created by RIGHT float. 221 // Exclusion that is created by RIGHT float.
192 kFloatRight = 2 222 kFloatRight = 2
193 }; 223 };
194 224
195 // Rectangle in logical coordinates the represents this exclusion. 225 // Rectangle in logical coordinates the represents this exclusion.
196 NGLogicalRect rect; 226 NGLogicalRect rect;
197 227
198 // Type of this exclusion. 228 // Type of this exclusion.
199 Type type; 229 Type type;
230
231 bool operator==(const NGExclusion& other) const;
232 String ToString() const;
200 }; 233 };
201 234
235 inline std::ostream& operator<<(std::ostream& stream,
236 const NGExclusion& value) {
237 return stream << value.ToString();
238 }
239
202 struct CORE_EXPORT NGExclusions { 240 struct CORE_EXPORT NGExclusions {
203 // Default constructor. 241 // Default constructor.
204 NGExclusions(); 242 NGExclusions();
205 243
206 // Copy constructor. 244 // Copy constructor.
207 NGExclusions(const NGExclusions& other); 245 NGExclusions(const NGExclusions& other);
208 246
209 Vector<std::unique_ptr<const NGExclusion>> storage; 247 Vector<std::unique_ptr<const NGExclusion>> storage;
210 248
211 // Last left/right float exclusions are used to enforce the top edge alignment 249 // Last left/right float exclusions are used to enforce the top edge alignment
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
261 299
262 NGBoxStrut operator+(const NGBoxStrut& other) { 300 NGBoxStrut operator+(const NGBoxStrut& other) {
263 NGBoxStrut result(*this); 301 NGBoxStrut result(*this);
264 result += other; 302 result += other;
265 return result; 303 return result;
266 } 304 }
267 305
268 bool operator==(const NGBoxStrut& other) const; 306 bool operator==(const NGBoxStrut& other) const;
269 307
270 String ToString() const { 308 String ToString() const {
271 return String::format("Inline (%d, %d) Block (%d, %d)", 309 return String::format("Inline: (%d %d) Block: (%d %d)",
272 inline_start.toInt(), inline_end.toInt(), 310 inline_start.toInt(), inline_end.toInt(),
273 block_start.toInt(), block_end.toInt()); 311 block_start.toInt(), block_end.toInt());
274 } 312 }
275 }; 313 };
276 314
277 inline std::ostream& operator<<(std::ostream& stream, const NGBoxStrut& value) { 315 inline std::ostream& operator<<(std::ostream& stream, const NGBoxStrut& value) {
278 return stream << value.ToString(); 316 return stream << value.ToString();
279 } 317 }
280 318
281 // This struct is used for the margin collapsing calculation. 319 // This struct is used for the margin collapsing calculation.
282 struct CORE_EXPORT NGMarginStrut { 320 // TODO(glebl): Deprecated. It's being replaced by NGMarginStrut
321 struct CORE_EXPORT NGDeprecatedMarginStrut {
283 LayoutUnit margin_block_start; 322 LayoutUnit margin_block_start;
284 LayoutUnit margin_block_end; 323 LayoutUnit margin_block_end;
285 324
286 LayoutUnit negative_margin_block_start; 325 LayoutUnit negative_margin_block_start;
287 LayoutUnit negative_margin_block_end; 326 LayoutUnit negative_margin_block_end;
288 327
289 LayoutUnit BlockEndSum() const; 328 LayoutUnit BlockEndSum() const;
290 329
291 void AppendMarginBlockStart(const LayoutUnit& value); 330 void AppendMarginBlockStart(const LayoutUnit& value);
292 void AppendMarginBlockEnd(const LayoutUnit& value); 331 void AppendMarginBlockEnd(const LayoutUnit& value);
293 void SetMarginBlockStart(const LayoutUnit& value); 332 void SetMarginBlockStart(const LayoutUnit& value);
294 void SetMarginBlockEnd(const LayoutUnit& value); 333 void SetMarginBlockEnd(const LayoutUnit& value);
295 334
296 bool IsEmpty() const; 335 bool IsEmpty() const;
297 336
298 String ToString() const; 337 String ToString() const;
299 338
339 bool operator==(const NGDeprecatedMarginStrut& other) const;
340 };
341
342 // This struct is used for the margin collapsing calculation.
343 struct CORE_EXPORT NGMarginStrut {
344 LayoutUnit margin;
345 LayoutUnit negative_margin;
346
300 bool operator==(const NGMarginStrut& other) const; 347 bool operator==(const NGMarginStrut& other) const;
348
349 void Append(const LayoutUnit& value);
350
351 LayoutUnit Collapse() const;
352
353 String ToString() const;
301 }; 354 };
302 355
303 inline std::ostream& operator<<(std::ostream& stream, 356 inline std::ostream& operator<<(std::ostream& stream,
304 const NGMarginStrut& value) { 357 const NGMarginStrut& value) {
305 return stream << value.ToString(); 358 return stream << value.ToString();
306 } 359 }
307 360
308 // Struct to represent a simple edge that has start and end. 361 // Struct to represent a simple edge that has start and end.
309 struct NGEdge { 362 struct NGEdge {
310 LayoutUnit start; 363 LayoutUnit start;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 if (position_matches) 415 if (position_matches)
363 return position; 416 return position;
364 else 417 else
365 return container_size - position - length - margin_start - margin_end; 418 return container_size - position - length - margin_start - margin_end;
366 } 419 }
367 }; 420 };
368 421
369 } // namespace blink 422 } // namespace blink
370 423
371 #endif // NGUnits_h 424 #endif // NGUnits_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698