mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Implement shrink-to-fit for abspos
This commit is contained in:
parent
efa1885e1b
commit
46f0f7d7e2
5 changed files with 48 additions and 15 deletions
|
@ -65,10 +65,7 @@ pub(crate) fn outer_inline_content_sizes_and_percentages(
|
|||
let specified = specified.map(|lp| lp.as_length());
|
||||
// The (inner) min/max-content are only used for 'auto'
|
||||
let mut outer = match specified.non_auto().flatten() {
|
||||
None => inner_content_sizes
|
||||
.as_ref()
|
||||
.expect("Accessing content size that was not requested")
|
||||
.clone(),
|
||||
None => expect(inner_content_sizes).clone(),
|
||||
Some(length) => ContentSizes {
|
||||
min_content: length,
|
||||
max_content: length,
|
||||
|
@ -96,3 +93,20 @@ pub(crate) fn outer_inline_content_sizes_and_percentages(
|
|||
|
||||
(outer, pbm_percentages)
|
||||
}
|
||||
|
||||
/// https://drafts.csswg.org/css2/visudet.html#shrink-to-fit-float
|
||||
pub(crate) fn shrink_to_fit(
|
||||
content_sizes: &Option<ContentSizes>,
|
||||
available_size: Length,
|
||||
) -> Length {
|
||||
let content_sizes = expect(content_sizes);
|
||||
available_size
|
||||
.max(content_sizes.min_content)
|
||||
.min(content_sizes.max_content)
|
||||
}
|
||||
|
||||
fn expect(content_sizes: &Option<ContentSizes>) -> &ContentSizes {
|
||||
content_sizes
|
||||
.as_ref()
|
||||
.expect("Accessing content size that was not requested")
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue