diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp index 3f2ac18ec0..c21f2ca580 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp @@ -120,6 +120,12 @@ FrequencyStyleValue const& StyleValue::as_frequency() const return static_cast(*this); } +GridTrackPlacementStyleValue const& StyleValue::as_grid_track_placement() const +{ + VERIFY(is_grid_track_placement()); + return static_cast(*this); +} + IdentifierStyleValue const& StyleValue::as_identifier() const { VERIFY(is_identifier()); @@ -1204,6 +1210,19 @@ bool FrequencyStyleValue::equals(StyleValue const& other) const return m_frequency == other.as_frequency().m_frequency; } +String GridTrackPlacementStyleValue::to_string() const +{ + return m_grid_track_placement.to_string(); +} + +bool GridTrackPlacementStyleValue::equals(StyleValue const& other) const +{ + if (type() != other.type()) + return false; + auto const& typed_other = other.as_grid_track_placement(); + return m_grid_track_placement == typed_other.grid_track_placement(); +} + String GridTrackSizeStyleValue::to_string() const { StringBuilder builder; @@ -1931,6 +1950,11 @@ NonnullRefPtr ColorStyleValue::create(Color color) return adopt_ref(*new ColorStyleValue(color)); } +NonnullRefPtr GridTrackPlacementStyleValue::create(CSS::GridTrackPlacement grid_track_placement) +{ + return adopt_ref(*new GridTrackPlacementStyleValue(grid_track_placement)); +} + NonnullRefPtr GridTrackSizeStyleValue::create(Vector grid_track_size) { return adopt_ref(*new GridTrackSizeStyleValue(grid_track_size)); diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValue.h index 4e61321db2..ec7936355b 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include @@ -131,6 +132,7 @@ public: FlexFlow, Font, Frequency, + GridTrackPlacement, GridTrackSize, Identifier, Image, @@ -173,6 +175,7 @@ public: bool is_flex_flow() const { return type() == Type::FlexFlow; } bool is_font() const { return type() == Type::Font; } bool is_frequency() const { return type() == Type::Frequency; } + bool is_grid_track_placement() const { return type() == Type::GridTrackPlacement; } bool is_grid_track_size() const { return type() == Type::GridTrackSize; } bool is_identifier() const { return type() == Type::Identifier; } bool is_image() const { return type() == Type::Image; } @@ -213,6 +216,7 @@ public: FlexStyleValue const& as_flex() const; FontStyleValue const& as_font() const; FrequencyStyleValue const& as_frequency() const; + GridTrackPlacementStyleValue const& as_grid_track_placement() const; GridTrackSizeStyleValue const& as_grid_track_size() const; IdentifierStyleValue const& as_identifier() const; ImageStyleValue const& as_image() const; @@ -251,6 +255,7 @@ public: FlexStyleValue& as_flex() { return const_cast(const_cast(*this).as_flex()); } FontStyleValue& as_font() { return const_cast(const_cast(*this).as_font()); } FrequencyStyleValue& as_frequency() { return const_cast(const_cast(*this).as_frequency()); } + GridTrackPlacementStyleValue& as_grid_track_placement() { return const_cast(const_cast(*this).as_grid_track_placement()); } GridTrackSizeStyleValue& as_grid_track_size() { return const_cast(const_cast(*this).as_grid_track_size()); } IdentifierStyleValue& as_identifier() { return const_cast(const_cast(*this).as_identifier()); } ImageStyleValue& as_image() { return const_cast(const_cast(*this).as_image()); } @@ -902,6 +907,25 @@ private: Frequency m_frequency; }; +class GridTrackPlacementStyleValue final : public StyleValue { +public: + static NonnullRefPtr create(CSS::GridTrackPlacement grid_track_placement); + virtual ~GridTrackPlacementStyleValue() override = default; + + CSS::GridTrackPlacement const& grid_track_placement() const { return m_grid_track_placement; } + virtual String to_string() const override; + virtual bool equals(StyleValue const& other) const override; + +private: + explicit GridTrackPlacementStyleValue(CSS::GridTrackPlacement grid_track_placement) + : StyleValue(Type::GridTrackPlacement) + , m_grid_track_placement(grid_track_placement) + { + } + + CSS::GridTrackPlacement m_grid_track_placement; +}; + class GridTrackSizeStyleValue final : public StyleValue { public: static NonnullRefPtr create(Vector grid_track_size); diff --git a/Userland/Libraries/LibWeb/Forward.h b/Userland/Libraries/LibWeb/Forward.h index 28f04dbd79..37ea31b478 100644 --- a/Userland/Libraries/LibWeb/Forward.h +++ b/Userland/Libraries/LibWeb/Forward.h @@ -58,6 +58,7 @@ class Frequency; class FrequencyPercentage; class FrequencyStyleValue; class GridTrackPlacement; +class GridTrackPlacementStyleValue; class GridTrackSize; class GridTrackSizeStyleValue; class IdentifierStyleValue;