diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSMathFunctions.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSMathFunctions.cpp index 48a05c4a6b0..3ea9d420a73 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSMathFunctions.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSMathFunctions.cpp @@ -90,7 +90,7 @@ ErrorOr generate_implementation_file(JsonObject& functions_data, Core::Fil #include #include #include -#include +#include namespace Web::CSS::Parser { diff --git a/Meta/gn/secondary/Userland/Libraries/LibWeb/CSS/StyleValues/BUILD.gn b/Meta/gn/secondary/Userland/Libraries/LibWeb/CSS/StyleValues/BUILD.gn index be1a3363f6c..2cb9f32ff32 100644 --- a/Meta/gn/secondary/Userland/Libraries/LibWeb/CSS/StyleValues/BUILD.gn +++ b/Meta/gn/secondary/Userland/Libraries/LibWeb/CSS/StyleValues/BUILD.gn @@ -11,10 +11,10 @@ source_set("StyleValues") { "CSSHSL.cpp", "CSSHWB.cpp", "CSSKeywordValue.cpp", + "CSSMathValue.cpp", "CSSOKLCH.cpp", "CSSOKLab.cpp", "CSSRGB.cpp", - "CalculatedStyleValue.cpp", "ConicGradientStyleValue.cpp", "ContentStyleValue.cpp", "DisplayStyleValue.cpp", diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 4fbd1de5348..2937b41bbc6 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -112,7 +112,6 @@ set(SOURCES CSS/StyleValues/BackgroundSizeStyleValue.cpp CSS/StyleValues/BasicShapeStyleValue.cpp CSS/StyleValues/BorderRadiusStyleValue.cpp - CSS/StyleValues/CalculatedStyleValue.cpp CSS/StyleValues/ConicGradientStyleValue.cpp CSS/StyleValues/ContentStyleValue.cpp CSS/StyleValues/CounterDefinitionsStyleValue.cpp @@ -121,6 +120,7 @@ set(SOURCES CSS/StyleValues/CSSHSL.cpp CSS/StyleValues/CSSHWB.cpp CSS/StyleValues/CSSKeywordValue.cpp + CSS/StyleValues/CSSMathValue.cpp CSS/StyleValues/CSSOKLab.cpp CSS/StyleValues/CSSOKLCH.cpp CSS/StyleValues/CSSRGB.cpp diff --git a/Userland/Libraries/LibWeb/CSS/Angle.cpp b/Userland/Libraries/LibWeb/CSS/Angle.cpp index b7b47d7ed21..b364a9d6449 100644 --- a/Userland/Libraries/LibWeb/CSS/Angle.cpp +++ b/Userland/Libraries/LibWeb/CSS/Angle.cpp @@ -7,7 +7,7 @@ #include "Angle.h" #include #include -#include +#include namespace Web::CSS { @@ -84,7 +84,7 @@ Optional Angle::unit_from_name(StringView name) return {}; } -Angle Angle::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&, Angle const& reference_value) +Angle Angle::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&, Angle const& reference_value) { return calculated->resolve_angle_percentage(reference_value).value(); } diff --git a/Userland/Libraries/LibWeb/CSS/Angle.h b/Userland/Libraries/LibWeb/CSS/Angle.h index 533de18f08e..c021716233c 100644 --- a/Userland/Libraries/LibWeb/CSS/Angle.h +++ b/Userland/Libraries/LibWeb/CSS/Angle.h @@ -52,7 +52,7 @@ public: return 0; } - static Angle resolve_calculated(NonnullRefPtr const&, Layout::Node const&, Angle const& reference_value); + static Angle resolve_calculated(NonnullRefPtr const&, Layout::Node const&, Angle const& reference_value); private: Type m_type; diff --git a/Userland/Libraries/LibWeb/CSS/CSSStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/CSSStyleValue.cpp index bf72264a46b..84b0299ad9f 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSStyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSStyleValue.cpp @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include @@ -100,10 +100,10 @@ BorderRadiusStyleValue const& CSSStyleValue::as_border_radius() const return static_cast(*this); } -CalculatedStyleValue const& CSSStyleValue::as_calculated() const +CSSMathValue const& CSSStyleValue::as_math() const { - VERIFY(is_calculated()); - return static_cast(*this); + VERIFY(is_math()); + return static_cast(*this); } CSSColorValue const& CSSStyleValue::as_color() const @@ -378,8 +378,8 @@ int CSSStyleValue::to_font_weight() const if (is_number()) { return round_to(as_number().number()); } - if (is_calculated()) { - auto maybe_weight = const_cast(as_calculated()).resolve_integer(); + if (is_math()) { + auto maybe_weight = const_cast(as_math()).resolve_integer(); if (maybe_weight.has_value()) return maybe_weight.value(); } diff --git a/Userland/Libraries/LibWeb/CSS/CSSStyleValue.h b/Userland/Libraries/LibWeb/CSS/CSSStyleValue.h index 45be2b702f9..108bd9a1df0 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSStyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/CSSStyleValue.h @@ -93,7 +93,6 @@ public: BackgroundSize, BasicShape, BorderRadius, - Calculated, Color, ConicGradient, Content, @@ -115,6 +114,7 @@ public: Keyword, Length, LinearGradient, + Math, MathDepth, Number, Percentage, @@ -164,10 +164,6 @@ public: BorderRadiusStyleValue const& as_border_radius() const; BorderRadiusStyleValue& as_border_radius() { return const_cast(const_cast(*this).as_border_radius()); } - bool is_calculated() const { return type() == Type::Calculated; } - CalculatedStyleValue const& as_calculated() const; - CalculatedStyleValue& as_calculated() { return const_cast(const_cast(*this).as_calculated()); } - bool is_color() const { return type() == Type::Color; } CSSColorValue const& as_color() const; CSSColorValue& as_color() { return const_cast(const_cast(*this).as_color()); } @@ -252,6 +248,10 @@ public: LinearGradientStyleValue const& as_linear_gradient() const; LinearGradientStyleValue& as_linear_gradient() { return const_cast(const_cast(*this).as_linear_gradient()); } + bool is_math() const { return type() == Type::Math; } + CSSMathValue const& as_math() const; + CSSMathValue& as_math() { return const_cast(const_cast(*this).as_math()); } + bool is_math_depth() const { return type() == Type::MathDepth; } MathDepthStyleValue const& as_math_depth() const; MathDepthStyleValue& as_math_depth() { return const_cast(const_cast(*this).as_math_depth()); } diff --git a/Userland/Libraries/LibWeb/CSS/CalculatedOr.cpp b/Userland/Libraries/LibWeb/CSS/CalculatedOr.cpp index 4743a6a468b..c289485ffc7 100644 --- a/Userland/Libraries/LibWeb/CSS/CalculatedOr.cpp +++ b/Userland/Libraries/LibWeb/CSS/CalculatedOr.cpp @@ -17,7 +17,7 @@ namespace Web::CSS { -Angle AngleOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const +Angle AngleOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const { return calculated->resolve_angle().value(); } @@ -27,7 +27,7 @@ NonnullRefPtr AngleOrCalculated::create_style_value() const return AngleStyleValue::create(value()); } -Flex FlexOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const +Flex FlexOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const { return calculated->resolve_flex().value(); } @@ -37,7 +37,7 @@ NonnullRefPtr FlexOrCalculated::create_style_value() const return FlexStyleValue::create(value()); } -Frequency FrequencyOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const +Frequency FrequencyOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const { return calculated->resolve_frequency().value(); } @@ -47,7 +47,7 @@ NonnullRefPtr FrequencyOrCalculated::create_style_value() const return FrequencyStyleValue::create(value()); } -i64 IntegerOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const +i64 IntegerOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const { return calculated->resolve_integer().value(); } @@ -57,7 +57,7 @@ NonnullRefPtr IntegerOrCalculated::create_style_value() const return IntegerStyleValue::create(value()); } -Length LengthOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const& layout_node) const +Length LengthOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const& layout_node) const { return calculated->resolve_length(layout_node).value(); } @@ -74,7 +74,7 @@ NonnullRefPtr LengthOrCalculated::create_style_value() const return LengthStyleValue::create(value()); } -double NumberOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const +double NumberOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const { return calculated->resolve_number().value(); } @@ -84,7 +84,7 @@ NonnullRefPtr NumberOrCalculated::create_style_value() const return NumberStyleValue::create(value()); } -Percentage PercentageOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const +Percentage PercentageOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const { return calculated->resolve_percentage().value(); } @@ -94,7 +94,7 @@ NonnullRefPtr PercentageOrCalculated::create_style_value() const return PercentageStyleValue::create(value()); } -Resolution ResolutionOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const +Resolution ResolutionOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const { return calculated->resolve_resolution().value(); } @@ -104,7 +104,7 @@ NonnullRefPtr ResolutionOrCalculated::create_style_value() const return ResolutionStyleValue::create(value()); } -Time TimeOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const +Time TimeOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const&) const { return calculated->resolve_time().value(); } diff --git a/Userland/Libraries/LibWeb/CSS/CalculatedOr.h b/Userland/Libraries/LibWeb/CSS/CalculatedOr.h index 222fcc57457..e046979f117 100644 --- a/Userland/Libraries/LibWeb/CSS/CalculatedOr.h +++ b/Userland/Libraries/LibWeb/CSS/CalculatedOr.h @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include namespace Web::CSS { @@ -26,14 +26,14 @@ public: { } - CalculatedOr(NonnullRefPtr calculated) + CalculatedOr(NonnullRefPtr calculated) : m_value(move(calculated)) { } virtual ~CalculatedOr() = default; - bool is_calculated() const { return m_value.template has>(); } + bool is_calculated() const { return m_value.template has>(); } T const& value() const { @@ -48,10 +48,10 @@ public: return create_style_value(); } - NonnullRefPtr const& calculated() const + NonnullRefPtr const& calculated() const { VERIFY(is_calculated()); - return m_value.template get>(); + return m_value.template get>(); } T resolved(Layout::Node const& layout_node) const @@ -60,7 +60,7 @@ public: [&](T const& t) { return t; }, - [&](NonnullRefPtr const& calculated) { + [&](NonnullRefPtr const& calculated) { return resolve_calculated(calculated, layout_node); }); } @@ -68,7 +68,7 @@ public: String to_string() const { if (is_calculated()) - return m_value.template get>()->to_string(); + return m_value.template get>()->to_string(); return m_value.template get().to_string(); } @@ -81,11 +81,11 @@ public: } protected: - virtual T resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const = 0; + virtual T resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const = 0; virtual NonnullRefPtr create_style_value() const = 0; private: - Variant> m_value; + Variant> m_value; }; class AngleOrCalculated : public CalculatedOr { @@ -93,7 +93,7 @@ public: using CalculatedOr::CalculatedOr; private: - virtual Angle resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; + virtual Angle resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; virtual NonnullRefPtr create_style_value() const override; }; @@ -102,7 +102,7 @@ public: using CalculatedOr::CalculatedOr; private: - virtual Flex resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; + virtual Flex resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; virtual NonnullRefPtr create_style_value() const override; }; @@ -111,7 +111,7 @@ public: using CalculatedOr::CalculatedOr; private: - virtual Frequency resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; + virtual Frequency resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; virtual NonnullRefPtr create_style_value() const override; }; @@ -120,7 +120,7 @@ public: using CalculatedOr::CalculatedOr; private: - virtual i64 resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; + virtual i64 resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; virtual NonnullRefPtr create_style_value() const override; }; @@ -131,7 +131,7 @@ public: [[nodiscard]] Length resolved(Length::ResolutionContext const&) const; private: - virtual Length resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; + virtual Length resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; virtual NonnullRefPtr create_style_value() const override; }; @@ -140,7 +140,7 @@ public: using CalculatedOr::CalculatedOr; private: - virtual double resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; + virtual double resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; virtual NonnullRefPtr create_style_value() const override; }; @@ -149,7 +149,7 @@ public: using CalculatedOr::CalculatedOr; private: - virtual Percentage resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; + virtual Percentage resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; virtual NonnullRefPtr create_style_value() const override; }; @@ -158,7 +158,7 @@ public: using CalculatedOr::CalculatedOr; private: - virtual Resolution resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; + virtual Resolution resolve_calculated(NonnullRefPtr const&, Layout::Node const&) const override; virtual NonnullRefPtr create_style_value() const override; }; @@ -167,7 +167,7 @@ public: using CalculatedOr