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

LibWeb: Generate parsing code for CSS math functions

This commit is contained in:
Sam Atkins 2023-07-13 14:59:31 +01:00 committed by Andreas Kling
parent 780998b3d5
commit 618c0402a7
6 changed files with 629 additions and 0 deletions

View file

@ -615,6 +615,7 @@ set(GENERATED_SOURCES
CSS/DefaultStyleSheetSource.cpp
CSS/EasingFunctions.cpp
CSS/Enums.cpp
CSS/MathFunctions.cpp
CSS/MediaFeatureID.cpp
CSS/PropertyID.cpp
CSS/QuirksModeStyleSheetSource.cpp

View file

@ -0,0 +1,232 @@
{
"abs": {
"parameters": [
{
"name": "value",
"type": "<number>|<dimension>|<percentage>",
"required": true
}
]
},
"acos": {
"parameters": [
{
"name": "value",
"type": "<number>",
"required": true
}
]
},
"asin": {
"parameters": [
{
"name": "value",
"type": "<number>",
"required": true
}
]
},
"atan": {
"parameters": [
{
"name": "value",
"type": "<number>",
"required": true
}
]
},
"atan2": {
"parameters": [
{
"name": "y",
"type": "<number>|<dimension>|<percentage>",
"required": true
},
{
"name": "x",
"type": "<number>|<dimension>|<percentage>",
"required": true
}
]
},
"clamp": {
"parameters": [
{
"name": "min",
"type": "<number>|<dimension>|<percentage>",
"required": true
},
{
"name": "central",
"type": "<number>|<dimension>|<percentage>",
"required": true
},
{
"name": "max",
"type": "<number>|<dimension>|<percentage>",
"required": true
}
]
},
"cos": {
"parameters": [
{
"name": "value",
"type": "<number>|<angle>",
"required": true
}
]
},
"exp": {
"parameters": [
{
"name": "value",
"type": "<number>",
"required": true
}
]
},
"hypot": {
"is-variadic": true,
"parameters": [
{
"name": "value",
"type": "<number>|<dimension>|<percentage>",
"required": true
}
]
},
"log": {
"parameters": [
{
"name": "value",
"type": "<number>",
"required": true
},
{
"name": "base",
"type": "<number>",
"required": false,
"default": "e"
}
]
},
"max": {
"is-variadic": true,
"parameters": [
{
"name": "value",
"type": "<number>|<dimension>|<percentage>",
"required": true
}
]
},
"min": {
"is-variadic": true,
"parameters": [
{
"name": "value",
"type": "<number>|<dimension>|<percentage>",
"required": true
}
]
},
"mod": {
"parameters": [
{
"name": "value",
"type": "<number>|<dimension>|<percentage>",
"required": true
},
{
"name": "divisor",
"type": "<number>|<dimension>|<percentage>",
"required": true
}
]
},
"pow": {
"parameters": [
{
"name": "value",
"type": "<number>",
"required": true
},
{
"name": "exponent",
"type": "<number>",
"required": true
}
]
},
"rem": {
"parameters": [
{
"name": "value",
"type": "<number>|<dimension>|<percentage>",
"required": true
},
{
"name": "divisor",
"type": "<number>|<dimension>|<percentage>",
"required": true
}
]
},
"round": {
"parameters": [
{
"name": "strategy",
"type": "<rounding-strategy>",
"required": false,
"default": "nearest"
},
{
"name": "value",
"type": "<number>|<dimension>|<percentage>",
"required": true
},
{
"name": "interval",
"type": "<number>|<dimension>|<percentage>",
"required": true
}
]
},
"sign": {
"parameters": [
{
"name": "value",
"type": "<number>|<dimension>|<percentage>",
"required": true
}
]
},
"sin": {
"parameters": [
{
"name": "value",
"type": "<number>|<angle>",
"required": true
}
]
},
"sqrt": {
"parameters": [
{
"name": "value",
"type": "<number>",
"required": true
}
]
},
"tan": {
"parameters": [
{
"name": "value",
"type": "<number>|<angle>",
"required": true
}
]
}
}

View file

@ -290,6 +290,8 @@ private:
ErrorOr<RefPtr<StyleValue>> parse_builtin_value(ComponentValue const&);
ErrorOr<RefPtr<StyleValue>> parse_dynamic_value(ComponentValue const&);
ErrorOr<RefPtr<CalculatedStyleValue>> parse_calculated_value(Vector<ComponentValue> const&);
// NOTE: Implemented in generated code. (GenerateCSSMathFunctions.cpp)
ErrorOr<OwnPtr<CalculationNode>> parse_math_function(PropertyID, Function const&);
ErrorOr<OwnPtr<CalculationNode>> parse_a_calc_function_node(Function const&);
ErrorOr<OwnPtr<CalculationNode>> parse_min_function(Function const&);
ErrorOr<OwnPtr<CalculationNode>> parse_max_function(Function const&);