CounterDefinitionsStyleValue.h 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /*
  2. * Copyright (c) 2024, Sam Atkins <atkinssj@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/FlyString.h>
  8. #include <LibWeb/CSS/CSSStyleValue.h>
  9. namespace Web::CSS {
  10. struct CounterDefinition {
  11. FlyString name;
  12. bool is_reversed;
  13. ValueComparingRefPtr<CSSStyleValue const> value;
  14. };
  15. /**
  16. * Holds a list of CounterDefinitions.
  17. * Shared between counter-increment, counter-reset, and counter-set properties that have (almost) identical grammar.
  18. */
  19. class CounterDefinitionsStyleValue : public StyleValueWithDefaultOperators<CounterDefinitionsStyleValue> {
  20. public:
  21. static ValueComparingNonnullRefPtr<CounterDefinitionsStyleValue> create(Vector<CounterDefinition> counter_definitions)
  22. {
  23. return adopt_ref(*new (nothrow) CounterDefinitionsStyleValue(move(counter_definitions)));
  24. }
  25. virtual ~CounterDefinitionsStyleValue() override = default;
  26. auto const& counter_definitions() const { return m_counter_definitions; }
  27. virtual String to_string() const override;
  28. bool properties_equal(CounterDefinitionsStyleValue const& other) const;
  29. private:
  30. explicit CounterDefinitionsStyleValue(Vector<CounterDefinition> counter_definitions)
  31. : StyleValueWithDefaultOperators(Type::CounterDefinitions)
  32. , m_counter_definitions(move(counter_definitions))
  33. {
  34. }
  35. Vector<CounterDefinition> m_counter_definitions;
  36. };
  37. }