ladybird/Libraries/LibWeb/CSS/CalculationResolutionContext.h
Callum Law 9cd23e3ae5 LibWeb: Compute and propagate tree-counting function resolution context
Tree counting functions should be resolved at style computation time -
to do this we will need to know the element's sibling count and index.

This commit computes that information and propagates it to the various
`StyleValue::to_computed_value` methods.
2025-10-20 16:12:08 +01:00

34 lines
1.1 KiB
C++

/*
* Copyright (c) 2025, Callum Law <callumlaw1709@outlook.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibWeb/CSS/Angle.h>
#include <LibWeb/CSS/Frequency.h>
#include <LibWeb/CSS/Length.h>
#include <LibWeb/CSS/StyleValues/ComputationContext.h>
#include <LibWeb/CSS/Time.h>
namespace Web::CSS {
struct CalculationResolutionContext {
using PercentageBasis = Variant<Empty, Angle, Frequency, Length, Time>;
PercentageBasis percentage_basis {};
Optional<Length::ResolutionContext> length_resolution_context {};
Optional<TreeCountingFunctionResolutionContext> tree_counting_function_resolution_context {};
static CalculationResolutionContext from_computation_context(ComputationContext const& computation_context, PercentageBasis percentage_basis = {})
{
return {
.percentage_basis = percentage_basis,
.length_resolution_context = computation_context.length_resolution_context,
.tree_counting_function_resolution_context = computation_context.tree_counting_function_resolution_context
};
}
};
}