mirror of
https://github.com/RGBCube/serenity
synced 2025-05-16 12:04:58 +00:00

This function should return the automatic height of the formatting context's root box. Until now, we've been relying on some magical handshakes between parent and child context, when negotiating the height of child context root boxes. This is a step towards something more reasonable.
36 lines
920 B
C++
36 lines
920 B
C++
/*
|
|
* Copyright (c) 2020, Andreas Kling <kling@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/Forward.h>
|
|
#include <LibWeb/Layout/BlockFormattingContext.h>
|
|
|
|
namespace Web::Layout {
|
|
|
|
struct ColumnWidth {
|
|
float min { 0 };
|
|
float max { 0 };
|
|
float used { 0 };
|
|
bool is_auto { true };
|
|
};
|
|
|
|
class TableFormattingContext final : public BlockFormattingContext {
|
|
public:
|
|
explicit TableFormattingContext(LayoutState&, BlockContainer const&, FormattingContext* parent);
|
|
~TableFormattingContext();
|
|
|
|
virtual void run(Box const&, LayoutMode) override;
|
|
virtual float automatic_content_height() const override;
|
|
|
|
private:
|
|
void calculate_column_widths(Box const& row, CSS::Length const& table_width, Vector<ColumnWidth>& column_widths);
|
|
void layout_row(Box const& row, Vector<ColumnWidth>& column_widths);
|
|
|
|
float m_automatic_content_height { 0 };
|
|
};
|
|
|
|
}
|