15
15
#include < variant>
16
16
#include < vector>
17
17
18
+ #ifdef RN_SERIALIZABLE_STATE
19
+ #include < folly/dynamic.h>
20
+ #endif
21
+
18
22
namespace facebook ::react {
19
23
20
24
enum class RadialGradientShape { Circle, Ellipse };
21
25
26
+ #ifdef RN_SERIALIZABLE_STATE
27
+ inline std::string toString (const RadialGradientShape& radialGradientShape) {
28
+ switch (radialGradientShape) {
29
+ case RadialGradientShape::Circle:
30
+ return " circle" ;
31
+ case RadialGradientShape::Ellipse:
32
+ return " ellipse" ;
33
+ }
34
+
35
+ return " " ;
36
+ }
37
+ #endif
38
+
22
39
struct RadialGradientSize {
23
40
enum class SizeKeyword {
24
41
ClosestSide,
@@ -37,6 +54,15 @@ struct RadialGradientSize {
37
54
bool operator !=(const Dimensions& other) const {
38
55
return !(*this == other);
39
56
}
57
+
58
+ #ifdef RN_SERIALIZABLE_STATE
59
+ folly::dynamic toDynamic () const {
60
+ folly::dynamic result = folly::dynamic::object ();
61
+ result[" x" ] = x.toDynamic ();
62
+ result[" y" ] = y.toDynamic ();
63
+ return result;
64
+ }
65
+ #endif
40
66
};
41
67
42
68
std::variant<SizeKeyword, Dimensions> value;
@@ -56,6 +82,27 @@ struct RadialGradientSize {
56
82
bool operator !=(const RadialGradientSize& other) const {
57
83
return !(*this == other);
58
84
}
85
+
86
+ #ifdef RN_SERIALIZABLE_STATE
87
+ folly::dynamic toDynamic () const {
88
+ if (std::holds_alternative<SizeKeyword>(value)) {
89
+ switch (std::get<SizeKeyword>(value)) {
90
+ case SizeKeyword::ClosestSide:
91
+ return " closest-side" ;
92
+ case SizeKeyword::FarthestSide:
93
+ return " farthest-side" ;
94
+ case SizeKeyword::ClosestCorner:
95
+ return " closest-corner" ;
96
+ case SizeKeyword::FarthestCorner:
97
+ return " farthest-corner" ;
98
+ }
99
+ } else if (std::holds_alternative<Dimensions>(value)) {
100
+ return std::get<Dimensions>(value).toDynamic ();
101
+ }
102
+
103
+ return nullptr ;
104
+ }
105
+ #endif
59
106
};
60
107
61
108
struct RadialGradientPosition {
@@ -72,6 +119,25 @@ struct RadialGradientPosition {
72
119
bool operator !=(const RadialGradientPosition& other) const {
73
120
return !(*this == other);
74
121
}
122
+
123
+ #ifdef RN_SERIALIZABLE_STATE
124
+ folly::dynamic toDynamic () const {
125
+ folly::dynamic result = folly::dynamic::object ();
126
+ if (top.has_value ()) {
127
+ result[" top" ] = top.value ().toDynamic ();
128
+ }
129
+ if (left.has_value ()) {
130
+ result[" left" ] = left.value ().toDynamic ();
131
+ }
132
+ if (right.has_value ()) {
133
+ result[" right" ] = right.value ().toDynamic ();
134
+ }
135
+ if (bottom.has_value ()) {
136
+ result[" bottom" ] = bottom.value ().toDynamic ();
137
+ }
138
+ return result;
139
+ }
140
+ #endif
75
141
};
76
142
77
143
struct RadialGradient {
@@ -87,6 +153,24 @@ struct RadialGradient {
87
153
bool operator !=(const RadialGradient& other) const {
88
154
return !(*this == other);
89
155
}
156
+
157
+ #ifdef RN_SERIALIZABLE_STATE
158
+ folly::dynamic toDynamic () const {
159
+ folly::dynamic result = folly::dynamic::object ();
160
+ result[" type" ] = " radial-gradient" ;
161
+ result[" shape" ] = toString (shape);
162
+ result[" size" ] = size.toDynamic ();
163
+ result[" position" ] = position.toDynamic ();
164
+
165
+ folly::dynamic colorStopsArray = folly::dynamic::array ();
166
+ for (const auto & colorStop : colorStops) {
167
+ colorStopsArray.push_back (colorStop.toDynamic ());
168
+ }
169
+ result[" colorStops" ] = colorStopsArray;
170
+
171
+ return result;
172
+ }
173
+ #endif
90
174
};
91
175
92
176
}; // namespace facebook::react
0 commit comments