/* * Copyright (c) 2025, Tim Ledbetter * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include namespace Web::CSS { class FontStyleStyleValue final : public StyleValueWithDefaultOperators { public: static ValueComparingNonnullRefPtr create(FontStyleKeyword font_style, ValueComparingRefPtr angle_value = {}) { return adopt_ref(*new (nothrow) FontStyleStyleValue(font_style, angle_value)); } virtual ~FontStyleStyleValue() override; FontStyleKeyword font_style() const { return m_font_style; } ValueComparingRefPtr angle() const { return m_angle_value; } int to_font_slope() const; virtual void serialize(StringBuilder&, SerializationMode) const override; virtual ValueComparingNonnullRefPtr absolutized(ComputationContext const& computation_context) const override; bool equals(StyleValue const& other) const override { if (type() != other.type()) return false; auto const& other_font_style = other.as_font_style(); return m_font_style == other_font_style.m_font_style && m_angle_value == other_font_style.m_angle_value; } bool properties_equal(FontStyleStyleValue const& other) const { return m_font_style == other.m_font_style && m_angle_value == other.m_angle_value; } virtual bool is_computationally_independent() const override { return !m_angle_value || m_angle_value->is_computationally_independent(); } private: FontStyleStyleValue(FontStyleKeyword, ValueComparingRefPtr angle_value); FontStyleKeyword m_font_style; ValueComparingRefPtr m_angle_value; }; }