diff --git a/Userland/Libraries/LibWeb/CSS/CalculatedOr.cpp b/Userland/Libraries/LibWeb/CSS/CalculatedOr.cpp index 0b73f10888..cab98ec8eb 100644 --- a/Userland/Libraries/LibWeb/CSS/CalculatedOr.cpp +++ b/Userland/Libraries/LibWeb/CSS/CalculatedOr.cpp @@ -13,11 +13,21 @@ Angle AngleOrCalculated::resolve_calculated(NonnullRefPtr return calculated->resolve_angle().value(); } +Flex FlexOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const +{ + return calculated->resolve_flex().value(); +} + Frequency FrequencyOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const { return calculated->resolve_frequency().value(); } +i64 IntegerOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const +{ + return calculated->resolve_integer().value(); +} + Length LengthOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const& layout_node) const { return calculated->resolve_length(layout_node).value(); @@ -30,6 +40,11 @@ Length LengthOrCalculated::resolved(Length::ResolutionContext const& context) co return value(); } +double NumberOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const +{ + return calculated->resolve_number().value(); +} + Percentage PercentageOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const { return calculated->resolve_percentage().value(); diff --git a/Userland/Libraries/LibWeb/CSS/CalculatedOr.h b/Userland/Libraries/LibWeb/CSS/CalculatedOr.h index 59e89c999e..1d946cfc47 100644 --- a/Userland/Libraries/LibWeb/CSS/CalculatedOr.h +++ b/Userland/Libraries/LibWeb/CSS/CalculatedOr.h @@ -8,6 +8,7 @@ #include #include +#include #include #include #include @@ -84,6 +85,13 @@ public: Angle resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; }; +class FlexOrCalculated : public CalculatedOr { +public: + using CalculatedOr::CalculatedOr; + + Flex resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; +}; + class FrequencyOrCalculated : public CalculatedOr { public: using CalculatedOr::CalculatedOr; @@ -91,6 +99,13 @@ public: Frequency resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; }; +class IntegerOrCalculated : public CalculatedOr { +public: + using CalculatedOr::CalculatedOr; + + i64 resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; +}; + class LengthOrCalculated : public CalculatedOr { public: using CalculatedOr::CalculatedOr; @@ -99,6 +114,13 @@ public: [[nodiscard]] Length resolved(Length::ResolutionContext const&) const; }; +class NumberOrCalculated : public CalculatedOr { +public: + using CalculatedOr::CalculatedOr; + + double resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; +}; + class PercentageOrCalculated : public CalculatedOr { public: using CalculatedOr::CalculatedOr; diff --git a/Userland/Libraries/LibWeb/Forward.h b/Userland/Libraries/LibWeb/Forward.h index 4fa70adcb6..8ee6c751cb 100644 --- a/Userland/Libraries/LibWeb/Forward.h +++ b/Userland/Libraries/LibWeb/Forward.h @@ -119,6 +119,7 @@ class ElementInlineCSSStyleDeclaration; class ExplicitGridTrack; class FilterValueListStyleValue; class Flex; +class FlexOrCalculated; class FlexStyleValue; class FontFace; class Frequency; @@ -138,6 +139,7 @@ class IdentifierStyleValue; class ImageStyleValue; class InheritStyleValue; class InitialStyleValue; +class IntegerOrCalculated; class IntegerStyleValue; class Length; class LengthBox; @@ -152,6 +154,7 @@ class MediaQuery; class MediaQueryList; class MediaQueryListEvent; class Number; +class NumberOrCalculated; class NumberStyleValue; class Percentage; class PercentageOrCalculated;