diff options
Diffstat (limited to 'src/libui_sdl/libui/test/spaced.c')
-rw-r--r-- | src/libui_sdl/libui/test/spaced.c | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/src/libui_sdl/libui/test/spaced.c b/src/libui_sdl/libui/test/spaced.c new file mode 100644 index 0000000..02db99a --- /dev/null +++ b/src/libui_sdl/libui/test/spaced.c @@ -0,0 +1,177 @@ +// 22 april 2015 +#include "test.h" + +struct thing { + void *ptr; + int type; +}; + +static struct thing *things = NULL; +static size_t len = 0; +static size_t cap = 0; + +#define grow 32 + +static void *append(void *thing, int type) +{ + if (len >= cap) { + cap += grow; + things = (struct thing *) realloc(things, cap * sizeof (struct thing)); + if (things == NULL) + die("reallocating things array in test/spaced.c append()"); + } + things[len].ptr = thing; + things[len].type = type; + len++; + return things[len - 1].ptr; +} + +enum types { + window, + box, + tab, + group, + form, + grid, +}; + +void setSpaced(int spaced) +{ + size_t i; + void *p; + size_t j, n; + + for (i = 0; i < len; i++) { + p = things[i].ptr; + switch (things[i].type) { + case window: + uiWindowSetMargined(uiWindow(p), spaced); + break; + case box: + uiBoxSetPadded(uiBox(p), spaced); + break; + case tab: + n = uiTabNumPages(uiTab(p)); + for (j = 0; j < n; j++) + uiTabSetMargined(uiTab(p), j, spaced); + break; + case group: + uiGroupSetMargined(uiGroup(p), spaced); + break; + case form: + uiFormSetPadded(uiForm(p), spaced); + break; + case grid: + uiGridSetPadded(uiGrid(p), spaced); + break; + } + } +} + +void querySpaced(char out[12]) // more than enough +{ + int m = 0; + int p = 0; + size_t i; + void *pp; + size_t j, n; + + for (i = 0; i < len; i++) { + pp = things[i].ptr; + switch (things[i].type) { + case window: + if (uiWindowMargined(uiWindow(pp))) + m++; + break; + case box: + p = uiBoxPadded(uiBox(pp)); + break; + case tab: + n = uiTabNumPages(uiTab(pp)); + for (j = 0; j < n; j++) + if (uiTabMargined(uiTab(pp), j)) + m++; + break; + case group: + if (uiGroupMargined(uiGroup(pp))) + m++; + break; + // TODO form + // TODO grid + } + } + + out[0] = 'm'; + out[1] = ' '; + out[2] = '0' + m; + out[3] = ' '; + out[4] = 'p'; + out[5] = ' '; + out[6] = '0'; + if (p) + out[6] = '1'; + out[7] = '\0'; +} + +uiWindow *newWindow(const char *title, int width, int height, int hasMenubar) +{ + uiWindow *w; + + w = uiNewWindow(title, width, height, hasMenubar); + append(w, window); + return w; +} + +uiBox *newHorizontalBox(void) +{ + uiBox *b; + + b = (*newhbox)(); + append(b, box); + return b; +} + +uiBox *newVerticalBox(void) +{ + uiBox *b; + + b = (*newvbox)(); + append(b, box); + return b; +} + +uiTab *newTab(void) +{ + uiTab *t; + + t = uiNewTab(); + append(t, tab); + return t; +} + +uiGroup *newGroup(const char *text) +{ + uiGroup *g; + + g = uiNewGroup(text); + append(g, group); + return g; +} + +uiForm *newForm(void) +{ + uiForm *f; + + f = uiNewForm(); + append(f, form); + return f; +} + +uiGrid *newGrid(void) +{ + uiGrid *g; + + g = uiNewGrid(); + append(g, grid); + return g; +} |