#include "third_party/blink/renderer/core/layout/column_layout_algorithm.h"
#include <algorithm>
#include "base/not_fatal_until.h"
#include "third_party/blink/renderer/core/layout/block_layout_algorithm.h"
#include "third_party/blink/renderer/core/layout/block_layout_algorithm_utils.h"
#include "third_party/blink/renderer/core/layout/column_spanner_path.h"
#include "third_party/blink/renderer/core/layout/constraint_space_builder.h"
#include "third_party/blink/renderer/core/layout/fragmentation_utils.h"
#include "third_party/blink/renderer/core/layout/geometry/fragment_geometry.h"
#include "third_party/blink/renderer/core/layout/geometry/logical_size.h"
#include "third_party/blink/renderer/core/layout/geometry/margin_strut.h"
#include "third_party/blink/renderer/core/layout/geometry/writing_mode_converter.h"
#include "third_party/blink/renderer/core/layout/length_utils.h"
#include "third_party/blink/renderer/core/layout/list/unpositioned_list_marker.h"
#include "third_party/blink/renderer/core/layout/logical_box_fragment.h"
#include "third_party/blink/renderer/core/layout/out_of_flow_layout_part.h"
#include "third_party/blink/renderer/core/layout/physical_box_fragment.h"
#include "third_party/blink/renderer/core/layout/simplified_oof_layout_algorithm.h"
#include "third_party/blink/renderer/core/layout/table/table_layout_utils.h"
#include "third_party/blink/renderer/core/style/computed_style.h"
namespace blink {
namespace {
class MulticolPartWalker { … };
void MulticolPartWalker::Next() { … }
void MulticolPartWalker::MoveToSpanner(
BlockNode spanner,
const BlockBreakToken* next_column_token) { … }
void MulticolPartWalker::AddNextColumnBreakToken(
const BlockBreakToken& next_column_token) { … }
void MulticolPartWalker::UpdateNextColumnBreakToken(
const FragmentBuilder::ChildrenVector& children) { … }
void MulticolPartWalker::UpdateCurrent() { … }
void MulticolPartWalker::MoveToNext() { … }
BlockNode GetSpannerFromPath(const ColumnSpannerPath* path) { … }
}
ColumnLayoutAlgorithm::ColumnLayoutAlgorithm(
const LayoutAlgorithmParams& params)
: … { … }
const LayoutResult* ColumnLayoutAlgorithm::Layout() { … }
MinMaxSizesResult ColumnLayoutAlgorithm::ComputeMinMaxSizes(
const MinMaxSizesFloatInput&) { … }
const PhysicalBoxFragment& ColumnLayoutAlgorithm::CreateEmptyColumn(
const BlockNode& node,
const ConstraintSpace& parent_space,
const PhysicalBoxFragment& previous_column) { … }
MinMaxSizesResult ColumnLayoutAlgorithm::ComputeSpannersMinMaxSizes(
const BlockNode& search_parent) const { … }
BreakStatus ColumnLayoutAlgorithm::LayoutChildren() { … }
struct ResultWithOffset { … };
const LayoutResult* ColumnLayoutAlgorithm::LayoutRow(
const BlockBreakToken* next_column_token,
LayoutUnit minimum_column_block_size,
MarginStrut* margin_strut) { … }
BreakStatus ColumnLayoutAlgorithm::LayoutSpanner(
BlockNode spanner_node,
const BlockBreakToken* break_token,
MarginStrut* margin_strut) { … }
void ColumnLayoutAlgorithm::AttemptToPositionListMarker(
const PhysicalBoxFragment& child_fragment,
LayoutUnit block_offset) { … }
void ColumnLayoutAlgorithm::PositionAnyUnclaimedListMarker() { … }
void ColumnLayoutAlgorithm::PropagateBaselineFromChild(
const PhysicalBoxFragment& child,
LayoutUnit block_offset) { … }
LayoutUnit ColumnLayoutAlgorithm::ResolveColumnAutoBlockSize(
const LogicalSize& column_size,
LayoutUnit row_offset,
LayoutUnit available_outer_space,
const BlockBreakToken* child_break_token,
bool balance_columns) { … }
LayoutUnit ColumnLayoutAlgorithm::ResolveColumnAutoBlockSizeInternal(
const LogicalSize& column_size,
LayoutUnit row_offset,
LayoutUnit available_outer_space,
const BlockBreakToken* child_break_token,
bool balance_columns) { … }
LayoutUnit ColumnLayoutAlgorithm::ConstrainColumnBlockSize(
LayoutUnit size,
LayoutUnit row_offset,
LayoutUnit available_outer_space) const { … }
ConstraintSpace ColumnLayoutAlgorithm::CreateConstraintSpaceForBalancing(
const LogicalSize& column_size) const { … }
ConstraintSpace ColumnLayoutAlgorithm::CreateConstraintSpaceForSpanner(
const BlockNode& spanner,
LayoutUnit block_offset) const { … }
ConstraintSpace ColumnLayoutAlgorithm::CreateConstraintSpaceForMinMax() const { … }
LayoutUnit ColumnLayoutAlgorithm::TotalColumnBlockSize() const { … }
}
WTF_ALLOW_CLEAR_UNUSED_SLOTS_WITH_MEM_FUNCTIONS(…)