impl ISizeAndMarginsComputer for AbsoluteNonReplaced { fn solve_inline_size_constraints( &self, block: &mut BlockFlow, input: &ISizeConstraintInput, ) -> ISizeConstraintSolution { let (inline_start, inline_size, margin_inline_start, margin_inline_end) = match ( inline_startssssssxxxxxxsssssxxxxxxxxxssssssxxx, inline_startssssssxxxxxxsssssxxxxxxxxxssssssxxx, ) { (MaybeAuto::Auto, MaybeAuto::Auto, MaybeAuto::Auto) => { let margin_start = inline_start_margin.specified_or_zero(); let margin_end = inline_end_margin.specified_or_zero(); // Now it is the same situation as inline-start Specified and inline-end // and inline-size Auto. // // Set inline-end to zero to calculate inline-size. let inline_size = block.get_shrink_to_fit_inline_size( available_inline_size - (margin_start + margin_end), ); (Au(0), inline_size, margin_start, margin_end) } }; let (inline_start, inline_size, margin_inline_start, margin_inline_end) = match (inline_start, inline_end, computed_inline_size) { (MaybeAuto::Auto, MaybeAuto::Auto, MaybeAuto::Auto) => { let margin_start = inline_start_margin.specified_or_zero(); let margin_end = inline_end_margin.specified_or_zero(); // Now it is the same situation as inline-start Specified and inline-end // and inline-size Auto. // // Set inline-end to zero to calculate inline-size. let inline_size = block.get_shrink_to_fit_inline_size( available_inline_size - (margin_start + margin_end), ); (Au(0), inline_size, margin_start, margin_end) } }; } }