From a052e1eefd97cae99fb38d35bb90c3f25317bbac Mon Sep 17 00:00:00 2001 From: David Vacca Date: Sat, 20 Jul 2024 10:23:12 -0700 Subject: [PATCH] Refactor BaseProps.resolveborderMetrics method (#45554) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/45554 In this diff I'm extracting the creation of borderWidth into its own method, this is necessary for next diffs of the stack. Nh behavior change is introduced here changelog: [internal] internal Reviewed By: NickGerleman Differential Revision: D59942306 fbshipit-source-id: 85d39b64deaa4e8a8632d6f4aab72f626e594b5d --- .../renderer/components/view/BaseViewProps.cpp | 16 ++++++++++------ .../renderer/components/view/BaseViewProps.h | 1 + 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.cpp b/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.cpp index 93969024935..76ee628a67d 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.cpp +++ b/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.cpp @@ -432,12 +432,8 @@ static BorderRadii radiiPercentToPoint( }; } -BorderMetrics BaseViewProps::resolveBorderMetrics( - const LayoutMetrics& layoutMetrics) const { - auto isRTL = - bool{layoutMetrics.layoutDirection == LayoutDirection::RightToLeft}; - - auto borderWidths = CascadedBorderWidths{ +CascadedBorderWidths BaseViewProps::getBorderWidths() const { + return CascadedBorderWidths{ /* .left = */ optionalFloatFromYogaValue( yogaStyle.border(yoga::Edge::Left)), /* .top = */ @@ -457,6 +453,14 @@ BorderMetrics BaseViewProps::resolveBorderMetrics( /* .all = */ optionalFloatFromYogaValue(yogaStyle.border(yoga::Edge::All)), }; +} + +BorderMetrics BaseViewProps::resolveBorderMetrics( + const LayoutMetrics& layoutMetrics) const { + auto isRTL = + bool{layoutMetrics.layoutDirection == LayoutDirection::RightToLeft}; + + auto borderWidths = getBorderWidths(); BorderRadii radii = radiiPercentToPoint( borderRadii.resolve(isRTL, ValueUnit{0.0f, UnitType::Point}), diff --git a/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.h b/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.h index ff5c4971075..452e2bd9b53 100644 --- a/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.h +++ b/packages/react-native/ReactCommon/react/renderer/components/view/BaseViewProps.h @@ -96,6 +96,7 @@ class BaseViewProps : public YogaStylableProps, public AccessibilityProps { #pragma mark - Convenience Methods + CascadedBorderWidths getBorderWidths() const; BorderMetrics resolveBorderMetrics(const LayoutMetrics& layoutMetrics) const; Transform resolveTransform(const LayoutMetrics& layoutMetrics) const; bool getClipsContentToBounds() const;