TransitionStyleValue.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. /*
  2. * Copyright (c) 2024, Matthew Olsson <mattco@serenityos.org>.
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <LibWeb/CSS/CSSStyleValue.h>
  8. #include <LibWeb/CSS/CalculatedOr.h>
  9. #include <LibWeb/CSS/StyleValues/CustomIdentStyleValue.h>
  10. #include <LibWeb/CSS/StyleValues/EasingStyleValue.h>
  11. #include <LibWeb/CSS/Time.h>
  12. namespace Web::CSS {
  13. class TransitionStyleValue final : public StyleValueWithDefaultOperators<TransitionStyleValue> {
  14. public:
  15. struct Transition {
  16. ValueComparingRefPtr<CustomIdentStyleValue> property_name;
  17. TimeOrCalculated duration { CSS::Time::make_seconds(0.0) };
  18. TimeOrCalculated delay { CSS::Time::make_seconds(0.0) };
  19. ValueComparingRefPtr<EasingStyleValue> easing;
  20. bool operator==(Transition const&) const = default;
  21. };
  22. static ValueComparingNonnullRefPtr<TransitionStyleValue> create(Vector<Transition> transitions)
  23. {
  24. return adopt_ref(*new (nothrow) TransitionStyleValue(move(transitions)));
  25. }
  26. virtual ~TransitionStyleValue() override = default;
  27. auto const& transitions() const { return m_transitions; }
  28. virtual String to_string() const override;
  29. bool properties_equal(TransitionStyleValue const& other) const;
  30. private:
  31. explicit TransitionStyleValue(Vector<Transition> transitions)
  32. : StyleValueWithDefaultOperators(Type::Transition)
  33. , m_transitions(move(transitions))
  34. {
  35. }
  36. Vector<Transition> m_transitions;
  37. };
  38. }