/* * Copyright (c) 2024, Steffen T. Larssen * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include namespace Web::CSS { class RotationStyleValue : public StyleValueWithDefaultOperators { public: static ValueComparingNonnullRefPtr create(ValueComparingNonnullRefPtr angle, ValueComparingNonnullRefPtr rotation_x, ValueComparingNonnullRefPtr rotation_y, ValueComparingNonnullRefPtr rotation_z) { return adopt_ref(*new (nothrow) RotationStyleValue(move(angle), move(rotation_x), move(rotation_y), move(rotation_z))); } virtual ~RotationStyleValue() override = default; ValueComparingNonnullRefPtr const& angle() const { return m_properties.angle; } ValueComparingNonnullRefPtr const& rotation_x() const { return m_properties.rotation_x; } ValueComparingNonnullRefPtr const& rotation_y() const { return m_properties.rotation_y; } ValueComparingNonnullRefPtr const& rotation_z() const { return m_properties.rotation_z; } virtual String to_string() const override; bool properties_equal(RotationStyleValue const& other) const { return m_properties == other.m_properties; } private: explicit RotationStyleValue( ValueComparingNonnullRefPtr angle, ValueComparingNonnullRefPtr rotation_x, ValueComparingNonnullRefPtr rotation_y, ValueComparingNonnullRefPtr rotation_z) : StyleValueWithDefaultOperators(Type::Rotation) , m_properties { .angle = move(angle), .rotation_x = move(rotation_x), .rotation_y = move(rotation_y), .rotation_z = move(rotation_z) } { } struct Properties { ValueComparingNonnullRefPtr angle; ValueComparingNonnullRefPtr rotation_x; ValueComparingNonnullRefPtr rotation_y; ValueComparingNonnullRefPtr rotation_z; bool operator==(Properties const&) const = default; } m_properties; }; }