Commit 4da3abb0 authored by Christian Biesinger's avatar Christian Biesinger Committed by Commit Bot

[css-flex] Make it possible to use range-based for loops with line items

Makes it possible to write slightly nicer code.

R=dgrogan@chromium.org

Change-Id: Id56804b53b0564bb4b9448459e7c9ab9ffdb9c66
Reviewed-on: https://chromium-review.googlesource.com/c/1321230Reviewed-by: default avatarDavid Grogan <dgrogan@chromium.org>
Commit-Queue: Christian Biesinger <cbiesinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#605870}
parent c4a63f98
...@@ -152,6 +152,11 @@ class FlexItemVectorView { ...@@ -152,6 +152,11 @@ class FlexItemVectorView {
return vector_->at(start_ + i); return vector_->at(start_ + i);
} }
FlexItem* begin() { return vector_->begin() + start_; }
const FlexItem* begin() const { return vector_->begin() + start_; }
FlexItem* end() { return vector_->begin() + end_; }
const FlexItem* end() const { return vector_->begin() + end_; }
private: private:
FlexItemVector* vector_; FlexItemVector* vector_;
wtf_size_t start_; wtf_size_t start_;
......
...@@ -1491,11 +1491,8 @@ void LayoutFlexibleBox::AlignFlexLines(Vector<FlexLine>& line_contexts) { ...@@ -1491,11 +1491,8 @@ void LayoutFlexibleBox::AlignFlexLines(Vector<FlexLine>& line_contexts) {
++line_number) { ++line_number) {
FlexLine& line_context = line_contexts[line_number]; FlexLine& line_context = line_contexts[line_number];
line_context.cross_axis_offset += line_offset; line_context.cross_axis_offset += line_offset;
for (wtf_size_t child_number = 0; for (FlexItem& flex_item : line_context.line_items)
child_number < line_context.line_items.size(); ++child_number) {
FlexItem& flex_item = line_context.line_items[child_number];
AdjustAlignmentForChild(*flex_item.box, line_offset); AdjustAlignmentForChild(*flex_item.box, line_offset);
}
if (align_content.Distribution() == ContentDistributionType::kStretch && if (align_content.Distribution() == ContentDistributionType::kStretch &&
available_cross_axis_space > 0) available_cross_axis_space > 0)
...@@ -1519,6 +1516,7 @@ void LayoutFlexibleBox::AdjustAlignmentForChild(LayoutBox& child, ...@@ -1519,6 +1516,7 @@ void LayoutFlexibleBox::AdjustAlignmentForChild(LayoutBox& child,
void LayoutFlexibleBox::AlignChildren(Vector<FlexLine>& line_contexts) { void LayoutFlexibleBox::AlignChildren(Vector<FlexLine>& line_contexts) {
// Keep track of the space between the baseline edge and the after edge of // Keep track of the space between the baseline edge and the after edge of
// the box for each line. // the box for each line.
// TODO(cbiesinger): This should be stored in FlexLine
Vector<LayoutUnit> min_margin_after_baselines; Vector<LayoutUnit> min_margin_after_baselines;
for (FlexLine& line_context : line_contexts) { for (FlexLine& line_context : line_contexts) {
...@@ -1526,9 +1524,7 @@ void LayoutFlexibleBox::AlignChildren(Vector<FlexLine>& line_contexts) { ...@@ -1526,9 +1524,7 @@ void LayoutFlexibleBox::AlignChildren(Vector<FlexLine>& line_contexts) {
LayoutUnit line_cross_axis_extent = line_context.cross_axis_extent; LayoutUnit line_cross_axis_extent = line_context.cross_axis_extent;
LayoutUnit max_ascent = line_context.max_ascent; LayoutUnit max_ascent = line_context.max_ascent;
for (wtf_size_t child_number = 0; for (FlexItem& flex_item : line_context.line_items) {
child_number < line_context.line_items.size(); ++child_number) {
FlexItem& flex_item = line_context.line_items[child_number];
DCHECK(!flex_item.box->IsOutOfFlowPositioned()); DCHECK(!flex_item.box->IsOutOfFlowPositioned());
if (UpdateAutoMarginsInCrossAxis( if (UpdateAutoMarginsInCrossAxis(
...@@ -1564,14 +1560,11 @@ void LayoutFlexibleBox::AlignChildren(Vector<FlexLine>& line_contexts) { ...@@ -1564,14 +1560,11 @@ void LayoutFlexibleBox::AlignChildren(Vector<FlexLine>& line_contexts) {
// wrap-reverse flips the cross axis start and end. For baseline alignment, // wrap-reverse flips the cross axis start and end. For baseline alignment,
// this means we need to align the after edge of baseline elements with the // this means we need to align the after edge of baseline elements with the
// after edge of the flex line. // after edge of the flex line.
for (wtf_size_t line_number = 0; line_number < line_contexts.size(); wtf_size_t line_number = 0;
++line_number) { for (FlexLine& line_context : line_contexts) {
const FlexLine& line_context = line_contexts[line_number];
LayoutUnit min_margin_after_baseline = LayoutUnit min_margin_after_baseline =
min_margin_after_baselines[line_number]; min_margin_after_baselines[line_number++];
for (wtf_size_t child_number = 0; for (FlexItem& flex_item : line_context.line_items) {
child_number < line_context.line_items.size(); ++child_number) {
const FlexItem& flex_item = line_context.line_items[child_number];
if (flex_item.Alignment() == ItemPosition::kBaseline && if (flex_item.Alignment() == ItemPosition::kBaseline &&
!flex_item.HasAutoMarginsInCrossAxis() && min_margin_after_baseline) !flex_item.HasAutoMarginsInCrossAxis() && min_margin_after_baseline)
AdjustAlignmentForChild(*flex_item.box, min_margin_after_baseline); AdjustAlignmentForChild(*flex_item.box, min_margin_after_baseline);
...@@ -1627,9 +1620,7 @@ void LayoutFlexibleBox::FlipForRightToLeftColumn( ...@@ -1627,9 +1620,7 @@ void LayoutFlexibleBox::FlipForRightToLeftColumn(
LayoutUnit cross_extent = CrossAxisExtent(); LayoutUnit cross_extent = CrossAxisExtent();
for (const FlexLine& line_context : line_contexts) { for (const FlexLine& line_context : line_contexts) {
for (wtf_size_t child_number = 0; for (const FlexItem& flex_item : line_context.line_items) {
child_number < line_context.line_items.size(); ++child_number) {
const FlexItem& flex_item = line_context.line_items[child_number];
DCHECK(!flex_item.box->IsOutOfFlowPositioned()); DCHECK(!flex_item.box->IsOutOfFlowPositioned());
LayoutPoint location = FlowAwareLocationForChild(*flex_item.box); LayoutPoint location = FlowAwareLocationForChild(*flex_item.box);
...@@ -1646,9 +1637,7 @@ void LayoutFlexibleBox::FlipForWrapReverse( ...@@ -1646,9 +1637,7 @@ void LayoutFlexibleBox::FlipForWrapReverse(
LayoutUnit cross_axis_start_edge) { LayoutUnit cross_axis_start_edge) {
LayoutUnit content_extent = CrossAxisContentExtent(); LayoutUnit content_extent = CrossAxisContentExtent();
for (const FlexLine& line_context : line_contexts) { for (const FlexLine& line_context : line_contexts) {
for (wtf_size_t child_number = 0; for (const FlexItem& flex_item : line_context.line_items) {
child_number < line_context.line_items.size(); ++child_number) {
const FlexItem& flex_item = line_context.line_items[child_number];
LayoutUnit line_cross_axis_extent = line_context.cross_axis_extent; LayoutUnit line_cross_axis_extent = line_context.cross_axis_extent;
LayoutUnit original_offset = LayoutUnit original_offset =
line_context.cross_axis_offset - cross_axis_start_edge; line_context.cross_axis_offset - cross_axis_start_edge;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment