Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(122)

Unified Diff: third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc

Issue 2807113002: [LayoutNG] Use NGLogical[Offset|Size] for NGFragment
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc
diff --git a/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc b/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc
index 422164dedfcd20a115bf5a102454c8f742ae5d00..1bad392aa053633ced9525994783aea8dc56273d 100644
--- a/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc
+++ b/third_party/WebKit/Source/core/layout/ng/ng_inline_layout_algorithm.cc
@@ -213,10 +213,8 @@ LayoutUnit NGInlineLayoutAlgorithm::InlineSize(const NGLayoutInlineItem& item,
LayoutUnit NGInlineLayoutAlgorithm::InlineSizeFromLayout(
const NGLayoutInlineItem& item) {
- return NGBoxFragment(ConstraintSpace().WritingMode(),
- ToNGPhysicalBoxFragment(
- LayoutItem(item)->PhysicalFragment().Get()))
- .InlineSize();
+ NGPhysicalSize size = LayoutItem(item)->PhysicalFragment()->Size();
+ return size.ConvertToLogical(ConstraintSpace().WritingMode()).inline_size;
}
const NGLayoutResult* NGInlineLayoutAlgorithm::LayoutItem(
@@ -360,7 +358,7 @@ void NGInlineLayoutAlgorithm::LayoutAndPositionFloat(
origin_offset, from_offset, margins,
layout_result->PhysicalFragment().Get());
- bool float_does_not_fit = end_position + float_fragment.InlineSize() >
+ bool float_does_not_fit = end_position + float_fragment.Size().inline_size >
current_opportunity_.InlineSize();
// Check if we already have a pending float. That's because a float cannot be
// higher than any block or floated box generated before.
@@ -511,12 +509,12 @@ LayoutUnit NGInlineLayoutAlgorithm::PlaceAtomicInline(
ConstraintSpace().WritingMode(),
ToNGPhysicalBoxFragment(LayoutItem(item)->PhysicalFragment().Get()));
// TODO(kojii): Margin and border in block progression not implemented yet.
- LayoutUnit block_size = fragment.BlockSize();
+ NGLogicalSize fragment_size = fragment.Size();
// TODO(kojii): Try to eliminate the wrapping text fragment and use the
// |fragment| directly. Currently |CopyFragmentDataToLayoutBlockFlow|
// requires a text fragment.
- text_builder->SetInlineSize(fragment.InlineSize()).SetBlockSize(block_size);
+ text_builder->SetSize(fragment_size);
// TODO(kojii): Add baseline position to NGPhysicalFragment.
LayoutBox* box = ToLayoutBox(item.GetLayoutObject());
@@ -525,7 +523,8 @@ LayoutUnit NGInlineLayoutAlgorithm::PlaceAtomicInline(
: LineDirectionMode::kVerticalLine;
LayoutUnit baseline_offset(box->BaselinePosition(
baseline_type_, IsFirstLine(), line_direction_mode));
- line_box->UniteMetrics({baseline_offset, block_size - baseline_offset});
+ line_box->UniteMetrics(
+ {baseline_offset, fragment_size.block_size - baseline_offset});
// TODO(kojii): Figure out what to do with OOF in NGLayoutResult.
// Floats are ok because atomic inlines are BFC?
@@ -638,9 +637,10 @@ void NGInlineLayoutAlgorithm::CopyFragmentDataToLayoutBlockFlow(
NGTextFragment fragment(ConstraintSpace().WritingMode(),
ToNGPhysicalTextFragment(physical_fragment));
InlineBox* inline_box = run->box_;
- inline_box->SetLogicalWidth(fragment.InlineSize());
- inline_box->SetLogicalLeft(fragment.InlineOffset());
- inline_box->SetLogicalTop(fragment.BlockOffset());
+ inline_box->SetLogicalWidth(fragment.Size().inline_size);
+ NGLogicalOffset fragment_offset = fragment.Offset();
+ inline_box->SetLogicalLeft(fragment_offset.inline_offset);
+ inline_box->SetLogicalTop(fragment_offset.block_offset);
if (inline_box->GetLineLayoutItem().IsBox()) {
LineLayoutBox box(inline_box->GetLineLayoutItem());
box.SetLocation(inline_box->Location());
@@ -652,8 +652,8 @@ void NGInlineLayoutAlgorithm::CopyFragmentDataToLayoutBlockFlow(
// Copy to RootInlineBox.
NGLineBoxFragment line_box(ConstraintSpace().WritingMode(),
physical_line_box);
- root_line_box->SetLogicalWidth(line_box.InlineSize());
- LayoutUnit line_top = line_box.BlockOffset();
+ root_line_box->SetLogicalWidth(line_box.Size().inline_size);
+ LayoutUnit line_top = line_box.Offset().block_offset;
root_line_box->SetLogicalTop(line_top);
NGLineHeightMetrics line_metrics(Style(), baseline_type_);
const NGLineHeightMetrics& max_with_leading = physical_line_box->Metrics();

Powered by Google App Engine
This is Rietveld 408576698