diff options
7 files changed, 74 insertions, 35 deletions
diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index f93f5b1dcd..3ca2acf5ae 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -66,6 +66,7 @@ set(SOURCES CSS/StyleValue.cpp CSS/StyleValues/AngleStyleValue.cpp CSS/StyleValues/BackgroundRepeatStyleValue.cpp + CSS/StyleValues/BackgroundSizeStyleValue.cpp CSS/StyleValues/BackgroundStyleValue.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 7e38881d0c..e0510d7744 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -31,6 +31,7 @@ #include <LibWeb/CSS/StyleValue.h> #include <LibWeb/CSS/StyleValues/AngleStyleValue.h> #include <LibWeb/CSS/StyleValues/BackgroundRepeatStyleValue.h> +#include <LibWeb/CSS/StyleValues/BackgroundSizeStyleValue.h> #include <LibWeb/CSS/StyleValues/BackgroundStyleValue.h> #include <LibWeb/DOM/Document.h> #include <LibWeb/Dump.h> diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp index dec5a4cdb2..a0373fc32a 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp @@ -13,6 +13,7 @@ #include <LibWeb/CSS/StyleValue.h> #include <LibWeb/CSS/StyleValues/AngleStyleValue.h> #include <LibWeb/CSS/StyleValues/BackgroundRepeatStyleValue.h> +#include <LibWeb/CSS/StyleValues/BackgroundSizeStyleValue.h> #include <LibWeb/CSS/StyleValues/BackgroundStyleValue.h> #include <LibWeb/DOM/Document.h> #include <LibWeb/HTML/BrowsingContext.h> @@ -293,11 +294,6 @@ StyleValueList const& StyleValue::as_value_list() const return static_cast<StyleValueList const&>(*this); } -ErrorOr<String> BackgroundSizeStyleValue::to_string() const -{ - return String::formatted("{} {}", TRY(m_properties.size_x.to_string()), TRY(m_properties.size_y.to_string())); -} - ErrorOr<String> BorderStyleValue::to_string() const { return String::formatted("{} {} {}", TRY(m_properties.border_width->to_string()), TRY(m_properties.border_style->to_string()), TRY(m_properties.border_color->to_string())); diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValue.h index 40b58da713..68b9bdf327 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h @@ -502,36 +502,6 @@ struct StyleValueWithDefaultOperators : public StyleValue { } }; -// NOTE: This is not used for identifier sizes, like `cover` and `contain`. -class BackgroundSizeStyleValue final : public StyleValueWithDefaultOperators<BackgroundSizeStyleValue> { -public: - static ValueComparingNonnullRefPtr<BackgroundSizeStyleValue> create(LengthPercentage size_x, LengthPercentage size_y) - { - return adopt_ref(*new BackgroundSizeStyleValue(size_x, size_y)); - } - virtual ~BackgroundSizeStyleValue() override = default; - - LengthPercentage size_x() const { return m_properties.size_x; } - LengthPercentage size_y() const { return m_properties.size_y; } - - virtual ErrorOr<String> to_string() const override; - - bool properties_equal(BackgroundSizeStyleValue const& other) const { return m_properties == other.m_properties; } - -private: - BackgroundSizeStyleValue(LengthPercentage size_x, LengthPercentage size_y) - : StyleValueWithDefaultOperators(Type::BackgroundSize) - , m_properties { .size_x = size_x, .size_y = size_y } - { - } - - struct Properties { - LengthPercentage size_x; - LengthPercentage size_y; - bool operator==(Properties const&) const = default; - } m_properties; -}; - class BorderStyleValue final : public StyleValueWithDefaultOperators<BorderStyleValue> { public: static ValueComparingNonnullRefPtr<BorderStyleValue> create( diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/BackgroundSizeStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValues/BackgroundSizeStyleValue.cpp new file mode 100644 index 0000000000..e43c193c9d --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/BackgroundSizeStyleValue.cpp @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> + * Copyright (c) 2021, Tobias Christiansen <tobyase@serenityos.org> + * Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org> + * Copyright (c) 2022-2023, MacDue <macdue@dueutil.tech> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#include "BackgroundSizeStyleValue.h" + +namespace Web::CSS { +BackgroundSizeStyleValue::BackgroundSizeStyleValue(LengthPercentage size_x, LengthPercentage size_y) + : StyleValueWithDefaultOperators(Type::BackgroundSize) + , m_properties { .size_x = size_x, .size_y = size_y } +{ +} + +BackgroundSizeStyleValue::~BackgroundSizeStyleValue() = default; + +ErrorOr<String> BackgroundSizeStyleValue::to_string() const +{ + return String::formatted("{} {}", TRY(m_properties.size_x.to_string()), TRY(m_properties.size_y.to_string())); +} + +} diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/BackgroundSizeStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/BackgroundSizeStyleValue.h new file mode 100644 index 0000000000..f67a94c637 --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/BackgroundSizeStyleValue.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org> + * Copyright (c) 2021, Tobias Christiansen <tobyase@serenityos.org> + * Copyright (c) 2021-2023, Sam Atkins <atkinssj@serenityos.org> + * Copyright (c) 2022-2023, MacDue <macdue@dueutil.tech> + * + * SPDX-License-Identifier: BSD-2-Clause + */ + +#pragma once + +#include <LibWeb/CSS/Length.h> +#include <LibWeb/CSS/Percentage.h> +#include <LibWeb/CSS/StyleValue.h> + +namespace Web::CSS { + +// NOTE: This is not used for identifier sizes, like `cover` and `contain`. +class BackgroundSizeStyleValue final : public StyleValueWithDefaultOperators<BackgroundSizeStyleValue> { +public: + static ValueComparingNonnullRefPtr<BackgroundSizeStyleValue> create(LengthPercentage size_x, LengthPercentage size_y) + { + return adopt_ref(*new BackgroundSizeStyleValue(size_x, size_y)); + } + virtual ~BackgroundSizeStyleValue() override; + + LengthPercentage size_x() const { return m_properties.size_x; } + LengthPercentage size_y() const { return m_properties.size_y; } + + virtual ErrorOr<String> to_string() const override; + + bool properties_equal(BackgroundSizeStyleValue const& other) const { return m_properties == other.m_properties; } + +private: + BackgroundSizeStyleValue(LengthPercentage size_x, LengthPercentage size_y); + + struct Properties { + LengthPercentage size_x; + LengthPercentage size_y; + bool operator==(Properties const&) const = default; + } m_properties; +}; + +} diff --git a/Userland/Libraries/LibWeb/Layout/Node.cpp b/Userland/Libraries/LibWeb/Layout/Node.cpp index 16978b8243..94ef74876a 100644 --- a/Userland/Libraries/LibWeb/Layout/Node.cpp +++ b/Userland/Libraries/LibWeb/Layout/Node.cpp @@ -6,6 +6,7 @@ #include <AK/Demangle.h> #include <LibWeb/CSS/StyleValues/BackgroundRepeatStyleValue.h> +#include <LibWeb/CSS/StyleValues/BackgroundSizeStyleValue.h> #include <LibWeb/DOM/Document.h> #include <LibWeb/Dump.h> #include <LibWeb/HTML/BrowsingContext.h> |