mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-28 19:59:17 +00:00
LibWeb/CSS: Implement UnicodeRangeStyleValue
This is preparation for storing at-rule descriptors as style values.
This commit is contained in:
parent
e0a03147c6
commit
09b8f73e11
Notes:
github-actions[bot]
2025-03-28 09:15:53 +00:00
Author: https://github.com/AtkinsSJ
Commit: 09b8f73e11
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4125
8 changed files with 86 additions and 0 deletions
|
@ -183,6 +183,7 @@ set(SOURCES
|
||||||
CSS/StyleValues/StyleValueList.cpp
|
CSS/StyleValues/StyleValueList.cpp
|
||||||
CSS/StyleValues/TransformationStyleValue.cpp
|
CSS/StyleValues/TransformationStyleValue.cpp
|
||||||
CSS/StyleValues/TransitionStyleValue.cpp
|
CSS/StyleValues/TransitionStyleValue.cpp
|
||||||
|
CSS/StyleValues/UnicodeRangeStyleValue.cpp
|
||||||
CSS/StyleValues/UnresolvedStyleValue.cpp
|
CSS/StyleValues/UnresolvedStyleValue.cpp
|
||||||
CSS/Supports.cpp
|
CSS/Supports.cpp
|
||||||
CSS/SyntaxHighlighter/SyntaxHighlighter.cpp
|
CSS/SyntaxHighlighter/SyntaxHighlighter.cpp
|
||||||
|
|
|
@ -60,6 +60,7 @@
|
||||||
#include <LibWeb/CSS/StyleValues/TransformationStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/TransformationStyleValue.h>
|
||||||
#include <LibWeb/CSS/StyleValues/TransitionStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/TransitionStyleValue.h>
|
||||||
#include <LibWeb/CSS/StyleValues/URLStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/URLStyleValue.h>
|
||||||
|
#include <LibWeb/CSS/StyleValues/UnicodeRangeStyleValue.h>
|
||||||
#include <LibWeb/CSS/StyleValues/UnresolvedStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/UnresolvedStyleValue.h>
|
||||||
|
|
||||||
namespace Web::CSS {
|
namespace Web::CSS {
|
||||||
|
@ -351,6 +352,12 @@ TransitionStyleValue const& CSSStyleValue::as_transition() const
|
||||||
return static_cast<TransitionStyleValue const&>(*this);
|
return static_cast<TransitionStyleValue const&>(*this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UnicodeRangeStyleValue const& CSSStyleValue::as_unicode_range() const
|
||||||
|
{
|
||||||
|
VERIFY(is_unicode_range());
|
||||||
|
return static_cast<UnicodeRangeStyleValue const&>(*this);
|
||||||
|
}
|
||||||
|
|
||||||
UnresolvedStyleValue const& CSSStyleValue::as_unresolved() const
|
UnresolvedStyleValue const& CSSStyleValue::as_unresolved() const
|
||||||
{
|
{
|
||||||
VERIFY(is_unresolved());
|
VERIFY(is_unresolved());
|
||||||
|
|
|
@ -133,6 +133,7 @@ public:
|
||||||
Time,
|
Time,
|
||||||
Transformation,
|
Transformation,
|
||||||
Transition,
|
Transition,
|
||||||
|
UnicodeRange,
|
||||||
Unresolved,
|
Unresolved,
|
||||||
URL,
|
URL,
|
||||||
ValueList,
|
ValueList,
|
||||||
|
@ -331,6 +332,10 @@ public:
|
||||||
TransitionStyleValue const& as_transition() const;
|
TransitionStyleValue const& as_transition() const;
|
||||||
TransitionStyleValue& as_transition() { return const_cast<TransitionStyleValue&>(const_cast<CSSStyleValue const&>(*this).as_transition()); }
|
TransitionStyleValue& as_transition() { return const_cast<TransitionStyleValue&>(const_cast<CSSStyleValue const&>(*this).as_transition()); }
|
||||||
|
|
||||||
|
bool is_unicode_range() const { return type() == Type::UnicodeRange; }
|
||||||
|
UnicodeRangeStyleValue const& as_unicode_range() const;
|
||||||
|
UnicodeRangeStyleValue& as_unicode_range() { return const_cast<UnicodeRangeStyleValue&>(const_cast<CSSStyleValue const&>(*this).as_unicode_range()); }
|
||||||
|
|
||||||
bool is_unresolved() const { return type() == Type::Unresolved; }
|
bool is_unresolved() const { return type() == Type::Unresolved; }
|
||||||
UnresolvedStyleValue const& as_unresolved() const;
|
UnresolvedStyleValue const& as_unresolved() const;
|
||||||
UnresolvedStyleValue& as_unresolved() { return const_cast<UnresolvedStyleValue&>(const_cast<CSSStyleValue const&>(*this).as_unresolved()); }
|
UnresolvedStyleValue& as_unresolved() { return const_cast<UnresolvedStyleValue&>(const_cast<CSSStyleValue const&>(*this).as_unresolved()); }
|
||||||
|
|
|
@ -268,6 +268,7 @@ private:
|
||||||
Optional<Gfx::UnicodeRange> parse_unicode_range(TokenStream<ComponentValue>&);
|
Optional<Gfx::UnicodeRange> parse_unicode_range(TokenStream<ComponentValue>&);
|
||||||
Optional<Gfx::UnicodeRange> parse_unicode_range(StringView);
|
Optional<Gfx::UnicodeRange> parse_unicode_range(StringView);
|
||||||
Vector<Gfx::UnicodeRange> parse_unicode_ranges(TokenStream<ComponentValue>&);
|
Vector<Gfx::UnicodeRange> parse_unicode_ranges(TokenStream<ComponentValue>&);
|
||||||
|
RefPtr<UnicodeRangeStyleValue> parse_unicode_range_value(TokenStream<ComponentValue>&);
|
||||||
Optional<GridSize> parse_grid_size(ComponentValue const&);
|
Optional<GridSize> parse_grid_size(ComponentValue const&);
|
||||||
Optional<GridFitContent> parse_grid_fit_content(Vector<ComponentValue> const&);
|
Optional<GridFitContent> parse_grid_fit_content(Vector<ComponentValue> const&);
|
||||||
Optional<GridMinMax> parse_min_max(Vector<ComponentValue> const&);
|
Optional<GridMinMax> parse_min_max(Vector<ComponentValue> const&);
|
||||||
|
|
|
@ -56,6 +56,7 @@
|
||||||
#include <LibWeb/CSS/StyleValues/StringStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/StringStyleValue.h>
|
||||||
#include <LibWeb/CSS/StyleValues/TimeStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/TimeStyleValue.h>
|
||||||
#include <LibWeb/CSS/StyleValues/URLStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/URLStyleValue.h>
|
||||||
|
#include <LibWeb/CSS/StyleValues/UnicodeRangeStyleValue.h>
|
||||||
#include <LibWeb/CSS/StyleValues/UnresolvedStyleValue.h>
|
#include <LibWeb/CSS/StyleValues/UnresolvedStyleValue.h>
|
||||||
#include <LibWeb/DOM/Element.h>
|
#include <LibWeb/DOM/Element.h>
|
||||||
#include <LibWeb/Dump.h>
|
#include <LibWeb/Dump.h>
|
||||||
|
@ -621,6 +622,13 @@ Vector<Gfx::UnicodeRange> Parser::parse_unicode_ranges(TokenStream<ComponentValu
|
||||||
return unicode_ranges;
|
return unicode_ranges;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RefPtr<UnicodeRangeStyleValue> Parser::parse_unicode_range_value(TokenStream<ComponentValue>& tokens)
|
||||||
|
{
|
||||||
|
if (auto range = parse_unicode_range(tokens); range.has_value())
|
||||||
|
return UnicodeRangeStyleValue::create(range.release_value());
|
||||||
|
return nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
RefPtr<CSSStyleValue> Parser::parse_integer_value(TokenStream<ComponentValue>& tokens)
|
RefPtr<CSSStyleValue> Parser::parse_integer_value(TokenStream<ComponentValue>& tokens)
|
||||||
{
|
{
|
||||||
auto const& peek_token = tokens.next_token();
|
auto const& peek_token = tokens.next_token();
|
||||||
|
|
29
Libraries/LibWeb/CSS/StyleValues/UnicodeRangeStyleValue.cpp
Normal file
29
Libraries/LibWeb/CSS/StyleValues/UnicodeRangeStyleValue.cpp
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2025, Sam Atkins <sam@ladybird.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <LibWeb/CSS/StyleValues/UnicodeRangeStyleValue.h>
|
||||||
|
|
||||||
|
namespace Web::CSS {
|
||||||
|
|
||||||
|
UnicodeRangeStyleValue::UnicodeRangeStyleValue(Gfx::UnicodeRange unicode_range)
|
||||||
|
: StyleValueWithDefaultOperators(Type::UnicodeRange)
|
||||||
|
, m_unicode_range(unicode_range)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
UnicodeRangeStyleValue::~UnicodeRangeStyleValue() = default;
|
||||||
|
|
||||||
|
String UnicodeRangeStyleValue::to_string(SerializationMode) const
|
||||||
|
{
|
||||||
|
return m_unicode_range.to_string();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool UnicodeRangeStyleValue::properties_equal(UnicodeRangeStyleValue const& other) const
|
||||||
|
{
|
||||||
|
return m_unicode_range == other.m_unicode_range;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
34
Libraries/LibWeb/CSS/StyleValues/UnicodeRangeStyleValue.h
Normal file
34
Libraries/LibWeb/CSS/StyleValues/UnicodeRangeStyleValue.h
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2025, Sam Atkins <sam@ladybird.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: BSD-2-Clause
|
||||||
|
*/
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <LibGfx/Font/UnicodeRange.h>
|
||||||
|
#include <LibWeb/CSS/CSSStyleValue.h>
|
||||||
|
|
||||||
|
namespace Web::CSS {
|
||||||
|
|
||||||
|
class UnicodeRangeStyleValue final : public StyleValueWithDefaultOperators<UnicodeRangeStyleValue> {
|
||||||
|
public:
|
||||||
|
static ValueComparingNonnullRefPtr<UnicodeRangeStyleValue> create(Gfx::UnicodeRange unicode_range)
|
||||||
|
{
|
||||||
|
return adopt_ref(*new (nothrow) UnicodeRangeStyleValue(unicode_range));
|
||||||
|
}
|
||||||
|
virtual ~UnicodeRangeStyleValue() override;
|
||||||
|
|
||||||
|
Gfx::UnicodeRange const& unicode_range() const { return m_unicode_range; }
|
||||||
|
|
||||||
|
virtual String to_string(SerializationMode) const override;
|
||||||
|
|
||||||
|
bool properties_equal(UnicodeRangeStyleValue const&) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
UnicodeRangeStyleValue(Gfx::UnicodeRange);
|
||||||
|
|
||||||
|
Gfx::UnicodeRange m_unicode_range;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -265,6 +265,7 @@ class TimeStyleValue;
|
||||||
class Transformation;
|
class Transformation;
|
||||||
class TransformationStyleValue;
|
class TransformationStyleValue;
|
||||||
class TransitionStyleValue;
|
class TransitionStyleValue;
|
||||||
|
class UnicodeRangeStyleValue;
|
||||||
class UnresolvedStyleValue;
|
class UnresolvedStyleValue;
|
||||||
class URLStyleValue;
|
class URLStyleValue;
|
||||||
class VisualViewport;
|
class VisualViewport;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue