diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 62c0d4a5e1..e6f8e35515 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -76,6 +76,7 @@ set(SOURCES CSS/StyleValues/FilterValueListStyleValue.cpp CSS/StyleValues/FlexFlowStyleValue.cpp CSS/StyleValues/FlexStyleValue.cpp + CSS/StyleValues/FontStyleValue.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 2020233021..8ecc6062dc 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -41,6 +41,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 a248ed1c4b..2ace0cc6ec 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -33,6 +33,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 0f7281a2d8..8bb64f2558 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -1025,11 +1026,6 @@ CalculatedStyleValue::CalculationResult CalculatedStyleValue::CalcNumberSumPartW return value->resolve(layout_node, percentage_basis); } -ErrorOr FontStyleValue::to_string() const -{ - return String::formatted("{} {} {} / {} {}", TRY(m_properties.font_style->to_string()), TRY(m_properties.font_weight->to_string()), TRY(m_properties.font_size->to_string()), TRY(m_properties.line_height->to_string()), TRY(m_properties.font_families->to_string())); -} - ErrorOr GridTrackPlacementShorthandStyleValue::to_string() const { if (m_properties.end->grid_track_placement().is_auto()) diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValue.h index dba988568d..14e834705e 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h @@ -661,44 +661,6 @@ private: NonnullOwnPtr m_expression; }; -class FontStyleValue final : public StyleValueWithDefaultOperators { -public: - static ValueComparingNonnullRefPtr create(ValueComparingNonnullRefPtr font_stretch, ValueComparingNonnullRefPtr font_style, ValueComparingNonnullRefPtr font_weight, ValueComparingNonnullRefPtr font_size, ValueComparingNonnullRefPtr line_height, ValueComparingNonnullRefPtr font_families) - { - return adopt_ref(*new FontStyleValue(move(font_stretch), move(font_style), move(font_weight), move(font_size), move(line_height), move(font_families))); - } - virtual ~FontStyleValue() override = default; - - ValueComparingNonnullRefPtr font_stretch() const { return m_properties.font_stretch; } - ValueComparingNonnullRefPtr font_style() const { return m_properties.font_style; } - ValueComparingNonnullRefPtr font_weight() const { return m_properties.font_weight; } - ValueComparingNonnullRefPtr font_size() const { return m_properties.font_size; } - ValueComparingNonnullRefPtr line_height() const { return m_properties.line_height; } - ValueComparingNonnullRefPtr font_families() const { return m_properties.font_families; } - - virtual ErrorOr to_string() const override; - - bool properties_equal(FontStyleValue const& other) const { return m_properties == other.m_properties; }; - -private: - FontStyleValue(ValueComparingNonnullRefPtr font_stretch, ValueComparingNonnullRefPtr font_style, ValueComparingNonnullRefPtr font_weight, ValueComparingNonnullRefPtr font_size, ValueComparingNonnullRefPtr line_height, ValueComparingNonnullRefPtr font_families) - : StyleValueWithDefaultOperators(Type::Font) - , m_properties { .font_stretch = move(font_stretch), .font_style = move(font_style), .font_weight = move(font_weight), .font_size = move(font_size), .line_height = move(line_height), .font_families = move(font_families) } - { - } - - struct Properties { - ValueComparingNonnullRefPtr font_stretch; - ValueComparingNonnullRefPtr font_style; - ValueComparingNonnullRefPtr font_weight; - ValueComparingNonnullRefPtr font_size; - ValueComparingNonnullRefPtr line_height; - ValueComparingNonnullRefPtr font_families; - // FIXME: Implement font-variant. - bool operator==(Properties const&) const = default; - } m_properties; -}; - class FrequencyStyleValue : public StyleValueWithDefaultOperators { public: static ValueComparingNonnullRefPtr create(Frequency frequency) diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/FontStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValues/FontStyleValue.cpp new file mode 100644 index 0000000000..3536e578cf --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/FontStyleValue.cpp @@ -0,0 +1,19 @@ +/* + * 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 "FontStyleValue.h" + +namespace Web::CSS { + +ErrorOr FontStyleValue::to_string() const +{ + return String::formatted("{} {} {} / {} {}", TRY(m_properties.font_style->to_string()), TRY(m_properties.font_weight->to_string()), TRY(m_properties.font_size->to_string()), TRY(m_properties.line_height->to_string()), TRY(m_properties.font_families->to_string())); +} + +} diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/FontStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/FontStyleValue.h new file mode 100644 index 0000000000..024463f74b --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/FontStyleValue.h @@ -0,0 +1,54 @@ +/* + * 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 FontStyleValue final : public StyleValueWithDefaultOperators { +public: + static ValueComparingNonnullRefPtr create(ValueComparingNonnullRefPtr font_stretch, ValueComparingNonnullRefPtr font_style, ValueComparingNonnullRefPtr font_weight, ValueComparingNonnullRefPtr font_size, ValueComparingNonnullRefPtr line_height, ValueComparingNonnullRefPtr font_families) + { + return adopt_ref(*new FontStyleValue(move(font_stretch), move(font_style), move(font_weight), move(font_size), move(line_height), move(font_families))); + } + virtual ~FontStyleValue() override = default; + + ValueComparingNonnullRefPtr font_stretch() const { return m_properties.font_stretch; } + ValueComparingNonnullRefPtr font_style() const { return m_properties.font_style; } + ValueComparingNonnullRefPtr font_weight() const { return m_properties.font_weight; } + ValueComparingNonnullRefPtr font_size() const { return m_properties.font_size; } + ValueComparingNonnullRefPtr line_height() const { return m_properties.line_height; } + ValueComparingNonnullRefPtr font_families() const { return m_properties.font_families; } + + virtual ErrorOr to_string() const override; + + bool properties_equal(FontStyleValue const& other) const { return m_properties == other.m_properties; }; + +private: + FontStyleValue(ValueComparingNonnullRefPtr font_stretch, ValueComparingNonnullRefPtr font_style, ValueComparingNonnullRefPtr font_weight, ValueComparingNonnullRefPtr font_size, ValueComparingNonnullRefPtr line_height, ValueComparingNonnullRefPtr font_families) + : StyleValueWithDefaultOperators(Type::Font) + , m_properties { .font_stretch = move(font_stretch), .font_style = move(font_style), .font_weight = move(font_weight), .font_size = move(font_size), .line_height = move(line_height), .font_families = move(font_families) } + { + } + + struct Properties { + ValueComparingNonnullRefPtr font_stretch; + ValueComparingNonnullRefPtr font_style; + ValueComparingNonnullRefPtr font_weight; + ValueComparingNonnullRefPtr font_size; + ValueComparingNonnullRefPtr line_height; + ValueComparingNonnullRefPtr font_families; + // FIXME: Implement font-variant. + bool operator==(Properties const&) const = default; + } m_properties; +}; + +}