StyleProperties.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #include <LibHTML/CSS/StyleProperties.h>
  2. void StyleProperties::set_property(const String& name, NonnullRefPtr<StyleValue> value)
  3. {
  4. m_property_values.set(name, move(value));
  5. }
  6. Optional<NonnullRefPtr<StyleValue>> StyleProperties::property(const String& name) const
  7. {
  8. auto it = m_property_values.find(name);
  9. if (it == m_property_values.end())
  10. return {};
  11. return it->value;
  12. }
  13. Length StyleProperties::length_or_fallback(const StringView& property_name, const Length& fallback) const
  14. {
  15. auto value = property(property_name);
  16. if (!value.has_value())
  17. return fallback;
  18. return value.value()->to_length();
  19. }
  20. String StyleProperties::string_or_fallback(const StringView& property_name, const StringView& fallback) const
  21. {
  22. auto value = property(property_name);
  23. if (!value.has_value())
  24. return fallback;
  25. return value.value()->to_string();
  26. }
  27. Color StyleProperties::color_or_fallback(const StringView& property_name, Color fallback) const
  28. {
  29. auto value = property(property_name);
  30. if (!value.has_value())
  31. return fallback;
  32. if (value.value()->type() != StyleValue::Type::Color)
  33. return fallback;
  34. return static_cast<ColorStyleValue&>(*value.value()).color();
  35. }