Semantic subtree positioning
This commit is contained in:
1 parent
9ed7d82d09
commit
e787d2dd3a
1 file changed
+21
@@ -172,6 +172,10 @@ struct GUI_Subtree {
|
||||
RDIC_Node_Reference relative_to;
|
||||
int flat_offset_x;
|
||||
int flat_offset_y;
|
||||
int offset_relative_node_percentage_x;
|
||||
int offset_relative_node_percentage_y;
|
||||
int offset_own_size_percentage_x;
|
||||
int offset_own_size_percentage_y;
|
||||
|
||||
GUI_Draw_Command *first_draw_command;
|
||||
int num_draw_commands;
|
||||
@@ -641,12 +645,23 @@ void gui_generate_draw_commands(
|
||||
x_offset = relative_rectangle->x0;
|
||||
y_offset = relative_rectangle->y0;
|
||||
//printf("%.*s: %d, %d\n", relative_node->debug_string.length, relative_node->debug_string.cstring, x_offset, y_offset);
|
||||
int relative_width = relative_rectangle->x1 - relative_rectangle->x0;
|
||||
int relative_height = relative_rectangle->y1 - relative_rectangle->y0;
|
||||
x_offset +=
|
||||
(relative_width * subtree->offset_relative_node_percentage_x) / 100;
|
||||
y_offset +=
|
||||
(relative_height * subtree->offset_relative_node_percentage_y) / 100;
|
||||
}
|
||||
x_offset += subtree->flat_offset_x;
|
||||
y_offset += subtree->flat_offset_y;
|
||||
|
||||
GUI_Node *root = (GUI_Node*)subtree->rdic.root;
|
||||
assert(root != NULL);
|
||||
x_offset +=
|
||||
(root->computed_size[GUI_AXIS2_X] * subtree->offset_own_size_percentage_x) / 100;
|
||||
y_offset +=
|
||||
(root->computed_size[GUI_AXIS2_Y] * subtree->offset_own_size_percentage_y) / 100;
|
||||
|
||||
assert(draw_command_arena != NULL);
|
||||
assert(out_num_draw_commands != NULL);
|
||||
*out_num_draw_commands = 0;
|
||||
@@ -1442,6 +1457,7 @@ void test_gui__subtree(
|
||||
inner_top = gui_dumb_block(context, inner_top, &outer_style, element_size);
|
||||
((GUI_Node*)inner_top.node)->image = &test_image;
|
||||
} gui_pop_subtree(context);
|
||||
#if 0
|
||||
int middle_height =
|
||||
((GUI_Node*)middle.node)->computed_size[GUI_AXIS2_Y];
|
||||
int subtree_height =
|
||||
@@ -1458,6 +1474,11 @@ void test_gui__subtree(
|
||||
{
|
||||
middle_subtree.flat_offset_y = 0;
|
||||
}
|
||||
#else
|
||||
printf("slider value: %f\n", slider_value);
|
||||
middle_subtree.offset_relative_node_percentage_y = slider_value*100;
|
||||
middle_subtree.offset_own_size_percentage_y = slider_value*-100;
|
||||
#endif
|
||||
((GUI_Node*)middle_subtree_root.node)->dirty = ((GUI_Node*)slider.node)->dirty;
|
||||
|
||||
bottom = gui_dumb_block(context, bottom, &outer_style, top_bottom_size);
|
||||
|
||||
Reference in new issue
Block a user