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 #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" |
11 #include "platform/text/TextDirection.h" | 11 #include "platform/text/TextDirection.h" |
12 #include "wtf/text/WTFString.h" | 12 #include "wtf/text/WTFString.h" |
13 | 13 |
14 namespace blink { | 14 namespace blink { |
15 | 15 |
16 class LayoutUnit; | 16 class LayoutUnit; |
17 struct NGPhysicalOffset; | 17 struct NGPhysicalOffset; |
18 struct NGPhysicalSize; | 18 struct NGPhysicalSize; |
| 19 struct NGBoxStrut; |
19 | 20 |
20 struct MinAndMaxContentSizes { | 21 struct MinAndMaxContentSizes { |
21 LayoutUnit min_content; | 22 LayoutUnit min_content; |
22 LayoutUnit max_content; | 23 LayoutUnit max_content; |
| 24 LayoutUnit ShrinkToFit(LayoutUnit available_size) const; |
23 }; | 25 }; |
24 | 26 |
25 struct NGLogicalSize { | 27 struct NGLogicalSize { |
26 NGLogicalSize() {} | 28 NGLogicalSize() {} |
27 NGLogicalSize(LayoutUnit inline_size, LayoutUnit block_size) | 29 NGLogicalSize(LayoutUnit inline_size, LayoutUnit block_size) |
28 : inline_size(inline_size), block_size(block_size) {} | 30 : inline_size(inline_size), block_size(block_size) {} |
29 | 31 |
30 LayoutUnit inline_size; | 32 LayoutUnit inline_size; |
31 LayoutUnit block_size; | 33 LayoutUnit block_size; |
32 | 34 |
33 NGPhysicalSize ConvertToPhysical(NGWritingMode mode) const; | 35 NGPhysicalSize ConvertToPhysical(NGWritingMode mode) const; |
34 bool operator==(const NGLogicalSize& other) const; | 36 bool operator==(const NGLogicalSize& other) const; |
35 | 37 |
36 bool IsEmpty() const { | 38 bool IsEmpty() const { |
37 return inline_size == LayoutUnit() || block_size == LayoutUnit(); | 39 return inline_size == LayoutUnit() || block_size == LayoutUnit(); |
38 } | 40 } |
39 }; | 41 }; |
40 | 42 |
| 43 inline std::ostream& operator<<(std::ostream& stream, |
| 44 const NGLogicalSize& value) { |
| 45 return stream << value.inline_size << "x" << value.block_size; |
| 46 } |
| 47 |
41 // NGLogicalOffset is the position of a rect (typically a fragment) relative to | 48 // NGLogicalOffset is the position of a rect (typically a fragment) relative to |
42 // its parent rect in the logical coordinate system. | 49 // its parent rect in the logical coordinate system. |
43 struct NGLogicalOffset { | 50 struct NGLogicalOffset { |
44 NGLogicalOffset() {} | 51 NGLogicalOffset() {} |
45 NGLogicalOffset(LayoutUnit inline_offset, LayoutUnit block_offset) | 52 NGLogicalOffset(LayoutUnit inline_offset, LayoutUnit block_offset) |
46 : inline_offset(inline_offset), block_offset(block_offset) {} | 53 : inline_offset(inline_offset), block_offset(block_offset) {} |
47 | 54 |
48 LayoutUnit inline_offset; | 55 LayoutUnit inline_offset; |
49 LayoutUnit block_offset; | 56 LayoutUnit block_offset; |
50 | 57 |
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
160 struct NGPixelSnappedPhysicalRect { | 167 struct NGPixelSnappedPhysicalRect { |
161 int top; | 168 int top; |
162 int left; | 169 int left; |
163 int width; | 170 int width; |
164 int height; | 171 int height; |
165 }; | 172 }; |
166 | 173 |
167 // Struct to store physical dimensions, independent of writing mode and | 174 // Struct to store physical dimensions, independent of writing mode and |
168 // direction. | 175 // direction. |
169 // See https://drafts.csswg.org/css-writing-modes-3/#abstract-box | 176 // See https://drafts.csswg.org/css-writing-modes-3/#abstract-box |
170 struct NGPhysicalBoxStrut { | 177 struct CORE_EXPORT NGPhysicalBoxStrut { |
171 LayoutUnit left; | 178 LayoutUnit left; |
172 LayoutUnit right; | 179 LayoutUnit right; |
173 LayoutUnit top; | 180 LayoutUnit top; |
174 LayoutUnit bottom; | 181 LayoutUnit bottom; |
| 182 NGBoxStrut ConvertToLogical(NGWritingMode, TextDirection) const; |
175 }; | 183 }; |
176 | 184 |
177 // This struct is used for storing margins, borders or padding of a box on all | 185 // This struct is used for storing margins, borders or padding of a box on all |
178 // four edges. | 186 // four edges. |
179 struct NGBoxStrut { | 187 struct CORE_EXPORT NGBoxStrut { |
180 LayoutUnit inline_start; | 188 LayoutUnit inline_start; |
181 LayoutUnit inline_end; | 189 LayoutUnit inline_end; |
182 LayoutUnit block_start; | 190 LayoutUnit block_start; |
183 LayoutUnit block_end; | 191 LayoutUnit block_end; |
184 | 192 |
185 LayoutUnit InlineSum() const { return inline_start + inline_end; } | 193 LayoutUnit InlineSum() const { return inline_start + inline_end; } |
186 LayoutUnit BlockSum() const { return block_start + block_end; } | 194 LayoutUnit BlockSum() const { return block_start + block_end; } |
187 | 195 |
188 bool IsEmpty() const; | 196 bool IsEmpty() const; |
189 | 197 |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 | 243 |
236 // Struct to represent a simple edge that has start and end. | 244 // Struct to represent a simple edge that has start and end. |
237 struct NGEdge { | 245 struct NGEdge { |
238 LayoutUnit start; | 246 LayoutUnit start; |
239 LayoutUnit end; | 247 LayoutUnit end; |
240 }; | 248 }; |
241 | 249 |
242 } // namespace blink | 250 } // namespace blink |
243 | 251 |
244 #endif // NGUnits_h | 252 #endif // NGUnits_h |
OLD | NEW |