Filter.h 864 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * Copyright (c) 2022, MacDue <macdue@dueutil.tech>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <AK/Variant.h>
  8. #include <LibWeb/CSS/CSSStyleValue.h>
  9. #include <LibWeb/CSS/StyleValues/FilterValueListStyleValue.h>
  10. namespace Web::CSS {
  11. class Filter {
  12. public:
  13. Filter() = default;
  14. Filter(FilterValueListStyleValue const& filter_value_list)
  15. : m_filter_value_list { filter_value_list } {};
  16. static Filter make_none()
  17. {
  18. return Filter {};
  19. }
  20. bool has_filters() const { return m_filter_value_list; }
  21. bool is_none() const { return !has_filters(); }
  22. ReadonlySpan<FilterFunction> filters() const
  23. {
  24. VERIFY(has_filters());
  25. return m_filter_value_list->filter_value_list().span();
  26. }
  27. private:
  28. RefPtr<FilterValueListStyleValue const> m_filter_value_list { nullptr };
  29. };
  30. }