better print utils

This commit is contained in:
Christopher Chedeau
2014-06-11 21:00:57 -07:00
parent d2ce2420f4
commit 9a45599b84
5 changed files with 187 additions and 139 deletions

View File

@@ -86,11 +86,17 @@ static void print_css_node_rec(
indent(level); indent(level);
printf("{"); printf("{");
if (node->print) {
node->print(node->context);
}
if (options & CSS_PRINT_LAYOUT) { if (options & CSS_PRINT_LAYOUT) {
printf("layout: {");
printf("width: %g, ", node->layout.dimensions[CSS_WIDTH]); printf("width: %g, ", node->layout.dimensions[CSS_WIDTH]);
printf("height: %g, ", node->layout.dimensions[CSS_HEIGHT]); printf("height: %g, ", node->layout.dimensions[CSS_HEIGHT]);
printf("top: %g, ", node->layout.position[CSS_TOP]); printf("top: %g, ", node->layout.position[CSS_TOP]);
printf("left: %g, ", node->layout.position[CSS_LEFT]); printf("left: %g", node->layout.position[CSS_LEFT]);
printf("}, ");
} }
if (options & CSS_PRINT_STYLE) { if (options & CSS_PRINT_STYLE) {
@@ -160,6 +166,10 @@ static void print_css_node_rec(
print_number_nan("width", node->style.dimensions[CSS_WIDTH]); print_number_nan("width", node->style.dimensions[CSS_WIDTH]);
print_number_nan("height", node->style.dimensions[CSS_HEIGHT]); print_number_nan("height", node->style.dimensions[CSS_HEIGHT]);
if (node->style.position_type == CSS_POSITION_ABSOLUTE) {
printf("position: 'absolute', ");
}
print_number_nan("left", node->style.position[CSS_LEFT]); print_number_nan("left", node->style.position[CSS_LEFT]);
print_number_nan("right", node->style.position[CSS_RIGHT]); print_number_nan("right", node->style.position[CSS_RIGHT]);
print_number_nan("top", node->style.position[CSS_TOP]); print_number_nan("top", node->style.position[CSS_TOP]);
@@ -278,7 +288,7 @@ static bool isPosDefined(css_node_t *node, css_position_t position) {
} }
static bool isMeasureDefined(css_node_t *node) { static bool isMeasureDefined(css_node_t *node) {
return node->style.measure; return node->measure;
} }
static float getPosition(css_node_t *node, css_position_t position) { static float getPosition(css_node_t *node, css_position_t position) {
@@ -356,8 +366,8 @@ void layoutNode(css_node_t *node, float parentMaxWidth) {
// Let's not measure the text if we already know both dimensions // Let's not measure the text if we already know both dimensions
if (isRowUndefined || isColumnUndefined) { if (isRowUndefined || isColumnUndefined) {
css_dim_t measure_dim = node->style.measure( css_dim_t measure_dim = node->measure(
node->style.measure_context, node->context,
width width
); );
if (isRowUndefined) { if (isRowUndefined) {

View File

@@ -82,9 +82,6 @@ typedef struct {
float padding[4]; float padding[4];
float border[4]; float border[4];
float dimensions[2]; float dimensions[2];
css_dim_t (*measure)(void *context, float width);
void *measure_context;
} css_style_t; } css_style_t;
typedef struct css_node { typedef struct css_node {
@@ -92,6 +89,10 @@ typedef struct css_node {
css_layout_t layout; css_layout_t layout;
struct css_node *children; struct css_node *children;
int children_count; int children_count;
css_dim_t (*measure)(void *context, float width);
void (*print)(void *context);
void *context;
} css_node_t; } css_node_t;

View File

@@ -234,7 +234,7 @@ var computeLayout = (function() {
// Let's not measure the text if we already know both dimensions // Let's not measure the text if we already know both dimensions
if (isRowUndefined || isColumnUndefined) { if (isRowUndefined || isColumnUndefined) {
var/*css_dim_t*/ measure_dim = node.style.measure( var/*css_dim_t*/ measure_dim = node.style.measure(
/*!node->style.measure_context,*/ /*!node->context,*/
width width
); );
if (isRowUndefined) { if (isRowUndefined) {

View File

@@ -1,7 +1,8 @@
#include "../Layout.h" #include "../Layout.h"
#include "../Layout-test-utils.h" #include "../Layout-test-utils.h"
// @generated by transpile.html
int main() int main()
{ {
{ {
@@ -2463,8 +2464,8 @@ int main()
css_node_t *root_node = new_css_node(); css_node_t *root_node = new_css_node();
{ {
css_node_t *node_0 = root_node; css_node_t *node_0 = root_node;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -2484,8 +2485,8 @@ int main()
{ {
css_node_t *node_0 = root_node; css_node_t *node_0 = root_node;
node_0->style.dimensions[CSS_WIDTH] = 10; node_0->style.dimensions[CSS_WIDTH] = 10;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -2512,8 +2513,8 @@ int main()
node_0->style.padding[CSS_TOP] = 5; node_0->style.padding[CSS_TOP] = 5;
node_0->style.padding[CSS_RIGHT] = 5; node_0->style.padding[CSS_RIGHT] = 5;
node_0->style.padding[CSS_BOTTOM] = 5; node_0->style.padding[CSS_BOTTOM] = 5;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -2592,8 +2593,8 @@ int main()
css_node_t *node_2; css_node_t *node_2;
node_2 = &node_1->children[0]; node_2 = &node_1->children[0];
node_2->style.flex = CSS_FLEX_ONE; node_2->style.flex = CSS_FLEX_ONE;
node_2->style.measure = measure; node_2->measure = measure;
node_2->style.measure_context = "loooooooooong with space"; node_2->context = "loooooooooong with space";
} }
} }
} }
@@ -2643,8 +2644,8 @@ int main()
{ {
css_node_t *node_2; css_node_t *node_2;
node_2 = &node_1->children[0]; node_2 = &node_1->children[0];
node_2->style.measure = measure; node_2->measure = measure;
node_2->style.measure_context = "loooooooooong with space"; node_2->context = "loooooooooong with space";
} }
} }
} }
@@ -2695,8 +2696,8 @@ int main()
css_node_t *node_2; css_node_t *node_2;
node_2 = &node_1->children[0]; node_2 = &node_1->children[0];
node_2->style.dimensions[CSS_WIDTH] = 130; node_2->style.dimensions[CSS_WIDTH] = 130;
node_2->style.measure = measure; node_2->measure = measure;
node_2->style.measure_context = "loooooooooong with space"; node_2->context = "loooooooooong with space";
} }
} }
} }
@@ -2740,8 +2741,8 @@ int main()
{ {
css_node_t *node_1; css_node_t *node_1;
node_1 = &node_0->children[0]; node_1 = &node_0->children[0];
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "loooooooooong with space"; node_1->context = "loooooooooong with space";
} }
} }
@@ -2787,8 +2788,8 @@ int main()
{ {
css_node_t *node_2; css_node_t *node_2;
node_2 = &node_1->children[0]; node_2 = &node_1->children[0];
node_2->style.measure = measure; node_2->measure = measure;
node_2->style.measure_context = "loooooooooong with space"; node_2->context = "loooooooooong with space";
} }
} }
} }
@@ -2918,8 +2919,8 @@ int main()
node_2->style.margin[CSS_TOP] = 20; node_2->style.margin[CSS_TOP] = 20;
node_2->style.margin[CSS_RIGHT] = 20; node_2->style.margin[CSS_RIGHT] = 20;
node_2->style.margin[CSS_BOTTOM] = 20; node_2->style.margin[CSS_BOTTOM] = 20;
node_2->style.measure = measure; node_2->measure = measure;
node_2->style.measure_context = "loooooooooong with space"; node_2->context = "loooooooooong with space";
} }
} }
} }
@@ -2971,8 +2972,8 @@ int main()
node_2->style.margin[CSS_TOP] = 20; node_2->style.margin[CSS_TOP] = 20;
node_2->style.margin[CSS_RIGHT] = 20; node_2->style.margin[CSS_RIGHT] = 20;
node_2->style.margin[CSS_BOTTOM] = 20; node_2->style.margin[CSS_BOTTOM] = 20;
node_2->style.measure = measure; node_2->measure = measure;
node_2->style.measure_context = "loooooooooong with space"; node_2->context = "loooooooooong with space";
} }
} }
} }
@@ -3017,8 +3018,8 @@ int main()
node_0->style.padding[CSS_TOP] = 7; node_0->style.padding[CSS_TOP] = 7;
node_0->style.padding[CSS_RIGHT] = 7; node_0->style.padding[CSS_RIGHT] = 7;
node_0->style.padding[CSS_BOTTOM] = 7; node_0->style.padding[CSS_BOTTOM] = 7;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -3033,6 +3034,41 @@ int main()
test("should layout text with alignItems: stretch", root_node, root_layout); test("should layout text with alignItems: stretch", root_node, root_layout);
} }
{
css_node_t *root_node = new_css_node();
{
css_node_t *node_0 = root_node;
init_css_node_children(node_0, 1);
{
css_node_t *node_1;
node_1 = &node_0->children[0];
node_1->style.position_type = CSS_POSITION_ABSOLUTE;
node_1->measure = measure;
node_1->context = "loooooooooong with space";
}
}
css_node_t *root_layout = new_css_node();
{
css_node_t *node_0 = root_layout;
node_0->layout.position[CSS_TOP] = 0;
node_0->layout.position[CSS_LEFT] = 0;
node_0->layout.dimensions[CSS_WIDTH] = 0;
node_0->layout.dimensions[CSS_HEIGHT] = 0;
init_css_node_children(node_0, 1);
{
css_node_t *node_1;
node_1 = &node_0->children[0];
node_1->layout.position[CSS_TOP] = 0;
node_1->layout.position[CSS_LEFT] = 0;
node_1->layout.dimensions[CSS_WIDTH] = 100;
node_1->layout.dimensions[CSS_HEIGHT] = 36;
}
}
test("should layout node with text and position absolute", root_node, root_layout);
}
{ {
css_node_t *root_node = new_css_node(); css_node_t *root_node = new_css_node();
{ {
@@ -3064,8 +3100,8 @@ int main()
node_0->style.border[CSS_BOTTOM] = 2; node_0->style.border[CSS_BOTTOM] = 2;
node_0->style.border[CSS_LEFT] = 2; node_0->style.border[CSS_LEFT] = 2;
node_0->style.position[CSS_TOP] = 6; node_0->style.position[CSS_TOP] = 6;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -3112,8 +3148,8 @@ int main()
node_0->style.padding[CSS_RIGHT] = 13; node_0->style.padding[CSS_RIGHT] = 13;
node_0->style.border[CSS_TOP] = 3; node_0->style.border[CSS_TOP] = 3;
node_0->style.border[CSS_BOTTOM] = 1; node_0->style.border[CSS_BOTTOM] = 1;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -3186,8 +3222,8 @@ int main()
node_1->style.border[CSS_BOTTOM] = 0; node_1->style.border[CSS_BOTTOM] = 0;
node_1->style.position[CSS_LEFT] = -10; node_1->style.position[CSS_LEFT] = -10;
node_1->style.position[CSS_TOP] = 8; node_1->style.position[CSS_TOP] = 8;
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "small"; node_1->context = "small";
node_1 = &node_0->children[1]; node_1 = &node_0->children[1];
node_1->style.flex_direction = CSS_FLEX_DIRECTION_COLUMN; node_1->style.flex_direction = CSS_FLEX_DIRECTION_COLUMN;
node_1->style.justify_content = CSS_JUSTIFY_SPACE_BETWEEN; node_1->style.justify_content = CSS_JUSTIFY_SPACE_BETWEEN;
@@ -3249,8 +3285,8 @@ int main()
node_0->style.border[CSS_LEFT] = 2; node_0->style.border[CSS_LEFT] = 2;
node_0->style.border[CSS_RIGHT] = 2; node_0->style.border[CSS_RIGHT] = 2;
node_0->style.position[CSS_TOP] = -1; node_0->style.position[CSS_TOP] = -1;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -3316,8 +3352,8 @@ int main()
node_0->style.padding[CSS_RIGHT] = 17; node_0->style.padding[CSS_RIGHT] = 17;
node_0->style.padding[CSS_BOTTOM] = 16; node_0->style.padding[CSS_BOTTOM] = 16;
node_0->style.position[CSS_TOP] = 0; node_0->style.position[CSS_TOP] = 0;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -3398,8 +3434,8 @@ int main()
node_0->style.border[CSS_TOP] = 3; node_0->style.border[CSS_TOP] = 3;
node_0->style.position[CSS_LEFT] = -8; node_0->style.position[CSS_LEFT] = -8;
node_0->style.position[CSS_TOP] = 0; node_0->style.position[CSS_TOP] = 0;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -3428,8 +3464,8 @@ int main()
node_0->style.margin[CSS_TOP] = 12; node_0->style.margin[CSS_TOP] = 12;
node_0->style.border[CSS_TOP] = 1; node_0->style.border[CSS_TOP] = 1;
node_0->style.position[CSS_LEFT] = 8; node_0->style.position[CSS_LEFT] = 8;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -3471,8 +3507,8 @@ int main()
node_0->style.margin[CSS_TOP] = 8; node_0->style.margin[CSS_TOP] = 8;
node_0->style.margin[CSS_RIGHT] = 6; node_0->style.margin[CSS_RIGHT] = 6;
node_0->style.padding[CSS_RIGHT] = 16; node_0->style.padding[CSS_RIGHT] = 16;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -3510,8 +3546,8 @@ int main()
node_0->style.border[CSS_LEFT] = 2; node_0->style.border[CSS_LEFT] = 2;
node_0->style.position[CSS_LEFT] = 3; node_0->style.position[CSS_LEFT] = 3;
node_0->style.position[CSS_TOP] = 5; node_0->style.position[CSS_TOP] = 5;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -3590,8 +3626,8 @@ int main()
node_1->style.border[CSS_BOTTOM] = 3; node_1->style.border[CSS_BOTTOM] = 3;
node_1->style.position[CSS_LEFT] = -3; node_1->style.position[CSS_LEFT] = -3;
node_1->style.position[CSS_TOP] = 0; node_1->style.position[CSS_TOP] = 0;
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "loooooooooong with space"; node_1->context = "loooooooooong with space";
node_1 = &node_0->children[1]; node_1 = &node_0->children[1];
node_1->style.position_type = CSS_POSITION_ABSOLUTE; node_1->style.position_type = CSS_POSITION_ABSOLUTE;
node_1->style.margin[CSS_LEFT] = -7; node_1->style.margin[CSS_LEFT] = -7;
@@ -3625,8 +3661,8 @@ int main()
node_2->style.padding[CSS_BOTTOM] = 0; node_2->style.padding[CSS_BOTTOM] = 0;
node_2->style.border[CSS_LEFT] = 0; node_2->style.border[CSS_LEFT] = 0;
node_2->style.position[CSS_LEFT] = 0; node_2->style.position[CSS_LEFT] = 0;
node_2->style.measure = measure; node_2->measure = measure;
node_2->style.measure_context = "small"; node_2->context = "small";
} }
} }
} }
@@ -3734,8 +3770,8 @@ int main()
node_1->style.border[CSS_TOP] = 2; node_1->style.border[CSS_TOP] = 2;
node_1->style.border[CSS_BOTTOM] = 3; node_1->style.border[CSS_BOTTOM] = 3;
node_1->style.position[CSS_LEFT] = 4; node_1->style.position[CSS_LEFT] = 4;
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "small"; node_1->context = "small";
} }
} }
@@ -3778,8 +3814,8 @@ int main()
node_0->style.border[CSS_RIGHT] = 1; node_0->style.border[CSS_RIGHT] = 1;
node_0->style.border[CSS_BOTTOM] = 1; node_0->style.border[CSS_BOTTOM] = 1;
node_0->style.position[CSS_LEFT] = -7; node_0->style.position[CSS_LEFT] = -7;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -3843,8 +3879,8 @@ int main()
node_0->style.padding[CSS_TOP] = 4; node_0->style.padding[CSS_TOP] = 4;
node_0->style.position[CSS_LEFT] = 0; node_0->style.position[CSS_LEFT] = 0;
node_0->style.position[CSS_TOP] = 7; node_0->style.position[CSS_TOP] = 7;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -3968,8 +4004,8 @@ int main()
node_0->style.padding[CSS_BOTTOM] = 12; node_0->style.padding[CSS_BOTTOM] = 12;
node_0->style.border[CSS_LEFT] = 2; node_0->style.border[CSS_LEFT] = 2;
node_0->style.position[CSS_LEFT] = -6; node_0->style.position[CSS_LEFT] = -6;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -4085,8 +4121,8 @@ int main()
node_0->style.border[CSS_BOTTOM] = 0; node_0->style.border[CSS_BOTTOM] = 0;
node_0->style.border[CSS_TOP] = 0; node_0->style.border[CSS_TOP] = 0;
node_0->style.position[CSS_LEFT] = 1; node_0->style.position[CSS_LEFT] = 1;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -4140,8 +4176,8 @@ int main()
node_1->style.padding[CSS_LEFT] = 8; node_1->style.padding[CSS_LEFT] = 8;
node_1->style.padding[CSS_TOP] = 5; node_1->style.padding[CSS_TOP] = 5;
node_1->style.position[CSS_LEFT] = 4; node_1->style.position[CSS_LEFT] = 4;
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "small"; node_1->context = "small";
} }
} }
@@ -4254,8 +4290,8 @@ int main()
node_0->style.border[CSS_RIGHT] = 3; node_0->style.border[CSS_RIGHT] = 3;
node_0->style.border[CSS_BOTTOM] = 0; node_0->style.border[CSS_BOTTOM] = 0;
node_0->style.position[CSS_LEFT] = 2; node_0->style.position[CSS_LEFT] = 2;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -4281,8 +4317,8 @@ int main()
node_0->style.padding[CSS_LEFT] = 9; node_0->style.padding[CSS_LEFT] = 9;
node_0->style.border[CSS_RIGHT] = 0; node_0->style.border[CSS_RIGHT] = 0;
node_0->style.position[CSS_LEFT] = -5; node_0->style.position[CSS_LEFT] = -5;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -4309,8 +4345,8 @@ int main()
node_0->style.margin[CSS_BOTTOM] = 6; node_0->style.margin[CSS_BOTTOM] = 6;
node_0->style.position[CSS_LEFT] = -2; node_0->style.position[CSS_LEFT] = -2;
node_0->style.position[CSS_TOP] = -2; node_0->style.position[CSS_TOP] = -2;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -4391,8 +4427,8 @@ int main()
node_1->style.border[CSS_LEFT] = 0; node_1->style.border[CSS_LEFT] = 0;
node_1->style.border[CSS_TOP] = 3; node_1->style.border[CSS_TOP] = 3;
node_1->style.position[CSS_LEFT] = -1; node_1->style.position[CSS_LEFT] = -1;
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "small"; node_1->context = "small";
} }
} }
@@ -4459,8 +4495,8 @@ int main()
node_0->style.border[CSS_BOTTOM] = 0; node_0->style.border[CSS_BOTTOM] = 0;
node_0->style.border[CSS_TOP] = 1; node_0->style.border[CSS_TOP] = 1;
node_0->style.position[CSS_LEFT] = -2; node_0->style.position[CSS_LEFT] = -2;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -4503,8 +4539,8 @@ int main()
node_1->style.padding[CSS_RIGHT] = 14; node_1->style.padding[CSS_RIGHT] = 14;
node_1->style.border[CSS_TOP] = 2; node_1->style.border[CSS_TOP] = 2;
node_1->style.position[CSS_TOP] = -1; node_1->style.position[CSS_TOP] = -1;
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "small"; node_1->context = "small";
node_1 = &node_0->children[1]; node_1 = &node_0->children[1];
node_1->style.align_self = CSS_ALIGN_STRETCH; node_1->style.align_self = CSS_ALIGN_STRETCH;
node_1->style.dimensions[CSS_WIDTH] = 638; node_1->style.dimensions[CSS_WIDTH] = 638;
@@ -4518,8 +4554,8 @@ int main()
node_1->style.padding[CSS_BOTTOM] = 14; node_1->style.padding[CSS_BOTTOM] = 14;
node_1->style.padding[CSS_TOP] = 18; node_1->style.padding[CSS_TOP] = 18;
node_1->style.position[CSS_LEFT] = -7; node_1->style.position[CSS_LEFT] = -7;
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "loooooooooong with space"; node_1->context = "loooooooooong with space";
} }
} }
@@ -4596,8 +4632,8 @@ int main()
node_0->style.border[CSS_TOP] = 2; node_0->style.border[CSS_TOP] = 2;
node_0->style.position[CSS_LEFT] = -9; node_0->style.position[CSS_LEFT] = -9;
node_0->style.position[CSS_TOP] = -1; node_0->style.position[CSS_TOP] = -1;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -4709,8 +4745,8 @@ int main()
node_4->style.padding[CSS_LEFT] = 6; node_4->style.padding[CSS_LEFT] = 6;
node_4->style.padding[CSS_RIGHT] = 14; node_4->style.padding[CSS_RIGHT] = 14;
node_4->style.padding[CSS_BOTTOM] = 19; node_4->style.padding[CSS_BOTTOM] = 19;
node_4->style.measure = measure; node_4->measure = measure;
node_4->style.measure_context = "small"; node_4->context = "small";
} }
} }
} }
@@ -4723,8 +4759,8 @@ int main()
node_1->style.border[CSS_RIGHT] = 3; node_1->style.border[CSS_RIGHT] = 3;
node_1->style.position[CSS_LEFT] = 4; node_1->style.position[CSS_LEFT] = 4;
node_1->style.position[CSS_TOP] = 4; node_1->style.position[CSS_TOP] = 4;
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "small"; node_1->context = "small";
node_1 = &node_0->children[2]; node_1 = &node_0->children[2];
node_1->style.justify_content = CSS_JUSTIFY_FLEX_START; node_1->style.justify_content = CSS_JUSTIFY_FLEX_START;
node_1->style.align_self = CSS_ALIGN_CENTER; node_1->style.align_self = CSS_ALIGN_CENTER;
@@ -4735,8 +4771,8 @@ int main()
node_1->style.padding[CSS_BOTTOM] = 11; node_1->style.padding[CSS_BOTTOM] = 11;
node_1->style.border[CSS_TOP] = 0; node_1->style.border[CSS_TOP] = 0;
node_1->style.border[CSS_BOTTOM] = 3; node_1->style.border[CSS_BOTTOM] = 3;
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "small"; node_1->context = "small";
} }
} }
@@ -4816,8 +4852,8 @@ int main()
node_0->style.border[CSS_LEFT] = 1; node_0->style.border[CSS_LEFT] = 1;
node_0->style.border[CSS_TOP] = 2; node_0->style.border[CSS_TOP] = 2;
node_0->style.position[CSS_LEFT] = -6; node_0->style.position[CSS_LEFT] = -6;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -4845,8 +4881,8 @@ int main()
node_0->style.margin[CSS_RIGHT] = 5; node_0->style.margin[CSS_RIGHT] = 5;
node_0->style.margin[CSS_BOTTOM] = 18; node_0->style.margin[CSS_BOTTOM] = 18;
node_0->style.position[CSS_LEFT] = -8; node_0->style.position[CSS_LEFT] = -8;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -4870,8 +4906,8 @@ int main()
node_0->style.padding[CSS_TOP] = 0; node_0->style.padding[CSS_TOP] = 0;
node_0->style.padding[CSS_BOTTOM] = 11; node_0->style.padding[CSS_BOTTOM] = 11;
node_0->style.border[CSS_RIGHT] = 3; node_0->style.border[CSS_RIGHT] = 3;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -4940,8 +4976,8 @@ int main()
node_0->style.padding[CSS_BOTTOM] = 2; node_0->style.padding[CSS_BOTTOM] = 2;
node_0->style.border[CSS_LEFT] = 0; node_0->style.border[CSS_LEFT] = 0;
node_0->style.border[CSS_BOTTOM] = 0; node_0->style.border[CSS_BOTTOM] = 0;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -4971,8 +5007,8 @@ int main()
node_0->style.border[CSS_BOTTOM] = 2; node_0->style.border[CSS_BOTTOM] = 2;
node_0->style.border[CSS_TOP] = 1; node_0->style.border[CSS_TOP] = 1;
node_0->style.border[CSS_RIGHT] = 1; node_0->style.border[CSS_RIGHT] = 1;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -5033,8 +5069,8 @@ int main()
node_0->style.border[CSS_BOTTOM] = 3; node_0->style.border[CSS_BOTTOM] = 3;
node_0->style.position[CSS_LEFT] = -5; node_0->style.position[CSS_LEFT] = -5;
node_0->style.position[CSS_TOP] = 2; node_0->style.position[CSS_TOP] = 2;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -5095,8 +5131,8 @@ int main()
node_0->style.padding[CSS_LEFT] = 5; node_0->style.padding[CSS_LEFT] = 5;
node_0->style.padding[CSS_TOP] = 17; node_0->style.padding[CSS_TOP] = 17;
node_0->style.border[CSS_TOP] = 0; node_0->style.border[CSS_TOP] = 0;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -5144,8 +5180,8 @@ int main()
node_0->style.padding[CSS_BOTTOM] = 12; node_0->style.padding[CSS_BOTTOM] = 12;
node_0->style.padding[CSS_BOTTOM] = 7; node_0->style.padding[CSS_BOTTOM] = 7;
node_0->style.position[CSS_LEFT] = -3; node_0->style.position[CSS_LEFT] = -3;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -5263,8 +5299,8 @@ int main()
node_1->style.border[CSS_TOP] = 0; node_1->style.border[CSS_TOP] = 0;
node_1->style.border[CSS_BOTTOM] = 3; node_1->style.border[CSS_BOTTOM] = 3;
node_1->style.position[CSS_TOP] = -3; node_1->style.position[CSS_TOP] = -3;
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "loooooooooong with space"; node_1->context = "loooooooooong with space";
node_1 = &node_0->children[2]; node_1 = &node_0->children[2];
node_1->style.flex_direction = CSS_FLEX_DIRECTION_COLUMN; node_1->style.flex_direction = CSS_FLEX_DIRECTION_COLUMN;
node_1->style.justify_content = CSS_JUSTIFY_SPACE_AROUND; node_1->style.justify_content = CSS_JUSTIFY_SPACE_AROUND;
@@ -5277,8 +5313,8 @@ int main()
node_1->style.padding[CSS_TOP] = 0; node_1->style.padding[CSS_TOP] = 0;
node_1->style.padding[CSS_RIGHT] = 0; node_1->style.padding[CSS_RIGHT] = 0;
node_1->style.padding[CSS_BOTTOM] = 0; node_1->style.padding[CSS_BOTTOM] = 0;
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "small"; node_1->context = "small";
node_1 = &node_0->children[3]; node_1 = &node_0->children[3];
node_1->style.flex = CSS_FLEX_NONE; node_1->style.flex = CSS_FLEX_NONE;
node_1->style.margin[CSS_LEFT] = 0; node_1->style.margin[CSS_LEFT] = 0;
@@ -5295,8 +5331,8 @@ int main()
node_1->style.border[CSS_TOP] = 1; node_1->style.border[CSS_TOP] = 1;
node_1->style.border[CSS_RIGHT] = 0; node_1->style.border[CSS_RIGHT] = 0;
node_1->style.position[CSS_TOP] = -5; node_1->style.position[CSS_TOP] = -5;
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "small"; node_1->context = "small";
} }
} }
@@ -5409,8 +5445,8 @@ int main()
node_0->style.padding[CSS_RIGHT] = 14; node_0->style.padding[CSS_RIGHT] = 14;
node_0->style.padding[CSS_BOTTOM] = 10; node_0->style.padding[CSS_BOTTOM] = 10;
node_0->style.position[CSS_LEFT] = -1; node_0->style.position[CSS_LEFT] = -1;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -5548,8 +5584,8 @@ int main()
node_0->style.border[CSS_BOTTOM] = 1; node_0->style.border[CSS_BOTTOM] = 1;
node_0->style.border[CSS_RIGHT] = 3; node_0->style.border[CSS_RIGHT] = 3;
node_0->style.position[CSS_TOP] = 3; node_0->style.position[CSS_TOP] = 3;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -5575,8 +5611,8 @@ int main()
node_0->style.padding[CSS_TOP] = 11; node_0->style.padding[CSS_TOP] = 11;
node_0->style.padding[CSS_RIGHT] = 5; node_0->style.padding[CSS_RIGHT] = 5;
node_0->style.border[CSS_RIGHT] = 1; node_0->style.border[CSS_RIGHT] = 1;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -5662,8 +5698,8 @@ int main()
node_0->style.padding[CSS_RIGHT] = 10; node_0->style.padding[CSS_RIGHT] = 10;
node_0->style.border[CSS_LEFT] = 0; node_0->style.border[CSS_LEFT] = 0;
node_0->style.position[CSS_LEFT] = -4; node_0->style.position[CSS_LEFT] = -4;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -5795,8 +5831,8 @@ int main()
node_1->style.border[CSS_BOTTOM] = 0; node_1->style.border[CSS_BOTTOM] = 0;
node_1->style.position[CSS_LEFT] = 8; node_1->style.position[CSS_LEFT] = 8;
node_1->style.position[CSS_TOP] = -3; node_1->style.position[CSS_TOP] = -3;
node_1->style.measure = measure; node_1->measure = measure;
node_1->style.measure_context = "small"; node_1->context = "small";
} }
} }
@@ -5895,8 +5931,8 @@ int main()
node_0->style.padding[CSS_RIGHT] = 9; node_0->style.padding[CSS_RIGHT] = 9;
node_0->style.padding[CSS_BOTTOM] = 14; node_0->style.padding[CSS_BOTTOM] = 14;
node_0->style.position[CSS_TOP] = 7; node_0->style.position[CSS_TOP] = 7;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -5922,8 +5958,8 @@ int main()
node_0->style.margin[CSS_RIGHT] = 7; node_0->style.margin[CSS_RIGHT] = 7;
node_0->style.margin[CSS_BOTTOM] = 7; node_0->style.margin[CSS_BOTTOM] = 7;
node_0->style.margin[CSS_BOTTOM] = 13; node_0->style.margin[CSS_BOTTOM] = 13;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -5958,8 +5994,8 @@ int main()
node_0->style.padding[CSS_BOTTOM] = 7; node_0->style.padding[CSS_BOTTOM] = 7;
node_0->style.border[CSS_RIGHT] = 0; node_0->style.border[CSS_RIGHT] = 0;
node_0->style.position[CSS_LEFT] = -6; node_0->style.position[CSS_LEFT] = -6;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -6038,8 +6074,8 @@ int main()
node_2->style.padding[CSS_BOTTOM] = 13; node_2->style.padding[CSS_BOTTOM] = 13;
node_2->style.position[CSS_LEFT] = -5; node_2->style.position[CSS_LEFT] = -5;
node_2->style.position[CSS_TOP] = 6; node_2->style.position[CSS_TOP] = 6;
node_2->style.measure = measure; node_2->measure = measure;
node_2->style.measure_context = "loooooooooong with space"; node_2->context = "loooooooooong with space";
} }
} }
} }
@@ -6090,8 +6126,8 @@ int main()
node_0->style.border[CSS_RIGHT] = 0; node_0->style.border[CSS_RIGHT] = 0;
node_0->style.position[CSS_LEFT] = -1; node_0->style.position[CSS_LEFT] = -1;
node_0->style.position[CSS_TOP] = 4; node_0->style.position[CSS_TOP] = 4;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -6135,8 +6171,8 @@ int main()
node_0->style.border[CSS_LEFT] = 1; node_0->style.border[CSS_LEFT] = 1;
node_0->style.border[CSS_TOP] = 0; node_0->style.border[CSS_TOP] = 0;
node_0->style.border[CSS_RIGHT] = 0; node_0->style.border[CSS_RIGHT] = 0;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -6182,8 +6218,8 @@ int main()
node_0->style.padding[CSS_TOP] = 15; node_0->style.padding[CSS_TOP] = 15;
node_0->style.position[CSS_LEFT] = 3; node_0->style.position[CSS_LEFT] = 3;
node_0->style.position[CSS_TOP] = 9; node_0->style.position[CSS_TOP] = 9;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -6210,8 +6246,8 @@ int main()
node_0->style.padding[CSS_BOTTOM] = 19; node_0->style.padding[CSS_BOTTOM] = 19;
node_0->style.border[CSS_BOTTOM] = 1; node_0->style.border[CSS_BOTTOM] = 1;
node_0->style.position[CSS_TOP] = -3; node_0->style.position[CSS_TOP] = -3;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "small"; node_0->context = "small";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();
@@ -6297,8 +6333,8 @@ int main()
node_0->style.border[CSS_BOTTOM] = 3; node_0->style.border[CSS_BOTTOM] = 3;
node_0->style.border[CSS_LEFT] = 1; node_0->style.border[CSS_LEFT] = 1;
node_0->style.border[CSS_BOTTOM] = 1; node_0->style.border[CSS_BOTTOM] = 1;
node_0->style.measure = measure; node_0->measure = measure;
node_0->style.measure_context = "loooooooooong with space"; node_0->context = "loooooooooong with space";
} }
css_node_t *root_layout = new_css_node(); css_node_t *root_layout = new_css_node();

View File

@@ -14,6 +14,7 @@ textarea {
<textarea id="layout_code" onclick="this.select()"></textarea> <textarea id="layout_code" onclick="this.select()"></textarea>
<script> <script>
document.getElementById('layout_code').value = computeLayout.toString() document.getElementById('layout_code').value = computeLayout.toString()
.replace('node.style.measure', 'node.measure')
.replace(/\.children\.length/g, '.children_count') .replace(/\.children\.length/g, '.children_count')
.replace(/\.width/g, '.dimensions[CSS_WIDTH]') .replace(/\.width/g, '.dimensions[CSS_WIDTH]')
.replace(/\.height/g, '.dimensions[CSS_HEIGHT]') .replace(/\.height/g, '.dimensions[CSS_HEIGHT]')
@@ -130,8 +131,8 @@ function printLayout(test) {
function addMeasure(node) { function addMeasure(node) {
if ('measure' in node.style) { if ('measure' in node.style) {
addStyle('measure = measure;'); add('node_' + (level - 3) + '->measure = measure;');
addStyle('measure_context = "' + node.style.measure.toString() + '";'); add('node_' + (level - 3) + '->context = "' + node.style.measure.toString() + '";');
} }
} }