1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 01:37:35 +00:00

LibWeb: Implement basic intrinsic sizing algorithms for flex containers

This patch adds support for MinContent and MaxContent layout to FFC.
This means that an FFC can now calculate intrinsic sizes for the flex
container, to be used by the parent formatting context.

There are some FIXME's as usual, but this already works on basic things.
This commit is contained in:
Andreas Kling 2022-04-06 01:20:20 +02:00
parent d94c7fa417
commit c8240e31a1
2 changed files with 190 additions and 1 deletions

View file

@ -121,6 +121,15 @@ private:
bool is_direction_reverse() const { return m_flex_direction == CSS::FlexDirection::ColumnReverse || m_flex_direction == CSS::FlexDirection::RowReverse; }
void populate_specified_margins(FlexItem&, CSS::FlexDirection) const;
void determine_intrinsic_size_of_flex_container(LayoutMode);
[[nodiscard]] float calculate_intrinsic_main_size_of_flex_container(LayoutMode);
[[nodiscard]] float calculate_intrinsic_cross_size_of_flex_container(LayoutMode);
[[nodiscard]] float calculate_cross_min_content_contribution(FlexItem const&) const;
[[nodiscard]] float calculate_cross_max_content_contribution(FlexItem const&) const;
[[nodiscard]] float calculate_main_min_content_contribution(FlexItem const&) const;
[[nodiscard]] float calculate_main_max_content_contribution(FlexItem const&) const;
FormattingState::NodeState& m_flex_container_state;
Vector<FlexLine> m_flex_lines;