diff --git a/Userland/Libraries/LibWeb/CMakeLists.txt b/Userland/Libraries/LibWeb/CMakeLists.txt index 89155969c9f..3c73271faa1 100644 --- a/Userland/Libraries/LibWeb/CMakeLists.txt +++ b/Userland/Libraries/LibWeb/CMakeLists.txt @@ -82,6 +82,7 @@ set(SOURCES CSS/StyleValues/GridTrackPlacementStyleValue.cpp CSS/StyleValues/GridTrackPlacementShorthandStyleValue.cpp CSS/StyleValues/GridTrackSizeStyleValue.cpp + CSS/StyleValues/IdentifierStyleValue.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 377015361e9..d669c3a2808 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -48,6 +48,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 e296a226507..bf0a80c54da 100644 --- a/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp +++ b/Userland/Libraries/LibWeb/CSS/ResolvedCSSStyleDeclaration.cpp @@ -22,6 +22,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 c788351295e..89f8868c474 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleComputer.cpp @@ -37,6 +37,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 8d94eec8785..ae117b2c9aa 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -1032,206 +1033,6 @@ CalculatedStyleValue::CalculationResult CalculatedStyleValue::CalcNumberSumPartW return value->resolve(layout_node, percentage_basis); } -ErrorOr IdentifierStyleValue::to_string() const -{ - return String::from_utf8(CSS::string_from_value_id(m_id)); -} - -bool IdentifierStyleValue::has_color() const -{ - switch (m_id) { - case ValueID::Currentcolor: - case ValueID::LibwebLink: - case ValueID::LibwebPaletteActiveLink: - case ValueID::LibwebPaletteActiveWindowBorder1: - case ValueID::LibwebPaletteActiveWindowBorder2: - case ValueID::LibwebPaletteActiveWindowTitle: - case ValueID::LibwebPaletteBase: - case ValueID::LibwebPaletteBaseText: - case ValueID::LibwebPaletteButton: - case ValueID::LibwebPaletteButtonText: - case ValueID::LibwebPaletteDesktopBackground: - case ValueID::LibwebPaletteFocusOutline: - case ValueID::LibwebPaletteHighlightWindowBorder1: - case ValueID::LibwebPaletteHighlightWindowBorder2: - case ValueID::LibwebPaletteHighlightWindowTitle: - case ValueID::LibwebPaletteHoverHighlight: - case ValueID::LibwebPaletteInactiveSelection: - case ValueID::LibwebPaletteInactiveSelectionText: - case ValueID::LibwebPaletteInactiveWindowBorder1: - case ValueID::LibwebPaletteInactiveWindowBorder2: - case ValueID::LibwebPaletteInactiveWindowTitle: - case ValueID::LibwebPaletteLink: - case ValueID::LibwebPaletteMenuBase: - case ValueID::LibwebPaletteMenuBaseText: - case ValueID::LibwebPaletteMenuSelection: - case ValueID::LibwebPaletteMenuSelectionText: - case ValueID::LibwebPaletteMenuStripe: - case ValueID::LibwebPaletteMovingWindowBorder1: - case ValueID::LibwebPaletteMovingWindowBorder2: - case ValueID::LibwebPaletteMovingWindowTitle: - case ValueID::LibwebPaletteRubberBandBorder: - case ValueID::LibwebPaletteRubberBandFill: - case ValueID::LibwebPaletteRuler: - case ValueID::LibwebPaletteRulerActiveText: - case ValueID::LibwebPaletteRulerBorder: - case ValueID::LibwebPaletteRulerInactiveText: - case ValueID::LibwebPaletteSelection: - case ValueID::LibwebPaletteSelectionText: - case ValueID::LibwebPaletteSyntaxComment: - case ValueID::LibwebPaletteSyntaxControlKeyword: - case ValueID::LibwebPaletteSyntaxIdentifier: - case ValueID::LibwebPaletteSyntaxKeyword: - case ValueID::LibwebPaletteSyntaxNumber: - case ValueID::LibwebPaletteSyntaxOperator: - case ValueID::LibwebPaletteSyntaxPreprocessorStatement: - case ValueID::LibwebPaletteSyntaxPreprocessorValue: - case ValueID::LibwebPaletteSyntaxPunctuation: - case ValueID::LibwebPaletteSyntaxString: - case ValueID::LibwebPaletteSyntaxType: - case ValueID::LibwebPaletteTextCursor: - case ValueID::LibwebPaletteThreedHighlight: - case ValueID::LibwebPaletteThreedShadow1: - case ValueID::LibwebPaletteThreedShadow2: - case ValueID::LibwebPaletteVisitedLink: - case ValueID::LibwebPaletteWindow: - case ValueID::LibwebPaletteWindowText: - return true; - default: - return false; - } -} - -Color IdentifierStyleValue::to_color(Layout::NodeWithStyle const& node) const -{ - if (id() == CSS::ValueID::Currentcolor) { - if (!node.has_style()) - return Color::Black; - return node.computed_values().color(); - } - - auto& document = node.document(); - if (id() == CSS::ValueID::LibwebLink) - return document.link_color(); - - if (!document.page()) - return {}; - - auto palette = document.page()->palette(); - switch (id()) { - case CSS::ValueID::LibwebPaletteDesktopBackground: - return palette.color(ColorRole::DesktopBackground); - case CSS::ValueID::LibwebPaletteActiveWindowBorder1: - return palette.color(ColorRole::ActiveWindowBorder1); - case CSS::ValueID::LibwebPaletteActiveWindowBorder2: - return palette.color(ColorRole::ActiveWindowBorder2); - case CSS::ValueID::LibwebPaletteActiveWindowTitle: - return palette.color(ColorRole::ActiveWindowTitle); - case CSS::ValueID::LibwebPaletteInactiveWindowBorder1: - return palette.color(ColorRole::InactiveWindowBorder1); - case CSS::ValueID::LibwebPaletteInactiveWindowBorder2: - return palette.color(ColorRole::InactiveWindowBorder2); - case CSS::ValueID::LibwebPaletteInactiveWindowTitle: - return palette.color(ColorRole::InactiveWindowTitle); - case CSS::ValueID::LibwebPaletteMovingWindowBorder1: - return palette.color(ColorRole::MovingWindowBorder1); - case CSS::ValueID::LibwebPaletteMovingWindowBorder2: - return palette.color(ColorRole::MovingWindowBorder2); - case CSS::ValueID::LibwebPaletteMovingWindowTitle: - return palette.color(ColorRole::MovingWindowTitle); - case CSS::ValueID::LibwebPaletteHighlightWindowBorder1: - return palette.color(ColorRole::HighlightWindowBorder1); - case CSS::ValueID::LibwebPaletteHighlightWindowBorder2: - return palette.color(ColorRole::HighlightWindowBorder2); - case CSS::ValueID::LibwebPaletteHighlightWindowTitle: - return palette.color(ColorRole::HighlightWindowTitle); - case CSS::ValueID::LibwebPaletteMenuStripe: - return palette.color(ColorRole::MenuStripe); - case CSS::ValueID::LibwebPaletteMenuBase: - return palette.color(ColorRole::MenuBase); - case CSS::ValueID::LibwebPaletteMenuBaseText: - return palette.color(ColorRole::MenuBaseText); - case CSS::ValueID::LibwebPaletteMenuSelection: - return palette.color(ColorRole::MenuSelection); - case CSS::ValueID::LibwebPaletteMenuSelectionText: - return palette.color(ColorRole::MenuSelectionText); - case CSS::ValueID::LibwebPaletteWindow: - return palette.color(ColorRole::Window); - case CSS::ValueID::LibwebPaletteWindowText: - return palette.color(ColorRole::WindowText); - case CSS::ValueID::LibwebPaletteButton: - return palette.color(ColorRole::Button); - case CSS::ValueID::LibwebPaletteButtonText: - return palette.color(ColorRole::ButtonText); - case CSS::ValueID::LibwebPaletteBase: - return palette.color(ColorRole::Base); - case CSS::ValueID::LibwebPaletteBaseText: - return palette.color(ColorRole::BaseText); - case CSS::ValueID::LibwebPaletteThreedHighlight: - return palette.color(ColorRole::ThreedHighlight); - case CSS::ValueID::LibwebPaletteThreedShadow1: - return palette.color(ColorRole::ThreedShadow1); - case CSS::ValueID::LibwebPaletteThreedShadow2: - return palette.color(ColorRole::ThreedShadow2); - case CSS::ValueID::LibwebPaletteHoverHighlight: - return palette.color(ColorRole::HoverHighlight); - case CSS::ValueID::LibwebPaletteSelection: - return palette.color(ColorRole::Selection); - case CSS::ValueID::LibwebPaletteSelectionText: - return palette.color(ColorRole::SelectionText); - case CSS::ValueID::LibwebPaletteInactiveSelection: - return palette.color(ColorRole::InactiveSelection); - case CSS::ValueID::LibwebPaletteInactiveSelectionText: - return palette.color(ColorRole::InactiveSelectionText); - case CSS::ValueID::LibwebPaletteRubberBandFill: - return palette.color(ColorRole::RubberBandFill); - case CSS::ValueID::LibwebPaletteRubberBandBorder: - return palette.color(ColorRole::RubberBandBorder); - case CSS::ValueID::LibwebPaletteLink: - return palette.color(ColorRole::Link); - case CSS::ValueID::LibwebPaletteActiveLink: - return palette.color(ColorRole::ActiveLink); - case CSS::ValueID::LibwebPaletteVisitedLink: - return palette.color(ColorRole::VisitedLink); - case CSS::ValueID::LibwebPaletteRuler: - return palette.color(ColorRole::Ruler); - case CSS::ValueID::LibwebPaletteRulerBorder: - return palette.color(ColorRole::RulerBorder); - case CSS::ValueID::LibwebPaletteRulerActiveText: - return palette.color(ColorRole::RulerActiveText); - case CSS::ValueID::LibwebPaletteRulerInactiveText: - return palette.color(ColorRole::RulerInactiveText); - case CSS::ValueID::LibwebPaletteTextCursor: - return palette.color(ColorRole::TextCursor); - case CSS::ValueID::LibwebPaletteFocusOutline: - return palette.color(ColorRole::FocusOutline); - case CSS::ValueID::LibwebPaletteSyntaxComment: - return palette.color(ColorRole::SyntaxComment); - case CSS::ValueID::LibwebPaletteSyntaxNumber: - return palette.color(ColorRole::SyntaxNumber); - case CSS::ValueID::LibwebPaletteSyntaxString: - return palette.color(ColorRole::SyntaxString); - case CSS::ValueID::LibwebPaletteSyntaxType: - return palette.color(ColorRole::SyntaxType); - case CSS::ValueID::LibwebPaletteSyntaxPunctuation: - return palette.color(ColorRole::SyntaxPunctuation); - case CSS::ValueID::LibwebPaletteSyntaxOperator: - return palette.color(ColorRole::SyntaxOperator); - case CSS::ValueID::LibwebPaletteSyntaxKeyword: - return palette.color(ColorRole::SyntaxKeyword); - case CSS::ValueID::LibwebPaletteSyntaxControlKeyword: - return palette.color(ColorRole::SyntaxControlKeyword); - case CSS::ValueID::LibwebPaletteSyntaxIdentifier: - return palette.color(ColorRole::SyntaxIdentifier); - case CSS::ValueID::LibwebPaletteSyntaxPreprocessorStatement: - return palette.color(ColorRole::SyntaxPreprocessorStatement); - case CSS::ValueID::LibwebPaletteSyntaxPreprocessorValue: - return palette.color(ColorRole::SyntaxPreprocessorValue); - default: - return {}; - } -} - ImageStyleValue::ImageStyleValue(AK::URL const& url) : AbstractImageStyleValue(Type::Image) , m_url(url) diff --git a/Userland/Libraries/LibWeb/CSS/StyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValue.h index b58f74259d1..5c41a54f478 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValue.h @@ -661,35 +661,6 @@ private: NonnullOwnPtr m_expression; }; -class IdentifierStyleValue final : public StyleValueWithDefaultOperators { -public: - static ValueComparingNonnullRefPtr create(CSS::ValueID id) - { - return adopt_ref(*new IdentifierStyleValue(id)); - } - virtual ~IdentifierStyleValue() override = default; - - CSS::ValueID id() const { return m_id; } - - virtual bool has_auto() const override { return m_id == ValueID::Auto; } - virtual bool has_identifier() const override { return true; } - virtual CSS::ValueID to_identifier() const override { return m_id; } - virtual bool has_color() const override; - virtual Color to_color(Layout::NodeWithStyle const& node) const override; - virtual ErrorOr to_string() const override; - - bool properties_equal(IdentifierStyleValue const& other) const { return m_id == other.m_id; } - -private: - explicit IdentifierStyleValue(CSS::ValueID id) - : StyleValueWithDefaultOperators(Type::Identifier) - , m_id(id) - { - } - - CSS::ValueID m_id { CSS::ValueID::Invalid }; -}; - class AbstractImageStyleValue : public StyleValue { public: using StyleValue::StyleValue; diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.cpp b/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.cpp new file mode 100644 index 00000000000..ca5d97a66a6 --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.cpp @@ -0,0 +1,217 @@ +/* + * 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 "IdentifierStyleValue.h" +#include +#include +#include + +namespace Web::CSS { + +ErrorOr IdentifierStyleValue::to_string() const +{ + return String::from_utf8(CSS::string_from_value_id(m_id)); +} + +bool IdentifierStyleValue::has_color() const +{ + switch (m_id) { + case ValueID::Currentcolor: + case ValueID::LibwebLink: + case ValueID::LibwebPaletteActiveLink: + case ValueID::LibwebPaletteActiveWindowBorder1: + case ValueID::LibwebPaletteActiveWindowBorder2: + case ValueID::LibwebPaletteActiveWindowTitle: + case ValueID::LibwebPaletteBase: + case ValueID::LibwebPaletteBaseText: + case ValueID::LibwebPaletteButton: + case ValueID::LibwebPaletteButtonText: + case ValueID::LibwebPaletteDesktopBackground: + case ValueID::LibwebPaletteFocusOutline: + case ValueID::LibwebPaletteHighlightWindowBorder1: + case ValueID::LibwebPaletteHighlightWindowBorder2: + case ValueID::LibwebPaletteHighlightWindowTitle: + case ValueID::LibwebPaletteHoverHighlight: + case ValueID::LibwebPaletteInactiveSelection: + case ValueID::LibwebPaletteInactiveSelectionText: + case ValueID::LibwebPaletteInactiveWindowBorder1: + case ValueID::LibwebPaletteInactiveWindowBorder2: + case ValueID::LibwebPaletteInactiveWindowTitle: + case ValueID::LibwebPaletteLink: + case ValueID::LibwebPaletteMenuBase: + case ValueID::LibwebPaletteMenuBaseText: + case ValueID::LibwebPaletteMenuSelection: + case ValueID::LibwebPaletteMenuSelectionText: + case ValueID::LibwebPaletteMenuStripe: + case ValueID::LibwebPaletteMovingWindowBorder1: + case ValueID::LibwebPaletteMovingWindowBorder2: + case ValueID::LibwebPaletteMovingWindowTitle: + case ValueID::LibwebPaletteRubberBandBorder: + case ValueID::LibwebPaletteRubberBandFill: + case ValueID::LibwebPaletteRuler: + case ValueID::LibwebPaletteRulerActiveText: + case ValueID::LibwebPaletteRulerBorder: + case ValueID::LibwebPaletteRulerInactiveText: + case ValueID::LibwebPaletteSelection: + case ValueID::LibwebPaletteSelectionText: + case ValueID::LibwebPaletteSyntaxComment: + case ValueID::LibwebPaletteSyntaxControlKeyword: + case ValueID::LibwebPaletteSyntaxIdentifier: + case ValueID::LibwebPaletteSyntaxKeyword: + case ValueID::LibwebPaletteSyntaxNumber: + case ValueID::LibwebPaletteSyntaxOperator: + case ValueID::LibwebPaletteSyntaxPreprocessorStatement: + case ValueID::LibwebPaletteSyntaxPreprocessorValue: + case ValueID::LibwebPaletteSyntaxPunctuation: + case ValueID::LibwebPaletteSyntaxString: + case ValueID::LibwebPaletteSyntaxType: + case ValueID::LibwebPaletteTextCursor: + case ValueID::LibwebPaletteThreedHighlight: + case ValueID::LibwebPaletteThreedShadow1: + case ValueID::LibwebPaletteThreedShadow2: + case ValueID::LibwebPaletteVisitedLink: + case ValueID::LibwebPaletteWindow: + case ValueID::LibwebPaletteWindowText: + return true; + default: + return false; + } +} + +Color IdentifierStyleValue::to_color(Layout::NodeWithStyle const& node) const +{ + if (id() == CSS::ValueID::Currentcolor) { + if (!node.has_style()) + return Color::Black; + return node.computed_values().color(); + } + + auto& document = node.document(); + if (id() == CSS::ValueID::LibwebLink) + return document.link_color(); + + if (!document.page()) + return {}; + + auto palette = document.page()->palette(); + switch (id()) { + case CSS::ValueID::LibwebPaletteDesktopBackground: + return palette.color(ColorRole::DesktopBackground); + case CSS::ValueID::LibwebPaletteActiveWindowBorder1: + return palette.color(ColorRole::ActiveWindowBorder1); + case CSS::ValueID::LibwebPaletteActiveWindowBorder2: + return palette.color(ColorRole::ActiveWindowBorder2); + case CSS::ValueID::LibwebPaletteActiveWindowTitle: + return palette.color(ColorRole::ActiveWindowTitle); + case CSS::ValueID::LibwebPaletteInactiveWindowBorder1: + return palette.color(ColorRole::InactiveWindowBorder1); + case CSS::ValueID::LibwebPaletteInactiveWindowBorder2: + return palette.color(ColorRole::InactiveWindowBorder2); + case CSS::ValueID::LibwebPaletteInactiveWindowTitle: + return palette.color(ColorRole::InactiveWindowTitle); + case CSS::ValueID::LibwebPaletteMovingWindowBorder1: + return palette.color(ColorRole::MovingWindowBorder1); + case CSS::ValueID::LibwebPaletteMovingWindowBorder2: + return palette.color(ColorRole::MovingWindowBorder2); + case CSS::ValueID::LibwebPaletteMovingWindowTitle: + return palette.color(ColorRole::MovingWindowTitle); + case CSS::ValueID::LibwebPaletteHighlightWindowBorder1: + return palette.color(ColorRole::HighlightWindowBorder1); + case CSS::ValueID::LibwebPaletteHighlightWindowBorder2: + return palette.color(ColorRole::HighlightWindowBorder2); + case CSS::ValueID::LibwebPaletteHighlightWindowTitle: + return palette.color(ColorRole::HighlightWindowTitle); + case CSS::ValueID::LibwebPaletteMenuStripe: + return palette.color(ColorRole::MenuStripe); + case CSS::ValueID::LibwebPaletteMenuBase: + return palette.color(ColorRole::MenuBase); + case CSS::ValueID::LibwebPaletteMenuBaseText: + return palette.color(ColorRole::MenuBaseText); + case CSS::ValueID::LibwebPaletteMenuSelection: + return palette.color(ColorRole::MenuSelection); + case CSS::ValueID::LibwebPaletteMenuSelectionText: + return palette.color(ColorRole::MenuSelectionText); + case CSS::ValueID::LibwebPaletteWindow: + return palette.color(ColorRole::Window); + case CSS::ValueID::LibwebPaletteWindowText: + return palette.color(ColorRole::WindowText); + case CSS::ValueID::LibwebPaletteButton: + return palette.color(ColorRole::Button); + case CSS::ValueID::LibwebPaletteButtonText: + return palette.color(ColorRole::ButtonText); + case CSS::ValueID::LibwebPaletteBase: + return palette.color(ColorRole::Base); + case CSS::ValueID::LibwebPaletteBaseText: + return palette.color(ColorRole::BaseText); + case CSS::ValueID::LibwebPaletteThreedHighlight: + return palette.color(ColorRole::ThreedHighlight); + case CSS::ValueID::LibwebPaletteThreedShadow1: + return palette.color(ColorRole::ThreedShadow1); + case CSS::ValueID::LibwebPaletteThreedShadow2: + return palette.color(ColorRole::ThreedShadow2); + case CSS::ValueID::LibwebPaletteHoverHighlight: + return palette.color(ColorRole::HoverHighlight); + case CSS::ValueID::LibwebPaletteSelection: + return palette.color(ColorRole::Selection); + case CSS::ValueID::LibwebPaletteSelectionText: + return palette.color(ColorRole::SelectionText); + case CSS::ValueID::LibwebPaletteInactiveSelection: + return palette.color(ColorRole::InactiveSelection); + case CSS::ValueID::LibwebPaletteInactiveSelectionText: + return palette.color(ColorRole::InactiveSelectionText); + case CSS::ValueID::LibwebPaletteRubberBandFill: + return palette.color(ColorRole::RubberBandFill); + case CSS::ValueID::LibwebPaletteRubberBandBorder: + return palette.color(ColorRole::RubberBandBorder); + case CSS::ValueID::LibwebPaletteLink: + return palette.color(ColorRole::Link); + case CSS::ValueID::LibwebPaletteActiveLink: + return palette.color(ColorRole::ActiveLink); + case CSS::ValueID::LibwebPaletteVisitedLink: + return palette.color(ColorRole::VisitedLink); + case CSS::ValueID::LibwebPaletteRuler: + return palette.color(ColorRole::Ruler); + case CSS::ValueID::LibwebPaletteRulerBorder: + return palette.color(ColorRole::RulerBorder); + case CSS::ValueID::LibwebPaletteRulerActiveText: + return palette.color(ColorRole::RulerActiveText); + case CSS::ValueID::LibwebPaletteRulerInactiveText: + return palette.color(ColorRole::RulerInactiveText); + case CSS::ValueID::LibwebPaletteTextCursor: + return palette.color(ColorRole::TextCursor); + case CSS::ValueID::LibwebPaletteFocusOutline: + return palette.color(ColorRole::FocusOutline); + case CSS::ValueID::LibwebPaletteSyntaxComment: + return palette.color(ColorRole::SyntaxComment); + case CSS::ValueID::LibwebPaletteSyntaxNumber: + return palette.color(ColorRole::SyntaxNumber); + case CSS::ValueID::LibwebPaletteSyntaxString: + return palette.color(ColorRole::SyntaxString); + case CSS::ValueID::LibwebPaletteSyntaxType: + return palette.color(ColorRole::SyntaxType); + case CSS::ValueID::LibwebPaletteSyntaxPunctuation: + return palette.color(ColorRole::SyntaxPunctuation); + case CSS::ValueID::LibwebPaletteSyntaxOperator: + return palette.color(ColorRole::SyntaxOperator); + case CSS::ValueID::LibwebPaletteSyntaxKeyword: + return palette.color(ColorRole::SyntaxKeyword); + case CSS::ValueID::LibwebPaletteSyntaxControlKeyword: + return palette.color(ColorRole::SyntaxControlKeyword); + case CSS::ValueID::LibwebPaletteSyntaxIdentifier: + return palette.color(ColorRole::SyntaxIdentifier); + case CSS::ValueID::LibwebPaletteSyntaxPreprocessorStatement: + return palette.color(ColorRole::SyntaxPreprocessorStatement); + case CSS::ValueID::LibwebPaletteSyntaxPreprocessorValue: + return palette.color(ColorRole::SyntaxPreprocessorValue); + default: + return {}; + } +} + +} diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.h new file mode 100644 index 00000000000..52f451bbc46 --- /dev/null +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/IdentifierStyleValue.h @@ -0,0 +1,46 @@ +/* + * 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 +#include + +namespace Web::CSS { + +class IdentifierStyleValue final : public StyleValueWithDefaultOperators { +public: + static ValueComparingNonnullRefPtr create(ValueID id) + { + return adopt_ref(*new IdentifierStyleValue(id)); + } + virtual ~IdentifierStyleValue() override = default; + + ValueID id() const { return m_id; } + + virtual bool has_auto() const override { return m_id == ValueID::Auto; } + virtual bool has_identifier() const override { return true; } + virtual ValueID to_identifier() const override { return m_id; } + virtual bool has_color() const override; + virtual Color to_color(Layout::NodeWithStyle const& node) const override; + virtual ErrorOr to_string() const override; + + bool properties_equal(IdentifierStyleValue const& other) const { return m_id == other.m_id; } + +private: + explicit IdentifierStyleValue(ValueID id) + : StyleValueWithDefaultOperators(Type::Identifier) + , m_id(id) + { + } + + ValueID m_id { ValueID::Invalid }; +}; + +} diff --git a/Userland/Libraries/LibWeb/HTML/HTMLHeadingElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLHeadingElement.cpp index ca42d94d341..43726420fef 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLHeadingElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLHeadingElement.cpp @@ -5,6 +5,7 @@ */ #include +#include #include namespace Web::HTML { diff --git a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp index bd5a85474bf..727519c3b1e 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp @@ -6,6 +6,7 @@ * SPDX-License-Identifier: BSD-2-Clause */ +#include #include #include #include diff --git a/Userland/Libraries/LibWeb/HTML/HTMLParagraphElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLParagraphElement.cpp index c5ce12dbe8c..d484027d622 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLParagraphElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLParagraphElement.cpp @@ -5,6 +5,7 @@ */ #include +#include #include namespace Web::HTML { diff --git a/Userland/Libraries/LibWeb/HTML/HTMLPreElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLPreElement.cpp index 27409fa6b13..916b36087d6 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLPreElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLPreElement.cpp @@ -5,6 +5,7 @@ */ #include +#include #include namespace Web::HTML { diff --git a/Userland/Libraries/LibWeb/HTML/HTMLTableCaptionElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLTableCaptionElement.cpp index 1bbf118e297..0b393f9e358 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLTableCaptionElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLTableCaptionElement.cpp @@ -5,6 +5,7 @@ */ #include +#include #include namespace Web::HTML { diff --git a/Userland/Libraries/LibWeb/HTML/HTMLTableCellElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLTableCellElement.cpp index e62d5bc7d98..df6b0bde968 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLTableCellElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLTableCellElement.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include diff --git a/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp b/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp index 40f7086b14f..5b0758a4f7b 100644 --- a/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp +++ b/Userland/Libraries/LibWeb/Layout/TreeBuilder.cpp @@ -1,6 +1,6 @@ /* * Copyright (c) 2018-2022, Andreas Kling - * Copyright (c) 2022, Sam Atkins + * Copyright (c) 2022-2023, Sam Atkins * Copyright (c) 2022, MacDue * * SPDX-License-Identifier: BSD-2-Clause @@ -9,6 +9,7 @@ #include #include #include +#include #include #include #include