From 402845fe007e0351130eca4117541393374fc3cc Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Fri, 24 Mar 2023 14:50:50 +0000 Subject: [PATCH] LibWeb: Split GridTrackPlacementShorthandStyleValue out of StyleValue --- Userland/Libraries/LibWeb/CMakeLists.txt | 1 + .../Libraries/LibWeb/CSS/Parser/Parser.cpp | 1 + .../CSS/ResolvedCSSStyleDeclaration.cpp | 1 + .../Libraries/LibWeb/CSS/StyleComputer.cpp | 1 + Userland/Libraries/LibWeb/CSS/StyleValue.cpp | 8 +--- Userland/Libraries/LibWeb/CSS/StyleValue.h | 33 -------------- .../GridTrackPlacementShorthandStyleValue.cpp | 31 +++++++++++++ .../GridTrackPlacementShorthandStyleValue.h | 43 +++++++++++++++++++ 8 files changed, 79 insertions(+), 40 deletions(-) create mode 100644 Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackPlacementShorthandStyleValue.cpp create mode 100644 Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackPlacementShorthandStyleValue.h diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 2131aeed3d..2a9c65d023 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -79,6 +79,7 @@ set(SOURCES CSS/StyleValues/FontStyleValue.cpp CSS/StyleValues/GridAreaShorthandStyleValue.cpp CSS/StyleValues/GridTemplateAreaStyleValue.cpp + CSS/StyleValues/GridTrackPlacementShorthandStyleValue.cpp CSS/Supports.cpp CSS/SyntaxHighlighter/SyntaxHighlighter.cpp CSS/Time.cpp diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 8aafc8b020..704a848d3c 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -45,6 +45,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 184f7e1ceb..4e83ea96a0 100644 --- a/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp +++ b/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp @@ -19,6 +19,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 0d0f34b98d..ec409c6d00 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -35,6 +35,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 9fb27e28ad..77ff38b4d9 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -1029,13 +1030,6 @@ CalculatedStyleValue::CalculationResult CalculatedStyleValue::CalcNumberSumPartW return value->resolve(layout_node, percentage_basis); } -ErrorOr GridTrackPlacementShorthandStyleValue::to_string() const -{ - if (m_properties.end->grid_track_placement().is_auto()) - return String::formatted("{}", TRY(m_properties.start->grid_track_placement().to_string())); - return String::formatted("{} / {}", TRY(m_properties.start->grid_track_placement().to_string()), TRY(m_properties.end->grid_track_placement().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 e62538a810..affda99fd8 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h @@ -681,39 +681,6 @@ private: CSS::GridTrackPlacement m_grid_track_placement; }; -class GridTrackPlacementShorthandStyleValue final : public StyleValueWithDefaultOperators { -public: - static ValueComparingNonnullRefPtr create(ValueComparingNonnullRefPtr start, ValueComparingNonnullRefPtr end) - { - return adopt_ref(*new GridTrackPlacementShorthandStyleValue(move(start), move(end))); - } - static ValueComparingNonnullRefPtr create(GridTrackPlacement start) - { - return adopt_ref(*new GridTrackPlacementShorthandStyleValue(GridTrackPlacementStyleValue::create(start), GridTrackPlacementStyleValue::create(GridTrackPlacement::make_auto()))); - } - virtual ~GridTrackPlacementShorthandStyleValue() override = default; - - auto start() const { return m_properties.start; } - auto end() const { return m_properties.end; } - - virtual ErrorOr to_string() const override; - - bool properties_equal(GridTrackPlacementShorthandStyleValue const& other) const { return m_properties == other.m_properties; }; - -private: - GridTrackPlacementShorthandStyleValue(ValueComparingNonnullRefPtr start, ValueComparingNonnullRefPtr end) - : StyleValueWithDefaultOperators(Type::GridTrackPlacementShorthand) - , m_properties { .start = move(start), .end = move(end) } - { - } - - struct Properties { - ValueComparingNonnullRefPtr start; - ValueComparingNonnullRefPtr 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/GridTrackPlacementShorthandStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackPlacementShorthandStyleValue.cpp new file mode 100644 index 0000000000..808387ead5 --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackPlacementShorthandStyleValue.cpp @@ -0,0 +1,31 @@ +/* + * 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 "GridTrackPlacementShorthandStyleValue.h" + +namespace Web::CSS { + +ValueComparingNonnullRefPtr GridTrackPlacementShorthandStyleValue::create(ValueComparingNonnullRefPtr start, ValueComparingNonnullRefPtr end) +{ + return adopt_ref(*new GridTrackPlacementShorthandStyleValue(move(start), move(end))); +} + +ValueComparingNonnullRefPtr GridTrackPlacementShorthandStyleValue::create(GridTrackPlacement start) +{ + return adopt_ref(*new GridTrackPlacementShorthandStyleValue(GridTrackPlacementStyleValue::create(start), GridTrackPlacementStyleValue::create(GridTrackPlacement::make_auto()))); +} + +ErrorOr GridTrackPlacementShorthandStyleValue::to_string() const +{ + if (m_properties.end->grid_track_placement().is_auto()) + return String::formatted("{}", TRY(m_properties.start->grid_track_placement().to_string())); + return String::formatted("{} / {}", TRY(m_properties.start->grid_track_placement().to_string()), TRY(m_properties.end->grid_track_placement().to_string())); +} + +} diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackPlacementShorthandStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackPlacementShorthandStyleValue.h new file mode 100644 index 0000000000..c9345eaa91 --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/GridTrackPlacementShorthandStyleValue.h @@ -0,0 +1,43 @@ +/* + * 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 GridTrackPlacementShorthandStyleValue final : public StyleValueWithDefaultOperators { +public: + static ValueComparingNonnullRefPtr create(ValueComparingNonnullRefPtr start, ValueComparingNonnullRefPtr end); + static ValueComparingNonnullRefPtr create(GridTrackPlacement start); + virtual ~GridTrackPlacementShorthandStyleValue() override = default; + + auto start() const { return m_properties.start; } + auto end() const { return m_properties.end; } + + virtual ErrorOr to_string() const override; + + bool properties_equal(GridTrackPlacementShorthandStyleValue const& other) const { return m_properties == other.m_properties; }; + +private: + GridTrackPlacementShorthandStyleValue(ValueComparingNonnullRefPtr start, ValueComparingNonnullRefPtr end) + : StyleValueWithDefaultOperators(Type::GridTrackPlacementShorthand) + , m_properties { .start = move(start), .end = move(end) } + { + } + + struct Properties { + ValueComparingNonnullRefPtr start; + ValueComparingNonnullRefPtr end; + bool operator==(Properties const&) const = default; + } m_properties; +}; + +}