Skip to content

Commit c31a5a8

Browse files
coadometa-codesync[bot]
authored andcommitted
Add support for shadow props to AnimationBackend (#54728)
Summary: Pull Request resolved: #54728 Adds support for `shadowColor`, `shadowOffset`, `shadowOpacity`, and `shadowRadius` props to the animation backend. ## Changelog: [General][Added] - Added support for `shadowColor`, `shadowOffset`, `shadowOpacity`, and `shadowRadius` props to the animation backend. Reviewed By: zeyap Differential Revision: D88007307 fbshipit-source-id: ac12043d5d42ef17b3330abb687722b2aedf30b2
1 parent e7f5618 commit c31a5a8

3 files changed

Lines changed: 94 additions & 4 deletions

File tree

packages/react-native/ReactCommon/react/renderer/animationbackend/AnimatedPropSerializer.cpp

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,9 +78,36 @@ void packBackgroundColor(
7878
folly::dynamic& dyn,
7979
const AnimatedPropBase& animatedProp) {
8080
const auto& backgroundColor = get<SharedColor>(animatedProp);
81-
if (backgroundColor) {
82-
dyn.insert("backgroundColor", static_cast<int32_t>(*backgroundColor));
83-
}
81+
dyn.insert("backgroundColor", static_cast<int32_t>(*backgroundColor));
82+
}
83+
84+
void packShadowColor(
85+
folly::dynamic& dyn,
86+
const AnimatedPropBase& animatedProp) {
87+
const auto& shadowColor = get<SharedColor>(animatedProp);
88+
dyn.insert("shadowColor", static_cast<int32_t>(*shadowColor));
89+
}
90+
91+
void packShadowOffset(
92+
folly::dynamic& dyn,
93+
const AnimatedPropBase& animatedProp) {
94+
const auto& shadowOffset = get<Size>(animatedProp);
95+
dyn.insert(
96+
"shadowOffset",
97+
folly::dynamic::object("width", shadowOffset.width)(
98+
"height", shadowOffset.height));
99+
}
100+
101+
void packShadowOpacity(
102+
folly::dynamic& dyn,
103+
const AnimatedPropBase& animatedProp) {
104+
dyn.insert("shadowOpacity", get<Float>(animatedProp));
105+
}
106+
107+
void packShadowRadius(
108+
folly::dynamic& dyn,
109+
const AnimatedPropBase& animatedProp) {
110+
dyn.insert("shadowRadius", get<Float>(animatedProp));
84111
}
85112

86113
void packAnimatedProp(
@@ -103,6 +130,22 @@ void packAnimatedProp(
103130
packBorderRadii(dyn, *animatedProp);
104131
break;
105132

133+
case SHADOW_COLOR:
134+
packShadowColor(dyn, *animatedProp);
135+
break;
136+
137+
case SHADOW_OFFSET:
138+
packShadowOffset(dyn, *animatedProp);
139+
break;
140+
141+
case SHADOW_OPACITY:
142+
packShadowOpacity(dyn, *animatedProp);
143+
break;
144+
145+
case SHADOW_RADIUS:
146+
packShadowRadius(dyn, *animatedProp);
147+
break;
148+
106149
case WIDTH:
107150
case HEIGHT:
108151
case FLEX:

packages/react-native/ReactCommon/react/renderer/animationbackend/AnimatedProps.h

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,19 @@
1212

1313
namespace facebook::react {
1414

15-
enum PropName { OPACITY, WIDTH, HEIGHT, BORDER_RADII, FLEX, TRANSFORM, BACKGROUND_COLOR };
15+
enum PropName {
16+
OPACITY,
17+
WIDTH,
18+
HEIGHT,
19+
BORDER_RADII,
20+
FLEX,
21+
TRANSFORM,
22+
BACKGROUND_COLOR,
23+
SHADOW_COLOR,
24+
SHADOW_OFFSET,
25+
SHADOW_OPACITY,
26+
SHADOW_RADIUS
27+
};
1628

1729
struct AnimatedPropBase {
1830
PropName propName;
@@ -74,6 +86,25 @@ inline void cloneProp(BaseViewProps &viewProps, const AnimatedPropBase &animated
7486
case BACKGROUND_COLOR:
7587
viewProps.backgroundColor = get<SharedColor>(animatedProp);
7688
break;
89+
90+
case SHADOW_COLOR:
91+
viewProps.shadowColor = get<SharedColor>(animatedProp);
92+
break;
93+
94+
case SHADOW_OFFSET:
95+
viewProps.shadowOffset = get<Size>(animatedProp);
96+
break;
97+
98+
case SHADOW_OPACITY:
99+
viewProps.shadowOpacity = get<Float>(animatedProp);
100+
break;
101+
102+
case SHADOW_RADIUS:
103+
viewProps.shadowRadius = get<Float>(animatedProp);
104+
break;
105+
106+
default:
107+
break;
77108
}
78109
}
79110
} // namespace facebook::react

packages/react-native/ReactCommon/react/renderer/animationbackend/AnimatedPropsBuilder.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,22 @@ struct AnimatedPropsBuilder {
3939
{
4040
props.push_back(std::make_unique<AnimatedProp<SharedColor>>(BACKGROUND_COLOR, value));
4141
}
42+
void setShadowColor(SharedColor value)
43+
{
44+
props.push_back(std::make_unique<AnimatedProp<SharedColor>>(SHADOW_COLOR, value));
45+
}
46+
void setShadowOpacity(Float value)
47+
{
48+
props.push_back(std::make_unique<AnimatedProp<Float>>(SHADOW_OPACITY, value));
49+
}
50+
void setShadowRadius(Float value)
51+
{
52+
props.push_back(std::make_unique<AnimatedProp<Float>>(SHADOW_RADIUS, value));
53+
}
54+
void setShadowOffset(Size value)
55+
{
56+
props.push_back(std::make_unique<AnimatedProp<Size>>(SHADOW_OFFSET, value));
57+
}
4258
void storeDynamic(folly::dynamic &d)
4359
{
4460
rawProps = std::make_unique<RawProps>(std::move(d));

0 commit comments

Comments
 (0)