aboutsummaryrefslogtreecommitdiffstats
path: root/components/layout_2020/flow/construct.rs
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2019-12-04 15:36:05 +0100
committerSimon Sapin <simon.sapin@exyr.org>2019-12-04 15:36:05 +0100
commitdd9dfc66e324748ffce14be5df9ac61258941653 (patch)
treed96ff99b58708531965b225f19def43a0f0fbfd0 /components/layout_2020/flow/construct.rs
parent38e8fd1e99de482d1e662b46f5d8d8454ac71c5a (diff)
downloadservo-dd9dfc66e324748ffce14be5df9ac61258941653.tar.gz
servo-dd9dfc66e324748ffce14be5df9ac61258941653.zip
Use a new `BoxContentSizes` enum instead of `Option<ContentSizes>`
Diffstat (limited to 'components/layout_2020/flow/construct.rs')
-rw-r--r--components/layout_2020/flow/construct.rs31
1 files changed, 13 insertions, 18 deletions
diff --git a/components/layout_2020/flow/construct.rs b/components/layout_2020/flow/construct.rs
index 606628d5744..c02dcd08fd7 100644
--- a/components/layout_2020/flow/construct.rs
+++ b/components/layout_2020/flow/construct.rs
@@ -10,7 +10,7 @@ use crate::flow::inline::{InlineBox, InlineFormattingContext, InlineLevelBox, Te
use crate::flow::{BlockContainer, BlockFormattingContext, BlockLevelBox};
use crate::formatting_contexts::IndependentFormattingContext;
use crate::positioned::AbsolutelyPositionedBox;
-use crate::sizing::{outer_inline_content_sizes, ContentSizes, ContentSizesRequest};
+use crate::sizing::{BoxContentSizes, ContentSizes, ContentSizesRequest};
use crate::style_ext::{ComputedValuesExt, DisplayGeneratingBox, DisplayInside, DisplayOutside};
use rayon::iter::{IntoParallelIterator, ParallelIterator};
use rayon_croissant::ParallelIteratorExt;
@@ -25,7 +25,7 @@ impl BlockFormattingContext {
style: &Arc<ComputedValues>,
contents: NonReplacedContents<impl NodeExt<'dom>>,
content_sizes: ContentSizesRequest,
- ) -> (Self, Option<ContentSizes>) {
+ ) -> (Self, BoxContentSizes) {
let (contents, contains_floats, inline_content_sizes) =
BlockContainer::construct(context, style, contents, content_sizes);
// FIXME: add contribution to `inline_content_sizes` of floats in this formatting context
@@ -134,7 +134,7 @@ impl BlockContainer {
block_container_style: &Arc<ComputedValues>,
contents: NonReplacedContents<impl NodeExt<'dom>>,
content_sizes: ContentSizesRequest,
- ) -> (BlockContainer, ContainsFloats, Option<ContentSizes>) {
+ ) -> (BlockContainer, ContainsFloats, BoxContentSizes) {
let mut builder = BlockContainerBuilder {
context,
block_container_style,
@@ -155,7 +155,7 @@ impl BlockContainer {
.is_empty()
{
if builder.block_level_boxes.is_empty() {
- let inline_content_sizes = content_sizes.if_requests_inline(|| {
+ let content_sizes = content_sizes.compute(|| {
builder
.ongoing_inline_formatting_context
.inline_content_sizes(context)
@@ -163,7 +163,7 @@ impl BlockContainer {
let container = BlockContainer::InlineFormattingContext(
builder.ongoing_inline_formatting_context,
);
- return (container, builder.contains_floats, inline_content_sizes);
+ return (container, builder.contains_floats, content_sizes);
}
builder.end_ongoing_inline_formatting_context();
}
@@ -212,9 +212,8 @@ impl BlockContainer {
contains_floats,
outer_content_sizes_of_children,
} = target;
- let inline_content_sizes =
- content_sizes.if_requests_inline(|| outer_content_sizes_of_children);
- (container, contains_floats, inline_content_sizes)
+ let content_sizes = content_sizes.compute(|| outer_content_sizes_of_children);
+ (container, contains_floats, content_sizes)
}
}
@@ -586,7 +585,7 @@ where
) -> (Arc<BlockLevelBox>, ContainsFloats) {
match self {
IntermediateBlockLevelBox::SameFormattingContextBlock { style, contents } => {
- let (contents, contains_floats, inline_content_sizes) = contents.finish(
+ let (contents, contains_floats, box_content_sizes) = contents.finish(
context,
&style,
ContentSizesRequest::inline_if(
@@ -595,7 +594,7 @@ where
),
);
if let Some(to) = max_assign_in_flow_outer_content_sizes_to {
- to.max_assign(&outer_inline_content_sizes(&style, &inline_content_sizes))
+ to.max_assign(&box_content_sizes.outer_inline(&style))
}
let block_level_box =
Arc::new(BlockLevelBox::SameFormattingContextBlock { contents, style });
@@ -618,10 +617,7 @@ where
content_sizes,
);
if let Some(to) = max_assign_in_flow_outer_content_sizes_to {
- to.max_assign(&outer_inline_content_sizes(
- &contents.style,
- &contents.inline_content_sizes,
- ))
+ to.max_assign(&contents.content_sizes.outer_inline(&contents.style))
}
(
Arc::new(BlockLevelBox::Independent(contents)),
@@ -661,21 +657,20 @@ where
context: &LayoutContext,
style: &Arc<ComputedValues>,
content_sizes: ContentSizesRequest,
- ) -> (BlockContainer, ContainsFloats, Option<ContentSizes>) {
+ ) -> (BlockContainer, ContainsFloats, BoxContentSizes) {
match self {
IntermediateBlockContainer::Deferred { contents } => {
BlockContainer::construct(context, style, contents, content_sizes)
},
IntermediateBlockContainer::InlineFormattingContext(ifc) => {
- let inline_content_sizes =
- content_sizes.if_requests_inline(|| ifc.inline_content_sizes(context));
+ let content_sizes = content_sizes.compute(|| ifc.inline_content_sizes(context));
// If that inline formatting context contained any float, those
// were already taken into account during the first phase of
// box construction.
(
BlockContainer::InlineFormattingContext(ifc),
ContainsFloats::No,
- inline_content_sizes,
+ content_sizes,
)
},
}