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