@@ -1078,6 +1078,55 @@ void CompositionBaseComponentView::updateShadowProps(
10781078 }
10791079}
10801080
1081+ void CompositionBaseComponentView::updateTransformProps (
1082+ const facebook::react::ViewProps &oldViewProps,
1083+ const facebook::react::ViewProps &newViewProps,
1084+ winrt::Microsoft::ReactNative::Composition::ISpriteVisual m_visual) noexcept {
1085+ // check for backfaceVisibility prop
1086+ if (oldViewProps.backfaceVisibility != newViewProps.backfaceVisibility ) {
1087+ static_assert (
1088+ static_cast <facebook::react::BackfaceVisibility>(
1089+ winrt::Microsoft::ReactNative::Composition::BackfaceVisibility::Inherit) ==
1090+ facebook::react::BackfaceVisibility::Auto);
1091+ static_assert (
1092+ static_cast <facebook::react::BackfaceVisibility>(
1093+ winrt::Microsoft::ReactNative::Composition::BackfaceVisibility::Visible) ==
1094+ facebook::react::BackfaceVisibility::Visible);
1095+ static_assert (
1096+ static_cast <facebook::react::BackfaceVisibility>(
1097+ winrt::Microsoft::ReactNative::Composition::BackfaceVisibility::Hidden) ==
1098+ facebook::react::BackfaceVisibility::Hidden);
1099+ m_visual.BackfaceVisibility (
1100+ static_cast <winrt::Microsoft::ReactNative::Composition::BackfaceVisibility>(newViewProps.backfaceVisibility ));
1101+ }
1102+
1103+ // Transform - TODO doesn't handle multiple of the same kind of transform -- Doesn't handle hittesting updates
1104+ if (oldViewProps.transform != newViewProps.transform ) {
1105+ winrt::Windows::Foundation::Numerics::float4x4 transformMatrix;
1106+ transformMatrix.m11 = newViewProps.transform .matrix [0 ];
1107+ transformMatrix.m12 = newViewProps.transform .matrix [1 ];
1108+ transformMatrix.m13 = newViewProps.transform .matrix [2 ];
1109+ transformMatrix.m14 = newViewProps.transform .matrix [3 ];
1110+ transformMatrix.m21 = newViewProps.transform .matrix [4 ];
1111+ transformMatrix.m22 = newViewProps.transform .matrix [5 ];
1112+ transformMatrix.m23 = newViewProps.transform .matrix [6 ];
1113+ transformMatrix.m24 = newViewProps.transform .matrix [7 ];
1114+ transformMatrix.m31 = newViewProps.transform .matrix [8 ];
1115+ transformMatrix.m32 = newViewProps.transform .matrix [9 ];
1116+ transformMatrix.m33 = newViewProps.transform .matrix [10 ];
1117+ transformMatrix.m34 = newViewProps.transform .matrix [11 ];
1118+ transformMatrix.m41 = newViewProps.transform .matrix [12 ];
1119+ transformMatrix.m42 = newViewProps.transform .matrix [13 ];
1120+ transformMatrix.m43 = newViewProps.transform .matrix [14 ];
1121+ transformMatrix.m44 = newViewProps.transform .matrix [15 ];
1122+
1123+ auto centerPointPropSet = EnsureCenterPointPropertySet ();
1124+ centerPointPropSet.InsertMatrix4x4 (L" transform" , transformMatrix);
1125+
1126+ EnsureTransformMatrixFacade ();
1127+ }
1128+ }
1129+
10811130void CompositionBaseComponentView::updateAccessibilityProps (
10821131 const facebook::react::ViewProps &oldViewProps,
10831132 const facebook::react::ViewProps &newViewProps) noexcept {
@@ -1304,52 +1353,11 @@ void CompositionViewComponentView::updateProps(
13041353 m_visual.Opacity (newViewProps.opacity );
13051354 }
13061355
1356+ // update BaseComponentView props
13071357 updateAccessibilityProps (oldViewProps, newViewProps);
1308- updateBorderProps (oldViewProps, newViewProps);
13091358 updateShadowProps (oldViewProps, newViewProps, m_visual);
1310-
1311- if (oldViewProps.backfaceVisibility != newViewProps.backfaceVisibility ) {
1312- static_assert (
1313- static_cast <facebook::react::BackfaceVisibility>(
1314- winrt::Microsoft::ReactNative::Composition::BackfaceVisibility::Inherit) ==
1315- facebook::react::BackfaceVisibility::Auto);
1316- static_assert (
1317- static_cast <facebook::react::BackfaceVisibility>(
1318- winrt::Microsoft::ReactNative::Composition::BackfaceVisibility::Visible) ==
1319- facebook::react::BackfaceVisibility::Visible);
1320- static_assert (
1321- static_cast <facebook::react::BackfaceVisibility>(
1322- winrt::Microsoft::ReactNative::Composition::BackfaceVisibility::Hidden) ==
1323- facebook::react::BackfaceVisibility::Hidden);
1324- m_visual.BackfaceVisibility (
1325- static_cast <winrt::Microsoft::ReactNative::Composition::BackfaceVisibility>(newViewProps.backfaceVisibility ));
1326- }
1327-
1328- // Transform - TODO doesn't handle multiple of the same kind of transform -- Doesn't handle hittesting updates
1329- if (oldViewProps.transform != newViewProps.transform ) {
1330- winrt::Windows::Foundation::Numerics::float4x4 transformMatrix;
1331- transformMatrix.m11 = newViewProps.transform .matrix [0 ];
1332- transformMatrix.m12 = newViewProps.transform .matrix [1 ];
1333- transformMatrix.m13 = newViewProps.transform .matrix [2 ];
1334- transformMatrix.m14 = newViewProps.transform .matrix [3 ];
1335- transformMatrix.m21 = newViewProps.transform .matrix [4 ];
1336- transformMatrix.m22 = newViewProps.transform .matrix [5 ];
1337- transformMatrix.m23 = newViewProps.transform .matrix [6 ];
1338- transformMatrix.m24 = newViewProps.transform .matrix [7 ];
1339- transformMatrix.m31 = newViewProps.transform .matrix [8 ];
1340- transformMatrix.m32 = newViewProps.transform .matrix [9 ];
1341- transformMatrix.m33 = newViewProps.transform .matrix [10 ];
1342- transformMatrix.m34 = newViewProps.transform .matrix [11 ];
1343- transformMatrix.m41 = newViewProps.transform .matrix [12 ];
1344- transformMatrix.m42 = newViewProps.transform .matrix [13 ];
1345- transformMatrix.m43 = newViewProps.transform .matrix [14 ];
1346- transformMatrix.m44 = newViewProps.transform .matrix [15 ];
1347-
1348- auto centerPointPropSet = EnsureCenterPointPropertySet ();
1349- centerPointPropSet.InsertMatrix4x4 (L" transform" , transformMatrix);
1350-
1351- EnsureTransformMatrixFacade ();
1352- }
1359+ updateTransformProps (oldViewProps, newViewProps, m_visual);
1360+ updateBorderProps (oldViewProps, newViewProps);
13531361
13541362 m_props = std::static_pointer_cast<facebook::react::ViewProps const >(props);
13551363}
0 commit comments