1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 02:17:34 +00:00

LibWeb: Remove Length::Type::Undefined! :^)

This commit is contained in:
Sam Atkins 2022-02-18 16:50:17 +00:00 committed by Andreas Kling
parent b715943035
commit 356d8bcfe8
8 changed files with 13 additions and 20 deletions

View file

@ -18,7 +18,6 @@
namespace Web::CSS { namespace Web::CSS {
Length::Length() = default;
Length::Length(int value, Type type) Length::Length(int value, Type type)
: m_type(type) : m_type(type)
, m_value(value) , m_value(value)
@ -49,8 +48,8 @@ Length Length::make_calculated(NonnullRefPtr<CalculatedStyleValue> calculated_st
Length Length::percentage_of(Percentage const& percentage) const Length Length::percentage_of(Percentage const& percentage) const
{ {
if (is_undefined_or_auto()) { if (is_auto()) {
dbgln("Attempting to get percentage of an undefined or auto length, this seems wrong? But for now we just return the original length."); dbgln("Attempting to get percentage of an auto length, this seems wrong? But for now we just return the original length.");
return *this; return *this;
} }
@ -132,8 +131,6 @@ const char* Length::unit_name() const
return "rem"; return "rem";
case Type::Auto: case Type::Auto:
return "auto"; return "auto";
case Type::Undefined:
return "undefined";
case Type::Vh: case Type::Vh:
return "vh"; return "vh";
case Type::Vw: case Type::Vw:

View file

@ -15,7 +15,6 @@ namespace Web::CSS {
class Length { class Length {
public: public:
enum class Type { enum class Type {
Undefined,
Calculated, Calculated,
Auto, Auto,
Cm, Cm,
@ -37,7 +36,6 @@ public:
// We have a RefPtr<CalculatedStyleValue> member, but can't include the header StyleValue.h as it includes // We have a RefPtr<CalculatedStyleValue> member, but can't include the header StyleValue.h as it includes
// this file already. To break the cyclic dependency, we must move all method definitions out. // this file already. To break the cyclic dependency, we must move all method definitions out.
Length();
Length(int value, Type type); Length(int value, Type type);
Length(float value, Type type); Length(float value, Type type);
@ -48,8 +46,6 @@ public:
Length resolved(Layout::Node const& layout_node) const; Length resolved(Layout::Node const& layout_node) const;
bool is_undefined_or_auto() const { return m_type == Type::Undefined || m_type == Type::Auto; }
bool is_undefined() const { return m_type == Type::Undefined; }
bool is_auto() const { return m_type == Type::Auto; } bool is_auto() const { return m_type == Type::Auto; }
bool is_calculated() const { return m_type == Type::Calculated; } bool is_calculated() const { return m_type == Type::Calculated; }
@ -137,7 +133,7 @@ public:
private: private:
const char* unit_name() const; const char* unit_name() const;
Type m_type { Type::Undefined }; Type m_type;
float m_value { 0 }; float m_value { 0 };
RefPtr<CalculatedStyleValue> m_calculated_style; RefPtr<CalculatedStyleValue> m_calculated_style;

View file

@ -131,7 +131,7 @@ float StyleProperties::line_height(Layout::Node const& layout_node) const
if (line_height->is_length()) { if (line_height->is_length()) {
auto line_height_length = line_height->to_length(); auto line_height_length = line_height->to_length();
if (!line_height_length.is_undefined_or_auto()) if (!line_height_length.is_auto())
return line_height_length.to_px(layout_node); return line_height_length.to_px(layout_node);
} }

View file

@ -500,7 +500,6 @@ Optional<Length> CalculatedStyleValue::resolve_length(Layout::Node const& layout
Optional<LengthPercentage> CalculatedStyleValue::resolve_length_percentage(Layout::Node const& layout_node, Length const& percentage_basis) const Optional<LengthPercentage> CalculatedStyleValue::resolve_length_percentage(Layout::Node const& layout_node, Length const& percentage_basis) const
{ {
VERIFY(!percentage_basis.is_undefined());
auto result = m_expression->resolve(&layout_node, percentage_basis); auto result = m_expression->resolve(&layout_node, percentage_basis);
return result.value().visit( return result.value().visit(

View file

@ -295,7 +295,7 @@ float BlockFormattingContext::compute_theoretical_height(Box const& box)
height = compute_height_for_replaced_element(verify_cast<ReplacedBox>(box)); height = compute_height_for_replaced_element(verify_cast<ReplacedBox>(box));
} else { } else {
if (!box.computed_values().height().has_value() if (!box.computed_values().height().has_value()
|| (box.computed_values().height()->is_length() && box.computed_values().height()->length().is_undefined_or_auto()) || (box.computed_values().height()->is_length() && box.computed_values().height()->length().is_auto())
|| (computed_values.height().has_value() && computed_values.height()->is_percentage() && !is_absolute(containing_block.computed_values().height()))) { || (computed_values.height().has_value() && computed_values.height()->is_percentage() && !is_absolute(containing_block.computed_values().height()))) {
height = compute_auto_height_for_block_level_element(box, ConsiderFloats::No); height = compute_auto_height_for_block_level_element(box, ConsiderFloats::No);
} else { } else {
@ -441,7 +441,7 @@ void BlockFormattingContext::layout_block_level_children(BlockContainer& block_c
if (layout_mode != LayoutMode::Default) { if (layout_mode != LayoutMode::Default) {
auto& width = block_container.computed_values().width(); auto& width = block_container.computed_values().width();
if (!width.has_value() || (width->is_length() && width->length().is_undefined_or_auto())) if (!width.has_value() || (width->is_length() && width->length().is_auto()))
block_container.set_content_width(content_width); block_container.set_content_width(content_width);
} }
} }

View file

@ -29,7 +29,7 @@ static bool is_undefined_or_auto(Optional<CSS::LengthPercentage> const& length_p
{ {
if (!length_percentage.has_value()) if (!length_percentage.has_value())
return true; return true;
return length_percentage->is_length() && length_percentage->length().is_undefined_or_auto(); return length_percentage->is_length() && length_percentage->length().is_auto();
} }
FlexFormattingContext::FlexFormattingContext(Box& flex_container, FormattingContext* parent) FlexFormattingContext::FlexFormattingContext(Box& flex_container, FormattingContext* parent)
@ -235,11 +235,12 @@ bool FlexFormattingContext::cross_size_is_absolute_or_resolved_nicely(NodeWithSt
if (!length_percentage.has_value()) if (!length_percentage.has_value())
return false; return false;
// FIXME: Handle calc here.
if (length_percentage->is_length()) { if (length_percentage->is_length()) {
auto& length = length_percentage->length(); auto& length = length_percentage->length();
if (length.is_absolute() || length.is_relative()) if (length.is_absolute() || length.is_relative())
return true; return true;
if (length.is_undefined_or_auto()) if (length.is_auto())
return false; return false;
} }

View file

@ -126,7 +126,7 @@ void InlineFormattingContext::dimension_box_on_line(Box& box, LayoutMode layout_
auto& inline_block = const_cast<BlockContainer&>(verify_cast<BlockContainer>(box)); auto& inline_block = const_cast<BlockContainer&>(verify_cast<BlockContainer>(box));
auto& width_value = inline_block.computed_values().width(); auto& width_value = inline_block.computed_values().width();
if (!width_value.has_value() || (width_value->is_length() && width_value->length().is_undefined_or_auto())) { if (!width_value.has_value() || (width_value->is_length() && width_value->length().is_auto())) {
auto result = calculate_shrink_to_fit_widths(inline_block); auto result = calculate_shrink_to_fit_widths(inline_block);
auto available_width = containing_block().content_width() auto available_width = containing_block().content_width()
@ -146,7 +146,7 @@ void InlineFormattingContext::dimension_box_on_line(Box& box, LayoutMode layout_
auto independent_formatting_context = layout_inside(inline_block, layout_mode); auto independent_formatting_context = layout_inside(inline_block, layout_mode);
auto& height_value = inline_block.computed_values().height(); auto& height_value = inline_block.computed_values().height();
if (!height_value.has_value() || (height_value->is_length() && height_value->length().is_undefined_or_auto())) { if (!height_value.has_value() || (height_value->is_length() && height_value->length().is_auto())) {
// FIXME: (10.6.6) If 'height' is 'auto', the height depends on the element's descendants per 10.6.7. // FIXME: (10.6.6) If 'height' is 'auto', the height depends on the element's descendants per 10.6.7.
BlockFormattingContext::compute_height(inline_block); BlockFormattingContext::compute_height(inline_block);
} else { } else {

View file

@ -72,7 +72,7 @@ void TableFormattingContext::calculate_column_widths(Box& row, Vector<float>& co
{ {
size_t column_index = 0; size_t column_index = 0;
auto* table = row.first_ancestor_of_type<TableBox>(); auto* table = row.first_ancestor_of_type<TableBox>();
bool use_auto_layout = !table || (!table->computed_values().width().has_value() || (table->computed_values().width()->is_length() && table->computed_values().width()->length().is_undefined_or_auto())); bool use_auto_layout = !table || (!table->computed_values().width().has_value() || (table->computed_values().width()->is_length() && table->computed_values().width()->length().is_auto()));
row.for_each_child_of_type<TableCellBox>([&](auto& cell) { row.for_each_child_of_type<TableCellBox>([&](auto& cell) {
compute_width(cell); compute_width(cell);
if (use_auto_layout) { if (use_auto_layout) {
@ -91,7 +91,7 @@ void TableFormattingContext::layout_row(Box& row, Vector<float>& column_widths)
float tallest_cell_height = 0; float tallest_cell_height = 0;
float content_width = 0; float content_width = 0;
auto* table = row.first_ancestor_of_type<TableBox>(); auto* table = row.first_ancestor_of_type<TableBox>();
bool use_auto_layout = !table || (!table->computed_values().width().has_value() || (table->computed_values().width()->is_length() && table->computed_values().width()->length().is_undefined_or_auto())); bool use_auto_layout = !table || (!table->computed_values().width().has_value() || (table->computed_values().width()->is_length() && table->computed_values().width()->length().is_auto()));
row.for_each_child_of_type<TableCellBox>([&](auto& cell) { row.for_each_child_of_type<TableCellBox>([&](auto& cell) {
cell.set_offset(row.effective_offset().translated(content_width, 0)); cell.set_offset(row.effective_offset().translated(content_width, 0));