From 22c1a167f7e82296ab8f222291b95129df0d6d78 Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Thu, 27 Jan 2022 19:44:50 -0500 Subject: tk: Add border with focus indication to check --- (limited to 'src/tk/check.c') diff --git a/src/tk/check.c b/src/tk/check.c index 3746761..13af1cf 100644 --- a/src/tk/check.c +++ b/src/tk/check.c @@ -28,6 +28,7 @@ struct mftk_check { enum mftk_check_shape shape; int butn_width; int butn_padding; + int butn_border; int state; int label_padding; struct mftk_widget *label; @@ -41,6 +42,14 @@ static SDL_Color _mftk_check_butn_color = { .r = MFTK_COLOR_BACK_R, .g = MFTK_COLOR_BACK_G, .b = MFTK_COLOR_BACK_B, .a = MFTK_COLOR_BACK_A }; +static SDL_Color _mftk_check_bdrn_color = { + .r = MFTK_COLOR_BDRN_R, .g = MFTK_COLOR_BDRN_G, + .b = MFTK_COLOR_BDRN_B, .a = MFTK_COLOR_BDRN_A +}; +static SDL_Color _mftk_check_bdrf_color = { + .r = MFTK_COLOR_BDRF_R, .g = MFTK_COLOR_BDRF_G, + .b = MFTK_COLOR_BDRF_B, .a = MFTK_COLOR_BDRF_A +}; static SDL_Color _mftk_check_mark_color = { .r = MFTK_COLOR_CHKM_R, .g = MFTK_COLOR_CHKM_G, .b = MFTK_COLOR_CHKM_B, .a = MFTK_COLOR_CHKM_A @@ -79,7 +88,7 @@ _mftk_check_layout(struct mftk_widget *w) mftk_widget_layout(c->label); } - w->w = c->butn_width; + w->w = c->butn_width + c->butn_border; if (c->label != NULL) { w->w += c->label_padding + c->label->w; } @@ -221,8 +230,28 @@ _mftk_check_render(struct mftk_widget *w, SDL_Renderer *renderer, int x, int y) { struct mftk_check *c = (struct mftk_check *) w; SDL_Rect rect; + SDL_Color *border; int e = 0; + rect.x = x - c->butn_border; + rect.y = y - c->butn_border; + rect.w = c->butn_width + c->butn_border * 2; + rect.h = c->butn_width + c->butn_border * 2; + if (w->focused == SDL_TRUE) { + border = &_mftk_check_bdrf_color; + } else { + border = &_mftk_check_bdrn_color; + } + if (c->shape == MFTK_CHECK_SHAPE_BOX) { + if (_mftk_check_render_box(&rect, border, renderer) < 0) { + e = -1; + } + } else { + if (_mftk_check_render_cir(&rect, border, renderer) < 0) { + e = -1; + } + } + rect.x = x; rect.y = y; rect.w = c->butn_width; @@ -278,9 +307,10 @@ _mftk_check_destroy(struct mftk_widget *w) } struct mftk_widget * -mftk_check_new(int butn_width, int butn_padding, int state, int label_padding, - TTF_Font *font, const char *text, int (*action)(void *, int), - int (*submit)(void *), void *user_data, SDL_Renderer *renderer) +mftk_check_new(int butn_width, int butn_padding, int butn_border, int state, + int label_padding, TTF_Font *font, const char *text, + int (*action)(void *, int), int (*submit)(void *), + void *user_data, SDL_Renderer *renderer) { struct mftk_widget *w; struct mftk_check *c; @@ -298,6 +328,7 @@ mftk_check_new(int butn_width, int butn_padding, int state, int label_padding, c->shape = MFTK_CHECK_SHAPE_BOX; c->butn_width = butn_width; c->butn_padding = butn_padding; + c->butn_border = butn_border; c->state = state; c->label_padding = label_padding; c->steals_focus = SDL_TRUE; -- cgit v0.9.1