Moved getLeadingMargin as a function on YGNode
Summary: Moved getLeadingMargin as a function on YGNode Reviewed By: emilsjolander Differential Revision: D6683270 fbshipit-source-id: a26663006419e13cb783e9849183e3c665f59b3c
This commit is contained in:
committed by
Facebook Github Bot
parent
681b580fd8
commit
a65b79a944
@@ -53,3 +53,9 @@ inline YGFlexDirection YGResolveFlexDirection(
|
|||||||
|
|
||||||
return flexDirection;
|
return flexDirection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline float YGResolveValueMargin(
|
||||||
|
const YGValue value,
|
||||||
|
const float parentSize) {
|
||||||
|
return value.unit == YGUnitAuto ? 0 : YGResolveValue(value, parentSize);
|
||||||
|
}
|
||||||
|
@@ -137,6 +137,19 @@ bool YGNode::isTrailingPosDefined(const YGFlexDirection axis) {
|
|||||||
->unit != YGUnitUndefined;
|
->unit != YGUnitUndefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float YGNode::getLeadingMargin(
|
||||||
|
const YGFlexDirection axis,
|
||||||
|
const float widthSize) {
|
||||||
|
if (YGFlexDirectionIsRow(axis) &&
|
||||||
|
style_.margin[YGEdgeStart].unit != YGUnitUndefined) {
|
||||||
|
return YGResolveValueMargin(style_.margin[YGEdgeStart], widthSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
return YGResolveValueMargin(
|
||||||
|
*YGComputedEdgeValue(style_.margin, leading[axis], &YGValueZero),
|
||||||
|
widthSize);
|
||||||
|
}
|
||||||
|
|
||||||
// Setters
|
// Setters
|
||||||
|
|
||||||
void YGNode::setContext(void* context) {
|
void YGNode::setContext(void* context) {
|
||||||
|
@@ -76,10 +76,12 @@ struct YGNode {
|
|||||||
bool isDirty() const;
|
bool isDirty() const;
|
||||||
std::array<YGValue, 2> getResolvedDimensions() const;
|
std::array<YGValue, 2> getResolvedDimensions() const;
|
||||||
YGValue getResolvedDimension(int index);
|
YGValue getResolvedDimension(int index);
|
||||||
|
|
||||||
float getLeadingPosition(const YGFlexDirection axis, const float axisSize);
|
float getLeadingPosition(const YGFlexDirection axis, const float axisSize);
|
||||||
bool isLeadingPositionDefined(const YGFlexDirection axis);
|
bool isLeadingPositionDefined(const YGFlexDirection axis);
|
||||||
bool isTrailingPosDefined(const YGFlexDirection axis);
|
bool isTrailingPosDefined(const YGFlexDirection axis);
|
||||||
float getTrailingPosition(const YGFlexDirection axis, const float axisSize);
|
float getTrailingPosition(const YGFlexDirection axis, const float axisSize);
|
||||||
|
float getLeadingMargin(const YGFlexDirection axis, const float widthSize);
|
||||||
|
|
||||||
// Setters
|
// Setters
|
||||||
|
|
||||||
|
@@ -151,12 +151,6 @@ const YGValue* YGComputedEdgeValue(
|
|||||||
return defaultValue;
|
return defaultValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline float YGResolveValueMargin(
|
|
||||||
const YGValue value,
|
|
||||||
const float parentSize) {
|
|
||||||
return value.unit == YGUnitAuto ? 0 : YGResolveValue(value, parentSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
void* YGNodeGetContext(YGNodeRef node) {
|
void* YGNodeGetContext(YGNodeRef node) {
|
||||||
return node->getContext();
|
return node->getContext();
|
||||||
}
|
}
|
||||||
@@ -764,24 +758,10 @@ static const std::array<YGEdge, 4> pos = {{
|
|||||||
YGEdgeLeft,
|
YGEdgeLeft,
|
||||||
YGEdgeRight,
|
YGEdgeRight,
|
||||||
}};
|
}};
|
||||||
|
|
||||||
static const std::array<YGDimension, 4> dim = {
|
static const std::array<YGDimension, 4> dim = {
|
||||||
{YGDimensionHeight, YGDimensionHeight, YGDimensionWidth, YGDimensionWidth}};
|
{YGDimensionHeight, YGDimensionHeight, YGDimensionWidth, YGDimensionWidth}};
|
||||||
|
|
||||||
static inline float YGNodeLeadingMargin(const YGNodeRef node,
|
|
||||||
const YGFlexDirection axis,
|
|
||||||
const float widthSize) {
|
|
||||||
if (YGFlexDirectionIsRow(axis) &&
|
|
||||||
node->getStyle().margin[YGEdgeStart].unit != YGUnitUndefined) {
|
|
||||||
return YGResolveValueMargin(
|
|
||||||
node->getStyle().margin[YGEdgeStart], widthSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
return YGResolveValueMargin(
|
|
||||||
*YGComputedEdgeValue(
|
|
||||||
node->getStyle().margin, leading[axis], &YGValueZero),
|
|
||||||
widthSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
static float YGNodeTrailingMargin(const YGNodeRef node,
|
static float YGNodeTrailingMargin(const YGNodeRef node,
|
||||||
const YGFlexDirection axis,
|
const YGFlexDirection axis,
|
||||||
const float widthSize) {
|
const float widthSize) {
|
||||||
@@ -878,7 +858,8 @@ static inline float YGNodeTrailingPaddingAndBorder(const YGNodeRef node,
|
|||||||
static inline float YGNodeMarginForAxis(const YGNodeRef node,
|
static inline float YGNodeMarginForAxis(const YGNodeRef node,
|
||||||
const YGFlexDirection axis,
|
const YGFlexDirection axis,
|
||||||
const float widthSize) {
|
const float widthSize) {
|
||||||
return YGNodeLeadingMargin(node, axis, widthSize) + YGNodeTrailingMargin(node, axis, widthSize);
|
return node->getLeadingMargin(axis, widthSize) +
|
||||||
|
YGNodeTrailingMargin(node, axis, widthSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline float YGNodePaddingAndBorderForAxis(const YGNodeRef node,
|
static inline float YGNodePaddingAndBorderForAxis(const YGNodeRef node,
|
||||||
@@ -977,7 +958,7 @@ static inline float YGNodeDimWithMargin(const YGNodeRef node,
|
|||||||
const YGFlexDirection axis,
|
const YGFlexDirection axis,
|
||||||
const float widthSize) {
|
const float widthSize) {
|
||||||
return node->getLayout().measuredDimensions[dim[axis]] +
|
return node->getLayout().measuredDimensions[dim[axis]] +
|
||||||
YGNodeLeadingMargin(node, axis, widthSize) +
|
node->getLeadingMargin(axis, widthSize) +
|
||||||
YGNodeTrailingMargin(node, axis, widthSize);
|
YGNodeTrailingMargin(node, axis, widthSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1103,13 +1084,13 @@ static void YGNodeSetPosition(const YGNodeRef node,
|
|||||||
const float relativePositionCross = YGNodeRelativePosition(node, crossAxis, crossSize);
|
const float relativePositionCross = YGNodeRelativePosition(node, crossAxis, crossSize);
|
||||||
|
|
||||||
node->setLayoutPosition(
|
node->setLayoutPosition(
|
||||||
YGNodeLeadingMargin(node, mainAxis, parentWidth) + relativePositionMain,
|
node->getLeadingMargin(mainAxis, parentWidth) + relativePositionMain,
|
||||||
leading[mainAxis]);
|
leading[mainAxis]);
|
||||||
node->setLayoutPosition(
|
node->setLayoutPosition(
|
||||||
YGNodeTrailingMargin(node, mainAxis, parentWidth) + relativePositionMain,
|
YGNodeTrailingMargin(node, mainAxis, parentWidth) + relativePositionMain,
|
||||||
trailing[mainAxis]);
|
trailing[mainAxis]);
|
||||||
node->setLayoutPosition(
|
node->setLayoutPosition(
|
||||||
YGNodeLeadingMargin(node, crossAxis, parentWidth) + relativePositionCross,
|
node->getLeadingMargin(crossAxis, parentWidth) + relativePositionCross,
|
||||||
leading[crossAxis]);
|
leading[crossAxis]);
|
||||||
node->setLayoutPosition(
|
node->setLayoutPosition(
|
||||||
YGNodeTrailingMargin(node, crossAxis, parentWidth) +
|
YGNodeTrailingMargin(node, crossAxis, parentWidth) +
|
||||||
@@ -1746,11 +1727,11 @@ static void YGNodelayoutImpl(const YGNodeRef node,
|
|||||||
YGResolveFlexDirection(YGFlexDirectionColumn, direction);
|
YGResolveFlexDirection(YGFlexDirectionColumn, direction);
|
||||||
|
|
||||||
node->setLayoutMargin(
|
node->setLayoutMargin(
|
||||||
YGNodeLeadingMargin(node, flexRowDirection, parentWidth), YGEdgeStart);
|
node->getLeadingMargin(flexRowDirection, parentWidth), YGEdgeStart);
|
||||||
node->setLayoutMargin(
|
node->setLayoutMargin(
|
||||||
YGNodeTrailingMargin(node, flexRowDirection, parentWidth), YGEdgeEnd);
|
YGNodeTrailingMargin(node, flexRowDirection, parentWidth), YGEdgeEnd);
|
||||||
node->setLayoutMargin(
|
node->setLayoutMargin(
|
||||||
YGNodeLeadingMargin(node, flexColumnDirection, parentWidth), YGEdgeTop);
|
node->getLeadingMargin(flexColumnDirection, parentWidth), YGEdgeTop);
|
||||||
node->setLayoutMargin(
|
node->setLayoutMargin(
|
||||||
YGNodeTrailingMargin(node, flexColumnDirection, parentWidth),
|
YGNodeTrailingMargin(node, flexColumnDirection, parentWidth),
|
||||||
YGEdgeBottom);
|
YGEdgeBottom);
|
||||||
@@ -2478,7 +2459,7 @@ static void YGNodelayoutImpl(const YGNodeRef node,
|
|||||||
child->setLayoutPosition(
|
child->setLayoutPosition(
|
||||||
child->getLeadingPosition(mainAxis, availableInnerMainDim) +
|
child->getLeadingPosition(mainAxis, availableInnerMainDim) +
|
||||||
YGNodeLeadingBorder(node, mainAxis) +
|
YGNodeLeadingBorder(node, mainAxis) +
|
||||||
YGNodeLeadingMargin(child, mainAxis, availableInnerWidth),
|
child->getLeadingMargin(mainAxis, availableInnerWidth),
|
||||||
pos[mainAxis]);
|
pos[mainAxis]);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -2571,7 +2552,7 @@ static void YGNodelayoutImpl(const YGNodeRef node,
|
|||||||
child->setLayoutPosition(
|
child->setLayoutPosition(
|
||||||
child->getLeadingPosition(crossAxis, availableInnerCrossDim) +
|
child->getLeadingPosition(crossAxis, availableInnerCrossDim) +
|
||||||
YGNodeLeadingBorder(node, crossAxis) +
|
YGNodeLeadingBorder(node, crossAxis) +
|
||||||
YGNodeLeadingMargin(child, crossAxis, availableInnerWidth),
|
child->getLeadingMargin(crossAxis, availableInnerWidth),
|
||||||
pos[crossAxis]);
|
pos[crossAxis]);
|
||||||
}
|
}
|
||||||
// If leading position is not defined or calculations result in Nan, default to border + margin
|
// If leading position is not defined or calculations result in Nan, default to border + margin
|
||||||
@@ -2579,7 +2560,7 @@ static void YGNodelayoutImpl(const YGNodeRef node,
|
|||||||
YGFloatIsUndefined(child->getLayout().position[pos[crossAxis]])) {
|
YGFloatIsUndefined(child->getLayout().position[pos[crossAxis]])) {
|
||||||
child->setLayoutPosition(
|
child->setLayoutPosition(
|
||||||
YGNodeLeadingBorder(node, crossAxis) +
|
YGNodeLeadingBorder(node, crossAxis) +
|
||||||
YGNodeLeadingMargin(child, crossAxis, availableInnerWidth),
|
child->getLeadingMargin(crossAxis, availableInnerWidth),
|
||||||
pos[crossAxis]);
|
pos[crossAxis]);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -2751,9 +2732,9 @@ static void YGNodelayoutImpl(const YGNodeRef node,
|
|||||||
YGNodeMarginForAxis(child, crossAxis, availableInnerWidth));
|
YGNodeMarginForAxis(child, crossAxis, availableInnerWidth));
|
||||||
}
|
}
|
||||||
if (YGNodeAlignItem(node, child) == YGAlignBaseline) {
|
if (YGNodeAlignItem(node, child) == YGAlignBaseline) {
|
||||||
const float ascent =
|
const float ascent = YGBaseline(child) +
|
||||||
YGBaseline(child) +
|
child->getLeadingMargin(
|
||||||
YGNodeLeadingMargin(child, YGFlexDirectionColumn, availableInnerWidth);
|
YGFlexDirectionColumn, availableInnerWidth);
|
||||||
const float descent =
|
const float descent =
|
||||||
child->getLayout().measuredDimensions[YGDimensionHeight] +
|
child->getLayout().measuredDimensions[YGDimensionHeight] +
|
||||||
YGNodeMarginForAxis(
|
YGNodeMarginForAxis(
|
||||||
@@ -2779,8 +2760,7 @@ static void YGNodelayoutImpl(const YGNodeRef node,
|
|||||||
case YGAlignFlexStart: {
|
case YGAlignFlexStart: {
|
||||||
child->setLayoutPosition(
|
child->setLayoutPosition(
|
||||||
currentLead +
|
currentLead +
|
||||||
YGNodeLeadingMargin(
|
child->getLeadingMargin(crossAxis, availableInnerWidth),
|
||||||
child, crossAxis, availableInnerWidth),
|
|
||||||
pos[crossAxis]);
|
pos[crossAxis]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -2805,8 +2785,7 @@ static void YGNodelayoutImpl(const YGNodeRef node,
|
|||||||
case YGAlignStretch: {
|
case YGAlignStretch: {
|
||||||
child->setLayoutPosition(
|
child->setLayoutPosition(
|
||||||
currentLead +
|
currentLead +
|
||||||
YGNodeLeadingMargin(
|
child->getLeadingMargin(crossAxis, availableInnerWidth),
|
||||||
child, crossAxis, availableInnerWidth),
|
|
||||||
pos[crossAxis]);
|
pos[crossAxis]);
|
||||||
|
|
||||||
// Remeasure child with the line height as it as been only measured with the
|
// Remeasure child with the line height as it as been only measured with the
|
||||||
|
Reference in New Issue
Block a user