diff --git a/tests/YGStyleAccessorsTest.cpp b/tests/YGStyleAccessorsTest.cpp index 074db22e63..bf48ee3131 100644 --- a/tests/YGStyleAccessorsTest.cpp +++ b/tests/YGStyleAccessorsTest.cpp @@ -131,10 +131,9 @@ ACCESSOR_TEST( ACCESSOR_TEST( positionType, - YGPositionTypeStatic, - YGPositionTypeAbsolute, - YGPositionTypeRelative, - YGPositionTypeStatic) + PositionType::Static, + PositionType::Absolute, + PositionType::Relative) ACCESSOR_TEST( flexWrap, diff --git a/yoga/Yoga.cpp b/yoga/Yoga.cpp index c78e39ead5..cb4d96c28e 100644 --- a/yoga/Yoga.cpp +++ b/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/yoga/algorithm/Baseline.cpp b/yoga/algorithm/Baseline.cpp index 3b43204e08..e6ef7051c9 100644 --- a/yoga/algorithm/Baseline.cpp +++ b/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/yoga/algorithm/CalculateLayout.cpp b/yoga/algorithm/CalculateLayout.cpp index 565ad3b394..c997679e1f 100644 --- a/yoga/algorithm/CalculateLayout.cpp +++ b/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/yoga/algorithm/FlexLine.cpp b/yoga/algorithm/FlexLine.cpp index db7279a99a..2a5220c6bb 100644 --- a/yoga/algorithm/FlexLine.cpp +++ b/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/yoga/debug/NodeToString.cpp b/yoga/debug/NodeToString.cpp index 302685b3cc..f7f6cb11e4 100644 --- a/yoga/debug/NodeToString.cpp +++ b/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/yoga/node/Node.cpp b/yoga/node/Node.cpp index bf2d18e280..d4a9546c67 100644 --- a/yoga/node/Node.cpp +++ b/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/yoga/style/Style.h b/yoga/style/Style.h index 55742363f8..12b54dca33 100644 --- a/yoga/style/Style.h +++ b/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}; }