extract layoutNode

This commit is contained in:
Christopher Chedeau
2014-04-18 11:53:28 -07:00
parent ada35b9ba6
commit 803aabf37f

View File

@@ -1,5 +1,5 @@
function computeLayout(node) { var computeLayout = (function() {
function fillNodes(node) { function fillNodes(node) {
node.layout = { node.layout = {
@@ -143,7 +143,7 @@ function computeLayout(node) {
var CSS_ALIGN_FLEX_END = 'flex-end'; var CSS_ALIGN_FLEX_END = 'flex-end';
var CSS_ALIGN_STRETCH = 'stretch'; var CSS_ALIGN_STRETCH = 'stretch';
function layoutNode(node) { function layoutNode(node) {
var/*css_flex_direction_t*/ mainAxis = getFlexDirection(node); var/*css_flex_direction_t*/ mainAxis = getFlexDirection(node);
var/*css_flex_direction_t*/ crossAxis = mainAxis == CSS_FLEX_DIRECTION_ROW ? var/*css_flex_direction_t*/ crossAxis = mainAxis == CSS_FLEX_DIRECTION_ROW ?
CSS_FLEX_DIRECTION_COLUMN : CSS_FLEX_DIRECTION_COLUMN :
@@ -259,9 +259,19 @@ function layoutNode(node) {
getRelativePosition(node, mainAxis); getRelativePosition(node, mainAxis);
node.layout[leading[crossAxis]] += getMargin(node, leading[crossAxis]) + node.layout[leading[crossAxis]] += getMargin(node, leading[crossAxis]) +
getRelativePosition(node, crossAxis); getRelativePosition(node, crossAxis);
} }
var c_code = layoutNode.toString() var fn = function(node) {
fillNodes(node);
layoutNode(node);
return extractNodes(node);
};
fn.layoutNode = layoutNode;
return fn;
})();
var c_code = computeLayout.layoutNode.toString()
.replace(/\.children\.length/g, '.children_count') .replace(/\.children\.length/g, '.children_count')
.replace(/layout\[dim/g, 'layout.dimensions[dim') .replace(/layout\[dim/g, 'layout.dimensions[dim')
.replace(/layout\[pos/g, 'layout.position[pos') .replace(/layout\[pos/g, 'layout.position[pos')
@@ -269,12 +279,7 @@ function layoutNode(node) {
.replace(/style\[dim/g, 'style.dimensions[dim') .replace(/style\[dim/g, 'style.dimensions[dim')
.replace(/node\./g, 'node->') .replace(/node\./g, 'node->')
.replace(/child\./g, 'child->') .replace(/child\./g, 'child->')
.replace(/var\/\*([^\/]+)\*\//g, '$1'); .replace(/var\/\*([^\/]+)\*\//g, '$1')
console.log(c_code); .replace(/\n /g, '\n');
fillNodes(node); console.log(c_code);
layoutNode(node);
return extractNodes(node);
}
computeLayout({});