isDimDefined helper

This commit is contained in:
Christopher Chedeau
2014-04-18 10:11:37 -07:00
parent f55bece86e
commit e3430169c0
2 changed files with 13 additions and 5 deletions

View File

@@ -276,6 +276,10 @@ float getDimWithMargin(css_node_t *node, css_flex_direction_t axis) {
getMargin(node, trailing[axis]); getMargin(node, trailing[axis]);
} }
bool isDimDefined(css_node_t *node, css_flex_direction_t axis) {
return !isUndefined(node->style.dimensions[dim[axis]]);
}
float getPosition(css_node_t *node, css_position_t pos) { float getPosition(css_node_t *node, css_position_t pos) {
float result = node->style.position[pos]; float result = node->style.position[pos];
if (!isUndefined(result)) { if (!isUndefined(result)) {
@@ -294,19 +298,18 @@ float getRelativePosition(css_node_t *node, css_flex_direction_t axis) {
return getPosition(node, trailing[axis]); return getPosition(node, trailing[axis]);
} }
void layoutNode(css_node_t *node) { void layoutNode(css_node_t *node) {
css_flex_direction_t mainAxis = getFlexDirection(node); css_flex_direction_t mainAxis = getFlexDirection(node);
css_flex_direction_t crossAxis = mainAxis == CSS_FLEX_DIRECTION_ROW ? css_flex_direction_t crossAxis = mainAxis == CSS_FLEX_DIRECTION_ROW ?
CSS_FLEX_DIRECTION_COLUMN : CSS_FLEX_DIRECTION_COLUMN :
CSS_FLEX_DIRECTION_ROW; CSS_FLEX_DIRECTION_ROW;
bool mainDimInStyle = !isUndefined(node->style.dimensions[dim[mainAxis]]); bool mainDimInStyle = isDimDefined(node, mainAxis);
if (isUndefined(node->layout.dimensions[dim[mainAxis]]) && mainDimInStyle) { if (isUndefined(node->layout.dimensions[dim[mainAxis]]) && mainDimInStyle) {
node->layout.dimensions[dim[mainAxis]] = node->style.dimensions[dim[mainAxis]]; node->layout.dimensions[dim[mainAxis]] = node->style.dimensions[dim[mainAxis]];
} }
bool crossDimInStyle = !isUndefined(node->style.dimensions[dim[crossAxis]]); bool crossDimInStyle = isDimDefined(node, crossAxis);
if (isUndefined(node->layout.dimensions[dim[crossAxis]]) && crossDimInStyle) { if (isUndefined(node->layout.dimensions[dim[crossAxis]]) && crossDimInStyle) {
node->layout.dimensions[dim[crossAxis]] = node->style.dimensions[dim[crossAxis]]; node->layout.dimensions[dim[crossAxis]] = node->style.dimensions[dim[crossAxis]];
} }

View File

@@ -88,6 +88,11 @@ function computeLayout(node) {
getMargin(node, trailing[axis]); getMargin(node, trailing[axis]);
} }
function isDimDefined(node, axis) {
return !isUndefined(node.style[dim[axis]]);
}
function getPosition(node, pos) { function getPosition(node, pos) {
if (pos in node.style) { if (pos in node.style) {
return node.style[pos]; return node.style[pos];
@@ -141,12 +146,12 @@ function computeLayout(node) {
CSS_FLEX_DIRECTION_COLUMN : CSS_FLEX_DIRECTION_COLUMN :
CSS_FLEX_DIRECTION_ROW; CSS_FLEX_DIRECTION_ROW;
var mainDimInStyle = dim[mainAxis] in node.style; var mainDimInStyle = isDimDefined(node, mainAxis);
if (isUndefined(node.layout[dim[mainAxis]]) && mainDimInStyle) { if (isUndefined(node.layout[dim[mainAxis]]) && mainDimInStyle) {
node.layout[dim[mainAxis]] = node.style[dim[mainAxis]]; node.layout[dim[mainAxis]] = node.style[dim[mainAxis]];
} }
var crossDimInStyle = dim[crossAxis] in node.style; var crossDimInStyle = isDimDefined(node, crossAxis);
if (isUndefined(node.layout[dim[crossAxis]]) && crossDimInStyle) { if (isUndefined(node.layout[dim[crossAxis]]) && crossDimInStyle) {
node.layout[dim[crossAxis]] = node.style[dim[crossAxis]]; node.layout[dim[crossAxis]] = node.style[dim[crossAxis]];
} }