CalculatedOr.cpp 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  1. /*
  2. * Copyright (c) 2023, Sam Atkins <atkinssj@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include "CalculatedOr.h"
  7. #include <LibWeb/CSS/StyleValues/AngleStyleValue.h>
  8. #include <LibWeb/CSS/StyleValues/FlexStyleValue.h>
  9. #include <LibWeb/CSS/StyleValues/FrequencyStyleValue.h>
  10. #include <LibWeb/CSS/StyleValues/IntegerStyleValue.h>
  11. #include <LibWeb/CSS/StyleValues/LengthStyleValue.h>
  12. #include <LibWeb/CSS/StyleValues/NumberStyleValue.h>
  13. #include <LibWeb/CSS/StyleValues/PercentageStyleValue.h>
  14. #include <LibWeb/CSS/StyleValues/ResolutionStyleValue.h>
  15. #include <LibWeb/CSS/StyleValues/TimeStyleValue.h>
  16. namespace Web::CSS {
  17. Angle AngleOrCalculated::resolve_calculated(NonnullRefPtr<CSSMathValue> const& calculated, Layout::Node const&) const
  18. {
  19. return calculated->resolve_angle().value();
  20. }
  21. NonnullRefPtr<CSSStyleValue> AngleOrCalculated::create_style_value() const
  22. {
  23. return AngleStyleValue::create(value());
  24. }
  25. Flex FlexOrCalculated::resolve_calculated(NonnullRefPtr<CSSMathValue> const& calculated, Layout::Node const&) const
  26. {
  27. return calculated->resolve_flex().value();
  28. }
  29. NonnullRefPtr<CSSStyleValue> FlexOrCalculated::create_style_value() const
  30. {
  31. return FlexStyleValue::create(value());
  32. }
  33. Frequency FrequencyOrCalculated::resolve_calculated(NonnullRefPtr<CSSMathValue> const& calculated, Layout::Node const&) const
  34. {
  35. return calculated->resolve_frequency().value();
  36. }
  37. NonnullRefPtr<CSSStyleValue> FrequencyOrCalculated::create_style_value() const
  38. {
  39. return FrequencyStyleValue::create(value());
  40. }
  41. i64 IntegerOrCalculated::resolve_calculated(NonnullRefPtr<CSSMathValue> const& calculated, Layout::Node const& layout_node) const
  42. {
  43. return calculated->resolve_integer(layout_node).value();
  44. }
  45. i64 IntegerOrCalculated::resolved(Length::ResolutionContext const& context) const
  46. {
  47. if (is_calculated())
  48. return calculated()->resolve_integer(context).value();
  49. return value();
  50. }
  51. NonnullRefPtr<CSSStyleValue> IntegerOrCalculated::create_style_value() const
  52. {
  53. return IntegerStyleValue::create(value());
  54. }
  55. Length LengthOrCalculated::resolve_calculated(NonnullRefPtr<CSSMathValue> const& calculated, Layout::Node const& layout_node) const
  56. {
  57. return calculated->resolve_length(layout_node).value();
  58. }
  59. Length LengthOrCalculated::resolved(Length::ResolutionContext const& context) const
  60. {
  61. if (is_calculated())
  62. return calculated()->resolve_length(context).value();
  63. return value();
  64. }
  65. NonnullRefPtr<CSSStyleValue> LengthOrCalculated::create_style_value() const
  66. {
  67. return LengthStyleValue::create(value());
  68. }
  69. double NumberOrCalculated::resolve_calculated(NonnullRefPtr<CSSMathValue> const& calculated, Layout::Node const& layout_node) const
  70. {
  71. return calculated->resolve_number(layout_node).value();
  72. }
  73. NonnullRefPtr<CSSStyleValue> NumberOrCalculated::create_style_value() const
  74. {
  75. return NumberStyleValue::create(value());
  76. }
  77. Percentage PercentageOrCalculated::resolve_calculated(NonnullRefPtr<CSSMathValue> const& calculated, Layout::Node const&) const
  78. {
  79. return calculated->resolve_percentage().value();
  80. }
  81. NonnullRefPtr<CSSStyleValue> PercentageOrCalculated::create_style_value() const
  82. {
  83. return PercentageStyleValue::create(value());
  84. }
  85. Resolution ResolutionOrCalculated::resolve_calculated(NonnullRefPtr<CSSMathValue> const& calculated, Layout::Node const&) const
  86. {
  87. return calculated->resolve_resolution().value();
  88. }
  89. Resolution ResolutionOrCalculated::resolved() const
  90. {
  91. if (is_calculated())
  92. return calculated()->resolve_resolution().value();
  93. return value();
  94. }
  95. NonnullRefPtr<CSSStyleValue> ResolutionOrCalculated::create_style_value() const
  96. {
  97. return ResolutionStyleValue::create(value());
  98. }
  99. Time TimeOrCalculated::resolve_calculated(NonnullRefPtr<CSSMathValue> const& calculated, Layout::Node const&) const
  100. {
  101. return calculated->resolve_time().value();
  102. }
  103. NonnullRefPtr<CSSStyleValue> TimeOrCalculated::create_style_value() const
  104. {
  105. return TimeStyleValue::create(value());
  106. }
  107. }