From c9f66bd177e19836e701f9924e382e86bfaea1b4 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 19 Sep 2023 16:30:02 -0700 Subject: [PATCH] C++ Style enums 12/N: PositionType Summary: X-link: https://github.com/facebook/react-native/pull/39538 X-link: https://github.com/facebook/yoga/pull/1399 Moves internal usages of YGPositionType to PositionType bypass-github-export-checks Changelog: [Internal] Reviewed By: rshest Differential Revision: D49361677 fbshipit-source-id: 526222d6cf9f3dc26eddfbfb8a04de4ba28e14a9 --- lib/yoga/src/main/cpp/yoga/Yoga.cpp | 4 ++-- .../src/main/cpp/yoga/algorithm/Baseline.cpp | 4 ++-- .../cpp/yoga/algorithm/CalculateLayout.cpp | 18 +++++++++--------- .../src/main/cpp/yoga/algorithm/FlexLine.cpp | 2 +- .../src/main/cpp/yoga/debug/NodeToString.cpp | 2 +- lib/yoga/src/main/cpp/yoga/node/Node.cpp | 4 ++-- lib/yoga/src/main/cpp/yoga/style/Style.h | 9 +++++---- 7 files changed, 22 insertions(+), 21 deletions(-) diff --git a/lib/yoga/src/main/cpp/yoga/Yoga.cpp b/lib/yoga/src/main/cpp/yoga/Yoga.cpp index c78e39ead59..cb4d96c28e4 100644 --- a/lib/yoga/src/main/cpp/yoga/Yoga.cpp +++ b/lib/yoga/src/main/cpp/yoga/Yoga.cpp @@ -485,10 +485,10 @@ void YGNodeStyleSetPositionType( const YGNodeRef node, const YGPositionType positionType) { updateStyle( - node, &Style::positionType, positionType); + node, &Style::positionType, scopedEnum(positionType)); } YGPositionType YGNodeStyleGetPositionType(const YGNodeConstRef node) { - return resolveRef(node)->getStyle().positionType(); + return unscopedEnum(resolveRef(node)->getStyle().positionType()); } void YGNodeStyleSetFlexWrap(const YGNodeRef node, const YGWrap flexWrap) { diff --git a/lib/yoga/src/main/cpp/yoga/algorithm/Baseline.cpp b/lib/yoga/src/main/cpp/yoga/algorithm/Baseline.cpp index 3b43204e08e..e6ef7051c93 100644 --- a/lib/yoga/src/main/cpp/yoga/algorithm/Baseline.cpp +++ b/lib/yoga/src/main/cpp/yoga/algorithm/Baseline.cpp @@ -38,7 +38,7 @@ float calculateBaseline(const yoga::Node* node) { if (child->getLineIndex() > 0) { break; } - if (child->getStyle().positionType() == YGPositionTypeAbsolute) { + if (child->getStyle().positionType() == PositionType::Absolute) { continue; } if (resolveChildAlignment(node, child) == Align::Baseline || @@ -70,7 +70,7 @@ bool isBaselineLayout(const yoga::Node* node) { const auto childCount = node->getChildCount(); for (size_t i = 0; i < childCount; i++) { auto child = node->getChild(i); - if (child->getStyle().positionType() != YGPositionTypeAbsolute && + if (child->getStyle().positionType() != PositionType::Absolute && child->getStyle().alignSelf() == Align::Baseline) { return true; } diff --git a/lib/yoga/src/main/cpp/yoga/algorithm/CalculateLayout.cpp b/lib/yoga/src/main/cpp/yoga/algorithm/CalculateLayout.cpp index 565ad3b3949..c997679e1fd 100644 --- a/lib/yoga/src/main/cpp/yoga/algorithm/CalculateLayout.cpp +++ b/lib/yoga/src/main/cpp/yoga/algorithm/CalculateLayout.cpp @@ -821,7 +821,7 @@ static float computeFlexBasisForChildren( childDirection, mainDim, crossDim, availableInnerWidth); } - if (child->getStyle().positionType() == YGPositionTypeAbsolute) { + if (child->getStyle().positionType() == PositionType::Absolute) { continue; } if (child == singleFlexChild) { @@ -1248,7 +1248,7 @@ static void justifyMainAxis( int numberOfAutoMarginsOnCurrentLine = 0; for (size_t i = startOfLineIndex; i < flexLine.endOfLineIndex; i++) { auto child = node->getChild(i); - if (child->getStyle().positionType() != YGPositionTypeAbsolute) { + if (child->getStyle().positionType() != PositionType::Absolute) { if (child->marginLeadingValue(mainAxis).unit == YGUnitAuto) { numberOfAutoMarginsOnCurrentLine++; } @@ -1310,7 +1310,7 @@ static void justifyMainAxis( if (childStyle.display() == YGDisplayNone) { continue; } - if (childStyle.positionType() == YGPositionTypeAbsolute && + if (childStyle.positionType() == PositionType::Absolute && child->isLeadingPositionDefined(mainAxis)) { if (performLayout) { // In case the child is position absolute and has left/top being @@ -1327,7 +1327,7 @@ static void justifyMainAxis( // Now that we placed the element, we need to update the variables. // We need to do that only for relative elements. Absolute elements do not // take part in that phase. - if (childStyle.positionType() != YGPositionTypeAbsolute) { + if (childStyle.positionType() != PositionType::Absolute) { if (child->marginLeadingValue(mainAxis).unit == YGUnitAuto) { flexLine.layout.mainDim += flexLine.layout.remainingFreeSpace / static_cast(numberOfAutoMarginsOnCurrentLine); @@ -1866,7 +1866,7 @@ static void calculateLayoutImpl( if (child->getStyle().display() == YGDisplayNone) { continue; } - if (child->getStyle().positionType() == YGPositionTypeAbsolute) { + if (child->getStyle().positionType() == PositionType::Absolute) { // If the child is absolutely positioned and has a // top/left/bottom/right set, override all the previously computed // positions to set it correctly. @@ -2072,7 +2072,7 @@ static void calculateLayoutImpl( if (child->getStyle().display() == YGDisplayNone) { continue; } - if (child->getStyle().positionType() != YGPositionTypeAbsolute) { + if (child->getStyle().positionType() != PositionType::Absolute) { if (child->getLineIndex() != i) { break; } @@ -2115,7 +2115,7 @@ static void calculateLayoutImpl( if (child->getStyle().display() == YGDisplayNone) { continue; } - if (child->getStyle().positionType() != YGPositionTypeAbsolute) { + if (child->getStyle().positionType() != PositionType::Absolute) { switch (resolveChildAlignment(node, child)) { case Align::FlexStart: { child->setLayoutPosition( @@ -2305,7 +2305,7 @@ static void calculateLayoutImpl( if (performLayout && node->getStyle().flexWrap() == YGWrapWrapReverse) { for (size_t i = 0; i < childCount; i++) { const auto child = node->getChild(i); - if (child->getStyle().positionType() != YGPositionTypeAbsolute) { + if (child->getStyle().positionType() != PositionType::Absolute) { child->setLayoutPosition( node->getLayout().measuredDimensions[dimension(crossAxis)] - child->getLayout().position[leadingEdge(crossAxis)] - @@ -2319,7 +2319,7 @@ static void calculateLayoutImpl( // STEP 10: SIZING AND POSITIONING ABSOLUTE CHILDREN for (auto child : node->getChildren()) { if (child->getStyle().display() == YGDisplayNone || - child->getStyle().positionType() != YGPositionTypeAbsolute) { + child->getStyle().positionType() != PositionType::Absolute) { continue; } const bool absolutePercentageAgainstPaddingEdge = diff --git a/lib/yoga/src/main/cpp/yoga/algorithm/FlexLine.cpp b/lib/yoga/src/main/cpp/yoga/algorithm/FlexLine.cpp index db7279a99a2..2a5220c6bb7 100644 --- a/lib/yoga/src/main/cpp/yoga/algorithm/FlexLine.cpp +++ b/lib/yoga/src/main/cpp/yoga/algorithm/FlexLine.cpp @@ -39,7 +39,7 @@ FlexLine calculateFlexLine( for (; endOfLineIndex < node->getChildren().size(); endOfLineIndex++) { auto child = node->getChild(endOfLineIndex); if (child->getStyle().display() == YGDisplayNone || - child->getStyle().positionType() == YGPositionTypeAbsolute) { + child->getStyle().positionType() == PositionType::Absolute) { continue; } diff --git a/lib/yoga/src/main/cpp/yoga/debug/NodeToString.cpp b/lib/yoga/src/main/cpp/yoga/debug/NodeToString.cpp index 302685b3cc3..f7f6cb11e42 100644 --- a/lib/yoga/src/main/cpp/yoga/debug/NodeToString.cpp +++ b/lib/yoga/src/main/cpp/yoga/debug/NodeToString.cpp @@ -209,7 +209,7 @@ void nodeToString( if (style.positionType() != yoga::Node{}.getStyle().positionType()) { appendFormattedString( - str, "position: %s; ", YGPositionTypeToString(style.positionType())); + str, "position: %s; ", toString(style.positionType())); } appendEdgeIfNotUndefined(str, "left", style.position(), YGEdgeLeft); diff --git a/lib/yoga/src/main/cpp/yoga/node/Node.cpp b/lib/yoga/src/main/cpp/yoga/node/Node.cpp index bf2d18e2800..d4a9546c672 100644 --- a/lib/yoga/src/main/cpp/yoga/node/Node.cpp +++ b/lib/yoga/src/main/cpp/yoga/node/Node.cpp @@ -382,7 +382,7 @@ void Node::setPosition( const FlexDirection crossAxis = yoga::resolveCrossDirection(mainAxis, directionRespectingRoot); - // Here we should check for `YGPositionTypeStatic` and in this case zero inset + // Here we should check for `PositionType::Static` and in this case zero inset // properties (left, right, top, bottom, begin, end). // https://www.w3.org/TR/css-position-3/#valdef-position-static const FloatOptional relativePositionMain = @@ -522,7 +522,7 @@ float Node::resolveFlexShrink() const { bool Node::isNodeFlexible() { return ( - (style_.positionType() != YGPositionTypeAbsolute) && + (style_.positionType() != PositionType::Absolute) && (resolveFlexGrow() != 0 || resolveFlexShrink() != 0)); } diff --git a/lib/yoga/src/main/cpp/yoga/style/Style.h b/lib/yoga/src/main/cpp/yoga/style/Style.h index 55742363f81..12b54dca336 100644 --- a/lib/yoga/src/main/cpp/yoga/style/Style.h +++ b/lib/yoga/src/main/cpp/yoga/style/Style.h @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -116,7 +117,7 @@ class YG_EXPORT Style { static constexpr uint8_t positionTypeOffset = alignSelfOffset + minimumBitCount(); static constexpr uint8_t flexWrapOffset = - positionTypeOffset + minimumBitCount(); + positionTypeOffset + minimumBitCount(); static constexpr uint8_t overflowOffset = flexWrapOffset + minimumBitCount(); static constexpr uint8_t displayOffset = @@ -185,10 +186,10 @@ class YG_EXPORT Style { return {*this, alignSelfOffset}; } - YGPositionType positionType() const { - return getEnumData(flags, positionTypeOffset); + PositionType positionType() const { + return getEnumData(flags, positionTypeOffset); } - BitfieldRef positionType() { + BitfieldRef positionType() { return {*this, positionTypeOffset}; }