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 NGLengthUtils_h | 5 #ifndef NGLengthUtils_h |
6 #define NGLengthUtils_h | 6 #define NGLengthUtils_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 17 matching lines...) Expand all Loading... |
28 }; | 28 }; |
29 | 29 |
30 #define NGSizeIndefinite LayoutUnit(-1) | 30 #define NGSizeIndefinite LayoutUnit(-1) |
31 | 31 |
32 // Whether the caller needs to compute min-content and max-content sizes to | 32 // Whether the caller needs to compute min-content and max-content sizes to |
33 // pass them to ResolveInlineLength / ComputeInlineSizeForFragment. | 33 // pass them to ResolveInlineLength / ComputeInlineSizeForFragment. |
34 // If this function returns false, it is safe to pass an empty | 34 // If this function returns false, it is safe to pass an empty |
35 // MinAndMaxContentSizes struct to those functions. | 35 // MinAndMaxContentSizes struct to those functions. |
36 CORE_EXPORT bool NeedMinAndMaxContentSizes(const ComputedStyle&); | 36 CORE_EXPORT bool NeedMinAndMaxContentSizes(const ComputedStyle&); |
37 | 37 |
| 38 // Like NeedMinAndMaxContentSizes, but for use when calling |
| 39 // ComputeMinAndMaxContentContribution. |
| 40 CORE_EXPORT bool NeedMinAndMaxContentSizesForContentContribution( |
| 41 const ComputedStyle&); |
| 42 |
38 // Convert an inline-axis length to a layout unit using the given constraint | 43 // Convert an inline-axis length to a layout unit using the given constraint |
39 // space. | 44 // space. |
40 CORE_EXPORT LayoutUnit | 45 CORE_EXPORT LayoutUnit |
41 ResolveInlineLength(const NGConstraintSpace&, | 46 ResolveInlineLength(const NGConstraintSpace&, |
42 const ComputedStyle&, | 47 const ComputedStyle&, |
43 const WTF::Optional<MinAndMaxContentSizes>&, | 48 const WTF::Optional<MinAndMaxContentSizes>&, |
44 const Length&, | 49 const Length&, |
45 LengthResolveType); | 50 LengthResolveType); |
46 | 51 |
47 // Convert a block-axis length to a layout unit using the given constraint | 52 // Convert a block-axis length to a layout unit using the given constraint |
48 // space and content size. | 53 // space and content size. |
49 CORE_EXPORT LayoutUnit ResolveBlockLength(const NGConstraintSpace&, | 54 CORE_EXPORT LayoutUnit ResolveBlockLength(const NGConstraintSpace&, |
50 const ComputedStyle&, | 55 const ComputedStyle&, |
51 const Length&, | 56 const Length&, |
52 LayoutUnit content_size, | 57 LayoutUnit content_size, |
53 LengthResolveType); | 58 LengthResolveType); |
54 | 59 |
| 60 // For the given style and min/max content sizes, computes the min and max |
| 61 // content contribution (https://drafts.csswg.org/css-sizing/#contributions). |
| 62 // This is similar to ComputeInlineSizeForFragment except that it does not |
| 63 // require a constraint space (percentage sizes as well as auto margins compute |
| 64 // to zero) and that an auto inline size resolves to the respective min/max |
| 65 // content size. |
| 66 // Also, the min/max contribution does include the inline margins as well. |
| 67 CORE_EXPORT MinAndMaxContentSizes ComputeMinAndMaxContentContribution( |
| 68 const ComputedStyle&, |
| 69 const WTF::Optional<MinAndMaxContentSizes>&); |
| 70 |
55 // Resolves the given length to a layout unit, constraining it by the min | 71 // Resolves the given length to a layout unit, constraining it by the min |
56 // logical width and max logical width properties from the ComputedStyle | 72 // logical width and max logical width properties from the ComputedStyle |
57 // object. | 73 // object. |
58 CORE_EXPORT LayoutUnit | 74 CORE_EXPORT LayoutUnit |
59 ComputeInlineSizeForFragment(const NGConstraintSpace&, | 75 ComputeInlineSizeForFragment(const NGConstraintSpace&, |
60 const ComputedStyle&, | 76 const ComputedStyle&, |
61 const WTF::Optional<MinAndMaxContentSizes>&); | 77 const WTF::Optional<MinAndMaxContentSizes>&); |
62 | 78 |
63 // Resolves the given length to a layout unit, constraining it by the min | 79 // Resolves the given length to a layout unit, constraining it by the min |
64 // logical height and max logical height properties from the ComputedStyle | 80 // logical height and max logical height properties from the ComputedStyle |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
100 // the fragment to compute the margins that are auto, if any, and adjusts | 116 // the fragment to compute the margins that are auto, if any, and adjusts |
101 // the given NGBoxStrut accordingly. | 117 // the given NGBoxStrut accordingly. |
102 CORE_EXPORT void ApplyAutoMargins(const NGConstraintSpace&, | 118 CORE_EXPORT void ApplyAutoMargins(const NGConstraintSpace&, |
103 const ComputedStyle&, | 119 const ComputedStyle&, |
104 const NGFragmentBase&, | 120 const NGFragmentBase&, |
105 NGBoxStrut* margins); | 121 NGBoxStrut* margins); |
106 | 122 |
107 } // namespace blink | 123 } // namespace blink |
108 | 124 |
109 #endif // NGLengthUtils_h | 125 #endif // NGLengthUtils_h |
OLD | NEW |