diff --git a/Libraries/LibWeb/CMakeLists.txt b/Libraries/LibWeb/CMakeLists.txt index d023a527a66..c17bf0f1371 100644 --- a/Libraries/LibWeb/CMakeLists.txt +++ b/Libraries/LibWeb/CMakeLists.txt @@ -123,6 +123,7 @@ 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 @@ -134,7 +135,6 @@ set(SOURCES CSS/StyleValues/CSSKeywordValue.cpp CSS/StyleValues/CSSLabLike.cpp CSS/StyleValues/CSSLCHLike.cpp - CSS/StyleValues/CSSMathValue.cpp CSS/StyleValues/CSSRGB.cpp CSS/StyleValues/DisplayStyleValue.cpp CSS/StyleValues/EasingStyleValue.cpp diff --git a/Libraries/LibWeb/CSS/Angle.cpp b/Libraries/LibWeb/CSS/Angle.cpp index b364a9d6449..b7b47d7ed21 100644 --- a/Libraries/LibWeb/CSS/Angle.cpp +++ b/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/Libraries/LibWeb/CSS/Angle.h b/Libraries/LibWeb/CSS/Angle.h index c021716233c..533de18f08e 100644 --- a/Libraries/LibWeb/CSS/Angle.h +++ b/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/Libraries/LibWeb/CSS/CSSStyleValue.cpp b/Libraries/LibWeb/CSS/CSSStyleValue.cpp index 92ffd6d8962..744137d789e 100644 --- a/Libraries/LibWeb/CSS/CSSStyleValue.cpp +++ b/Libraries/LibWeb/CSS/CSSStyleValue.cpp @@ -18,7 +18,7 @@ #include #include #include -#include +#include #include #include #include @@ -104,10 +104,10 @@ BorderRadiusStyleValue const& CSSStyleValue::as_border_radius() const return static_cast(*this); } -CSSMathValue const& CSSStyleValue::as_math() const +CalculatedStyleValue const& CSSStyleValue::as_calculated() const { - VERIFY(is_math()); - return static_cast(*this); + VERIFY(is_calculated()); + return static_cast(*this); } CSSColorValue const& CSSStyleValue::as_color() const @@ -406,8 +406,8 @@ int CSSStyleValue::to_font_weight() const if (is_number()) { return round_to(as_number().number()); } - if (is_math()) { - auto maybe_weight = const_cast(as_math()).resolve_integer(); + if (is_calculated()) { + auto maybe_weight = const_cast(as_calculated()).resolve_integer(); if (maybe_weight.has_value()) return maybe_weight.value(); } diff --git a/Libraries/LibWeb/CSS/CSSStyleValue.h b/Libraries/LibWeb/CSS/CSSStyleValue.h index 535f993dd32..d5628ea07d1 100644 --- a/Libraries/LibWeb/CSS/CSSStyleValue.h +++ b/Libraries/LibWeb/CSS/CSSStyleValue.h @@ -94,6 +94,7 @@ public: BackgroundSize, BasicShape, BorderRadius, + Calculated, Color, ConicGradient, Content, @@ -116,7 +117,6 @@ public: Keyword, Length, LinearGradient, - Math, MathDepth, Number, OpenTypeTagged, @@ -170,6 +170,10 @@ 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()); } @@ -254,10 +258,6 @@ 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/Libraries/LibWeb/CSS/CalculatedOr.cpp b/Libraries/LibWeb/CSS/CalculatedOr.cpp index 43fe8864311..37fe91bde6d 100644 --- a/Libraries/LibWeb/CSS/CalculatedOr.cpp +++ b/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& layout_node) const +i64 IntegerOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const& layout_node) const { return calculated->resolve_integer(layout_node).value(); } @@ -64,7 +64,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(); } @@ -81,7 +81,7 @@ NonnullRefPtr LengthOrCalculated::create_style_value() const return LengthStyleValue::create(value()); } -double NumberOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const& layout_node) const +double NumberOrCalculated::resolve_calculated(NonnullRefPtr const& calculated, Layout::Node const& layout_node) const { return calculated->resolve_number(layout_node).value(); } @@ -91,7 +91,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(); } @@ -101,7 +101,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(); } @@ -118,7 +118,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/Libraries/LibWeb/CSS/CalculatedOr.h b/Libraries/LibWeb/CSS/CalculatedOr.h index b50009bae99..a1730069f93 100644 --- a/Libraries/LibWeb/CSS/CalculatedOr.h +++ b/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(Web::CSS::CSSStyleValue::SerializationMode::Normal); + return m_value.template get>()->to_string(Web::CSS::CSSStyleValue::SerializationMode::Normal); 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; }; @@ -122,7 +122,7 @@ public: [[nodiscard]] i64 resolved(Length::ResolutionContext const&) const; 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; }; @@ -133,7 +133,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; }; @@ -142,7 +142,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; }; @@ -151,7 +151,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; }; @@ -162,7 +162,7 @@ public: [[nodiscard]] Resolution resolved() const; 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; }; @@ -171,7 +171,7 @@ public: using CalculatedOr