|
@ -172,6 +172,10 @@ struct GUI_Subtree { |
|
|
RDIC_Node_Reference relative_to; |
|
|
RDIC_Node_Reference relative_to; |
|
|
int flat_offset_x; |
|
|
int flat_offset_x; |
|
|
int flat_offset_y; |
|
|
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; |
|
|
GUI_Draw_Command *first_draw_command; |
|
|
int num_draw_commands; |
|
|
int num_draw_commands; |
|
@ -641,12 +645,23 @@ void gui_generate_draw_commands( |
|
|
x_offset = relative_rectangle->x0; |
|
|
x_offset = relative_rectangle->x0; |
|
|
y_offset = relative_rectangle->y0; |
|
|
y_offset = relative_rectangle->y0; |
|
|
//printf("%.*s: %d, %d\n", relative_node->debug_string.length, relative_node->debug_string.cstring, x_offset, y_offset);
|
|
|
//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; |
|
|
x_offset += subtree->flat_offset_x; |
|
|
y_offset += subtree->flat_offset_y; |
|
|
y_offset += subtree->flat_offset_y; |
|
|
|
|
|
|
|
|
GUI_Node *root = (GUI_Node*)subtree->rdic.root; |
|
|
GUI_Node *root = (GUI_Node*)subtree->rdic.root; |
|
|
assert(root != NULL); |
|
|
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(draw_command_arena != NULL); |
|
|
assert(out_num_draw_commands != NULL); |
|
|
assert(out_num_draw_commands != NULL); |
|
|
*out_num_draw_commands = 0; |
|
|
*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); |
|
|
inner_top = gui_dumb_block(context, inner_top, &outer_style, element_size); |
|
|
((GUI_Node*)inner_top.node)->image = &test_image; |
|
|
((GUI_Node*)inner_top.node)->image = &test_image; |
|
|
} gui_pop_subtree(context); |
|
|
} gui_pop_subtree(context); |
|
|
|
|
|
#if 0 |
|
|
int middle_height = |
|
|
int middle_height = |
|
|
((GUI_Node*)middle.node)->computed_size[GUI_AXIS2_Y]; |
|
|
((GUI_Node*)middle.node)->computed_size[GUI_AXIS2_Y]; |
|
|
int subtree_height = |
|
|
int subtree_height = |
|
@ -1458,6 +1474,11 @@ void test_gui__subtree( |
|
|
{ |
|
|
{ |
|
|
middle_subtree.flat_offset_y = 0; |
|
|
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; |
|
|
((GUI_Node*)middle_subtree_root.node)->dirty = ((GUI_Node*)slider.node)->dirty; |
|
|
|
|
|
|
|
|
bottom = gui_dumb_block(context, bottom, &outer_style, top_bottom_size); |
|
|
bottom = gui_dumb_block(context, bottom, &outer_style, top_bottom_size); |
|
|