Refactored relativePosition private method to YGFloatOptional return type
Summary: Refactored relativePosition private method to YGFloatOptional return type Reviewed By: emilsjolander Differential Revision: D7344939 fbshipit-source-id: 72443d38426a211d3e84be814e6a61baf4d26703
This commit is contained in:
committed by
Facebook Github Bot
parent
2b714a5b5d
commit
b725a4a140
@@ -123,7 +123,7 @@ YGFloatOptional YGNode::getTrailingPosition(
|
|||||||
: YGResolveValue(*trailingPosition, axisSize);
|
: YGResolveValue(*trailingPosition, axisSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool YGNode::isLeadingPositionDefined(const YGFlexDirection axis) const {
|
bool YGNode::isLeadingPositionDefined(const YGFlexDirection& axis) const {
|
||||||
return (YGFlexDirectionIsRow(axis) &&
|
return (YGFlexDirectionIsRow(axis) &&
|
||||||
YGComputedEdgeValue(style_.position, YGEdgeStart, &YGValueUndefined)
|
YGComputedEdgeValue(style_.position, YGEdgeStart, &YGValueUndefined)
|
||||||
->unit != YGUnitUndefined) ||
|
->unit != YGUnitUndefined) ||
|
||||||
@@ -131,7 +131,7 @@ bool YGNode::isLeadingPositionDefined(const YGFlexDirection axis) const {
|
|||||||
->unit != YGUnitUndefined;
|
->unit != YGUnitUndefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool YGNode::isTrailingPosDefined(const YGFlexDirection axis) const {
|
bool YGNode::isTrailingPosDefined(const YGFlexDirection& axis) const {
|
||||||
return (YGFlexDirectionIsRow(axis) &&
|
return (YGFlexDirectionIsRow(axis) &&
|
||||||
YGComputedEdgeValue(style_.position, YGEdgeEnd, &YGValueUndefined)
|
YGComputedEdgeValue(style_.position, YGEdgeEnd, &YGValueUndefined)
|
||||||
->unit != YGUnitUndefined) ||
|
->unit != YGUnitUndefined) ||
|
||||||
@@ -340,12 +340,18 @@ void YGNode::setLayoutDimension(float dimension, int index) {
|
|||||||
|
|
||||||
// If both left and right are defined, then use left. Otherwise return
|
// If both left and right are defined, then use left. Otherwise return
|
||||||
// +left or -right depending on which is defined.
|
// +left or -right depending on which is defined.
|
||||||
float YGNode::relativePosition(
|
YGFloatOptional YGNode::relativePosition(
|
||||||
const YGFlexDirection axis,
|
const YGFlexDirection& axis,
|
||||||
const float axisSize) {
|
const float& axisSize) const {
|
||||||
return isLeadingPositionDefined(axis)
|
if (isLeadingPositionDefined(axis)) {
|
||||||
? YGUnwrapFloatOptional(getLeadingPosition(axis, axisSize))
|
return getLeadingPosition(axis, axisSize);
|
||||||
: -YGUnwrapFloatOptional(getTrailingPosition(axis, axisSize));
|
}
|
||||||
|
|
||||||
|
YGFloatOptional trailingPosition = getTrailingPosition(axis, axisSize);
|
||||||
|
if (!trailingPosition.isUndefined()) {
|
||||||
|
trailingPosition.setValue(-1 * trailingPosition.getValue());
|
||||||
|
}
|
||||||
|
return trailingPosition;
|
||||||
}
|
}
|
||||||
|
|
||||||
void YGNode::setPosition(
|
void YGNode::setPosition(
|
||||||
@@ -362,20 +368,26 @@ void YGNode::setPosition(
|
|||||||
const YGFlexDirection crossAxis =
|
const YGFlexDirection crossAxis =
|
||||||
YGFlexDirectionCross(mainAxis, directionRespectingRoot);
|
YGFlexDirectionCross(mainAxis, directionRespectingRoot);
|
||||||
|
|
||||||
const float relativePositionMain = relativePosition(mainAxis, mainSize);
|
const YGFloatOptional relativePositionMain =
|
||||||
const float relativePositionCross = relativePosition(crossAxis, crossSize);
|
relativePosition(mainAxis, mainSize);
|
||||||
|
const YGFloatOptional relativePositionCross =
|
||||||
|
relativePosition(crossAxis, crossSize);
|
||||||
|
|
||||||
setLayoutPosition(
|
setLayoutPosition(
|
||||||
getLeadingMargin(mainAxis, ownerWidth) + relativePositionMain,
|
getLeadingMargin(mainAxis, ownerWidth) +
|
||||||
|
YGUnwrapFloatOptional(relativePositionMain),
|
||||||
leading[mainAxis]);
|
leading[mainAxis]);
|
||||||
setLayoutPosition(
|
setLayoutPosition(
|
||||||
getTrailingMargin(mainAxis, ownerWidth) + relativePositionMain,
|
getTrailingMargin(mainAxis, ownerWidth) +
|
||||||
|
YGUnwrapFloatOptional(relativePositionMain),
|
||||||
trailing[mainAxis]);
|
trailing[mainAxis]);
|
||||||
setLayoutPosition(
|
setLayoutPosition(
|
||||||
getLeadingMargin(crossAxis, ownerWidth) + relativePositionCross,
|
getLeadingMargin(crossAxis, ownerWidth) +
|
||||||
|
YGUnwrapFloatOptional(relativePositionCross),
|
||||||
leading[crossAxis]);
|
leading[crossAxis]);
|
||||||
setLayoutPosition(
|
setLayoutPosition(
|
||||||
getTrailingMargin(crossAxis, ownerWidth) + relativePositionCross,
|
getTrailingMargin(crossAxis, ownerWidth) +
|
||||||
|
YGUnwrapFloatOptional(relativePositionCross),
|
||||||
trailing[crossAxis]);
|
trailing[crossAxis]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -30,7 +30,9 @@ struct YGNode {
|
|||||||
bool isDirty_;
|
bool isDirty_;
|
||||||
std::array<YGValue, 2> resolvedDimensions_;
|
std::array<YGValue, 2> resolvedDimensions_;
|
||||||
|
|
||||||
float relativePosition(const YGFlexDirection axis, const float axisSize);
|
YGFloatOptional relativePosition(
|
||||||
|
const YGFlexDirection& axis,
|
||||||
|
const float& axisSize) const;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
YGNode();
|
YGNode();
|
||||||
@@ -87,8 +89,8 @@ struct YGNode {
|
|||||||
// Methods related to positions, margin, padding and border
|
// Methods related to positions, margin, padding and border
|
||||||
YGFloatOptional getLeadingPosition(const YGFlexDirection& axis,
|
YGFloatOptional getLeadingPosition(const YGFlexDirection& axis,
|
||||||
const float& axisSize) const;
|
const float& axisSize) const;
|
||||||
bool isLeadingPositionDefined(const YGFlexDirection axis) const;
|
bool isLeadingPositionDefined(const YGFlexDirection& axis) const;
|
||||||
bool isTrailingPosDefined(const YGFlexDirection axis) const;
|
bool isTrailingPosDefined(const YGFlexDirection& axis) const;
|
||||||
YGFloatOptional getTrailingPosition(
|
YGFloatOptional getTrailingPosition(
|
||||||
const YGFlexDirection& axis,
|
const YGFlexDirection& axis,
|
||||||
const float& axisSize) const;
|
const float& axisSize) const;
|
||||||
|
Reference in New Issue
Block a user