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