1 impl ISizeAndMarginsComputer
for AbsoluteNonReplaced
{
2 fn solve_inline_size_constraints(
5 input
: &ISizeConstraintInput
,
6 ) -> ISizeConstraintSolution
{
7 let (inline_start
, inline_size
, margin_inline_start
, margin_inline_end
) = match (
8 inline_startssssssxxxxxxsssssxxxxxxxxxssssssxxx
,
9 inline_startssssssxxxxxxsssssxxxxxxxxxssssssxxx
,
11 (MaybeAuto
::Auto
, MaybeAuto
::Auto
, MaybeAuto
::Auto
) => {
12 let margin_start
= inline_start_margin
.specified_or_zero();
13 let margin_end
= inline_end_margin
.specified_or_zero();
14 // Now it is the same situation as inline-start Specified and inline-end
15 // and inline-size Auto.
17 // Set inline-end to zero to calculate inline-size.
18 let inline_size
= block
.get_shrink_to_fit_inline_size(
19 available_inline_size
- (margin_start
+ margin_end
),
21 (Au(0), inline_size
, margin_start
, margin_end
)
25 let (inline_start
, inline_size
, margin_inline_start
, margin_inline_end
) =
26 match (inline_start
, inline_end
, computed_inline_size
) {
27 (MaybeAuto
::Auto
, MaybeAuto
::Auto
, MaybeAuto
::Auto
) => {
28 let margin_start
= inline_start_margin
.specified_or_zero();
29 let margin_end
= inline_end_margin
.specified_or_zero();
30 // Now it is the same situation as inline-start Specified and inline-end
31 // and inline-size Auto.
33 // Set inline-end to zero to calculate inline-size.
34 let inline_size
= block
.get_shrink_to_fit_inline_size(
35 available_inline_size
- (margin_start
+ margin_end
),
37 (Au(0), inline_size
, margin_start
, margin_end
)