File tree Expand file tree Collapse file tree 2 files changed +36
-28
lines changed
packages/react-native/ReactCommon/react/renderer/animationbackend Expand file tree Collapse file tree 2 files changed +36
-28
lines changed Original file line number Diff line number Diff line change @@ -33,8 +33,43 @@ T get(const std::unique_ptr<AnimatedPropBase> &animatedProp)
3333 return static_cast <AnimatedProp<T> *>(animatedProp.get ())->value ;
3434}
3535
36+ template <typename T>
37+ T get (const AnimatedPropBase &animatedProp)
38+ {
39+ return static_cast <const AnimatedProp<T> &>(animatedProp).value ;
40+ }
41+
3642struct AnimatedProps {
3743 std::vector<std::unique_ptr<AnimatedPropBase>> props;
3844 std::unique_ptr<RawProps> rawProps;
3945};
46+
47+ inline void cloneProp (BaseViewProps &viewProps, const AnimatedPropBase &animatedProp)
48+ {
49+ switch (animatedProp.propName ) {
50+ case OPACITY:
51+ viewProps.opacity = get<Float>(animatedProp);
52+ break ;
53+
54+ case WIDTH:
55+ viewProps.yogaStyle .setDimension (yoga::Dimension::Width, get<yoga::Style::SizeLength>(animatedProp));
56+ break ;
57+
58+ case HEIGHT:
59+ viewProps.yogaStyle .setDimension (yoga::Dimension::Height, get<yoga::Style::SizeLength>(animatedProp));
60+ break ;
61+
62+ case BORDER_RADII:
63+ viewProps.borderRadii = get<CascadedBorderRadii>(animatedProp);
64+ break ;
65+
66+ case FLEX:
67+ viewProps.yogaStyle .setFlex (get<yoga::FloatOptional>(animatedProp));
68+ break ;
69+
70+ case TRANSFORM:
71+ viewProps.transform = get<Transform>(animatedProp);
72+ break ;
73+ }
74+ }
4075} // namespace facebook::react
Original file line number Diff line number Diff line change @@ -41,34 +41,7 @@ static inline Props::Shared cloneProps(
4141 auto viewProps = std::const_pointer_cast<BaseViewProps>(
4242 std::static_pointer_cast<const BaseViewProps>(newProps));
4343 for (auto & animatedProp : animatedProps.props ) {
44- switch (animatedProp->propName ) {
45- case OPACITY:
46- viewProps->opacity = get<Float>(animatedProp);
47- break ;
48-
49- case WIDTH:
50- viewProps->yogaStyle .setDimension (
51- yoga::Dimension::Width, get<yoga::Style::SizeLength>(animatedProp));
52- break ;
53-
54- case HEIGHT:
55- viewProps->yogaStyle .setDimension (
56- yoga::Dimension::Height,
57- get<yoga::Style::SizeLength>(animatedProp));
58- break ;
59-
60- case BORDER_RADII:
61- viewProps->borderRadii = get<CascadedBorderRadii>(animatedProp);
62- break ;
63-
64- case FLEX:
65- viewProps->yogaStyle .setFlex (get<yoga::FloatOptional>(animatedProp));
66- break ;
67-
68- case TRANSFORM:
69- viewProps->transform = get<Transform>(animatedProp);
70- break ;
71- }
44+ cloneProp (*viewProps, *animatedProp);
7245 }
7346 return newProps;
7447}
You can’t perform that action at this time.
0 commit comments