Przeglądaj źródła

Semantic subtree positioning

master
Patrick Jakobsen 7 miesięcy temu
rodzic
commit
e787d2dd3a
1 zmienionych plików z 21 dodań i 0 usunięć
  1. +21
    -0
      gui/gui.c

+ 21
- 0
gui/gui.c Wyświetl plik

@ -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);

Ładowanie…
Anuluj
Zapisz