/* * Copyright (c) 2018-2020, Andreas Kling * Copyright (c) 2021, Tobias Christiansen * Copyright (c) 2021-2023, Sam Atkins * Copyright (c) 2022-2023, MacDue * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include namespace Web::CSS { class ListStyleStyleValue final : public StyleValueWithDefaultOperators { public: static ValueComparingNonnullRefPtr create( ValueComparingNonnullRefPtr position, ValueComparingNonnullRefPtr image, ValueComparingNonnullRefPtr style_type) { return adopt_ref(*new (nothrow) ListStyleStyleValue(move(position), move(image), move(style_type))); } virtual ~ListStyleStyleValue() override = default; ValueComparingNonnullRefPtr position() const { return m_properties.position; } ValueComparingNonnullRefPtr image() const { return m_properties.image; } ValueComparingNonnullRefPtr style_type() const { return m_properties.style_type; } virtual ErrorOr to_string() const override; bool properties_equal(ListStyleStyleValue const& other) const { return m_properties == other.m_properties; } private: ListStyleStyleValue( ValueComparingNonnullRefPtr position, ValueComparingNonnullRefPtr image, ValueComparingNonnullRefPtr style_type) : StyleValueWithDefaultOperators(Type::ListStyle) , m_properties { .position = move(position), .image = move(image), .style_type = move(style_type) } { } struct Properties { ValueComparingNonnullRefPtr position; ValueComparingNonnullRefPtr image; ValueComparingNonnullRefPtr style_type; bool operator==(Properties const&) const = default; } m_properties; }; }