1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-23 13:17:36 +00:00

LibWeb: Replace Length::set_calculated_style() with ::make_calculated()

There's no need to modify the Length's calculated-value after creating
it, so let's make it immutable. :^)
This commit is contained in:
Sam Atkins 2022-01-25 12:11:23 +00:00 committed by Andreas Kling
parent db04b5687d
commit ce0a516e59
4 changed files with 12 additions and 18 deletions

View file

@ -40,6 +40,13 @@ Length Length::make_px(float value)
return Length(value, Type::Px); return Length(value, Type::Px);
} }
Length Length::make_calculated(NonnullRefPtr<CalculatedStyleValue> calculated_style_value)
{
Length length { 0, Type::Calculated };
length.m_calculated_style = move(calculated_style_value);
return length;
}
Length Length::percentage_of(Percentage const& percentage) const Length Length::percentage_of(Percentage const& percentage) const
{ {
if (is_undefined_or_auto()) { if (is_undefined_or_auto()) {
@ -71,11 +78,6 @@ Length Length::resolved_or_zero(Layout::Node const& layout_node) const
return resolved(make_px(0), layout_node); return resolved(make_px(0), layout_node);
} }
void Length::set_calculated_style(CalculatedStyleValue* value)
{
m_calculated_style = value;
}
float Length::relative_length_to_px(Gfx::IntRect const& viewport_rect, Gfx::FontMetrics const& font_metrics, float root_font_size) const float Length::relative_length_to_px(Gfx::IntRect const& viewport_rect, Gfx::FontMetrics const& font_metrics, float root_font_size) const
{ {
switch (m_type) { switch (m_type) {

View file

@ -43,6 +43,7 @@ public:
static Length make_auto(); static Length make_auto();
static Length make_px(float value); static Length make_px(float value);
static Length make_calculated(NonnullRefPtr<CalculatedStyleValue>);
Length percentage_of(Percentage const&) const; Length percentage_of(Percentage const&) const;
Length resolved(Length const& fallback_for_undefined, Layout::Node const& layout_node) const; Length resolved(Length const& fallback_for_undefined, Layout::Node const& layout_node) const;
@ -131,8 +132,6 @@ public:
return !(*this == other); return !(*this == other);
} }
void set_calculated_style(CalculatedStyleValue* value);
float relative_length_to_px(Gfx::IntRect const& viewport_rect, Gfx::FontMetrics const& font_metrics, float root_font_size) const; float relative_length_to_px(Gfx::IntRect const& viewport_rect, Gfx::FontMetrics const& font_metrics, float root_font_size) const;
private: private:

View file

@ -773,9 +773,7 @@ void StyleComputer::compute_font(StyleProperties& style, DOM::Element const* ele
maybe_length = font_size->to_length(); maybe_length = font_size->to_length();
} else if (font_size->is_calculated()) { } else if (font_size->is_calculated()) {
Length length = Length(0, Length::Type::Calculated); maybe_length = Length::make_calculated(font_size->as_calculated());
length.set_calculated_style(verify_cast<CalculatedStyleValue>(font_size.ptr()));
maybe_length = length;
} }
if (maybe_length.has_value()) { if (maybe_length.has_value()) {
// FIXME: Support font-size: calc(...) // FIXME: Support font-size: calc(...)

View file

@ -54,11 +54,8 @@ Length StyleProperties::length_or_fallback(CSS::PropertyID id, Length const& fal
return fallback; return fallback;
auto& value = maybe_value.value(); auto& value = maybe_value.value();
if (value->is_calculated()) { if (value->is_calculated())
Length length = Length(0, Length::Type::Calculated); return Length::make_calculated(value->as_calculated());
length.set_calculated_style(&value->as_calculated());
return length;
}
if (value->has_length()) if (value->has_length())
return value->to_length(); return value->to_length();
@ -75,9 +72,7 @@ LengthPercentage StyleProperties::length_percentage_or_fallback(CSS::PropertyID
if (value->is_calculated()) { if (value->is_calculated()) {
// FIXME: Handle percentages here // FIXME: Handle percentages here
Length length = Length(0, Length::Type::Calculated); return Length::make_calculated(value->as_calculated());
length.set_calculated_style(&value->as_calculated());
return length;
} }
if (value->is_percentage()) if (value->is_percentage())