/* * Copyright (c) 2025, Callum Law * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Web::CSS { struct ComputationContext { Length::ResolutionContext length_resolution_context; Optional abstract_element {}; Optional color_scheme {}; void reset_viewport_metric_dependency_tracking() const { m_did_resolve_viewport_relative_length = false; length_resolution_context.set_did_resolve_viewport_relative_length(m_did_resolve_viewport_relative_length); } bool depends_on_viewport_metrics() const { return m_did_resolve_viewport_relative_length; } void visit_edges(GC::Cell::Visitor& visitor) { length_resolution_context.visit_edges(visitor); if (abstract_element.has_value()) abstract_element->visit(visitor); } mutable bool m_did_resolve_viewport_relative_length { false }; }; }