summaryrefslogtreecommitdiff
path: root/chromium/third_party/blink/renderer/core/layout/ng/mathml
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/third_party/blink/renderer/core/layout/ng/mathml')
-rw-r--r--chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_fraction_layout_algorithm.cc38
-rw-r--r--chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_fraction_layout_algorithm.h1
-rw-r--r--chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.cc47
-rw-r--r--chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.h31
-rw-r--r--chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_scripts_layout_algorithm.cc32
-rw-r--r--chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_scripts_layout_algorithm.h3
-rw-r--r--chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.cc19
-rw-r--r--chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.h2
-rw-r--r--chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_under_over_layout_algorithm.cc47
-rw-r--r--chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_under_over_layout_algorithm.h2
-rw-r--r--chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_mathml_paint_info.h28
11 files changed, 131 insertions, 119 deletions
diff --git a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_fraction_layout_algorithm.cc b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_fraction_layout_algorithm.cc
index 831821243aa..01c72e4fa4c 100644
--- a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_fraction_layout_algorithm.cc
+++ b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_fraction_layout_algorithm.cc
@@ -124,10 +124,7 @@ FractionStackParameters GetFractionStackParameters(const ComputedStyle& style) {
NGMathFractionLayoutAlgorithm::NGMathFractionLayoutAlgorithm(
const NGLayoutAlgorithmParams& params)
- : NGLayoutAlgorithm(params),
- border_scrollbar_padding_(params.fragment_geometry.border +
- params.fragment_geometry.padding +
- params.fragment_geometry.scrollbar) {
+ : NGLayoutAlgorithm(params) {
DCHECK(params.space.IsNewFormattingContext());
container_builder_.SetIsNewFormattingContext(
params.space.IsNewFormattingContext());
@@ -142,8 +139,7 @@ void NGMathFractionLayoutAlgorithm::GatherChildren(NGBlockNode* numerator,
NGBlockNode block_child = To<NGBlockNode>(child);
if (child.IsOutOfFlowPositioned()) {
container_builder_.AddOutOfFlowChildCandidate(
- block_child, {border_scrollbar_padding_.inline_start,
- border_scrollbar_padding_.block_start});
+ block_child, BorderScrollbarPadding().StartOffset());
continue;
}
if (!*numerator) {
@@ -169,17 +165,14 @@ scoped_refptr<const NGLayoutResult> NGMathFractionLayoutAlgorithm::Layout() {
NGBlockNode denominator = nullptr;
GatherChildren(&numerator, &denominator);
- const LogicalSize border_box_size = container_builder_.InitialBorderBoxSize();
- auto child_available_size =
- ShrinkAvailableSize(border_box_size, border_scrollbar_padding_);
auto numerator_space = CreateConstraintSpaceForMathChild(
- Node(), child_available_size, ConstraintSpace(), numerator);
+ Node(), ChildAvailableSize(), ConstraintSpace(), numerator);
scoped_refptr<const NGLayoutResult> numerator_layout_result =
numerator.Layout(numerator_space);
auto numerator_margins =
ComputeMarginsFor(numerator_space, numerator.Style(), ConstraintSpace());
auto denominator_space = CreateConstraintSpaceForMathChild(
- Node(), child_available_size, ConstraintSpace(), denominator);
+ Node(), ChildAvailableSize(), ConstraintSpace(), denominator);
scoped_refptr<const NGLayoutResult> denominator_layout_result =
denominator.Layout(denominator_space);
auto denominator_margins = ComputeMarginsFor(
@@ -238,8 +231,8 @@ scoped_refptr<const NGLayoutResult> NGMathFractionLayoutAlgorithm::Layout() {
LayoutUnit fraction_descent =
std::max(-numerator_shift + numerator_descent,
denominator_shift + denominator_descent);
- fraction_ascent += border_scrollbar_padding_.block_start;
- fraction_descent += border_scrollbar_padding_.block_end;
+ fraction_ascent += BorderScrollbarPadding().block_start;
+ fraction_descent += BorderScrollbarPadding().block_end;
LayoutUnit total_block_size = fraction_ascent + fraction_descent;
container_builder_.SetBaseline(fraction_ascent);
@@ -247,14 +240,13 @@ scoped_refptr<const NGLayoutResult> NGMathFractionLayoutAlgorithm::Layout() {
LogicalOffset numerator_offset;
LogicalOffset denominator_offset;
numerator_offset.inline_offset =
- border_scrollbar_padding_.inline_start + numerator_margins.inline_start +
- (child_available_size.inline_size -
+ BorderScrollbarPadding().inline_start + numerator_margins.inline_start +
+ (ChildAvailableSize().inline_size -
(numerator_fragment.InlineSize() + numerator_margins.InlineSum())) /
2;
denominator_offset.inline_offset =
- border_scrollbar_padding_.inline_start +
- denominator_margins.inline_start +
- (child_available_size.inline_size -
+ BorderScrollbarPadding().inline_start + denominator_margins.inline_start +
+ (ChildAvailableSize().inline_size -
(denominator_fragment.InlineSize() + denominator_margins.InlineSum())) /
2;
@@ -274,11 +266,11 @@ scoped_refptr<const NGLayoutResult> NGMathFractionLayoutAlgorithm::Layout() {
denominator.StoreMargins(ConstraintSpace(), denominator_margins);
LayoutUnit block_size = ComputeBlockSizeForFragment(
- ConstraintSpace(), Style(), border_scrollbar_padding_, total_block_size,
- border_box_size.inline_size);
+ ConstraintSpace(), Style(), BorderPadding(), total_block_size,
+ container_builder_.InitialBorderBoxSize().inline_size);
container_builder_.SetIntrinsicBlockSize(total_block_size);
- container_builder_.SetBlockSize(block_size);
+ container_builder_.SetFragmentsTotalBlockSize(block_size);
NGOutOfFlowLayoutPart(Node(), ConstraintSpace(), container_builder_.Borders(),
&container_builder_)
@@ -290,7 +282,7 @@ scoped_refptr<const NGLayoutResult> NGMathFractionLayoutAlgorithm::Layout() {
MinMaxSizesResult NGMathFractionLayoutAlgorithm::ComputeMinMaxSizes(
const MinMaxSizesInput& child_input) const {
if (auto result = CalculateMinMaxSizesIgnoringChildren(
- Node(), border_scrollbar_padding_))
+ Node(), BorderScrollbarPadding()))
return *result;
MinMaxSizes sizes;
@@ -310,7 +302,7 @@ MinMaxSizesResult NGMathFractionLayoutAlgorithm::ComputeMinMaxSizes(
child_result.depends_on_percentage_block_size;
}
- sizes += border_scrollbar_padding_.InlineSum();
+ sizes += BorderScrollbarPadding().InlineSum();
return {sizes, depends_on_percentage_block_size};
}
diff --git a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_fraction_layout_algorithm.h b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_fraction_layout_algorithm.h
index 83640d5826a..05b8761c6f6 100644
--- a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_fraction_layout_algorithm.h
+++ b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_fraction_layout_algorithm.h
@@ -22,7 +22,6 @@ class CORE_EXPORT NGMathFractionLayoutAlgorithm
MinMaxSizesResult ComputeMinMaxSizes(const MinMaxSizesInput&) const final;
void GatherChildren(NGBlockNode* numerator, NGBlockNode* denominator);
- const NGBoxStrut border_scrollbar_padding_;
};
} // namespace blink
diff --git a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.cc b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.cc
index a4f4ef38039..851c08fc2fc 100644
--- a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.cc
+++ b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.cc
@@ -29,11 +29,7 @@ inline LayoutUnit InlineOffsetForDisplayMathCentering(
NGMathRowLayoutAlgorithm::NGMathRowLayoutAlgorithm(
const NGLayoutAlgorithmParams& params)
- : NGLayoutAlgorithm(params),
- border_padding_(params.fragment_geometry.border +
- params.fragment_geometry.padding),
- border_scrollbar_padding_(border_padding_ +
- params.fragment_geometry.scrollbar) {
+ : NGLayoutAlgorithm(params) {
DCHECK(params.space.IsNewFormattingContext());
DCHECK(!ConstraintSpace().HasBlockFragmentation());
container_builder_.SetIsNewFormattingContext(
@@ -42,7 +38,7 @@ NGMathRowLayoutAlgorithm::NGMathRowLayoutAlgorithm(
}
void NGMathRowLayoutAlgorithm::LayoutRowItems(
- NGContainerFragmentBuilder::ChildrenVector* children,
+ ChildrenVector* children,
LayoutUnit* max_row_block_baseline,
LogicalSize* row_total_size) {
LayoutUnit inline_offset, max_row_ascent, max_row_descent;
@@ -53,13 +49,12 @@ void NGMathRowLayoutAlgorithm::LayoutRowItems(
// absolutely positioned".
// Issue: https://github.com/mathml-refresh/mathml/issues/16
container_builder_.AddOutOfFlowChildCandidate(
- To<NGBlockNode>(child), {border_scrollbar_padding_.inline_start,
- border_scrollbar_padding_.block_start});
+ To<NGBlockNode>(child), BorderScrollbarPadding().StartOffset());
continue;
}
const ComputedStyle& child_style = child.Style();
NGConstraintSpace child_space = CreateConstraintSpaceForMathChild(
- Node(), child_available_size_, ConstraintSpace(), child);
+ Node(), ChildAvailableSize(), ConstraintSpace(), child);
scoped_refptr<const NGLayoutResult> result =
To<NGBlockNode>(child).Layout(child_space, nullptr /* break token */);
const NGPhysicalContainerFragment& physical_fragment =
@@ -79,8 +74,9 @@ void NGMathRowLayoutAlgorithm::LayoutRowItems(
// TODO(rbuis): Operators can add lspace and rspace.
children->emplace_back(
+ To<NGBlockNode>(child), margins,
LogicalOffset{inline_offset, margins.block_start - ascent},
- &physical_fragment);
+ std::move(&physical_fragment));
inline_offset += fragment.InlineSize() + margins.inline_end;
@@ -103,10 +99,8 @@ scoped_refptr<const NGLayoutResult> NGMathRowLayoutAlgorithm::Layout() {
LayoutUnit max_row_block_baseline;
const LogicalSize border_box_size = container_builder_.InitialBorderBoxSize();
- child_available_size_ =
- ShrinkAvailableSize(border_box_size, border_scrollbar_padding_);
- NGContainerFragmentBuilder::ChildrenVector children;
+ ChildrenVector children;
LayoutRowItems(&children, &max_row_block_baseline, &max_row_size);
// Add children taking into account centering, baseline and
@@ -114,23 +108,24 @@ scoped_refptr<const NGLayoutResult> NGMathRowLayoutAlgorithm::Layout() {
LayoutUnit center_offset = InlineOffsetForDisplayMathCentering(
is_display_math, container_builder_.InlineSize(),
max_row_size.inline_size);
- LogicalOffset adjust_offset(
- border_scrollbar_padding_.inline_start + center_offset,
- border_scrollbar_padding_.block_start + max_row_block_baseline);
- for (auto& child : children) {
- child.offset += adjust_offset;
+
+ LogicalOffset adjust_offset = BorderScrollbarPadding().StartOffset();
+ adjust_offset += LogicalOffset{center_offset, max_row_block_baseline};
+ for (auto& child_data : children) {
+ child_data.offset += adjust_offset;
container_builder_.AddChild(
- To<NGPhysicalContainerFragment>(*child.fragment), child.offset);
+ To<NGPhysicalContainerFragment>(*child_data.fragment),
+ child_data.offset);
+ child_data.child.StoreMargins(ConstraintSpace(), child_data.margins);
}
- container_builder_.SetBaseline(border_scrollbar_padding_.block_start +
- max_row_block_baseline);
+ container_builder_.SetBaseline(adjust_offset.block_offset);
auto block_size = ComputeBlockSizeForFragment(
- ConstraintSpace(), Style(), border_padding_,
- max_row_size.block_size + border_scrollbar_padding_.BlockSum(),
+ ConstraintSpace(), Style(), BorderPadding(),
+ max_row_size.block_size + BorderScrollbarPadding().BlockSum(),
border_box_size.inline_size);
- container_builder_.SetBlockSize(block_size);
+ container_builder_.SetFragmentsTotalBlockSize(block_size);
NGOutOfFlowLayoutPart(
Node(), ConstraintSpace(),
@@ -144,7 +139,7 @@ scoped_refptr<const NGLayoutResult> NGMathRowLayoutAlgorithm::Layout() {
MinMaxSizesResult NGMathRowLayoutAlgorithm::ComputeMinMaxSizes(
const MinMaxSizesInput& child_input) const {
if (auto result = CalculateMinMaxSizesIgnoringChildren(
- Node(), border_scrollbar_padding_))
+ Node(), BorderScrollbarPadding()))
return *result;
MinMaxSizes sizes;
@@ -171,7 +166,7 @@ MinMaxSizesResult NGMathRowLayoutAlgorithm::ComputeMinMaxSizes(
sizes.Encompass(LayoutUnit());
DCHECK_LE(sizes.min_size, sizes.max_size);
- sizes += border_scrollbar_padding_.InlineSum();
+ sizes += BorderScrollbarPadding().InlineSum();
return {sizes, depends_on_percentage_block_size};
}
diff --git a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.h b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.h
index 1463e6256f6..478fc8167c0 100644
--- a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.h
+++ b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_row_layout_algorithm.h
@@ -19,21 +19,34 @@ class CORE_EXPORT NGMathRowLayoutAlgorithm
NGBoxFragmentBuilder,
NGBlockBreakToken> {
public:
- NGMathRowLayoutAlgorithm(const NGLayoutAlgorithmParams& params);
-
- protected:
- void LayoutRowItems(NGContainerFragmentBuilder::ChildrenVector*,
- LayoutUnit* max_row_block_baseline,
- LogicalSize* row_total_size);
+ explicit NGMathRowLayoutAlgorithm(const NGLayoutAlgorithmParams& params);
+
+ struct ChildWithOffsetAndMargins {
+ DISALLOW_NEW();
+ ChildWithOffsetAndMargins(const NGBlockNode& child,
+ const NGBoxStrut& margins,
+ LogicalOffset offset,
+ scoped_refptr<const NGPhysicalFragment> fragment)
+ : child(child),
+ margins(margins),
+ offset(offset),
+ fragment(std::move(fragment)) {}
+
+ NGBlockNode child;
+ NGBoxStrut margins;
+ LogicalOffset offset;
+ scoped_refptr<const NGPhysicalFragment> fragment;
+ };
+ typedef Vector<ChildWithOffsetAndMargins, 4> ChildrenVector;
private:
scoped_refptr<const NGLayoutResult> Layout() final;
MinMaxSizesResult ComputeMinMaxSizes(const MinMaxSizesInput&) const final;
- LogicalSize child_available_size_;
- const NGBoxStrut border_padding_;
- const NGBoxStrut border_scrollbar_padding_;
+ void LayoutRowItems(ChildrenVector*,
+ LayoutUnit* max_row_block_baseline,
+ LogicalSize* row_total_size);
};
} // namespace blink
diff --git a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_scripts_layout_algorithm.cc b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_scripts_layout_algorithm.cc
index afdfca8c5b8..31b2a7a4f77 100644
--- a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_scripts_layout_algorithm.cc
+++ b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_scripts_layout_algorithm.cc
@@ -79,16 +79,11 @@ ScriptsVerticalParameters GetScriptsVerticalParameters(
NGMathScriptsLayoutAlgorithm::NGMathScriptsLayoutAlgorithm(
const NGLayoutAlgorithmParams& params)
- : NGLayoutAlgorithm(params),
- border_scrollbar_padding_(params.fragment_geometry.border +
- params.fragment_geometry.scrollbar +
- params.fragment_geometry.padding) {
+ : NGLayoutAlgorithm(params) {
DCHECK(params.space.IsNewFormattingContext());
container_builder_.SetIsNewFormattingContext(
params.space.IsNewFormattingContext());
container_builder_.SetInitialFragmentGeometry(params.fragment_geometry);
- child_available_size_ = ShrinkAvailableSize(
- container_builder_.InitialBorderBoxSize(), border_scrollbar_padding_);
}
void NGMathScriptsLayoutAlgorithm::GatherChildren(
@@ -103,8 +98,7 @@ void NGMathScriptsLayoutAlgorithm::GatherChildren(
if (child.IsOutOfFlowPositioned()) {
if (container_builder) {
container_builder->AddOutOfFlowChildCandidate(
- block_child, {border_scrollbar_padding_.inline_start,
- border_scrollbar_padding_.block_start});
+ block_child, BorderScrollbarPadding().StartOffset());
}
continue;
}
@@ -232,7 +226,7 @@ NGMathScriptsLayoutAlgorithm::ChildAndMetrics
NGMathScriptsLayoutAlgorithm::LayoutAndGetMetrics(NGBlockNode child) const {
ChildAndMetrics child_and_metrics;
auto constraint_space = CreateConstraintSpaceForMathChild(
- Node(), child_available_size_, ConstraintSpace(), child);
+ Node(), ChildAvailableSize(), ConstraintSpace(), child);
child_and_metrics.result =
child.Layout(constraint_space, nullptr /*break_token*/);
NGBoxFragment fragment(
@@ -265,14 +259,17 @@ scoped_refptr<const NGLayoutResult> NGMathScriptsLayoutAlgorithm::Layout() {
VerticalMetrics metrics =
GetVerticalMetrics(base_metrics, sub_metrics, sup_metrics);
+ const LogicalOffset content_start_offset =
+ BorderScrollbarPadding().StartOffset();
+
LayoutUnit ascent =
std::max(base_metrics.ascent, metrics.ascent + metrics.sup_shift) +
- border_scrollbar_padding_.block_start;
+ content_start_offset.block_offset;
LayoutUnit descent =
std::max(base_metrics.descent, metrics.descent + metrics.sub_shift);
// TODO(rbuis): take into account italic correction.
- LayoutUnit inline_offset = border_scrollbar_padding_.inline_start +
- base_metrics.margins.inline_start;
+ LayoutUnit inline_offset =
+ content_start_offset.inline_offset + base_metrics.margins.inline_start;
LogicalOffset base_offset(
inline_offset,
@@ -302,15 +299,14 @@ scoped_refptr<const NGLayoutResult> NGMathScriptsLayoutAlgorithm::Layout() {
container_builder_.SetBaseline(ascent);
LayoutUnit intrinsic_block_size =
- ascent + descent + border_scrollbar_padding_.block_end;
+ ascent + descent + BorderScrollbarPadding().block_end;
LayoutUnit block_size = ComputeBlockSizeForFragment(
- ConstraintSpace(), Style(), border_scrollbar_padding_,
- intrinsic_block_size,
+ ConstraintSpace(), Style(), BorderPadding(), intrinsic_block_size,
container_builder_.InitialBorderBoxSize().inline_size);
container_builder_.SetIntrinsicBlockSize(intrinsic_block_size);
- container_builder_.SetBlockSize(block_size);
+ container_builder_.SetFragmentsTotalBlockSize(block_size);
NGOutOfFlowLayoutPart(Node(), ConstraintSpace(), container_builder_.Borders(),
&container_builder_)
@@ -322,7 +318,7 @@ scoped_refptr<const NGLayoutResult> NGMathScriptsLayoutAlgorithm::Layout() {
MinMaxSizesResult NGMathScriptsLayoutAlgorithm::ComputeMinMaxSizes(
const MinMaxSizesInput& child_input) const {
if (auto result = CalculateMinMaxSizesIgnoringChildren(
- Node(), border_scrollbar_padding_))
+ Node(), BorderScrollbarPadding()))
return *result;
NGBlockNode base = nullptr;
@@ -384,7 +380,7 @@ MinMaxSizesResult NGMathScriptsLayoutAlgorithm::ComputeMinMaxSizes(
NOTREACHED();
break;
}
- sizes += border_scrollbar_padding_.InlineSum();
+ sizes += BorderScrollbarPadding().InlineSum();
return {sizes, depends_on_percentage_block_size};
}
diff --git a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_scripts_layout_algorithm.h b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_scripts_layout_algorithm.h
index 8d8f34ea40c..ce65ecd1df9 100644
--- a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_scripts_layout_algorithm.h
+++ b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_scripts_layout_algorithm.h
@@ -57,9 +57,6 @@ class CORE_EXPORT NGMathScriptsLayoutAlgorithm
const ChildAndMetrics& sup_metrics) const;
scoped_refptr<const NGLayoutResult> Layout() final;
-
- LogicalSize child_available_size_;
- const NGBoxStrut border_scrollbar_padding_;
};
} // namespace blink
diff --git a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.cc b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.cc
index 6dad93301a8..51be5e7fb8b 100644
--- a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.cc
+++ b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.cc
@@ -11,9 +11,7 @@ namespace blink {
NGMathSpaceLayoutAlgorithm::NGMathSpaceLayoutAlgorithm(
const NGLayoutAlgorithmParams& params)
- : NGLayoutAlgorithm(params),
- border_padding_(params.fragment_geometry.border +
- params.fragment_geometry.padding) {
+ : NGLayoutAlgorithm(params) {
DCHECK(params.fragment_geometry.scrollbar.IsEmpty());
container_builder_.SetIsNewFormattingContext(true);
container_builder_.SetInitialFragmentGeometry(params.fragment_geometry);
@@ -22,27 +20,28 @@ NGMathSpaceLayoutAlgorithm::NGMathSpaceLayoutAlgorithm(
scoped_refptr<const NGLayoutResult> NGMathSpaceLayoutAlgorithm::Layout() {
DCHECK(!BreakToken());
+ LayoutUnit intrinsic_block_size = BorderScrollbarPadding().BlockSum();
LayoutUnit block_size = ComputeBlockSizeForFragment(
- ConstraintSpace(), Style(), border_padding_, border_padding_.BlockSum(),
+ ConstraintSpace(), Style(), BorderPadding(), intrinsic_block_size,
container_builder_.InitialBorderBoxSize().inline_size);
- container_builder_.SetIntrinsicBlockSize(border_padding_.BlockSum());
- container_builder_.SetBlockSize(block_size);
+ container_builder_.SetIntrinsicBlockSize(intrinsic_block_size);
+ container_builder_.SetFragmentsTotalBlockSize(block_size);
container_builder_.SetBaseline(
- border_padding_.block_start +
+ BorderScrollbarPadding().block_start +
ValueForLength(Style().GetMathBaseline(), LayoutUnit()));
return container_builder_.ToBoxFragment();
}
MinMaxSizesResult NGMathSpaceLayoutAlgorithm::ComputeMinMaxSizes(
const MinMaxSizesInput&) const {
- if (auto result =
- CalculateMinMaxSizesIgnoringChildren(Node(), border_padding_))
+ if (auto result = CalculateMinMaxSizesIgnoringChildren(
+ Node(), BorderScrollbarPadding()))
return *result;
MinMaxSizes sizes;
- sizes += border_padding_.InlineSum();
+ sizes += BorderScrollbarPadding().InlineSum();
return {sizes, /* depends_on_percentage_block_size */ false};
}
diff --git a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.h b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.h
index 838d058f895..5306bf446cf 100644
--- a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.h
+++ b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_space_layout_algorithm.h
@@ -21,8 +21,6 @@ class CORE_EXPORT NGMathSpaceLayoutAlgorithm
scoped_refptr<const NGLayoutResult> Layout() final;
MinMaxSizesResult ComputeMinMaxSizes(const MinMaxSizesInput&) const final;
-
- const NGBoxStrut border_padding_;
};
} // namespace blink
diff --git a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_under_over_layout_algorithm.cc b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_under_over_layout_algorithm.cc
index 1b419ddb83e..872196de21a 100644
--- a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_under_over_layout_algorithm.cc
+++ b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_under_over_layout_algorithm.cc
@@ -75,10 +75,7 @@ UnderOverVerticalParameters GetUnderOverVerticalParameters(
NGMathUnderOverLayoutAlgorithm::NGMathUnderOverLayoutAlgorithm(
const NGLayoutAlgorithmParams& params)
- : NGLayoutAlgorithm(params),
- border_scrollbar_padding_(params.fragment_geometry.border +
- params.fragment_geometry.padding +
- params.fragment_geometry.scrollbar) {
+ : NGLayoutAlgorithm(params) {
DCHECK(params.space.IsNewFormattingContext());
container_builder_.SetIsNewFormattingContext(
params.space.IsNewFormattingContext());
@@ -94,8 +91,7 @@ void NGMathUnderOverLayoutAlgorithm::GatherChildren(NGBlockNode* base,
NGBlockNode block_child = To<NGBlockNode>(child);
if (child.IsOutOfFlowPositioned()) {
container_builder_.AddOutOfFlowChildCandidate(
- block_child, {border_scrollbar_padding_.inline_start,
- border_scrollbar_padding_.block_start});
+ block_child, BorderScrollbarPadding().StartOffset());
continue;
}
if (!*base) {
@@ -135,10 +131,11 @@ scoped_refptr<const NGLayoutResult> NGMathUnderOverLayoutAlgorithm::Layout() {
GatherChildren(&base, &over, &under);
const LogicalSize border_box_size = container_builder_.InitialBorderBoxSize();
- auto child_available_size =
- ShrinkAvailableSize(border_box_size, border_scrollbar_padding_);
- LayoutUnit block_offset = border_scrollbar_padding_.block_start;
+ const LogicalOffset content_start_offset =
+ BorderScrollbarPadding().StartOffset();
+
+ LayoutUnit block_offset = content_start_offset.block_offset;
UnderOverVerticalParameters parameters =
GetUnderOverVerticalParameters(Style());
// TODO(rbuis): handle stretchy operators.
@@ -148,7 +145,7 @@ scoped_refptr<const NGLayoutResult> NGMathUnderOverLayoutAlgorithm::Layout() {
// therefore centered relative to themselves).
if (over) {
auto over_space = CreateConstraintSpaceForMathChild(
- Node(), child_available_size, ConstraintSpace(), over);
+ Node(), ChildAvailableSize(), ConstraintSpace(), over);
scoped_refptr<const NGLayoutResult> over_layout_result =
over.Layout(over_space);
NGBoxStrut over_margins =
@@ -158,8 +155,8 @@ scoped_refptr<const NGLayoutResult> NGMathUnderOverLayoutAlgorithm::Layout() {
To<NGPhysicalBoxFragment>(over_layout_result->PhysicalFragment()));
block_offset += parameters.over_extra_ascender + over_margins.block_start;
LogicalOffset over_offset = {
- border_scrollbar_padding_.inline_start + over_margins.inline_start +
- (child_available_size.inline_size -
+ content_start_offset.inline_offset + over_margins.inline_start +
+ (ChildAvailableSize().inline_size -
(over_fragment.InlineSize() + over_margins.InlineSum())) /
2,
block_offset};
@@ -180,7 +177,7 @@ scoped_refptr<const NGLayoutResult> NGMathUnderOverLayoutAlgorithm::Layout() {
}
auto base_space = CreateConstraintSpaceForMathChild(
- Node(), child_available_size, ConstraintSpace(), base);
+ Node(), ChildAvailableSize(), ConstraintSpace(), base);
auto base_layout_result = base.Layout(base_space);
auto base_margins =
ComputeMarginsFor(base_space, base.Style(), ConstraintSpace());
@@ -191,8 +188,8 @@ scoped_refptr<const NGLayoutResult> NGMathUnderOverLayoutAlgorithm::Layout() {
block_offset += base_margins.block_start;
LogicalOffset base_offset = {
- border_scrollbar_padding_.inline_start + base_margins.inline_start +
- (child_available_size.inline_size -
+ content_start_offset.inline_offset + base_margins.inline_start +
+ (ChildAvailableSize().inline_size -
(base_fragment.InlineSize() + base_margins.InlineSum())) /
2,
block_offset};
@@ -203,7 +200,7 @@ scoped_refptr<const NGLayoutResult> NGMathUnderOverLayoutAlgorithm::Layout() {
if (under) {
auto under_space = CreateConstraintSpaceForMathChild(
- Node(), child_available_size, ConstraintSpace(), under);
+ Node(), ChildAvailableSize(), ConstraintSpace(), under);
scoped_refptr<const NGLayoutResult> under_layout_result =
under.Layout(under_space);
NGBoxStrut under_margins =
@@ -221,8 +218,8 @@ scoped_refptr<const NGLayoutResult> NGMathUnderOverLayoutAlgorithm::Layout() {
parameters.under_shift_min - under_ascent);
}
LogicalOffset under_offset = {
- border_scrollbar_padding_.inline_start + under_margins.inline_start +
- (child_available_size.inline_size -
+ content_start_offset.inline_offset + under_margins.inline_start +
+ (ChildAvailableSize().inline_size -
(under_fragment.InlineSize() + under_margins.InlineSum())) /
2,
block_offset};
@@ -238,14 +235,14 @@ scoped_refptr<const NGLayoutResult> NGMathUnderOverLayoutAlgorithm::Layout() {
base_fragment.Baseline().value_or(base_fragment.BlockSize());
container_builder_.SetBaseline(base_offset.block_offset + base_ascent);
- block_offset += border_scrollbar_padding_.block_end;
+ block_offset += BorderScrollbarPadding().block_end;
- LayoutUnit block_size = ComputeBlockSizeForFragment(
- ConstraintSpace(), Style(), border_scrollbar_padding_, block_offset,
- border_box_size.inline_size);
+ LayoutUnit block_size =
+ ComputeBlockSizeForFragment(ConstraintSpace(), Style(), BorderPadding(),
+ block_offset, border_box_size.inline_size);
container_builder_.SetIntrinsicBlockSize(block_offset);
- container_builder_.SetBlockSize(block_size);
+ container_builder_.SetFragmentsTotalBlockSize(block_size);
NGOutOfFlowLayoutPart(Node(), ConstraintSpace(), container_builder_.Borders(),
&container_builder_)
@@ -259,7 +256,7 @@ MinMaxSizesResult NGMathUnderOverLayoutAlgorithm::ComputeMinMaxSizes(
DCHECK(IsValidMathMLScript(Node()));
if (auto result = CalculateMinMaxSizesIgnoringChildren(
- Node(), border_scrollbar_padding_))
+ Node(), BorderScrollbarPadding()))
return *result;
MinMaxSizes sizes;
@@ -279,7 +276,7 @@ MinMaxSizesResult NGMathUnderOverLayoutAlgorithm::ComputeMinMaxSizes(
child_result.depends_on_percentage_block_size;
}
- sizes += border_scrollbar_padding_.InlineSum();
+ sizes += BorderScrollbarPadding().InlineSum();
return {sizes, depends_on_percentage_block_size};
}
diff --git a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_under_over_layout_algorithm.h b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_under_over_layout_algorithm.h
index a324e1b6032..c5d7d931943 100644
--- a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_under_over_layout_algorithm.h
+++ b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_math_under_over_layout_algorithm.h
@@ -26,8 +26,6 @@ class CORE_EXPORT NGMathUnderOverLayoutAlgorithm
void GatherChildren(NGBlockNode* base,
NGBlockNode* second,
NGBlockNode* third);
-
- const NGBoxStrut border_scrollbar_padding_;
};
} // namespace blink
diff --git a/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_mathml_paint_info.h b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_mathml_paint_info.h
new file mode 100644
index 00000000000..157a3f09651
--- /dev/null
+++ b/chromium/third_party/blink/renderer/core/layout/ng/mathml/ng_mathml_paint_info.h
@@ -0,0 +1,28 @@
+// Copyright 2020 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_NG_MATHML_PAINT_INFO_H_
+#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_NG_MATHML_PAINT_INFO_H_
+
+#include <unicode/uchar.h>
+#include "third_party/blink/renderer/core/core_export.h"
+#include "third_party/blink/renderer/platform/geometry/layout_unit.h"
+
+namespace blink {
+
+class ShapeResultView;
+
+struct CORE_EXPORT NGMathMLPaintInfo {
+ USING_FAST_MALLOC(NGMathMLPaintInfo);
+
+ public:
+ scoped_refptr<const ShapeResultView> operator_shape_result_view;
+ LayoutUnit operator_inline_size;
+ LayoutUnit operator_ascent;
+ LayoutUnit operator_descent;
+};
+
+} // namespace blink
+
+#endif // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_NG_MATHML_NG_MATHML_PAINT_INFO_H_