mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 05:37:34 +00:00
LibWeb: Get rid of FormattingContext::run_intrinsic_sizing()
Now that we have AvailableSpace, it's actually quite convenient to simply set up the available space and call run() with that directly.
This commit is contained in:
parent
1464ce6fbb
commit
3408f7a3c5
2 changed files with 20 additions and 24 deletions
|
@ -30,24 +30,6 @@ FormattingContext::FormattingContext(Type type, LayoutState& state, Box const& c
|
||||||
|
|
||||||
FormattingContext::~FormattingContext() = default;
|
FormattingContext::~FormattingContext() = default;
|
||||||
|
|
||||||
void FormattingContext::run_intrinsic_sizing(Box const& box)
|
|
||||||
{
|
|
||||||
auto& box_state = m_state.get_mutable(box);
|
|
||||||
|
|
||||||
auto to_available_size = [&](SizeConstraint constraint) {
|
|
||||||
if (constraint == SizeConstraint::MinContent)
|
|
||||||
return AvailableSize::make_min_content();
|
|
||||||
if (constraint == SizeConstraint::MaxContent)
|
|
||||||
return AvailableSize::make_max_content();
|
|
||||||
return AvailableSize::make_indefinite();
|
|
||||||
};
|
|
||||||
|
|
||||||
auto available_width = to_available_size(box_state.width_constraint);
|
|
||||||
auto available_height = to_available_size(box_state.height_constraint);
|
|
||||||
|
|
||||||
run(box, LayoutMode::IntrinsicSizing, AvailableSpace(available_width, available_height));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool FormattingContext::creates_block_formatting_context(Box const& box)
|
bool FormattingContext::creates_block_formatting_context(Box const& box)
|
||||||
{
|
{
|
||||||
if (box.is_root_element())
|
if (box.is_root_element())
|
||||||
|
@ -988,7 +970,11 @@ float FormattingContext::calculate_min_content_width(Layout::Box const& box) con
|
||||||
|
|
||||||
auto context = const_cast<FormattingContext*>(this)->create_independent_formatting_context_if_needed(throwaway_state, box);
|
auto context = const_cast<FormattingContext*>(this)->create_independent_formatting_context_if_needed(throwaway_state, box);
|
||||||
VERIFY(context);
|
VERIFY(context);
|
||||||
context->run_intrinsic_sizing(box);
|
|
||||||
|
auto available_width = AvailableSize::make_min_content();
|
||||||
|
auto available_height = AvailableSize::make_indefinite();
|
||||||
|
context->run(box, LayoutMode::IntrinsicSizing, AvailableSpace(available_width, available_height));
|
||||||
|
|
||||||
if (context->type() == FormattingContext::Type::Flex) {
|
if (context->type() == FormattingContext::Type::Flex) {
|
||||||
cache.min_content_width = box_state.content_width();
|
cache.min_content_width = box_state.content_width();
|
||||||
} else {
|
} else {
|
||||||
|
@ -1022,7 +1008,11 @@ float FormattingContext::calculate_max_content_width(Layout::Box const& box) con
|
||||||
|
|
||||||
auto context = const_cast<FormattingContext*>(this)->create_independent_formatting_context_if_needed(throwaway_state, box);
|
auto context = const_cast<FormattingContext*>(this)->create_independent_formatting_context_if_needed(throwaway_state, box);
|
||||||
VERIFY(context);
|
VERIFY(context);
|
||||||
context->run_intrinsic_sizing(box);
|
|
||||||
|
auto available_width = AvailableSize::make_max_content();
|
||||||
|
auto available_height = AvailableSize::make_indefinite();
|
||||||
|
context->run(box, LayoutMode::IntrinsicSizing, AvailableSpace(available_width, available_height));
|
||||||
|
|
||||||
if (context->type() == FormattingContext::Type::Flex) {
|
if (context->type() == FormattingContext::Type::Flex) {
|
||||||
cache.max_content_width = box_state.content_width();
|
cache.max_content_width = box_state.content_width();
|
||||||
} else {
|
} else {
|
||||||
|
@ -1056,7 +1046,11 @@ float FormattingContext::calculate_min_content_height(Layout::Box const& box) co
|
||||||
|
|
||||||
auto context = const_cast<FormattingContext*>(this)->create_independent_formatting_context_if_needed(throwaway_state, box);
|
auto context = const_cast<FormattingContext*>(this)->create_independent_formatting_context_if_needed(throwaway_state, box);
|
||||||
VERIFY(context);
|
VERIFY(context);
|
||||||
context->run_intrinsic_sizing(box);
|
|
||||||
|
auto available_width = AvailableSize::make_indefinite();
|
||||||
|
auto available_height = AvailableSize::make_min_content();
|
||||||
|
context->run(box, LayoutMode::IntrinsicSizing, AvailableSpace(available_width, available_height));
|
||||||
|
|
||||||
cache.min_content_height = context->automatic_content_height();
|
cache.min_content_height = context->automatic_content_height();
|
||||||
|
|
||||||
if (!isfinite(*cache.min_content_height)) {
|
if (!isfinite(*cache.min_content_height)) {
|
||||||
|
@ -1086,7 +1080,11 @@ float FormattingContext::calculate_max_content_height(Layout::Box const& box) co
|
||||||
|
|
||||||
auto context = const_cast<FormattingContext*>(this)->create_independent_formatting_context_if_needed(throwaway_state, box);
|
auto context = const_cast<FormattingContext*>(this)->create_independent_formatting_context_if_needed(throwaway_state, box);
|
||||||
VERIFY(context);
|
VERIFY(context);
|
||||||
context->run_intrinsic_sizing(box);
|
|
||||||
|
auto available_width = AvailableSize::make_indefinite();
|
||||||
|
auto available_height = AvailableSize::make_max_content();
|
||||||
|
context->run(box, LayoutMode::IntrinsicSizing, AvailableSpace(available_width, available_height));
|
||||||
|
|
||||||
cache.max_content_height = context->automatic_content_height();
|
cache.max_content_height = context->automatic_content_height();
|
||||||
|
|
||||||
if (!isfinite(*cache.max_content_height)) {
|
if (!isfinite(*cache.max_content_height)) {
|
||||||
|
|
|
@ -68,8 +68,6 @@ public:
|
||||||
static float containing_block_width_for(Box const&, LayoutState const&);
|
static float containing_block_width_for(Box const&, LayoutState const&);
|
||||||
static float containing_block_height_for(Box const&, LayoutState const&);
|
static float containing_block_height_for(Box const&, LayoutState const&);
|
||||||
|
|
||||||
void run_intrinsic_sizing(Box const&);
|
|
||||||
|
|
||||||
float compute_box_y_position_with_respect_to_siblings(Box const&) const;
|
float compute_box_y_position_with_respect_to_siblings(Box const&) const;
|
||||||
|
|
||||||
float calculate_stretch_fit_width(Box const&, AvailableSize const&) const;
|
float calculate_stretch_fit_width(Box const&, AvailableSize const&) const;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue