@react-native-ohos/react-native-reanimated 3.18.2-rc.2 → 4.0.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/compatibility.json +161 -0
- package/harmony/reanimated/BuildProfile.ets +16 -16
- package/harmony/reanimated/build-profile.json5 +18 -11
- package/harmony/reanimated/oh-package.json5 +12 -11
- package/harmony/reanimated/src/main/cpp/CMakeLists.txt +31 -40
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.cpp +81 -86
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/AnimatedSensor/AnimatedSensorModule.h +46 -47
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.cpp +390 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/InterpolatorRegistry.h +16 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/definitions.h +30 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.cpp +46 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/filters/FilterOp.h +23 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.cpp +53 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/Quaternion.h +21 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.cpp +166 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix.h +71 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.cpp +368 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix2D.h +53 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.cpp +594 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformMatrix3D.h +67 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.cpp +52 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/TransformOp.h +26 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.cpp +156 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/transforms/vectors.h +76 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.cpp +93 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSAngle.h +33 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.cpp +48 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSBoolean.h +31 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.cpp +135 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSColor.h +61 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.cpp +100 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSDiscreteArray.h +44 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.cpp +81 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSKeyword.h +53 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.cpp +122 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSLength.h +38 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.cpp +82 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSNumber.h +63 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValue.h +118 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.cpp +174 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/CSSValueVariant.h +111 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.cpp +196 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSBoxShadow.h +66 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.cpp +134 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/common/values/complex/CSSDropShadow.h +44 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.cpp +174 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSAnimationConfig.h +49 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.cpp +45 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSKeyframesConfig.h +26 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.cpp +90 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/CSSTransitionConfig.h +43 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.cpp +17 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/configs/common.h +13 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.cpp +127 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSAnimation.h +51 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.cpp +145 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/core/CSSTransition.h +47 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.cpp +69 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/EasingFunctions.h +22 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.cpp +66 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/cubicBezier.h +15 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.cpp +28 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/linear.h +15 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.cpp +13 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/easing/steps.h +12 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.cpp +157 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/InterpolatorFactory.h +189 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.cpp +76 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/PropertyInterpolator.h +66 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/configs.h +20 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.cpp +136 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperation.h +40 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.cpp +38 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterOperationInterpolator.h +24 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.cpp +58 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/FilterStyleInterpolator.h +24 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/blur.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/brightness.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/contrast.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/dropShadow.h +17 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/grayscale.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/hueRotate.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/invert.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/opacity.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/saturate.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/filters/operations/sepia.h +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.cpp +95 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/ArrayPropertiesInterpolator.h +36 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.cpp +41 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/GroupPropertiesInterpolator.h +32 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.cpp +99 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/groups/RecordPropertiesInterpolator.h +37 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.cpp +308 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/OperationsStyleInterpolator.h +100 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.cpp +19 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperation.h +94 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.cpp +18 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/operations/StyleOperationInterpolator.h +43 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/AnimationStyleInterpolator.h +26 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.cpp +103 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/styles/TransitionStyleInterpolator.h +42 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.cpp +224 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperation.h +52 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.cpp +218 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformOperationInterpolator.h +89 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.cpp +149 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/TransformsStyleInterpolator.h +33 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.cpp +208 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/matrix.h +56 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.cpp +42 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/perspective.h +20 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.cpp +41 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/rotate.h +39 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.cpp +28 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/scale.h +25 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.cpp +14 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/skew.h +20 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.cpp +39 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/transforms/operations/translate.h +25 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.cpp +47 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ResolvableValueInterpolator.h +43 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.cpp +70 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/SimpleValueInterpolator.h +40 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.cpp +146 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/interpolation/values/ValueInterpolator.h +71 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.cpp +155 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/misc/ViewStylesRepository.h +53 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.cpp +170 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/AnimationProgressProvider.h +67 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/KeyframeProgressProvider.h +12 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.cpp +41 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/RawProgressProvider.h +31 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.cpp +193 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/progress/TransitionProgressProvider.h +77 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.cpp +340 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSAnimationsRegistry.h +80 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.cpp +45 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSKeyframesRegistry.h +29 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.cpp +167 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/CSSTransitionsRegistry.h +51 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.cpp +61 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/registries/StaticPropsRegistry.h +33 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.cpp +80 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGBrush.h +39 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.cpp +93 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGLength.h +36 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.cpp +110 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/svg/values/SVGStrokeDashArray.h +33 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.cpp +75 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/DelayedItemsManager.h +45 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.cpp +12 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/algorithms.h +10 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.cpp +36 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/interpolators.h +23 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.cpp +149 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/CSS/utils/props.h +32 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.cpp +113 -101
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitHook.h +49 -51
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedCommitShadowNode.h +46 -49
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.cpp +56 -96
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ReanimatedMountHook.h +37 -33
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.cpp +104 -95
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/ShadowTreeCloner.h +22 -29
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.cpp +72 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/AnimatedPropsRegistry.h +25 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.cpp +160 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistry.h +71 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.cpp +161 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/updates/UpdatesRegistryManager.h +65 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationType.h +11 -9
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.cpp +137 -232
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsManager.h +82 -90
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.cpp +79 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxyCommon.h +81 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.cpp +864 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Experimental.h +214 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/{LayoutAnimationsProxy.cpp → LayoutAnimationsProxy_Legacy.cpp} +897 -870
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy_Legacy.h +220 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.cpp +31 -91
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsUtils.h +146 -176
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.cpp +456 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/PropsDiffer.h +102 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/SharedTransitions.cpp +544 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.cpp +119 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/PropValueProcessor.h +39 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.cpp +1376 -971
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxy.h +228 -252
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.cpp +183 -231
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/NativeModules/ReanimatedModuleProxySpec.h +93 -109
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.cpp +54 -56
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/RNRuntimeDecorator.h +28 -20
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.cpp +58 -70
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/RuntimeDecorators/UIRuntimeDecorator.h +31 -35
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.cpp +18 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeatureFlags.h +44 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/PlatformDepMethodsHolder.h +67 -98
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedSystraceSection.h +114 -135
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/ReanimatedVersion.cpp +46 -0
- package/harmony/reanimated/src/main/cpp/Common/cpp/{worklets → reanimated}/Tools/ReanimatedVersion.h +18 -19
- package/harmony/reanimated/src/main/cpp/ReanimatedModule.cpp +60 -85
- package/harmony/reanimated/src/main/cpp/ReanimatedNodesManager.cpp +1 -0
- package/harmony/reanimated/src/main/cpp/ReanimatedPackage.cpp +0 -3
- package/harmony/reanimated/src/main/cpp/ReanimatedSensor.cpp +266 -0
- package/harmony/reanimated/src/main/cpp/ReanimatedSensor.h +36 -0
- package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.cpp +36 -0
- package/harmony/reanimated/src/main/cpp/ReanimatedSensorContainer.h +23 -0
- package/harmony/reanimated/src/main/cpp/ReanimatedUIScheduler.h +3 -3
- package/harmony/reanimated/src/main/ets/ReanimatedModule.ts +5 -1
- package/harmony/reanimated/src/main/ets/ReanimatedPackage.ts +1 -4
- package/harmony/reanimated/src/main/module.json5 +12 -12
- package/harmony/reanimated/src/main/resources/base/element/color.json +7 -7
- package/harmony/reanimated/src/main/resources/base/element/string.json +15 -15
- package/harmony/reanimated/src/main/resources/base/profile/main_pages.json +5 -5
- package/harmony/reanimated/src/main/resources/en_US/element/string.json +15 -15
- package/harmony/reanimated/src/main/resources/zh_CN/element/string.json +15 -15
- package/harmony/reanimated/ts.ts +6 -6
- package/harmony/reanimated.har +0 -0
- package/package.json +68 -50
- package/scripts/deploy.js +191 -0
- package/scripts/set-reanimated-version.js +37 -0
- package/scripts/update-version.js +119 -0
- package/scripts/validate-react-native-version.js +46 -0
- package/scripts/validate-worklets-build.js +17 -0
- package/scripts/validate-worklets-version.js +79 -0
- package/scripts/worklets-version.json +4 -0
- package/LICENSE +0 -21
- package/README.OpenSource +0 -11
- package/README.md +0 -10
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.cpp +0 -68
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Fabric/PropsRegistry.h +0 -68
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/LayoutAnimations/LayoutAnimationsProxy.h +0 -147
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/CollectionUtils.h +0 -14
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.cpp +0 -5
- package/harmony/reanimated/src/main/cpp/Common/cpp/reanimated/Tools/FeaturesConfig.h +0 -19
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.cpp +0 -47
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxy.h +0 -59
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.cpp +0 -27
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/NativeModules/WorkletsModuleProxySpec.h +0 -25
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.cpp +0 -94
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/EventHandlerRegistry.h +0 -49
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.cpp +0 -8
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Registries/WorkletRuntimeRegistry.h +0 -39
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.cpp +0 -326
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/SharedItems/Shareables.h +0 -345
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.cpp +0 -52
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/AsyncQueue.h +0 -35
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/Defs.h +0 -10
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.cpp +0 -342
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSISerializer.h +0 -47
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.cpp +0 -16
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSLogger.h +0 -20
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.cpp +0 -20
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/JSScheduler.h +0 -29
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/PlatformLogger.h +0 -16
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.cpp +0 -26
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedJSIUtils.h +0 -199
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ReanimatedVersion.cpp +0 -95
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/SingleInstanceChecker.h +0 -72
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/ThreadSafeQueue.h +0 -49
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.cpp +0 -20
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/UIScheduler.h +0 -22
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.cpp +0 -29
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/Tools/WorkletEventHandler.h +0 -41
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.cpp +0 -16
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RNRuntimeWorkletDecorator.h +0 -19
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.cpp +0 -112
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedHermesRuntime.h +0 -127
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.cpp +0 -53
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/ReanimatedRuntime.h +0 -22
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/RuntimeInitialization.md +0 -191
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.cpp +0 -173
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntime.h +0 -90
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeCollector.h +0 -36
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.cpp +0 -189
- package/harmony/reanimated/src/main/cpp/Common/cpp/worklets/WorkletRuntime/WorkletRuntimeDecorator.h +0 -22
- package/harmony/reanimated/src/main/cpp/ReanimatedLogger.cpp +0 -33
- package/harmony/reanimated/src/main/cpp/WorkletsModule.cpp +0 -61
- package/harmony/reanimated/src/main/cpp/WorkletsModule.h +0 -22
- package/harmony/reanimated/src/main/cpp/patches/AnimatedSensor/AnimatedSensorModule.cpp +0 -89
- package/harmony/reanimated/src/main/cpp/patches/Fabric/ShadowTreeCloner.cpp +0 -95
- package/harmony/reanimated/src/main/cpp/patches/NativeModules/ReanimatedModuleProxy.cpp +0 -964
- package/harmony/reanimated/src/main/ets/WorkletsModule.ts +0 -15
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
#include <reanimated/CSS/common/transforms/TransformMatrix.h>
|
|
2
|
+
|
|
3
|
+
#include <reanimated/CSS/common/transforms/TransformMatrix2D.h>
|
|
4
|
+
#include <reanimated/CSS/common/transforms/TransformMatrix3D.h>
|
|
5
|
+
|
|
6
|
+
#include <algorithm>
|
|
7
|
+
#include <string>
|
|
8
|
+
#include <utility>
|
|
9
|
+
|
|
10
|
+
namespace reanimated::css {
|
|
11
|
+
|
|
12
|
+
// TransformMatrixBase template implementations
|
|
13
|
+
template <typename TDerived, size_t TDimension>
|
|
14
|
+
TransformMatrixBase<TDerived, TDimension>::TransformMatrixBase() : TransformMatrix(), matrix_{} {
|
|
15
|
+
// Create an identity matrix
|
|
16
|
+
for (size_t i = 0; i < TDimension; ++i) {
|
|
17
|
+
matrix_[i * (TDimension + 1)] = 1;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
template <typename TDerived, size_t TDimension>
|
|
22
|
+
TransformMatrixBase<TDerived, TDimension>::TransformMatrixBase(MatrixArray matrix)
|
|
23
|
+
: TransformMatrix(), matrix_(std::move(matrix)) {}
|
|
24
|
+
|
|
25
|
+
template <typename TDerived, size_t TDimension>
|
|
26
|
+
TransformMatrixBase<TDerived, TDimension>::TransformMatrixBase(const TransformMatrixBase &other)
|
|
27
|
+
: TransformMatrix(), matrix_(other.matrix_) {}
|
|
28
|
+
|
|
29
|
+
template <typename TDerived, size_t TDimension>
|
|
30
|
+
TransformMatrixBase<TDerived, TDimension>::TransformMatrixBase(TransformMatrixBase &&other) noexcept
|
|
31
|
+
: TransformMatrix(), matrix_(std::move(other.matrix_)) {}
|
|
32
|
+
|
|
33
|
+
template <typename TDerived, size_t TDimension>
|
|
34
|
+
bool TransformMatrixBase<TDerived, TDimension>::operator==(const TDerived &other) const {
|
|
35
|
+
return matrix_ == other.matrix_;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
template <typename TDerived, size_t TDimension>
|
|
39
|
+
bool TransformMatrixBase<TDerived, TDimension>::operator==(const TransformMatrix &other) const {
|
|
40
|
+
return TDimension == other.getDimension() && matrix_ == static_cast<const TDerived &>(other).matrix_;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
template <typename TDerived, size_t TDimension>
|
|
44
|
+
double &TransformMatrixBase<TDerived, TDimension>::operator[](size_t index) {
|
|
45
|
+
return matrix_[index];
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
template <typename TDerived, size_t TDimension>
|
|
49
|
+
const double &TransformMatrixBase<TDerived, TDimension>::operator[](size_t index) const {
|
|
50
|
+
return matrix_[index];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
template <typename TDerived, size_t TDimension>
|
|
54
|
+
size_t TransformMatrixBase<TDerived, TDimension>::getDimension() const {
|
|
55
|
+
return TDimension;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
template <typename TDerived, size_t TDimension>
|
|
59
|
+
size_t TransformMatrixBase<TDerived, TDimension>::getSize() const {
|
|
60
|
+
return SIZE;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
template <typename TDerived, size_t TDimension>
|
|
64
|
+
bool TransformMatrixBase<TDerived, TDimension>::isSingular() const {
|
|
65
|
+
return determinant() == 0;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
template <typename TDerived, size_t TDimension>
|
|
69
|
+
bool TransformMatrixBase<TDerived, TDimension>::normalize() {
|
|
70
|
+
const auto last = matrix_[SIZE - 1];
|
|
71
|
+
if (last == 0) {
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
if (last == 1) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
for (size_t i = 0; i < SIZE; ++i) {
|
|
79
|
+
matrix_[i] /= last;
|
|
80
|
+
}
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
template <typename TDerived, size_t TDimension>
|
|
85
|
+
void TransformMatrixBase<TDerived, TDimension>::transpose() {
|
|
86
|
+
for (size_t i = 0; i < TDimension; ++i) {
|
|
87
|
+
for (size_t j = i + 1; j < TDimension; ++j) {
|
|
88
|
+
std::swap(matrix_[i * TDimension + j], matrix_[j * TDimension + i]);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
template <typename TDerived, size_t TDimension>
|
|
94
|
+
std::string TransformMatrixBase<TDerived, TDimension>::toString() const {
|
|
95
|
+
std::string result = "[";
|
|
96
|
+
for (size_t i = 0; i < SIZE; ++i) {
|
|
97
|
+
result += std::to_string(matrix_[i]);
|
|
98
|
+
if (i < SIZE - 1) {
|
|
99
|
+
result += ", ";
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
result += "]";
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
template <typename TDerived, size_t TDimension>
|
|
107
|
+
folly::dynamic TransformMatrixBase<TDerived, TDimension>::toDynamic() const {
|
|
108
|
+
folly::dynamic result = folly::dynamic::array;
|
|
109
|
+
for (size_t i = 0; i < SIZE; ++i) {
|
|
110
|
+
result.push_back(matrix_[i]);
|
|
111
|
+
}
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
template <typename TDerived, size_t TDimension>
|
|
116
|
+
TDerived TransformMatrixBase<TDerived, TDimension>::operator*(const TDerived &rhs) const {
|
|
117
|
+
return TDerived(multiply(rhs));
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
template <typename TDerived, size_t TDimension>
|
|
121
|
+
TDerived &TransformMatrixBase<TDerived, TDimension>::operator*=(const TDerived &rhs) {
|
|
122
|
+
matrix_ = multiply(rhs);
|
|
123
|
+
return static_cast<TDerived &>(*this);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
template <typename TDerived, size_t TDimension>
|
|
127
|
+
TransformMatrixBase<TDerived, TDimension> &TransformMatrixBase<TDerived, TDimension>::operator=(
|
|
128
|
+
const TransformMatrixBase &other) {
|
|
129
|
+
if (this != &other) {
|
|
130
|
+
// Note: dimension_ is const, so we can't reassign it
|
|
131
|
+
// But since all instances have the same dimension, this is fine
|
|
132
|
+
matrix_ = other.matrix_;
|
|
133
|
+
}
|
|
134
|
+
return *this;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
template <typename TDerived, size_t TDimension>
|
|
138
|
+
TransformMatrixBase<TDerived, TDimension> &TransformMatrixBase<TDerived, TDimension>::operator=(
|
|
139
|
+
TransformMatrixBase &&other) noexcept {
|
|
140
|
+
if (this != &other) {
|
|
141
|
+
matrix_ = std::move(other.matrix_);
|
|
142
|
+
}
|
|
143
|
+
return *this;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
template <typename TDerived, size_t TDimension>
|
|
147
|
+
typename TransformMatrixBase<TDerived, TDimension>::MatrixArray TransformMatrixBase<TDerived, TDimension>::multiply(
|
|
148
|
+
const TDerived &rhs) const {
|
|
149
|
+
MatrixArray result{};
|
|
150
|
+
|
|
151
|
+
for (size_t i = 0; i < TDimension; ++i) {
|
|
152
|
+
for (size_t k = 0; k < TDimension; ++k) {
|
|
153
|
+
double temp = matrix_[i * TDimension + k];
|
|
154
|
+
for (size_t j = 0; j < TDimension; ++j) {
|
|
155
|
+
result[i * TDimension + j] += temp * rhs[k * TDimension + j];
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
return result;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
template class TransformMatrixBase<TransformMatrix2D, MATRIX_2D_DIMENSION>;
|
|
164
|
+
template class TransformMatrixBase<TransformMatrix3D, MATRIX_3D_DIMENSION>;
|
|
165
|
+
|
|
166
|
+
} // namespace reanimated::css
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <reanimated/CSS/common/definitions.h>
|
|
4
|
+
|
|
5
|
+
#include <folly/dynamic.h>
|
|
6
|
+
#include <memory>
|
|
7
|
+
#include <string>
|
|
8
|
+
#include <utility>
|
|
9
|
+
|
|
10
|
+
namespace reanimated::css {
|
|
11
|
+
|
|
12
|
+
class TransformMatrix {
|
|
13
|
+
public:
|
|
14
|
+
using Shared = std::shared_ptr<const TransformMatrix>;
|
|
15
|
+
|
|
16
|
+
TransformMatrix() = default;
|
|
17
|
+
virtual ~TransformMatrix() = default;
|
|
18
|
+
|
|
19
|
+
virtual size_t getDimension() const = 0;
|
|
20
|
+
virtual size_t getSize() const = 0;
|
|
21
|
+
|
|
22
|
+
virtual bool isSingular() const = 0;
|
|
23
|
+
virtual bool normalize() = 0;
|
|
24
|
+
virtual void transpose() = 0;
|
|
25
|
+
virtual double determinant() const = 0;
|
|
26
|
+
|
|
27
|
+
virtual std::string toString() const = 0;
|
|
28
|
+
virtual folly::dynamic toDynamic() const = 0;
|
|
29
|
+
|
|
30
|
+
virtual double &operator[](size_t index) = 0;
|
|
31
|
+
virtual const double &operator[](size_t index) const = 0;
|
|
32
|
+
virtual bool operator==(const TransformMatrix &other) const = 0;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
template <typename TDerived, size_t TDimension>
|
|
36
|
+
class TransformMatrixBase : public TransformMatrix {
|
|
37
|
+
public:
|
|
38
|
+
static constexpr size_t SIZE = TDimension * TDimension;
|
|
39
|
+
using MatrixArray = std::array<double, SIZE>;
|
|
40
|
+
|
|
41
|
+
TransformMatrixBase();
|
|
42
|
+
explicit TransformMatrixBase(MatrixArray matrix);
|
|
43
|
+
TransformMatrixBase(const TransformMatrixBase &other);
|
|
44
|
+
TransformMatrixBase(TransformMatrixBase &&other) noexcept;
|
|
45
|
+
|
|
46
|
+
bool operator==(const TDerived &other) const;
|
|
47
|
+
bool operator==(const TransformMatrix &other) const override;
|
|
48
|
+
double &operator[](size_t index) override;
|
|
49
|
+
const double &operator[](size_t index) const override;
|
|
50
|
+
|
|
51
|
+
size_t getDimension() const override;
|
|
52
|
+
size_t getSize() const override;
|
|
53
|
+
bool isSingular() const override;
|
|
54
|
+
bool normalize() override;
|
|
55
|
+
void transpose() override;
|
|
56
|
+
std::string toString() const override;
|
|
57
|
+
folly::dynamic toDynamic() const override;
|
|
58
|
+
|
|
59
|
+
TDerived operator*(const TDerived &rhs) const;
|
|
60
|
+
TDerived &operator*=(const TDerived &rhs);
|
|
61
|
+
|
|
62
|
+
TransformMatrixBase &operator=(const TransformMatrixBase &other);
|
|
63
|
+
TransformMatrixBase &operator=(TransformMatrixBase &&other) noexcept;
|
|
64
|
+
|
|
65
|
+
protected:
|
|
66
|
+
std::array<double, SIZE> matrix_;
|
|
67
|
+
|
|
68
|
+
MatrixArray multiply(const TDerived &rhs) const;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
} // namespace reanimated::css
|
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
#include <reanimated/CSS/common/transforms/TransformMatrix2D.h>
|
|
2
|
+
|
|
3
|
+
#include <cmath>
|
|
4
|
+
|
|
5
|
+
namespace reanimated::css {
|
|
6
|
+
|
|
7
|
+
TransformMatrix2D::TransformMatrix2D(jsi::Runtime &rt, const jsi::Value &value)
|
|
8
|
+
: TransformMatrixBase<TransformMatrix2D, MATRIX_2D_DIMENSION>() {
|
|
9
|
+
const auto &array = value.asObject(rt).asArray(rt);
|
|
10
|
+
const auto size = array.size(rt);
|
|
11
|
+
|
|
12
|
+
if (size == SIZE) {
|
|
13
|
+
// Direct 3x3 matrix
|
|
14
|
+
for (size_t i = 0; i < SIZE; ++i) {
|
|
15
|
+
matrix_[i] = array.getValueAtIndex(rt, i).asNumber();
|
|
16
|
+
}
|
|
17
|
+
} else if (size == 16) {
|
|
18
|
+
// Convert 4x4 matrix to 3x3
|
|
19
|
+
// (we should call canConstruct first to ensure that the matrix is
|
|
20
|
+
// convertible to 3x3)
|
|
21
|
+
//
|
|
22
|
+
// [m[0], m[1], 0, m[2]] [m[0], m[1], m[2]]
|
|
23
|
+
// [m[3], m[4], 0, m[5]] -> [m[3], m[4], m[5]]
|
|
24
|
+
// [ 0, 0, 1, 0] [m[6], m[7], m[8]]
|
|
25
|
+
// [m[6], m[7], 0, m[8]]
|
|
26
|
+
matrix_[0] = array.getValueAtIndex(rt, 0).asNumber();
|
|
27
|
+
matrix_[1] = array.getValueAtIndex(rt, 1).asNumber();
|
|
28
|
+
matrix_[2] = array.getValueAtIndex(rt, 3).asNumber();
|
|
29
|
+
matrix_[3] = array.getValueAtIndex(rt, 4).asNumber();
|
|
30
|
+
matrix_[4] = array.getValueAtIndex(rt, 5).asNumber();
|
|
31
|
+
matrix_[5] = array.getValueAtIndex(rt, 7).asNumber();
|
|
32
|
+
matrix_[6] = array.getValueAtIndex(rt, 12).asNumber();
|
|
33
|
+
matrix_[7] = array.getValueAtIndex(rt, 13).asNumber();
|
|
34
|
+
matrix_[8] = array.getValueAtIndex(rt, 15).asNumber();
|
|
35
|
+
} else {
|
|
36
|
+
throw std::invalid_argument("[Reanimated] TransformMatrix2D: Invalid matrix size: " + std::to_string(size));
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
TransformMatrix2D::TransformMatrix2D(const folly::dynamic &array)
|
|
41
|
+
: TransformMatrixBase<TransformMatrix2D, MATRIX_2D_DIMENSION>() {
|
|
42
|
+
const auto size = array.size();
|
|
43
|
+
|
|
44
|
+
if (size == SIZE) {
|
|
45
|
+
// Direct 3x3 matrix
|
|
46
|
+
for (size_t i = 0; i < SIZE; ++i) {
|
|
47
|
+
matrix_[i] = array[i].asDouble();
|
|
48
|
+
}
|
|
49
|
+
} else if (size == 16) {
|
|
50
|
+
// Convert 4x4 matrix to 3x3
|
|
51
|
+
// (we should call canConstruct first to ensure that the matrix is
|
|
52
|
+
// convertible to 3x3)
|
|
53
|
+
//
|
|
54
|
+
// [m[0], m[1], 0, m[2]] [m[0], m[1], m[2]]
|
|
55
|
+
// [m[3], m[4], 0, m[5]] -> [m[3], m[4], m[5]]
|
|
56
|
+
// [ 0, 0, 1, 0] [m[6], m[7], m[8]]
|
|
57
|
+
// [m[6], m[7], 0, m[8]]
|
|
58
|
+
matrix_[0] = array[0].asDouble();
|
|
59
|
+
matrix_[1] = array[1].asDouble();
|
|
60
|
+
matrix_[2] = array[3].asDouble();
|
|
61
|
+
matrix_[3] = array[4].asDouble();
|
|
62
|
+
matrix_[4] = array[5].asDouble();
|
|
63
|
+
matrix_[5] = array[7].asDouble();
|
|
64
|
+
matrix_[6] = array[12].asDouble();
|
|
65
|
+
matrix_[7] = array[13].asDouble();
|
|
66
|
+
matrix_[8] = array[15].asDouble();
|
|
67
|
+
} else {
|
|
68
|
+
throw std::invalid_argument("[Reanimated] TransformMatrix2D: Invalid matrix size: " + std::to_string(size));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
bool TransformMatrix2D::canConstruct(jsi::Runtime &rt, const jsi::Value &value) {
|
|
73
|
+
if (!value.isObject()) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
const auto &obj = value.asObject(rt);
|
|
78
|
+
if (!obj.isArray(rt)) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
const auto &array = obj.asArray(rt);
|
|
83
|
+
const auto size = array.size(rt);
|
|
84
|
+
|
|
85
|
+
// Check if it's a 3x3 matrix (9 elements)
|
|
86
|
+
if (size == 9) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// Check if it's a 4x4 matrix (16 elements) that can be converted to 2D
|
|
91
|
+
if (size == 16) {
|
|
92
|
+
// A 4x4 matrix can be converted to 2D if it has this pattern
|
|
93
|
+
// (where x means any number)
|
|
94
|
+
// [x, x, 0, x]
|
|
95
|
+
// [x, x, 0, x]
|
|
96
|
+
// [0, 0, 1, 0]
|
|
97
|
+
// [x, x, 0, x]
|
|
98
|
+
return array.getValueAtIndex(rt, 2).asNumber() == 0.0 && array.getValueAtIndex(rt, 6).asNumber() == 0.0 &&
|
|
99
|
+
array.getValueAtIndex(rt, 10).asNumber() == 1.0 && array.getValueAtIndex(rt, 11).asNumber() == 0.0 &&
|
|
100
|
+
array.getValueAtIndex(rt, 14).asNumber() == 0.0 && array.getValueAtIndex(rt, 15).asNumber() == 1.0;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
bool TransformMatrix2D::canConstruct(const folly::dynamic &array) {
|
|
107
|
+
if (!array.isArray()) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const auto size = array.size();
|
|
111
|
+
|
|
112
|
+
// Check if it's a 3x3 matrix (9 elements)
|
|
113
|
+
if (size == 9) {
|
|
114
|
+
return true;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Check if it's a 4x4 matrix (16 elements) that can be converted to 2D
|
|
118
|
+
if (size == 16) {
|
|
119
|
+
// A 4x4 matrix can be converted to 2D if it has this pattern:
|
|
120
|
+
// (where x means any number)
|
|
121
|
+
// [x, x, 0, x]
|
|
122
|
+
// [x, x, 0, x]
|
|
123
|
+
// [0, 0, 1, 0]
|
|
124
|
+
// [x, x, 0, x]
|
|
125
|
+
return array[2].asDouble() == 0.0 && array[6].asDouble() == 0.0 && array[10].asDouble() == 1.0 &&
|
|
126
|
+
array[11].asDouble() == 0.0 && array[14].asDouble() == 0.0 && array[15].asDouble() == 1.0;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
TransformMatrix2D::Decomposed TransformMatrix2D::Decomposed::interpolate(
|
|
133
|
+
const double progress,
|
|
134
|
+
const TransformMatrix2D::Decomposed &target) const {
|
|
135
|
+
// Compute shortest signed angular delta (in range −π..π]
|
|
136
|
+
const double angleDelta = std::remainder(target.rotation - rotation, 2.0 * M_PI);
|
|
137
|
+
|
|
138
|
+
return {
|
|
139
|
+
.scale = scale.interpolate(progress, target.scale),
|
|
140
|
+
.skew = skew + (target.skew - skew) * progress,
|
|
141
|
+
.rotation = rotation + progress * angleDelta,
|
|
142
|
+
.translation = translation.interpolate(progress, target.translation),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
#ifndef NDEBUG
|
|
147
|
+
|
|
148
|
+
std::ostream &operator<<(std::ostream &os, const TransformMatrix2D::Decomposed &decomposed) {
|
|
149
|
+
os << "TransformMatrix2D::Decomposed(scale=" << decomposed.scale << ", skew=" << decomposed.skew
|
|
150
|
+
<< ", rotation=" << decomposed.rotation << ", translation=" << decomposed.translation << ")";
|
|
151
|
+
return os;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
#endif // NDEBUG
|
|
155
|
+
|
|
156
|
+
template <>
|
|
157
|
+
TransformMatrix2D TransformMatrix2D::create<TransformOp::Rotate>(double v) {
|
|
158
|
+
const auto cosVal = std::cos(v);
|
|
159
|
+
const auto sinVal = std::sin(v);
|
|
160
|
+
// clang-format off
|
|
161
|
+
return TransformMatrix2D({
|
|
162
|
+
cosVal, sinVal, 0,
|
|
163
|
+
-sinVal, cosVal, 0,
|
|
164
|
+
0, 0, 1
|
|
165
|
+
});
|
|
166
|
+
// clang-format on
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
template <>
|
|
170
|
+
TransformMatrix2D TransformMatrix2D::create<TransformOp::Scale>(double v) {
|
|
171
|
+
// clang-format off
|
|
172
|
+
return TransformMatrix2D({
|
|
173
|
+
v, 0, 0,
|
|
174
|
+
0, v, 0,
|
|
175
|
+
0, 0, 1
|
|
176
|
+
});
|
|
177
|
+
// clang-format on
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
template <>
|
|
181
|
+
TransformMatrix2D TransformMatrix2D::create<TransformOp::ScaleX>(double v) {
|
|
182
|
+
// clang-format off
|
|
183
|
+
return TransformMatrix2D({
|
|
184
|
+
v, 0, 0,
|
|
185
|
+
0, 1, 0,
|
|
186
|
+
0, 0, 1
|
|
187
|
+
});
|
|
188
|
+
// clang-format on
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
template <>
|
|
192
|
+
TransformMatrix2D TransformMatrix2D::create<TransformOp::ScaleY>(double v) {
|
|
193
|
+
// clang-format off
|
|
194
|
+
return TransformMatrix2D({
|
|
195
|
+
1, 0, 0,
|
|
196
|
+
0, v, 0,
|
|
197
|
+
0, 0, 1
|
|
198
|
+
});
|
|
199
|
+
// clang-format on
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
template <>
|
|
203
|
+
TransformMatrix2D TransformMatrix2D::create<TransformOp::TranslateX>(double v) {
|
|
204
|
+
// clang-format off
|
|
205
|
+
return TransformMatrix2D({
|
|
206
|
+
1, 0, 0,
|
|
207
|
+
0, 1, 0,
|
|
208
|
+
v, 0, 1
|
|
209
|
+
});
|
|
210
|
+
// clang-format on
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
template <>
|
|
214
|
+
TransformMatrix2D TransformMatrix2D::create<TransformOp::TranslateY>(double v) {
|
|
215
|
+
// clang-format off
|
|
216
|
+
return TransformMatrix2D({
|
|
217
|
+
1, 0, 0,
|
|
218
|
+
0, 1, 0,
|
|
219
|
+
0, v, 1
|
|
220
|
+
});
|
|
221
|
+
// clang-format on
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
template <>
|
|
225
|
+
TransformMatrix2D TransformMatrix2D::create<TransformOp::SkewX>(double v) {
|
|
226
|
+
const auto tanVal = std::tan(v);
|
|
227
|
+
// clang-format off
|
|
228
|
+
return TransformMatrix2D({
|
|
229
|
+
1, 0, 0,
|
|
230
|
+
tanVal, 1, 0,
|
|
231
|
+
0, 0, 1
|
|
232
|
+
});
|
|
233
|
+
// clang-format on
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
template <>
|
|
237
|
+
TransformMatrix2D TransformMatrix2D::create<TransformOp::SkewY>(double v) {
|
|
238
|
+
const auto tanVal = std::tan(v);
|
|
239
|
+
// clang-format off
|
|
240
|
+
return TransformMatrix2D({
|
|
241
|
+
1, tanVal, 0,
|
|
242
|
+
0, 1, 0,
|
|
243
|
+
0, 0, 1
|
|
244
|
+
});
|
|
245
|
+
// clang-format on
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
template <TransformOp TOperation>
|
|
249
|
+
TransformMatrix2D TransformMatrix2D::create(double value) {
|
|
250
|
+
throw std::invalid_argument(
|
|
251
|
+
"[Reanimated] Cannot create TransformMatrix2D from: " + getTransformOperationName(TOperation));
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
double TransformMatrix2D::determinant() const {
|
|
255
|
+
return (matrix_[0] * matrix_[4] * matrix_[8]) + (matrix_[1] * matrix_[5] * matrix_[6]) +
|
|
256
|
+
(matrix_[2] * matrix_[3] * matrix_[7]) - (matrix_[2] * matrix_[4] * matrix_[6]) -
|
|
257
|
+
(matrix_[1] * matrix_[3] * matrix_[8]) - (matrix_[0] * matrix_[5] * matrix_[7]);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
void TransformMatrix2D::translate2d(const Vector2D &translation) {
|
|
261
|
+
for (size_t i = 0; i < 3; ++i) {
|
|
262
|
+
matrix_[6 + i] += translation[0] * matrix_[i] + translation[1] * matrix_[3 + i];
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
void TransformMatrix2D::scale2d(const Vector2D &scale) {
|
|
267
|
+
for (size_t i = 0; i < 3; ++i) {
|
|
268
|
+
matrix_[i] *= scale[0];
|
|
269
|
+
matrix_[3 + i] *= scale[1];
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
std::optional<TransformMatrix2D::Decomposed> TransformMatrix2D::decompose() const {
|
|
274
|
+
auto matrixCp = *this;
|
|
275
|
+
|
|
276
|
+
if (!matrixCp.normalize()) {
|
|
277
|
+
return std::nullopt;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
const auto translation = matrixCp.getTranslation();
|
|
281
|
+
|
|
282
|
+
// Take the 2×2 linear part into two column vectors
|
|
283
|
+
std::array<Vector2D, 2> rows;
|
|
284
|
+
for (size_t i = 0; i < 2; ++i) {
|
|
285
|
+
rows[i] = Vector2D(matrixCp[i * 3], matrixCp[i * 3 + 1]);
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
auto [scale, skew] = computeScaleAndSkew(rows);
|
|
289
|
+
|
|
290
|
+
// At this point, the matrix (in rows) is orthonormal.
|
|
291
|
+
// Check for a coordinate system flip. If the determinant
|
|
292
|
+
// is negative, then negate the matrix and the scaling factors.
|
|
293
|
+
if (rows[0].cross(rows[1]) < 0) {
|
|
294
|
+
scale *= -1;
|
|
295
|
+
for (auto &row : rows) {
|
|
296
|
+
row *= -1;
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
|
|
300
|
+
const auto rotation = computeRotation(rows);
|
|
301
|
+
|
|
302
|
+
return TransformMatrix2D::Decomposed{.scale = scale, .skew = skew, .rotation = rotation, .translation = translation};
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
TransformMatrix2D TransformMatrix2D::recompose(const TransformMatrix2D::Decomposed &decomposed) {
|
|
306
|
+
auto result = TransformMatrix2D();
|
|
307
|
+
|
|
308
|
+
// Apply Translation
|
|
309
|
+
result.translate2d(decomposed.translation);
|
|
310
|
+
|
|
311
|
+
// Apply Rotation
|
|
312
|
+
if (decomposed.rotation != 0) {
|
|
313
|
+
const auto rotationMatrix = TransformMatrix2D::create<TransformOp::Rotate>(decomposed.rotation);
|
|
314
|
+
result = rotationMatrix * result;
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
// Apply XY shear
|
|
318
|
+
if (decomposed.skew != 0) {
|
|
319
|
+
auto tmp = TransformMatrix2D();
|
|
320
|
+
tmp[3] = decomposed.skew;
|
|
321
|
+
result = tmp * result;
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
// Apply Scale
|
|
325
|
+
result.scale2d(decomposed.scale);
|
|
326
|
+
|
|
327
|
+
return result;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
Vector2D TransformMatrix2D::getTranslation() const {
|
|
331
|
+
return Vector2D(matrix_[6], matrix_[7]);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
std::pair<Vector2D, double> TransformMatrix2D::computeScaleAndSkew(std::array<Vector2D, 2> &rows) {
|
|
335
|
+
Vector2D scale;
|
|
336
|
+
|
|
337
|
+
// Compute X scale and normalize first row
|
|
338
|
+
scale[0] = rows[0].length();
|
|
339
|
+
rows[0].normalize();
|
|
340
|
+
|
|
341
|
+
// Compute XY shear and orthogonalize second row against first
|
|
342
|
+
double skew = rows[0].dot(rows[1]);
|
|
343
|
+
rows[1] = rows[1].addScaled(rows[0], -skew);
|
|
344
|
+
|
|
345
|
+
// Now, compute Y scale and normalize second row
|
|
346
|
+
scale[1] = rows[1].length();
|
|
347
|
+
rows[1].normalize();
|
|
348
|
+
|
|
349
|
+
// Next, Normalize shear by Y scale
|
|
350
|
+
skew /= scale[1];
|
|
351
|
+
|
|
352
|
+
return {scale, skew};
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
double TransformMatrix2D::computeRotation(std::array<Vector2D, 2> &rows) {
|
|
356
|
+
// For 2D, we can compute rotation directly from the orthonormal matrix
|
|
357
|
+
// The rotation angle is atan2(m01, m00) where m01 is rows[0][1] and m00 is
|
|
358
|
+
// rows[0][0]
|
|
359
|
+
return std::atan2(rows[0][1], rows[0][0]);
|
|
360
|
+
}
|
|
361
|
+
// Explicit template instantiations for unsupported operations
|
|
362
|
+
// These will use the fallback template function that throws an error
|
|
363
|
+
template TransformMatrix2D TransformMatrix2D::create<TransformOp::Perspective>(double);
|
|
364
|
+
template TransformMatrix2D TransformMatrix2D::create<TransformOp::RotateX>(double);
|
|
365
|
+
template TransformMatrix2D TransformMatrix2D::create<TransformOp::RotateY>(double);
|
|
366
|
+
template TransformMatrix2D TransformMatrix2D::create<TransformOp::RotateZ>(double);
|
|
367
|
+
|
|
368
|
+
} // namespace reanimated::css
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <reanimated/CSS/common/transforms/TransformMatrix.h>
|
|
4
|
+
#include <reanimated/CSS/common/transforms/TransformOp.h>
|
|
5
|
+
#include <reanimated/CSS/common/transforms/vectors.h>
|
|
6
|
+
|
|
7
|
+
#include <folly/dynamic.h>
|
|
8
|
+
#include <utility>
|
|
9
|
+
|
|
10
|
+
namespace reanimated::css {
|
|
11
|
+
|
|
12
|
+
static constexpr size_t MATRIX_2D_DIMENSION = 3; // 3x3 matrix
|
|
13
|
+
|
|
14
|
+
class TransformMatrix2D : public TransformMatrixBase<TransformMatrix2D, MATRIX_2D_DIMENSION> {
|
|
15
|
+
public:
|
|
16
|
+
struct Decomposed {
|
|
17
|
+
Vector2D scale;
|
|
18
|
+
double skew;
|
|
19
|
+
double rotation;
|
|
20
|
+
Vector2D translation;
|
|
21
|
+
|
|
22
|
+
#ifndef NDEBUG
|
|
23
|
+
friend std::ostream &operator<<(std::ostream &os, const Decomposed &decomposed);
|
|
24
|
+
#endif // NDEBUG
|
|
25
|
+
|
|
26
|
+
Decomposed interpolate(double progress, const Decomposed &other) const;
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
using TransformMatrixBase<TransformMatrix2D, MATRIX_2D_DIMENSION>::TransformMatrixBase;
|
|
30
|
+
|
|
31
|
+
explicit TransformMatrix2D(jsi::Runtime &rt, const jsi::Value &value);
|
|
32
|
+
explicit TransformMatrix2D(const folly::dynamic &array);
|
|
33
|
+
|
|
34
|
+
static bool canConstruct(jsi::Runtime &rt, const jsi::Value &value);
|
|
35
|
+
static bool canConstruct(const folly::dynamic &array);
|
|
36
|
+
|
|
37
|
+
template <TransformOp TOperation>
|
|
38
|
+
static TransformMatrix2D create(double value);
|
|
39
|
+
|
|
40
|
+
double determinant() const override;
|
|
41
|
+
void translate2d(const Vector2D &translation);
|
|
42
|
+
void scale2d(const Vector2D &scale);
|
|
43
|
+
|
|
44
|
+
std::optional<Decomposed> decompose() const;
|
|
45
|
+
static TransformMatrix2D recompose(const Decomposed &decomposed);
|
|
46
|
+
|
|
47
|
+
private:
|
|
48
|
+
Vector2D getTranslation() const;
|
|
49
|
+
static std::pair<Vector2D, double> computeScaleAndSkew(std::array<Vector2D, 2> &rows);
|
|
50
|
+
static double computeRotation(std::array<Vector2D, 2> &rows);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
} // namespace reanimated::css
|