LibWeb/SVG: Implement resolution for a subset of SVG filters

This commit is contained in:
Lucien Fiorini 2025-07-09 17:19:32 +02:00 committed by Sam Atkins
parent 5d85959f5f
commit 635adc8aa7
Notes: github-actions[bot] 2025-07-09 17:08:27 +00:00
10 changed files with 161 additions and 17 deletions

View file

@ -5049,11 +5049,11 @@ RefPtr<CSSStyleValue const> Parser::parse_filter_value_list_value(TokenStream<Co
return {};
};
auto parse_filter_function = [&](auto filter_token, auto const& function_values) -> Optional<FilterFunction> {
auto parse_filter_function = [&](auto filter_token, auto const& function_values) -> Optional<FilterValue> {
TokenStream tokens { function_values };
tokens.discard_whitespace();
auto if_no_more_tokens_return = [&](auto filter) -> Optional<FilterFunction> {
auto if_no_more_tokens_return = [&](auto filter) -> Optional<FilterValue> {
tokens.discard_whitespace();
if (tokens.has_next_token())
return {};
@ -5149,12 +5149,19 @@ RefPtr<CSSStyleValue const> Parser::parse_filter_value_list_value(TokenStream<Co
}
};
Vector<FilterFunction> filter_value_list {};
Vector<FilterValue> filter_value_list {};
while (tokens.has_next_token()) {
tokens.discard_whitespace();
if (!tokens.has_next_token())
break;
auto url_function = parse_url_function(tokens);
if (url_function.has_value()) {
filter_value_list.append(*url_function);
continue;
}
auto& token = tokens.consume_a_token();
if (!token.is_function())
return nullptr;