Extract isBaselineLayout() (#1375)
Summary: Pull Request resolved: https://github.com/facebook/yoga/pull/1375 X-link: https://github.com/facebook/react-native/pull/39400 Moves `isBaselineLayout` out of `CalculateLayout` into `Baseline.h`. This function is called by flex line justification code, which I have been looking at extracting. Reviewed By: yungsters Differential Revision: D49177937 fbshipit-source-id: 02c13aa0b02b26cb60ef197473b90e06d53d5f8d
This commit is contained in:
committed by
Facebook GitHub Bot
parent
62ba8ebb3d
commit
700be8c8ad
@@ -62,4 +62,23 @@ float calculateBaseline(const yoga::Node* node, void* layoutContext) {
|
|||||||
return baseline + baselineChild->getLayout().position[YGEdgeTop];
|
return baseline + baselineChild->getLayout().position[YGEdgeTop];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isBaselineLayout(const yoga::Node* node) {
|
||||||
|
if (isColumn(node->getStyle().flexDirection())) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (node->getStyle().alignItems() == YGAlignBaseline) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
const auto childCount = node->getChildCount();
|
||||||
|
for (size_t i = 0; i < childCount; i++) {
|
||||||
|
auto child = node->getChild(i);
|
||||||
|
if (child->getStyle().positionType() != YGPositionTypeAbsolute &&
|
||||||
|
child->getStyle().alignSelf() == YGAlignBaseline) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace facebook::yoga
|
} // namespace facebook::yoga
|
||||||
|
@@ -15,4 +15,7 @@ namespace facebook::yoga {
|
|||||||
// Calculate baseline represented as an offset from the top edge of the node.
|
// Calculate baseline represented as an offset from the top edge of the node.
|
||||||
float calculateBaseline(const yoga::Node* node, void* layoutContext);
|
float calculateBaseline(const yoga::Node* node, void* layoutContext);
|
||||||
|
|
||||||
|
// Whether any of the children of this node participate in baseline alignment
|
||||||
|
bool isBaselineLayout(const yoga::Node* node);
|
||||||
|
|
||||||
} // namespace facebook::yoga
|
} // namespace facebook::yoga
|
||||||
|
@@ -50,25 +50,6 @@ bool calculateLayoutInternal(
|
|||||||
const uint32_t depth,
|
const uint32_t depth,
|
||||||
const uint32_t generationCount);
|
const uint32_t generationCount);
|
||||||
|
|
||||||
static bool isBaselineLayout(const yoga::Node* node) {
|
|
||||||
if (isColumn(node->getStyle().flexDirection())) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (node->getStyle().alignItems() == YGAlignBaseline) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
const auto childCount = node->getChildCount();
|
|
||||||
for (size_t i = 0; i < childCount; i++) {
|
|
||||||
auto child = node->getChild(i);
|
|
||||||
if (child->getStyle().positionType() != YGPositionTypeAbsolute &&
|
|
||||||
child->getStyle().alignSelf() == YGAlignBaseline) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline float dimensionWithMargin(
|
static inline float dimensionWithMargin(
|
||||||
const yoga::Node* const node,
|
const yoga::Node* const node,
|
||||||
const YGFlexDirection axis,
|
const YGFlexDirection axis,
|
||||||
|
Reference in New Issue
Block a user