Remove CSSPosition in favor of CSSEdge

Reviewed By: IanChilds

Differential Revision: D3728740

fbshipit-source-id: 19dc817a637b80d1f6df8d76982feb2e1fb2705a
This commit is contained in:
Emil Sjolander 2016-08-17 10:36:36 -07:00 committed by Facebook Github Bot 7
parent 0b1954cace
commit fa9cf22074
2 changed files with 81 additions and 92 deletions

View File

@ -64,19 +64,19 @@ void CSSNodeInit(CSSNodeRef node) {
node->style.maxDimensions[CSSDimensionWidth] = CSSUndefined;
node->style.maxDimensions[CSSDimensionHeight] = CSSUndefined;
node->style.position[CSSPositionLeft] = CSSUndefined;
node->style.position[CSSPositionTop] = CSSUndefined;
node->style.position[CSSPositionRight] = CSSUndefined;
node->style.position[CSSPositionBottom] = CSSUndefined;
node->style.position[CSSPositionStart] = CSSUndefined;
node->style.position[CSSPositionEnd] = CSSUndefined;
node->style.position[CSSEdgeLeft] = CSSUndefined;
node->style.position[CSSEdgeTop] = CSSUndefined;
node->style.position[CSSEdgeRight] = CSSUndefined;
node->style.position[CSSEdgeBottom] = CSSUndefined;
node->style.position[CSSEdgeStart] = CSSUndefined;
node->style.position[CSSEdgeEnd] = CSSUndefined;
node->style.margin[CSSPositionStart] = CSSUndefined;
node->style.margin[CSSPositionEnd] = CSSUndefined;
node->style.padding[CSSPositionStart] = CSSUndefined;
node->style.padding[CSSPositionEnd] = CSSUndefined;
node->style.border[CSSPositionStart] = CSSUndefined;
node->style.border[CSSPositionEnd] = CSSUndefined;
node->style.margin[CSSEdgeStart] = CSSUndefined;
node->style.margin[CSSEdgeEnd] = CSSUndefined;
node->style.padding[CSSEdgeStart] = CSSUndefined;
node->style.padding[CSSEdgeEnd] = CSSUndefined;
node->style.border[CSSEdgeStart] = CSSUndefined;
node->style.border[CSSEdgeEnd] = CSSUndefined;
node->layout.dimensions[CSSDimensionWidth] = CSSUndefined;
node->layout.dimensions[CSSDimensionHeight] = CSSUndefined;
@ -246,10 +246,10 @@ CSS_NODE_STYLE_PROPERTY_IMPL(float, MinHeight, minHeight, minDimensions[CSSDimen
CSS_NODE_STYLE_PROPERTY_IMPL(float, MaxWidth, maxWidth, maxDimensions[CSSDimensionWidth]);
CSS_NODE_STYLE_PROPERTY_IMPL(float, MaxHeight, maxHeight, maxDimensions[CSSDimensionHeight]);
CSS_NODE_LAYOUT_PROPERTY_IMPL(float, Left, position[CSSPositionLeft]);
CSS_NODE_LAYOUT_PROPERTY_IMPL(float, Top, position[CSSPositionTop]);
CSS_NODE_LAYOUT_PROPERTY_IMPL(float, Right, position[CSSPositionRight]);
CSS_NODE_LAYOUT_PROPERTY_IMPL(float, Bottom, position[CSSPositionBottom]);
CSS_NODE_LAYOUT_PROPERTY_IMPL(float, Left, position[CSSEdgeLeft]);
CSS_NODE_LAYOUT_PROPERTY_IMPL(float, Top, position[CSSEdgeTop]);
CSS_NODE_LAYOUT_PROPERTY_IMPL(float, Right, position[CSSEdgeRight]);
CSS_NODE_LAYOUT_PROPERTY_IMPL(float, Bottom, position[CSSEdgeBottom]);
CSS_NODE_LAYOUT_PROPERTY_IMPL(float, Width, dimensions[CSSDimensionWidth]);
CSS_NODE_LAYOUT_PROPERTY_IMPL(float, Height, dimensions[CSSDimensionHeight]);
CSS_NODE_LAYOUT_PROPERTY_IMPL(CSSDirection, Direction, direction);
@ -310,8 +310,8 @@ static void print_css_node_rec(CSSNode *node, CSSPrintOptions options, uint32_t
printf("layout: {");
printf("width: %g, ", node->layout.dimensions[CSSDimensionWidth]);
printf("height: %g, ", node->layout.dimensions[CSSDimensionHeight]);
printf("top: %g, ", node->layout.position[CSSPositionTop]);
printf("left: %g", node->layout.position[CSSPositionLeft]);
printf("top: %g, ", node->layout.position[CSSEdgeTop]);
printf("left: %g", node->layout.position[CSSEdgeLeft]);
printf("}, ");
}
@ -373,36 +373,36 @@ static void print_css_node_rec(CSSNode *node, CSSPrintOptions options, uint32_t
}
if (four_equal(node->style.margin)) {
print_number_0("margin", node->style.margin[CSSPositionLeft]);
print_number_0("margin", node->style.margin[CSSEdgeLeft]);
} else {
print_number_0("marginLeft", node->style.margin[CSSPositionLeft]);
print_number_0("marginRight", node->style.margin[CSSPositionRight]);
print_number_0("marginTop", node->style.margin[CSSPositionTop]);
print_number_0("marginBottom", node->style.margin[CSSPositionBottom]);
print_number_0("marginStart", node->style.margin[CSSPositionStart]);
print_number_0("marginEnd", node->style.margin[CSSPositionEnd]);
print_number_0("marginLeft", node->style.margin[CSSEdgeLeft]);
print_number_0("marginRight", node->style.margin[CSSEdgeRight]);
print_number_0("marginTop", node->style.margin[CSSEdgeTop]);
print_number_0("marginBottom", node->style.margin[CSSEdgeBottom]);
print_number_0("marginStart", node->style.margin[CSSEdgeStart]);
print_number_0("marginEnd", node->style.margin[CSSEdgeEnd]);
}
if (four_equal(node->style.padding)) {
print_number_0("padding", node->style.padding[CSSPositionLeft]);
print_number_0("padding", node->style.padding[CSSEdgeLeft]);
} else {
print_number_0("paddingLeft", node->style.padding[CSSPositionLeft]);
print_number_0("paddingRight", node->style.padding[CSSPositionRight]);
print_number_0("paddingTop", node->style.padding[CSSPositionTop]);
print_number_0("paddingBottom", node->style.padding[CSSPositionBottom]);
print_number_0("paddingStart", node->style.padding[CSSPositionStart]);
print_number_0("paddingEnd", node->style.padding[CSSPositionEnd]);
print_number_0("paddingLeft", node->style.padding[CSSEdgeLeft]);
print_number_0("paddingRight", node->style.padding[CSSEdgeRight]);
print_number_0("paddingTop", node->style.padding[CSSEdgeTop]);
print_number_0("paddingBottom", node->style.padding[CSSEdgeBottom]);
print_number_0("paddingStart", node->style.padding[CSSEdgeStart]);
print_number_0("paddingEnd", node->style.padding[CSSEdgeEnd]);
}
if (four_equal(node->style.border)) {
print_number_0("borderWidth", node->style.border[CSSPositionLeft]);
print_number_0("borderWidth", node->style.border[CSSEdgeLeft]);
} else {
print_number_0("borderLeftWidth", node->style.border[CSSPositionLeft]);
print_number_0("borderRightWidth", node->style.border[CSSPositionRight]);
print_number_0("borderTopWidth", node->style.border[CSSPositionTop]);
print_number_0("borderBottomWidth", node->style.border[CSSPositionBottom]);
print_number_0("borderStartWidth", node->style.border[CSSPositionStart]);
print_number_0("borderEndWidth", node->style.border[CSSPositionEnd]);
print_number_0("borderLeftWidth", node->style.border[CSSEdgeLeft]);
print_number_0("borderRightWidth", node->style.border[CSSEdgeRight]);
print_number_0("borderTopWidth", node->style.border[CSSEdgeTop]);
print_number_0("borderBottomWidth", node->style.border[CSSEdgeBottom]);
print_number_0("borderStartWidth", node->style.border[CSSEdgeStart]);
print_number_0("borderEndWidth", node->style.border[CSSEdgeEnd]);
}
print_number_nan("width", node->style.dimensions[CSSDimensionWidth]);
@ -416,10 +416,10 @@ static void print_css_node_rec(CSSNode *node, CSSPrintOptions options, uint32_t
printf("position: 'absolute', ");
}
print_number_nan("left", node->style.position[CSSPositionLeft]);
print_number_nan("right", node->style.position[CSSPositionRight]);
print_number_nan("top", node->style.position[CSSPositionTop]);
print_number_nan("bottom", node->style.position[CSSPositionBottom]);
print_number_nan("left", node->style.position[CSSEdgeLeft]);
print_number_nan("right", node->style.position[CSSEdgeRight]);
print_number_nan("top", node->style.position[CSSEdgeTop]);
print_number_nan("bottom", node->style.position[CSSEdgeBottom]);
}
uint32_t childCount = CSSNodeListCount(node->children);
@ -439,23 +439,23 @@ void CSSNodePrint(CSSNode *node, CSSPrintOptions options) {
print_css_node_rec(node, options, 0);
}
static CSSPosition leading[4] = {
[CSSFlexDirectionColumn] = CSSPositionTop,
[CSSFlexDirectionColumnReverse] = CSSPositionBottom,
[CSSFlexDirectionRow] = CSSPositionLeft,
[CSSFlexDirectionRowReverse] = CSSPositionRight,
static CSSEdge leading[4] = {
[CSSFlexDirectionColumn] = CSSEdgeTop,
[CSSFlexDirectionColumnReverse] = CSSEdgeBottom,
[CSSFlexDirectionRow] = CSSEdgeLeft,
[CSSFlexDirectionRowReverse] = CSSEdgeRight,
};
static CSSPosition trailing[4] = {
[CSSFlexDirectionColumn] = CSSPositionBottom,
[CSSFlexDirectionColumnReverse] = CSSPositionTop,
[CSSFlexDirectionRow] = CSSPositionRight,
[CSSFlexDirectionRowReverse] = CSSPositionLeft,
static CSSEdge trailing[4] = {
[CSSFlexDirectionColumn] = CSSEdgeBottom,
[CSSFlexDirectionColumnReverse] = CSSEdgeTop,
[CSSFlexDirectionRow] = CSSEdgeRight,
[CSSFlexDirectionRowReverse] = CSSEdgeLeft,
};
static CSSPosition pos[4] = {
[CSSFlexDirectionColumn] = CSSPositionTop,
[CSSFlexDirectionColumnReverse] = CSSPositionBottom,
[CSSFlexDirectionRow] = CSSPositionLeft,
[CSSFlexDirectionRowReverse] = CSSPositionRight,
static CSSEdge pos[4] = {
[CSSFlexDirectionColumn] = CSSEdgeTop,
[CSSFlexDirectionColumnReverse] = CSSEdgeBottom,
[CSSFlexDirectionRow] = CSSEdgeLeft,
[CSSFlexDirectionRowReverse] = CSSEdgeRight,
};
static CSSDimension dim[4] = {
[CSSFlexDirectionColumn] = CSSDimensionHeight,
@ -473,25 +473,25 @@ static bool isColumnDirection(CSSFlexDirection flexDirection) {
}
static float getLeadingMargin(CSSNode *node, CSSFlexDirection axis) {
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.margin[CSSPositionStart])) {
return node->style.margin[CSSPositionStart];
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.margin[CSSEdgeStart])) {
return node->style.margin[CSSEdgeStart];
}
return node->style.margin[leading[axis]];
}
static float getTrailingMargin(CSSNode *node, CSSFlexDirection axis) {
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.margin[CSSPositionEnd])) {
return node->style.margin[CSSPositionEnd];
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.margin[CSSEdgeEnd])) {
return node->style.margin[CSSEdgeEnd];
}
return node->style.margin[trailing[axis]];
}
static float getLeadingPadding(CSSNode *node, CSSFlexDirection axis) {
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.padding[CSSPositionStart]) &&
node->style.padding[CSSPositionStart] >= 0) {
return node->style.padding[CSSPositionStart];
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.padding[CSSEdgeStart]) &&
node->style.padding[CSSEdgeStart] >= 0) {
return node->style.padding[CSSEdgeStart];
}
if (node->style.padding[leading[axis]] >= 0) {
@ -502,9 +502,9 @@ static float getLeadingPadding(CSSNode *node, CSSFlexDirection axis) {
}
static float getTrailingPadding(CSSNode *node, CSSFlexDirection axis) {
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.padding[CSSPositionEnd]) &&
node->style.padding[CSSPositionEnd] >= 0) {
return node->style.padding[CSSPositionEnd];
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.padding[CSSEdgeEnd]) &&
node->style.padding[CSSEdgeEnd] >= 0) {
return node->style.padding[CSSEdgeEnd];
}
if (node->style.padding[trailing[axis]] >= 0) {
@ -515,9 +515,9 @@ static float getTrailingPadding(CSSNode *node, CSSFlexDirection axis) {
}
static float getLeadingBorder(CSSNode *node, CSSFlexDirection axis) {
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.border[CSSPositionStart]) &&
node->style.border[CSSPositionStart] >= 0) {
return node->style.border[CSSPositionStart];
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.border[CSSEdgeStart]) &&
node->style.border[CSSEdgeStart] >= 0) {
return node->style.border[CSSEdgeStart];
}
if (node->style.border[leading[axis]] >= 0) {
@ -528,9 +528,9 @@ static float getLeadingBorder(CSSNode *node, CSSFlexDirection axis) {
}
static float getTrailingBorder(CSSNode *node, CSSFlexDirection axis) {
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.border[CSSPositionEnd]) &&
node->style.border[CSSPositionEnd] >= 0) {
return node->style.border[CSSPositionEnd];
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.border[CSSEdgeEnd]) &&
node->style.border[CSSEdgeEnd] >= 0) {
return node->style.border[CSSEdgeEnd];
}
if (node->style.border[trailing[axis]] >= 0) {
@ -623,12 +623,12 @@ static bool isLayoutDimDefined(CSSNode *node, CSSFlexDirection axis) {
}
static bool isLeadingPosDefined(CSSNode *node, CSSFlexDirection axis) {
return (isRowDirection(axis) && !CSSValueIsUndefined(node->style.position[CSSPositionStart])) ||
return (isRowDirection(axis) && !CSSValueIsUndefined(node->style.position[CSSEdgeStart])) ||
!CSSValueIsUndefined(node->style.position[leading[axis]]);
}
static bool isTrailingPosDefined(CSSNode *node, CSSFlexDirection axis) {
return (isRowDirection(axis) && !CSSValueIsUndefined(node->style.position[CSSPositionEnd])) ||
return (isRowDirection(axis) && !CSSValueIsUndefined(node->style.position[CSSEdgeEnd])) ||
!CSSValueIsUndefined(node->style.position[trailing[axis]]);
}
@ -637,8 +637,8 @@ static bool isMeasureDefined(CSSNode *node) {
}
static float getLeadingPosition(CSSNode *node, CSSFlexDirection axis) {
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.position[CSSPositionStart])) {
return node->style.position[CSSPositionStart];
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.position[CSSEdgeStart])) {
return node->style.position[CSSEdgeStart];
}
if (!CSSValueIsUndefined(node->style.position[leading[axis]])) {
return node->style.position[leading[axis]];
@ -647,8 +647,8 @@ static float getLeadingPosition(CSSNode *node, CSSFlexDirection axis) {
}
static float getTrailingPosition(CSSNode *node, CSSFlexDirection axis) {
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.position[CSSPositionEnd])) {
return node->style.position[CSSPositionEnd];
if (isRowDirection(axis) && !CSSValueIsUndefined(node->style.position[CSSEdgeEnd])) {
return node->style.position[CSSEdgeEnd];
}
if (!CSSValueIsUndefined(node->style.position[trailing[axis]])) {
return node->style.position[trailing[axis]];

View File

@ -77,18 +77,6 @@ typedef enum CSSWrapType {
CSSWrapTypeWrap,
} CSSWrapType;
// Note: left and top are shared between position[2] and position[4], so
// they have to be before right and bottom.
typedef enum CSSPosition {
CSSPositionLeft,
CSSPositionTop,
CSSPositionRight,
CSSPositionBottom,
CSSPositionStart,
CSSPositionEnd,
CSSPositionCount,
} CSSPosition;
typedef enum CSSMeasureMode {
CSSMeasureModeUndefined,
CSSMeasureModeExactly,
@ -111,6 +99,7 @@ typedef enum CSSEdge {
CSSEdgeHorizontal,
CSSEdgeVertical,
CSSEdgeAll,
CSSEdgeCount,
} CSSEdge;
typedef enum CSSPrintOptions {