remove trailing whitespace
This commit is contained in:
parent
fab6fd33d2
commit
9f13d5a39e
@ -6,7 +6,7 @@
|
|||||||
#define SZ_INT(x) x.size.i
|
#define SZ_INT(x) x.size.i
|
||||||
|
|
||||||
static const ug_style_t default_style = {
|
static const ug_style_t default_style = {
|
||||||
.color = {
|
.color = {
|
||||||
.bg = RGB_FORMAT(0x131313),
|
.bg = RGB_FORMAT(0x131313),
|
||||||
.fg = RGB_FORMAT(0xffffff),
|
.fg = RGB_FORMAT(0xffffff),
|
||||||
},
|
},
|
||||||
|
26
test/main.c
26
test/main.c
@ -24,7 +24,7 @@ int main(void)
|
|||||||
|
|
||||||
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS);
|
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS);
|
||||||
SDL_EnableScreenSaver();
|
SDL_EnableScreenSaver();
|
||||||
SDL_EventState(SDL_DROPFILE, SDL_ENABLE);
|
SDL_EventState(SDL_DROPFILE, SDL_ENABLE);
|
||||||
SDL_EventState(SDL_DROPTEXT, SDL_ENABLE);
|
SDL_EventState(SDL_DROPTEXT, SDL_ENABLE);
|
||||||
|
|
||||||
SDL_GetDesktopDisplayMode(0, &dm);
|
SDL_GetDesktopDisplayMode(0, &dm);
|
||||||
@ -37,9 +37,9 @@ int main(void)
|
|||||||
SDL_SetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH, "1");
|
SDL_SetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH, "1");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
w = SDL_CreateWindow("test",
|
w = SDL_CreateWindow("test",
|
||||||
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
|
SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED,
|
||||||
dm.w*0.8, dm.h*0.8,
|
dm.w*0.8, dm.h*0.8,
|
||||||
SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI |
|
SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI |
|
||||||
SDL_WINDOW_OPENGL );
|
SDL_WINDOW_OPENGL );
|
||||||
|
|
||||||
@ -53,7 +53,7 @@ int main(void)
|
|||||||
SDL_GL_GetDrawableSize(w, &dsize.w, &dsize.h);
|
SDL_GL_GetDrawableSize(w, &dsize.w, &dsize.h);
|
||||||
float scale = 1.0;
|
float scale = 1.0;
|
||||||
scale = ((float)(size.w+size.h)/2)/((float)(dsize.w+dsize.h)/2);
|
scale = ((float)(size.w+size.h)/2)/((float)(dsize.w+dsize.h)/2);
|
||||||
|
|
||||||
float dpi;
|
float dpi;
|
||||||
int idx;
|
int idx;
|
||||||
idx = SDL_GetWindowDisplayIndex(w);
|
idx = SDL_GetWindowDisplayIndex(w);
|
||||||
@ -72,13 +72,13 @@ int main(void)
|
|||||||
SDL_Event event;
|
SDL_Event event;
|
||||||
|
|
||||||
char button_map[] = {
|
char button_map[] = {
|
||||||
[SDL_BUTTON_LEFT & 0xff] = UG_BTN_LEFT,
|
[SDL_BUTTON_LEFT & 0xff] = UG_BTN_LEFT,
|
||||||
[SDL_BUTTON_MIDDLE & 0xff] = UG_BTN_MIDDLE,
|
[SDL_BUTTON_MIDDLE & 0xff] = UG_BTN_MIDDLE,
|
||||||
[SDL_BUTTON_RIGHT & 0xff] = UG_BTN_RIGHT,
|
[SDL_BUTTON_RIGHT & 0xff] = UG_BTN_RIGHT,
|
||||||
[SDL_BUTTON_X1 & 0xff] = UG_BTN_4,
|
[SDL_BUTTON_X1 & 0xff] = UG_BTN_4,
|
||||||
[SDL_BUTTON_X2 & 0xff] = UG_BTN_5,
|
[SDL_BUTTON_X2 & 0xff] = UG_BTN_5,
|
||||||
};
|
};
|
||||||
|
|
||||||
do {
|
do {
|
||||||
SDL_WaitEvent(&event);
|
SDL_WaitEvent(&event);
|
||||||
|
|
||||||
@ -192,7 +192,7 @@ int main(void)
|
|||||||
//}
|
//}
|
||||||
|
|
||||||
ug_container_floating(ctx, "stupid name", (ug_div_t){.x=SIZE_PX(0), .y=SIZE_PX(0), .w=SIZE_PX(100), .h=SIZE_MM(75.0)});
|
ug_container_floating(ctx, "stupid name", (ug_div_t){.x=SIZE_PX(0), .y=SIZE_PX(0), .w=SIZE_PX(100), .h=SIZE_MM(75.0)});
|
||||||
ug_element_button(ctx, "float", "", (ug_div_t){SQUARE(SIZE_MM(5))});
|
ug_element_button(ctx, "float", "X", (ug_div_t){SQUARE(SIZE_MM(5))});
|
||||||
//ug_container_floating(ctx, "floating windoooooooow", (ug_div_t){.x=SIZE_PX(100), .y=SIZE_PX(0), .w=SIZE_PX(100), .h=SIZE_MM(75.0)});
|
//ug_container_floating(ctx, "floating windoooooooow", (ug_div_t){.x=SIZE_PX(100), .y=SIZE_PX(0), .w=SIZE_PX(100), .h=SIZE_MM(75.0)});
|
||||||
|
|
||||||
//ug_container_sidebar(ctx, "Right Sidebar", (ug_size_t)SIZE_PX(300), UG_SIDE_RIGHT);
|
//ug_container_sidebar(ctx, "Right Sidebar", (ug_size_t)SIZE_PX(300), UG_SIDE_RIGHT);
|
||||||
@ -207,7 +207,7 @@ int main(void)
|
|||||||
// printf("No space!\n");
|
// printf("No space!\n");
|
||||||
|
|
||||||
ug_layout_row(ctx);
|
ug_layout_row(ctx);
|
||||||
|
|
||||||
ug_layout_column(ctx);
|
ug_layout_column(ctx);
|
||||||
ug_element_button(ctx, "button 1", "hey", (ug_div_t){SQUARE(SIZE_MM(10))});
|
ug_element_button(ctx, "button 1", "hey", (ug_div_t){SQUARE(SIZE_MM(10))});
|
||||||
//ug_element_button(ctx, "button 2", "lol", (ug_div_t){SQUARE(SIZE_MM(10))});
|
//ug_element_button(ctx, "button 2", "lol", (ug_div_t){SQUARE(SIZE_MM(10))});
|
||||||
@ -218,7 +218,7 @@ int main(void)
|
|||||||
ug_element_button(ctx, "button 5", "lmao", (ug_div_t){SQUARE(SIZE_MM(10))});
|
ug_element_button(ctx, "button 5", "lmao", (ug_div_t){SQUARE(SIZE_MM(10))});
|
||||||
//ug_element_textbtn(ctx, "text button 1", "foo", (ug_div_t){.w = 0, .h = SIZE_PX(30)});
|
//ug_element_textbtn(ctx, "text button 1", "foo", (ug_div_t){.w = 0, .h = SIZE_PX(30)});
|
||||||
//ug_element_button(ctx, "button 6", "", (ug_div_t){SQUARE(SIZE_MM(10)),.x=SIZE_PX(-10)});
|
//ug_element_button(ctx, "button 6", "", (ug_div_t){SQUARE(SIZE_MM(10)),.x=SIZE_PX(-10)});
|
||||||
|
|
||||||
ug_container_body(ctx, "fill body");
|
ug_container_body(ctx, "fill body");
|
||||||
|
|
||||||
ug_frame_end(ctx);
|
ug_frame_end(ctx);
|
||||||
|
82
ugui.c
82
ugui.c
@ -125,7 +125,7 @@ static ug_id_t hash(const void *data, unsigned int size)
|
|||||||
hash += hash << 3;
|
hash += hash << 3;
|
||||||
hash ^= hash >> 11;
|
hash ^= hash >> 11;
|
||||||
hash += hash << 15;
|
hash += hash << 15;
|
||||||
|
|
||||||
return hash;
|
return hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,7 +218,7 @@ static void push_rect_command(ug_ctx_t *ctx, const ug_rect_t *rect, ug_color_t c
|
|||||||
|
|
||||||
|
|
||||||
// pushes a text command to the render command stack, str is a pointer to a valid
|
// pushes a text command to the render command stack, str is a pointer to a valid
|
||||||
// string offered by the user, it must be valid at least until rendering is done
|
// string offered by the user, it must be valid at least until rendering is done
|
||||||
static void push_text_command(ug_ctx_t *ctx, ug_vec2_t pos, int size, ug_color_t color, const char *str)
|
static void push_text_command(ug_ctx_t *ctx, ug_vec2_t pos, int size, ug_color_t color, const char *str)
|
||||||
{
|
{
|
||||||
ug_cmd_t *c;
|
ug_cmd_t *c;
|
||||||
@ -294,7 +294,7 @@ int ug_ctx_set_displayinfo(ug_ctx_t *ctx, float scale, float ppi)
|
|||||||
TEST_CTX(ctx);
|
TEST_CTX(ctx);
|
||||||
if (scale <= 0 || ppi < 20.0)
|
if (scale <= 0 || ppi < 20.0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
ctx->last_ppi = ctx->ppi;
|
ctx->last_ppi = ctx->ppi;
|
||||||
ctx->last_ppm = ctx->ppd;
|
ctx->last_ppm = ctx->ppd;
|
||||||
ctx->last_ppd = ctx->ppm;
|
ctx->last_ppd = ctx->ppm;
|
||||||
@ -302,7 +302,7 @@ int ug_ctx_set_displayinfo(ug_ctx_t *ctx, float scale, float ppi)
|
|||||||
ctx->ppm = PPI_PPM(scale, ppi);
|
ctx->ppm = PPI_PPM(scale, ppi);
|
||||||
ctx->ppd = PPI_PPM(scale, ppi);
|
ctx->ppd = PPI_PPM(scale, ppi);
|
||||||
ctx->ppi = ppi;
|
ctx->ppi = ppi;
|
||||||
|
|
||||||
update_style_cache(ctx);
|
update_style_cache(ctx);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
@ -314,7 +314,7 @@ int ug_ctx_set_drawableregion(ug_ctx_t *ctx, ug_vec2_t size)
|
|||||||
TEST_CTX(ctx);
|
TEST_CTX(ctx);
|
||||||
if (size.w <= 0 || size.h <= 0)
|
if (size.w <= 0 || size.h <= 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
ctx->size.w = size.w;
|
ctx->size.w = size.w;
|
||||||
ctx->size.h = size.h;
|
ctx->size.h = size.h;
|
||||||
|
|
||||||
@ -331,7 +331,7 @@ int ug_ctx_set_style(ug_ctx_t *ctx, const ug_style_t *style)
|
|||||||
|
|
||||||
ctx->style = style;
|
ctx->style = style;
|
||||||
update_style_cache(ctx);
|
update_style_cache(ctx);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -345,7 +345,7 @@ int ug_ctx_set_style(ug_ctx_t *ctx, const ug_style_t *style)
|
|||||||
/*
|
/*
|
||||||
* Container style: rca stands for absolute rectangle, it delimits the total
|
* Container style: rca stands for absolute rectangle, it delimits the total
|
||||||
* drawable area, as such it does not include borders
|
* drawable area, as such it does not include borders
|
||||||
*
|
*
|
||||||
* rca v Border Top v
|
* rca v Border Top v
|
||||||
* +-v--------------------------------------------------------+
|
* +-v--------------------------------------------------------+
|
||||||
* | +------------------------------------------------------+ |
|
* | +------------------------------------------------------+ |
|
||||||
@ -379,7 +379,7 @@ int ug_ctx_set_style(ug_ctx_t *ctx, const ug_style_t *style)
|
|||||||
* | | .................................................... | |
|
* | | .................................................... | |
|
||||||
* | +------------------------------------------------------+ |
|
* | +------------------------------------------------------+ |
|
||||||
* +----------------------------------------------------------+
|
* +----------------------------------------------------------+
|
||||||
* ^ Border Bottom ^
|
* ^ Border Bottom ^
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@ -430,13 +430,13 @@ static void sort_containers(ug_ctx_t *ctx)
|
|||||||
|
|
||||||
ug_container_t *s = ctx->cnt_stack.items;
|
ug_container_t *s = ctx->cnt_stack.items;
|
||||||
ug_container_t c = *cnt;
|
ug_container_t c = *cnt;
|
||||||
|
|
||||||
if (ctx->active_cnt != c.id)
|
if (ctx->active_cnt != c.id)
|
||||||
for (; y > 0 && TEST(s[y-1].flags, UG_CNT_FLOATING); y--);
|
for (; y > 0 && TEST(s[y-1].flags, UG_CNT_FLOATING); y--);
|
||||||
|
|
||||||
if (i >= y)
|
if (i >= y)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
memmove(&s[i], &s[i+1], (y - i) * sizeof(ug_container_t));
|
memmove(&s[i], &s[i+1], (y - i) * sizeof(ug_container_t));
|
||||||
s[y-1] = c;
|
s[y-1] = c;
|
||||||
}
|
}
|
||||||
@ -503,7 +503,7 @@ static int position_container(ug_ctx_t *ctx, ug_container_t *cnt)
|
|||||||
else rca->x = L_MARGIN(c, 0);
|
else rca->x = L_MARGIN(c, 0);
|
||||||
if (rect->y < 0) rca->y = B_MARGIN(c, 0) - B_MARGIN((*rca), -1);
|
if (rect->y < 0) rca->y = B_MARGIN(c, 0) - B_MARGIN((*rca), -1);
|
||||||
else rca->y = T_MARGIN(c, 0);
|
else rca->y = T_MARGIN(c, 0);
|
||||||
|
|
||||||
// if the container is fixed than update the available space in
|
// if the container is fixed than update the available space in
|
||||||
// the context
|
// the context
|
||||||
if (rect->w) {
|
if (rect->w) {
|
||||||
@ -545,13 +545,13 @@ static int handle_container(ug_ctx_t *ctx, ug_container_t *cnt)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// mouse pressed handle resize, for simplicity containers can only
|
// mouse pressed handle resize, for simplicity containers can only
|
||||||
// be resized from the bottom and right border
|
// be resized from the bottom and right border
|
||||||
// TODO: change return value to indicate this case
|
// TODO: change return value to indicate this case
|
||||||
if (!MOUSEHELD(ctx, UG_BTN_LEFT) ||
|
if (!MOUSEHELD(ctx, UG_BTN_LEFT) ||
|
||||||
!TEST(cnt->flags, (RESIZEALL | UG_CNT_MOVABLE)))
|
!TEST(cnt->flags, (RESIZEALL | UG_CNT_MOVABLE)))
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
ug_rect_t *rect, *rca;
|
ug_rect_t *rect, *rca;
|
||||||
rect = &cnt->rect;
|
rect = &cnt->rect;
|
||||||
rca = &cnt->rca;
|
rca = &cnt->rca;
|
||||||
@ -563,7 +563,7 @@ static int handle_container(ug_ctx_t *ctx, ug_container_t *cnt)
|
|||||||
|
|
||||||
ug_vec2_t mpos = ctx->mouse.pos;
|
ug_vec2_t mpos = ctx->mouse.pos;
|
||||||
ug_rect_t clip;
|
ug_rect_t clip;
|
||||||
|
|
||||||
// handle movable windows
|
// handle movable windows
|
||||||
if (TEST(cnt->flags, UG_CNT_MOVABLE)) {
|
if (TEST(cnt->flags, UG_CNT_MOVABLE)) {
|
||||||
clip = (ug_rect_t){
|
clip = (ug_rect_t){
|
||||||
@ -636,7 +636,7 @@ static int handle_container(ug_ctx_t *ctx, ug_container_t *cnt)
|
|||||||
if (rca->w - ctx->mouse.delta.x >= 10) {
|
if (rca->w - ctx->mouse.delta.x >= 10) {
|
||||||
rca->w -= ctx->mouse.delta.x;
|
rca->w -= ctx->mouse.delta.x;
|
||||||
rca->x += ctx->mouse.delta.x;
|
rca->x += ctx->mouse.delta.x;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -680,7 +680,7 @@ static int handle_container(ug_ctx_t *ctx, ug_container_t *cnt)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// if we were not resized but we are still active it means we are doing
|
// if we were not resized but we are still active it means we are doing
|
||||||
// something to the contained elements, as such set state to none
|
// something to the contained elements, as such set state to none
|
||||||
if (STATEIS(cnt, 0))
|
if (STATEIS(cnt, 0))
|
||||||
cnt->flags |= CNT_STATE_NONE;
|
cnt->flags |= CNT_STATE_NONE;
|
||||||
@ -708,7 +708,7 @@ static void draw_container(ug_ctx_t *ctx, ug_container_t *cnt, const char *text)
|
|||||||
rect = cnt->rca;
|
rect = cnt->rca;
|
||||||
EXPAND(rect, b);
|
EXPAND(rect, b);
|
||||||
push_rect_command(ctx, &rect, s->color.bg);
|
push_rect_command(ctx, &rect, s->color.bg);
|
||||||
|
|
||||||
// push outline
|
// push outline
|
||||||
if (TEST(cnt->flags, UG_CNT_RESIZE_LEFT)) {
|
if (TEST(cnt->flags, UG_CNT_RESIZE_LEFT)) {
|
||||||
rect = cnt->rca;
|
rect = cnt->rca;
|
||||||
@ -765,14 +765,14 @@ static void draw_container(ug_ctx_t *ctx, ug_container_t *cnt, const char *text)
|
|||||||
// a floating container can be placed anywhere and can be resized, acts like a
|
// a floating container can be placed anywhere and can be resized, acts like a
|
||||||
// window inside another window
|
// window inside another window
|
||||||
int ug_container_floating(ug_ctx_t *ctx, const char *name, ug_div_t div)
|
int ug_container_floating(ug_ctx_t *ctx, const char *name, ug_div_t div)
|
||||||
{
|
{
|
||||||
TEST_CTX(ctx);
|
TEST_CTX(ctx);
|
||||||
TEST_STR(name);
|
TEST_STR(name);
|
||||||
// TODO: verify div
|
// TODO: verify div
|
||||||
|
|
||||||
ug_id_t id = hash(name, strlen(name));
|
ug_id_t id = hash(name, strlen(name));
|
||||||
ug_container_t *cnt = get_container(ctx, id);
|
ug_container_t *cnt = get_container(ctx, id);
|
||||||
|
|
||||||
// maybe the name address was changed so always overwrite it
|
// maybe the name address was changed so always overwrite it
|
||||||
cnt->name = name;
|
cnt->name = name;
|
||||||
if (cnt->id) {
|
if (cnt->id) {
|
||||||
@ -789,7 +789,7 @@ int ug_container_floating(ug_ctx_t *ctx, const char *name, ug_div_t div)
|
|||||||
DELETE_FROM_STACK(ctx->cnt_stack, cnt);
|
DELETE_FROM_STACK(ctx->cnt_stack, cnt);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Select current conatiner
|
// Select current conatiner
|
||||||
ctx->selected_cnt = id;
|
ctx->selected_cnt = id;
|
||||||
|
|
||||||
@ -805,7 +805,7 @@ int ug_container_popup(ug_ctx_t *ctx, const char *name, ug_div_t div)
|
|||||||
|
|
||||||
ug_id_t id = hash(name, strlen(name));
|
ug_id_t id = hash(name, strlen(name));
|
||||||
ug_container_t *cnt = get_container(ctx, id);
|
ug_container_t *cnt = get_container(ctx, id);
|
||||||
|
|
||||||
// maybe the name address was changed so always overwrite it
|
// maybe the name address was changed so always overwrite it
|
||||||
cnt->name = name;
|
cnt->name = name;
|
||||||
if (cnt->id) {
|
if (cnt->id) {
|
||||||
@ -821,7 +821,7 @@ int ug_container_popup(ug_ctx_t *ctx, const char *name, ug_div_t div)
|
|||||||
DELETE_FROM_STACK(ctx->cnt_stack, cnt);
|
DELETE_FROM_STACK(ctx->cnt_stack, cnt);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Select current conatiner
|
// Select current conatiner
|
||||||
ctx->selected_cnt = id;
|
ctx->selected_cnt = id;
|
||||||
|
|
||||||
@ -855,7 +855,7 @@ int ug_container_sidebar(ug_ctx_t *ctx, const char *name, ug_size_t size, int si
|
|||||||
cnt->flags |= UG_CNT_RESIZE_BOTTOM;
|
cnt->flags |= UG_CNT_RESIZE_BOTTOM;
|
||||||
rect.h = size_to_px(ctx, size);
|
rect.h = size_to_px(ctx, size);
|
||||||
break;
|
break;
|
||||||
case UG_SIDE_RIGHT:
|
case UG_SIDE_RIGHT:
|
||||||
cnt->flags |= UG_CNT_RESIZE_LEFT;
|
cnt->flags |= UG_CNT_RESIZE_LEFT;
|
||||||
rect.x = -1;
|
rect.x = -1;
|
||||||
rect.w = size_to_px(ctx, size);
|
rect.w = size_to_px(ctx, size);
|
||||||
@ -873,7 +873,7 @@ int ug_container_sidebar(ug_ctx_t *ctx, const char *name, ug_size_t size, int si
|
|||||||
DELETE_FROM_STACK(ctx->cnt_stack, cnt);
|
DELETE_FROM_STACK(ctx->cnt_stack, cnt);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Select current conatiner
|
// Select current conatiner
|
||||||
ctx->selected_cnt = id;
|
ctx->selected_cnt = id;
|
||||||
|
|
||||||
@ -887,7 +887,7 @@ int ug_container_menu_bar(ug_ctx_t *ctx, const char *name, ug_size_t height)
|
|||||||
|
|
||||||
ug_id_t id = hash(name, strlen(name));
|
ug_id_t id = hash(name, strlen(name));
|
||||||
ug_container_t *cnt = get_container(ctx, id);
|
ug_container_t *cnt = get_container(ctx, id);
|
||||||
|
|
||||||
// maybe the name address was changed so always overwrite it
|
// maybe the name address was changed so always overwrite it
|
||||||
cnt->name = name;
|
cnt->name = name;
|
||||||
if (cnt->id) {
|
if (cnt->id) {
|
||||||
@ -906,7 +906,7 @@ int ug_container_menu_bar(ug_ctx_t *ctx, const char *name, ug_size_t height)
|
|||||||
DELETE_FROM_STACK(ctx->cnt_stack, cnt);
|
DELETE_FROM_STACK(ctx->cnt_stack, cnt);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Select current conatiner
|
// Select current conatiner
|
||||||
ctx->selected_cnt = id;
|
ctx->selected_cnt = id;
|
||||||
|
|
||||||
@ -921,7 +921,7 @@ int ug_container_body(ug_ctx_t *ctx, const char *name)
|
|||||||
|
|
||||||
ug_id_t id = hash(name, strlen(name));
|
ug_id_t id = hash(name, strlen(name));
|
||||||
ug_container_t *cnt = get_container(ctx, id);
|
ug_container_t *cnt = get_container(ctx, id);
|
||||||
|
|
||||||
// maybe the name address was changed so always overwrite it
|
// maybe the name address was changed so always overwrite it
|
||||||
cnt->name = name;
|
cnt->name = name;
|
||||||
if (cnt->id) {
|
if (cnt->id) {
|
||||||
@ -936,7 +936,7 @@ int ug_container_body(ug_ctx_t *ctx, const char *name)
|
|||||||
DELETE_FROM_STACK(ctx->cnt_stack, cnt);
|
DELETE_FROM_STACK(ctx->cnt_stack, cnt);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Select current conatiner
|
// Select current conatiner
|
||||||
ctx->selected_cnt = id;
|
ctx->selected_cnt = id;
|
||||||
|
|
||||||
@ -944,7 +944,7 @@ int ug_container_body(ug_ctx_t *ctx, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// TODO: return an error indicating that no container exists with that name
|
// TODO: return an error indicating that no container exists with that name
|
||||||
int ug_container_remove(ug_ctx_t *ctx, const char *name)
|
int ug_container_remove(ug_ctx_t *ctx, const char *name)
|
||||||
{
|
{
|
||||||
TEST_CTX(ctx);
|
TEST_CTX(ctx);
|
||||||
@ -961,7 +961,7 @@ int ug_container_remove(ug_ctx_t *ctx, const char *name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
ug_rect_t ug_container_get_rect(ug_ctx_t *ctx, const char *name)
|
ug_rect_t ug_container_get_rect(ug_ctx_t *ctx, const char *name)
|
||||||
{
|
{
|
||||||
ug_rect_t r = {0};
|
ug_rect_t r = {0};
|
||||||
if(!ctx)
|
if(!ctx)
|
||||||
@ -992,7 +992,7 @@ int ug_frame_begin(ug_ctx_t *ctx)
|
|||||||
// update mouse delta
|
// update mouse delta
|
||||||
ctx->mouse.delta.x = ctx->mouse.pos.x - ctx->mouse.last_pos.x;
|
ctx->mouse.delta.x = ctx->mouse.pos.x - ctx->mouse.last_pos.x;
|
||||||
ctx->mouse.delta.y = ctx->mouse.pos.y - ctx->mouse.last_pos.y;
|
ctx->mouse.delta.y = ctx->mouse.pos.y - ctx->mouse.last_pos.y;
|
||||||
|
|
||||||
// clear command stack
|
// clear command stack
|
||||||
RESET_STACK(ctx->cmd_stack);
|
RESET_STACK(ctx->cmd_stack);
|
||||||
|
|
||||||
@ -1122,10 +1122,10 @@ int ug_frame_end(ug_ctx_t *ctx)
|
|||||||
* | |
|
* | |
|
||||||
* | |
|
* | |
|
||||||
* +--------------------------------------------------------+
|
* +--------------------------------------------------------+
|
||||||
*
|
*
|
||||||
* Element Style:
|
* Element Style:
|
||||||
*
|
*
|
||||||
* rca margin
|
* rca margin
|
||||||
* +-v--------------+<--->+----------------+
|
* +-v--------------+<--->+----------------+
|
||||||
* | +------------+ | | +------------+ |
|
* | +------------+ | | +------------+ |
|
||||||
* | | | | | | | |
|
* | | | | | | | |
|
||||||
@ -1254,11 +1254,11 @@ static int position_element(ug_ctx_t *ctx, ug_container_t *cnt, ug_element_t *el
|
|||||||
int m = SZ_INT(s->margin);
|
int m = SZ_INT(s->margin);
|
||||||
int cx, cy, cw, ch;
|
int cx, cy, cw, ch;
|
||||||
int eb = 0;
|
int eb = 0;
|
||||||
|
|
||||||
switch (elem->type) {
|
switch (elem->type) {
|
||||||
case UG_ELEM_BUTTON: eb = SZ_INT(s->btn.border); break;
|
case UG_ELEM_BUTTON: eb = SZ_INT(s->btn.border); break;
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: this does not work
|
// FIXME: this does not work
|
||||||
cw = MAX(cnt->rca.w - cnt->space.w, 0);
|
cw = MAX(cnt->rca.w - cnt->space.w, 0);
|
||||||
@ -1274,7 +1274,7 @@ static int position_element(ug_ctx_t *ctx, ug_container_t *cnt, ug_element_t *el
|
|||||||
// handle relative sizes
|
// handle relative sizes
|
||||||
if (rect->w == 0) rca->w = cw - 2*eb;
|
if (rect->w == 0) rca->w = cw - 2*eb;
|
||||||
if (rect->h == 0) rca->h = ch - 2*eb;
|
if (rect->h == 0) rca->h = ch - 2*eb;
|
||||||
// for elements x and y are offsets
|
// for elements x and y are offsets
|
||||||
rca->x = cx + rect->x + eb + m;
|
rca->x = cx + rect->x + eb + m;
|
||||||
rca->y = cy + rect->y + eb + m;
|
rca->y = cy + rect->y + eb + m;
|
||||||
|
|
||||||
@ -1285,7 +1285,7 @@ static int position_element(ug_ctx_t *ctx, ug_container_t *cnt, ug_element_t *el
|
|||||||
|
|
||||||
elem->flags &= ~(ELEM_CLIPPED);
|
elem->flags &= ~(ELEM_CLIPPED);
|
||||||
if (crop_rect(rca, &cnt->rca))
|
if (crop_rect(rca, &cnt->rca))
|
||||||
elem->flags |= ELEM_CLIPPED;
|
elem->flags |= ELEM_CLIPPED;
|
||||||
|
|
||||||
if (TEST(cnt->flags, CNT_LAYOUT_COLUMN)) {
|
if (TEST(cnt->flags, CNT_LAYOUT_COLUMN)) {
|
||||||
cnt->c_orig.y = B_MARGIN((*rca), 0) + eb;
|
cnt->c_orig.y = B_MARGIN((*rca), 0) + eb;
|
||||||
@ -1297,13 +1297,13 @@ static int position_element(ug_ctx_t *ctx, ug_container_t *cnt, ug_element_t *el
|
|||||||
cnt->c_orig.x = L_MARGIN((*rca), 0) + eb;
|
cnt->c_orig.x = L_MARGIN((*rca), 0) + eb;
|
||||||
cnt->c_orig.y = B_MARGIN((*rca), 0) + eb;
|
cnt->c_orig.y = B_MARGIN((*rca), 0) + eb;
|
||||||
}
|
}
|
||||||
|
|
||||||
// expand used space
|
// expand used space
|
||||||
if (R_MARGIN(cnt->space, 0) < R_MARGIN((*rca), -eb))
|
if (R_MARGIN(cnt->space, 0) < R_MARGIN((*rca), -eb))
|
||||||
cnt->space.w = R_MARGIN((*rca), -eb) - L_MARGIN(cnt->space, 0);
|
cnt->space.w = R_MARGIN((*rca), -eb) - L_MARGIN(cnt->space, 0);
|
||||||
if (B_MARGIN(cnt->space, 0) < B_MARGIN((*rca), -eb))
|
if (B_MARGIN(cnt->space, 0) < B_MARGIN((*rca), -eb))
|
||||||
cnt->space.h = B_MARGIN((*rca), -eb) - T_MARGIN(cnt->space, 0);
|
cnt->space.h = B_MARGIN((*rca), -eb) - T_MARGIN(cnt->space, 0);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1378,7 +1378,7 @@ void draw_elements(ug_ctx_t *ctx, ug_container_t *cnt)
|
|||||||
push_rect_command(ctx, &r, col);
|
push_rect_command(ctx, &r, col);
|
||||||
}
|
}
|
||||||
if (draw_txt) {
|
if (draw_txt) {
|
||||||
push_text_command(ctx,
|
push_text_command(ctx,
|
||||||
(ug_vec2_t){
|
(ug_vec2_t){
|
||||||
.x = e->rca.x+eb,
|
.x = e->rca.x+eb,
|
||||||
.y = e->rca.y+eb+e->rca.h/2
|
.y = e->rca.y+eb+e->rca.h/2
|
||||||
|
10
ugui.h
10
ugui.h
@ -11,7 +11,7 @@
|
|||||||
#define SQUARE(x) .w = x, .h = x
|
#define SQUARE(x) .w = x, .h = x
|
||||||
|
|
||||||
// basic types
|
// basic types
|
||||||
typedef unsigned int ug_id_t;
|
typedef unsigned int ug_id_t;
|
||||||
typedef struct { union {int x, w;}; union {int y, h;}; } ug_vec2_t;
|
typedef struct { union {int x, w;}; union {int y, h;}; } ug_vec2_t;
|
||||||
typedef struct { unsigned char a, b, g, r; } ug_color_t;
|
typedef struct { unsigned char a, b, g, r; } ug_color_t;
|
||||||
typedef struct { int x, y, w, h; } ug_rect_t;
|
typedef struct { int x, y, w, h; } ug_rect_t;
|
||||||
@ -19,7 +19,7 @@ typedef struct { union {int i; float f;} size; int unit; } ug_size_t;
|
|||||||
// div has information about the phisical dimension
|
// div has information about the phisical dimension
|
||||||
typedef struct { ug_size_t x, y, w, h;} ug_div_t;
|
typedef struct { ug_size_t x, y, w, h;} ug_div_t;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
UG_UNIT_PX = 0,
|
UG_UNIT_PX = 0,
|
||||||
UG_UNIT_MM,
|
UG_UNIT_MM,
|
||||||
UG_UNIT_PT,
|
UG_UNIT_PT,
|
||||||
@ -46,7 +46,7 @@ enum {
|
|||||||
UG_ELEM_CHECK, // checkbox
|
UG_ELEM_CHECK, // checkbox
|
||||||
UG_ELEM_RADIO, // radio button
|
UG_ELEM_RADIO, // radio button
|
||||||
UG_ELEM_TOGGLE, // toggle button
|
UG_ELEM_TOGGLE, // toggle button
|
||||||
UG_ELEM_LABEL, // simple text
|
UG_ELEM_LABEL, // simple text
|
||||||
UG_ELEM_UPDOWN, // text with two buttons up and down
|
UG_ELEM_UPDOWN, // text with two buttons up and down
|
||||||
UG_ELEM_TEXTINPUT, // text input box
|
UG_ELEM_TEXTINPUT, // text input box
|
||||||
UG_ELEM_TEXTBOX, // text surrounded by a box
|
UG_ELEM_TEXTBOX, // text surrounded by a box
|
||||||
@ -185,7 +185,7 @@ typedef struct {
|
|||||||
ug_id_t active_cnt, last_active_cnt;
|
ug_id_t active_cnt, last_active_cnt;
|
||||||
// id of the selected container, used for layout
|
// id of the selected container, used for layout
|
||||||
// NOTE: since the stacks can be relocated with realloc it is better not
|
// NOTE: since the stacks can be relocated with realloc it is better not
|
||||||
// to use a pointer here, even tough it would be better for efficiency
|
// to use a pointer here, even tough it would be better for efficiency
|
||||||
ug_id_t selected_cnt;
|
ug_id_t selected_cnt;
|
||||||
// count the frames for fun
|
// count the frames for fun
|
||||||
unsigned long int frame;
|
unsigned long int frame;
|
||||||
@ -248,7 +248,7 @@ int ug_container_remove(ug_ctx_t *ctx, const char *name);
|
|||||||
ug_rect_t ug_container_get_rect(ug_ctx_t *ctx, const char *name);
|
ug_rect_t ug_container_get_rect(ug_ctx_t *ctx, const char *name);
|
||||||
|
|
||||||
// layouting, the following functions define how different ui elements are placed
|
// layouting, the following functions define how different ui elements are placed
|
||||||
// inside the selected container. A new element is aligned respective to the
|
// inside the selected container. A new element is aligned respective to the
|
||||||
// previous element and/or to the container, particularly elements can be placed
|
// previous element and/or to the container, particularly elements can be placed
|
||||||
// in a row or a column.
|
// in a row or a column.
|
||||||
int ug_layout_row(ug_ctx_t *ctx);
|
int ug_layout_row(ug_ctx_t *ctx);
|
||||||
|
Loading…
Reference in New Issue
Block a user