1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 07:17:35 +00:00

LibWeb: Combine the two sets of calc() operator enums

This commit is contained in:
Sam Atkins 2022-01-25 14:25:11 +00:00 committed by Andreas Kling
parent ce0a516e59
commit b818d952d1
3 changed files with 35 additions and 42 deletions

View file

@ -4188,7 +4188,7 @@ OwnPtr<CalculatedStyleValue::CalcProductPartWithOperator> Parser::parse_calc_pro
{ {
// Note: The default value is not used or passed around. // Note: The default value is not used or passed around.
auto product_with_operator = make<CalculatedStyleValue::CalcProductPartWithOperator>( auto product_with_operator = make<CalculatedStyleValue::CalcProductPartWithOperator>(
CalculatedStyleValue::CalcProductPartWithOperator::Multiply, CalculatedStyleValue::ProductOperation::Multiply,
CalculatedStyleValue::CalcNumberValue(0)); CalculatedStyleValue::CalcNumberValue(0));
tokens.skip_whitespace(); tokens.skip_whitespace();
@ -4201,7 +4201,7 @@ OwnPtr<CalculatedStyleValue::CalcProductPartWithOperator> Parser::parse_calc_pro
if (op == "*"sv) { if (op == "*"sv) {
tokens.next_token(); tokens.next_token();
tokens.skip_whitespace(); tokens.skip_whitespace();
product_with_operator->op = CalculatedStyleValue::CalcProductPartWithOperator::Multiply; product_with_operator->op = CalculatedStyleValue::ProductOperation::Multiply;
auto parsed_calc_value = parse_calc_value(tokens); auto parsed_calc_value = parse_calc_value(tokens);
if (!parsed_calc_value.has_value()) if (!parsed_calc_value.has_value())
return nullptr; return nullptr;
@ -4210,7 +4210,7 @@ OwnPtr<CalculatedStyleValue::CalcProductPartWithOperator> Parser::parse_calc_pro
} else if (op == "/"sv) { } else if (op == "/"sv) {
tokens.next_token(); tokens.next_token();
tokens.skip_whitespace(); tokens.skip_whitespace();
product_with_operator->op = CalculatedStyleValue::CalcProductPartWithOperator::Divide; product_with_operator->op = CalculatedStyleValue::ProductOperation::Divide;
auto parsed_calc_number_value = parse_calc_number_value(tokens); auto parsed_calc_number_value = parse_calc_number_value(tokens);
if (!parsed_calc_number_value.has_value()) if (!parsed_calc_number_value.has_value())
return nullptr; return nullptr;
@ -4226,7 +4226,7 @@ OwnPtr<CalculatedStyleValue::CalcNumberProductPartWithOperator> Parser::parse_ca
{ {
// Note: The default value is not used or passed around. // Note: The default value is not used or passed around.
auto number_product_with_operator = make<CalculatedStyleValue::CalcNumberProductPartWithOperator>( auto number_product_with_operator = make<CalculatedStyleValue::CalcNumberProductPartWithOperator>(
CalculatedStyleValue::CalcNumberProductPartWithOperator::Multiply, CalculatedStyleValue::ProductOperation::Multiply,
CalculatedStyleValue::CalcNumberValue(0)); CalculatedStyleValue::CalcNumberValue(0));
tokens.skip_whitespace(); tokens.skip_whitespace();
@ -4239,11 +4239,11 @@ OwnPtr<CalculatedStyleValue::CalcNumberProductPartWithOperator> Parser::parse_ca
if (op == "*"sv) { if (op == "*"sv) {
tokens.next_token(); tokens.next_token();
tokens.skip_whitespace(); tokens.skip_whitespace();
number_product_with_operator->op = CalculatedStyleValue::CalcNumberProductPartWithOperator::Multiply; number_product_with_operator->op = CalculatedStyleValue::ProductOperation::Multiply;
} else if (op == "/"sv) { } else if (op == "/"sv) {
tokens.next_token(); tokens.next_token();
tokens.skip_whitespace(); tokens.skip_whitespace();
number_product_with_operator->op = CalculatedStyleValue::CalcNumberProductPartWithOperator::Divide; number_product_with_operator->op = CalculatedStyleValue::ProductOperation::Divide;
} else { } else {
return nullptr; return nullptr;
} }
@ -4287,12 +4287,12 @@ OwnPtr<CalculatedStyleValue::CalcNumberSumPartWithOperator> Parser::parse_calc_n
auto& token = tokens.next_token(); auto& token = tokens.next_token();
tokens.skip_whitespace(); tokens.skip_whitespace();
CalculatedStyleValue::CalcNumberSumPartWithOperator::Operation op; CalculatedStyleValue::SumOperation op;
auto delim = token.token().delim(); auto delim = token.token().delim();
if (delim == "+"sv) if (delim == "+"sv)
op = CalculatedStyleValue::CalcNumberSumPartWithOperator::Operation::Add; op = CalculatedStyleValue::SumOperation::Add;
else if (delim == "-"sv) else if (delim == "-"sv)
op = CalculatedStyleValue::CalcNumberSumPartWithOperator::Operation::Subtract; op = CalculatedStyleValue::SumOperation::Subtract;
else else
return nullptr; return nullptr;
@ -4373,12 +4373,12 @@ OwnPtr<CalculatedStyleValue::CalcSumPartWithOperator> Parser::parse_calc_sum_par
auto& token = tokens.next_token(); auto& token = tokens.next_token();
tokens.skip_whitespace(); tokens.skip_whitespace();
CalculatedStyleValue::CalcSumPartWithOperator::Operation op; CalculatedStyleValue::SumOperation op;
auto delim = token.token().delim(); auto delim = token.token().delim();
if (delim == "+"sv) if (delim == "+"sv)
op = CalculatedStyleValue::CalcSumPartWithOperator::Operation::Add; op = CalculatedStyleValue::SumOperation::Add;
else if (delim == "-"sv) else if (delim == "-"sv)
op = CalculatedStyleValue::CalcSumPartWithOperator::Operation::Subtract; op = CalculatedStyleValue::SumOperation::Subtract;
else else
return nullptr; return nullptr;

View file

@ -309,9 +309,9 @@ static float resolve_calc_number_product(NonnullOwnPtr<CalculatedStyleValue::Cal
for (auto& additional_number_value : calc_number_product->zero_or_more_additional_calc_number_values) { for (auto& additional_number_value : calc_number_product->zero_or_more_additional_calc_number_values) {
auto additional_value = resolve_calc_number_value(additional_number_value.value); auto additional_value = resolve_calc_number_value(additional_number_value.value);
if (additional_number_value.op == CalculatedStyleValue::CalcNumberProductPartWithOperator::Multiply) if (additional_number_value.op == CalculatedStyleValue::ProductOperation::Multiply)
value *= additional_value; value *= additional_value;
else if (additional_number_value.op == CalculatedStyleValue::CalcNumberProductPartWithOperator::Divide) else if (additional_number_value.op == CalculatedStyleValue::ProductOperation::Divide)
value /= additional_value; value /= additional_value;
else else
VERIFY_NOT_REACHED(); VERIFY_NOT_REACHED();
@ -326,9 +326,9 @@ static float resolve_calc_number_sum(NonnullOwnPtr<CalculatedStyleValue::CalcNum
for (auto& additional_product : calc_number_sum->zero_or_more_additional_calc_number_products) { for (auto& additional_product : calc_number_sum->zero_or_more_additional_calc_number_products) {
auto additional_value = resolve_calc_number_product(additional_product.calc_number_product); auto additional_value = resolve_calc_number_product(additional_product.calc_number_product);
if (additional_product.op == CSS::CalculatedStyleValue::CalcNumberSumPartWithOperator::Add) if (additional_product.op == CSS::CalculatedStyleValue::SumOperation::Add)
value += additional_value; value += additional_value;
else if (additional_product.op == CSS::CalculatedStyleValue::CalcNumberSumPartWithOperator::Subtract) else if (additional_product.op == CSS::CalculatedStyleValue::SumOperation::Subtract)
value -= additional_value; value -= additional_value;
else else
VERIFY_NOT_REACHED(); VERIFY_NOT_REACHED();
@ -353,13 +353,13 @@ static float resolve_calc_product(NonnullOwnPtr<CalculatedStyleValue::CalcProduc
for (auto& additional_value : calc_product->zero_or_more_additional_calc_values) { for (auto& additional_value : calc_product->zero_or_more_additional_calc_values) {
additional_value.value.visit( additional_value.value.visit(
[&](CalculatedStyleValue::CalcValue const& calc_value) { [&](CalculatedStyleValue::CalcValue const& calc_value) {
if (additional_value.op != CalculatedStyleValue::CalcProductPartWithOperator::Multiply) if (additional_value.op != CalculatedStyleValue::ProductOperation::Multiply)
VERIFY_NOT_REACHED(); VERIFY_NOT_REACHED();
auto resolved_value = resolve_calc_value(calc_value, layout_node); auto resolved_value = resolve_calc_value(calc_value, layout_node);
value *= resolved_value; value *= resolved_value;
}, },
[&](CalculatedStyleValue::CalcNumberValue const& calc_number_value) { [&](CalculatedStyleValue::CalcNumberValue const& calc_number_value) {
if (additional_value.op != CalculatedStyleValue::CalcProductPartWithOperator::Divide) if (additional_value.op != CalculatedStyleValue::ProductOperation::Divide)
VERIFY_NOT_REACHED(); VERIFY_NOT_REACHED();
auto resolved_calc_number_value = resolve_calc_number_value(calc_number_value); auto resolved_calc_number_value = resolve_calc_number_value(calc_number_value);
value /= resolved_calc_number_value; value /= resolved_calc_number_value;
@ -375,9 +375,9 @@ static float resolve_calc_sum(NonnullOwnPtr<CalculatedStyleValue::CalcSum> const
for (auto& additional_product : calc_sum->zero_or_more_additional_calc_products) { for (auto& additional_product : calc_sum->zero_or_more_additional_calc_products) {
auto additional_value = resolve_calc_product(additional_product.calc_product, layout_node); auto additional_value = resolve_calc_product(additional_product.calc_product, layout_node);
if (additional_product.op == CalculatedStyleValue::CalcSumPartWithOperator::Operation::Add) if (additional_product.op == CalculatedStyleValue::SumOperation::Add)
value += additional_value; value += additional_value;
else if (additional_product.op == CalculatedStyleValue::CalcSumPartWithOperator::Operation::Subtract) else if (additional_product.op == CalculatedStyleValue::SumOperation::Subtract)
value -= additional_value; value -= additional_value;
else else
VERIFY_NOT_REACHED(); VERIFY_NOT_REACHED();

View file

@ -666,6 +666,15 @@ public:
using CalcNumberValue = Variant<float, NonnullOwnPtr<CalcNumberSum>>; using CalcNumberValue = Variant<float, NonnullOwnPtr<CalcNumberSum>>;
using CalcValue = Variant<float, CSS::Length, NonnullOwnPtr<CalcSum>>; using CalcValue = Variant<float, CSS::Length, NonnullOwnPtr<CalcSum>>;
enum class SumOperation {
Add,
Subtract,
};
enum class ProductOperation {
Multiply,
Divide,
};
// This represents that: https://www.w3.org/TR/css-values-3/#calc-syntax // This represents that: https://www.w3.org/TR/css-values-3/#calc-syntax
struct CalcSum { struct CalcSum {
CalcSum(NonnullOwnPtr<CalcProduct> first_calc_product, NonnullOwnPtrVector<CalcSumPartWithOperator> additional) CalcSum(NonnullOwnPtr<CalcProduct> first_calc_product, NonnullOwnPtrVector<CalcSumPartWithOperator> additional)
@ -691,24 +700,16 @@ public:
}; };
struct CalcSumPartWithOperator { struct CalcSumPartWithOperator {
enum Operation { CalcSumPartWithOperator(SumOperation op, NonnullOwnPtr<CalcProduct> calc_product)
Add,
Subtract,
};
CalcSumPartWithOperator(Operation op, NonnullOwnPtr<CalcProduct> calc_product)
: op(op) : op(op)
, calc_product(move(calc_product)) {}; , calc_product(move(calc_product)) {};
Operation op; SumOperation op;
NonnullOwnPtr<CalcProduct> calc_product; NonnullOwnPtr<CalcProduct> calc_product;
}; };
struct CalcProductPartWithOperator { struct CalcProductPartWithOperator {
enum { ProductOperation op;
Multiply,
Divide,
} op;
Variant<CalcValue, CalcNumberValue> value; Variant<CalcValue, CalcNumberValue> value;
}; };
@ -718,24 +719,16 @@ public:
}; };
struct CalcNumberProductPartWithOperator { struct CalcNumberProductPartWithOperator {
enum { ProductOperation op;
Multiply,
Divide,
} op;
CalcNumberValue value; CalcNumberValue value;
}; };
struct CalcNumberSumPartWithOperator { struct CalcNumberSumPartWithOperator {
enum Operation { CalcNumberSumPartWithOperator(SumOperation op, NonnullOwnPtr<CalcNumberProduct> calc_number_product)
Add,
Subtract,
};
CalcNumberSumPartWithOperator(Operation op, NonnullOwnPtr<CalcNumberProduct> calc_number_product)
: op(op) : op(op)
, calc_number_product(move(calc_number_product)) {}; , calc_number_product(move(calc_number_product)) {};
Operation op; SumOperation op;
NonnullOwnPtr<CalcNumberProduct> calc_number_product; NonnullOwnPtr<CalcNumberProduct> calc_number_product;
}; };