diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 15d1d77efb..2131aeed3d 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -77,6 +77,7 @@ set(SOURCES CSS/StyleValues/FlexFlowStyleValue.cpp CSS/StyleValues/FlexStyleValue.cpp CSS/StyleValues/FontStyleValue.cpp + CSS/StyleValues/GridAreaShorthandStyleValue.cpp CSS/StyleValues/GridTemplateAreaStyleValue.cpp CSS/Supports.cpp CSS/SyntaxHighlighter/SyntaxHighlighter.cpp diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 36684a0435..8aafc8b020 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include diff --git a/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp b/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp index f0ae4b87ed..184f7e1ceb 100644 --- a/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp +++ b/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp index 2ace0cc6ec..0d0f34b98d 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -34,6 +34,7 @@ #include #include #include +#include #include #include #include diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp index 05f2a8b08a..9fb27e28ad 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -1035,20 +1036,6 @@ ErrorOr GridTrackPlacementShorthandStyleValue::to_string() const return String::formatted("{} / {}", TRY(m_properties.start->grid_track_placement().to_string()), TRY(m_properties.end->grid_track_placement().to_string())); } -ErrorOr GridAreaShorthandStyleValue::to_string() const -{ - StringBuilder builder; - if (!m_properties.row_start->as_grid_track_placement().grid_track_placement().is_auto()) - TRY(builder.try_appendff("{}", TRY(m_properties.row_start->as_grid_track_placement().grid_track_placement().to_string()))); - if (!m_properties.column_start->as_grid_track_placement().grid_track_placement().is_auto()) - TRY(builder.try_appendff(" / {}", TRY(m_properties.column_start->as_grid_track_placement().grid_track_placement().to_string()))); - if (!m_properties.row_end->as_grid_track_placement().grid_track_placement().is_auto()) - TRY(builder.try_appendff(" / {}", TRY(m_properties.row_end->as_grid_track_placement().grid_track_placement().to_string()))); - if (!m_properties.column_end->as_grid_track_placement().grid_track_placement().is_auto()) - TRY(builder.try_appendff(" / {}", TRY(m_properties.column_end->as_grid_track_placement().grid_track_placement().to_string()))); - return builder.to_string(); -} - ErrorOr GridTrackPlacementStyleValue::to_string() const { return m_grid_track_placement.to_string(); diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValue.h index d3f82f66b2..e62538a810 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h @@ -714,47 +714,6 @@ private: } m_properties; }; -class GridAreaShorthandStyleValue final : public StyleValueWithDefaultOperators { -public: - static ValueComparingNonnullRefPtr create( - ValueComparingNonnullRefPtr row_start, - ValueComparingNonnullRefPtr column_start, - ValueComparingNonnullRefPtr row_end, - ValueComparingNonnullRefPtr column_end) - { - return adopt_ref(*new GridAreaShorthandStyleValue(row_start, column_start, row_end, column_end)); - } - static ValueComparingNonnullRefPtr create(GridTrackPlacement row_start, GridTrackPlacement column_start, GridTrackPlacement row_end, GridTrackPlacement column_end) - { - return adopt_ref(*new GridAreaShorthandStyleValue(GridTrackPlacementStyleValue::create(row_start), GridTrackPlacementStyleValue::create(column_start), GridTrackPlacementStyleValue::create(row_end), GridTrackPlacementStyleValue::create(column_end))); - } - virtual ~GridAreaShorthandStyleValue() override = default; - - auto row_start() const { return m_properties.row_start; } - auto column_start() const { return m_properties.column_start; } - auto row_end() const { return m_properties.row_end; } - auto column_end() const { return m_properties.column_end; } - - virtual ErrorOr to_string() const override; - - bool properties_equal(GridAreaShorthandStyleValue const& other) const { return m_properties == other.m_properties; } - -private: - GridAreaShorthandStyleValue(ValueComparingNonnullRefPtr row_start, ValueComparingNonnullRefPtr column_start, ValueComparingNonnullRefPtr row_end, ValueComparingNonnullRefPtr column_end) - : StyleValueWithDefaultOperators(Type::GridAreaShorthand) - , m_properties { .row_start = move(row_start), .column_start = move(column_start), .row_end = move(row_end), .column_end = move(column_end) } - { - } - - struct Properties { - ValueComparingNonnullRefPtr row_start; - ValueComparingNonnullRefPtr column_start; - ValueComparingNonnullRefPtr row_end; - ValueComparingNonnullRefPtr column_end; - bool operator==(Properties const&) const = default; - } m_properties; -}; - class GridTrackSizeStyleValue final : public StyleValueWithDefaultOperators { public: static ValueComparingNonnullRefPtr create(CSS::GridTrackSizeList grid_track_size_list); diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/GridAreaShorthandStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValues/GridAreaShorthandStyleValue.cpp new file mode 100644 index 0000000000..bf9ad50c55 --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/GridAreaShorthandStyleValue.cpp @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2018-2020, Andreas Kling + * Copyright (c) 2021, Tobias Christiansen + * Copyright (c) 2021-2023, Sam Atkins + * Copyright (c) 2022-2023, MacDue + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include "GridAreaShorthandStyleValue.h" + +namespace Web::CSS { + +ValueComparingNonnullRefPtr GridAreaShorthandStyleValue::create( + ValueComparingNonnullRefPtr row_start, + ValueComparingNonnullRefPtr column_start, + ValueComparingNonnullRefPtr row_end, + ValueComparingNonnullRefPtr column_end) +{ + return adopt_ref(*new GridAreaShorthandStyleValue(row_start, column_start, row_end, column_end)); +} + +ValueComparingNonnullRefPtr GridAreaShorthandStyleValue::create(GridTrackPlacement row_start, GridTrackPlacement column_start, GridTrackPlacement row_end, GridTrackPlacement column_end) +{ + return adopt_ref(*new GridAreaShorthandStyleValue(GridTrackPlacementStyleValue::create(row_start), GridTrackPlacementStyleValue::create(column_start), GridTrackPlacementStyleValue::create(row_end), GridTrackPlacementStyleValue::create(column_end))); +} + +ErrorOr GridAreaShorthandStyleValue::to_string() const +{ + StringBuilder builder; + if (!m_properties.row_start->as_grid_track_placement().grid_track_placement().is_auto()) + TRY(builder.try_appendff("{}", TRY(m_properties.row_start->as_grid_track_placement().grid_track_placement().to_string()))); + if (!m_properties.column_start->as_grid_track_placement().grid_track_placement().is_auto()) + TRY(builder.try_appendff(" / {}", TRY(m_properties.column_start->as_grid_track_placement().grid_track_placement().to_string()))); + if (!m_properties.row_end->as_grid_track_placement().grid_track_placement().is_auto()) + TRY(builder.try_appendff(" / {}", TRY(m_properties.row_end->as_grid_track_placement().grid_track_placement().to_string()))); + if (!m_properties.column_end->as_grid_track_placement().grid_track_placement().is_auto()) + TRY(builder.try_appendff(" / {}", TRY(m_properties.column_end->as_grid_track_placement().grid_track_placement().to_string()))); + return builder.to_string(); +} + +bool GridAreaShorthandStyleValue::Properties::operator==(GridAreaShorthandStyleValue::Properties const&) const = default; + +} diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/GridAreaShorthandStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/GridAreaShorthandStyleValue.h new file mode 100644 index 0000000000..7d5e59d237 --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/GridAreaShorthandStyleValue.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2018-2020, Andreas Kling + * Copyright (c) 2021, Tobias Christiansen + * Copyright (c) 2021-2023, Sam Atkins + * Copyright (c) 2022-2023, MacDue + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include + +namespace Web::CSS { + +class GridAreaShorthandStyleValue final : public StyleValueWithDefaultOperators { +public: + static ValueComparingNonnullRefPtr create( + ValueComparingNonnullRefPtr row_start, + ValueComparingNonnullRefPtr column_start, + ValueComparingNonnullRefPtr row_end, + ValueComparingNonnullRefPtr column_end); + static ValueComparingNonnullRefPtr create(GridTrackPlacement row_start, GridTrackPlacement column_start, GridTrackPlacement row_end, GridTrackPlacement column_end); + virtual ~GridAreaShorthandStyleValue() override = default; + + auto row_start() const { return m_properties.row_start; } + auto column_start() const { return m_properties.column_start; } + auto row_end() const { return m_properties.row_end; } + auto column_end() const { return m_properties.column_end; } + + virtual ErrorOr to_string() const override; + + bool properties_equal(GridAreaShorthandStyleValue const& other) const { return m_properties == other.m_properties; } + +private: + GridAreaShorthandStyleValue(ValueComparingNonnullRefPtr row_start, ValueComparingNonnullRefPtr column_start, ValueComparingNonnullRefPtr row_end, ValueComparingNonnullRefPtr column_end) + : StyleValueWithDefaultOperators(Type::GridAreaShorthand) + , m_properties { .row_start = move(row_start), .column_start = move(column_start), .row_end = move(row_end), .column_end = move(column_end) } + { + } + + struct Properties { + ValueComparingNonnullRefPtr row_start; + ValueComparingNonnullRefPtr column_start; + ValueComparingNonnullRefPtr row_end; + ValueComparingNonnullRefPtr column_end; + bool operator==(Properties const&) const; + } m_properties; +}; + +}