From 177933878b41c1af3d295edb96964e38f8fbc0d8 Mon Sep 17 00:00:00 2001 From: markmental Date: Mon, 30 Mar 2026 12:41:11 -0400 Subject: [PATCH] Adds bevel to preview panel --- src/theme.h | 2 +- src/ui.c | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/theme.h b/src/theme.h index 9a4b52f..a37b309 100644 --- a/src/theme.h +++ b/src/theme.h @@ -360,7 +360,7 @@ static const GuideTheme GUIDE_THEMES[GUIDE_THEME_COUNT] = { .block_active_mid = {0x33,0xff,0x00,0xff}, .block_active_bottom = {0x15,0x6e,0x15,0xff}, .block_text = {0x33,0xff,0x00,0xff}, - .block_active_text = {0xf5,0xf5,0xf0,0xff}, + .block_active_text = {0x00,0x00,0x00,0xff}, .block_border = {0x4a,0x8a,0x4a,0xff}, .block_active_border = {0x6a,0xff,0x4a,0xff}, .selection_edge = {0x33,0xff,0x00,0xff}, diff --git a/src/ui.c b/src/ui.c index cb64546..cefcd5f 100644 --- a/src/ui.c +++ b/src/ui.c @@ -195,13 +195,21 @@ static void draw_gloss_line(SDL_Renderer *renderer, const SDL_Rect *rect, SDL_Co } static void draw_panel_bevel(SDL_Renderer *renderer, const SDL_Rect *rect, SDL_Color gloss_color) { - SDL_Rect top_white = {rect->x + 8, rect->y, SDL_max(rect->w - 16, 0), 1}; - SDL_Rect top_black = {rect->x + 8, rect->y + 1, SDL_max(rect->w - 16, 0), 1}; + SDL_Rect top_highlight = {rect->x + 4, rect->y + 1, SDL_max(rect->w - 8, 0), 2}; + SDL_Rect left_highlight = {rect->x + 1, rect->y + 4, 2, SDL_max(rect->h - 8, 0)}; + SDL_Rect inner_shadow_top = {rect->x + 4, rect->y + 3, SDL_max(rect->w - 8, 0), 1}; + SDL_Rect right_shadow = {rect->x + rect->w - 3, rect->y + 3, 2, SDL_max(rect->h - 6, 0)}; + SDL_Rect bottom_shadow = {rect->x + 3, rect->y + rect->h - 3, SDL_max(rect->w - 6, 0), 2}; - if (top_white.w > 0) { - fill_rect_alpha(renderer, &top_white, color_with_alpha(gloss_color, 72)); - fill_rect_alpha(renderer, &top_black, (SDL_Color){0, 0, 0, 28}); + if (!rect || rect->w <= 6 || rect->h <= 6) { + return; } + + fill_rect_alpha(renderer, &top_highlight, color_with_alpha(gloss_color, 96)); + fill_rect_alpha(renderer, &left_highlight, color_with_alpha(gloss_color, 64)); + fill_rect_alpha(renderer, &inner_shadow_top, (SDL_Color){0, 0, 0, 34}); + fill_rect_alpha(renderer, &right_shadow, (SDL_Color){0, 0, 0, 56}); + fill_rect_alpha(renderer, &bottom_shadow, (SDL_Color){0, 0, 0, 64}); } static void stroke_rect_alpha(SDL_Renderer *renderer, const SDL_Rect *rect, SDL_Color color) { @@ -524,6 +532,7 @@ static void draw_mini_status_bar(SDL_Renderer *renderer, theme->status_mid, blend_color(theme->status_bottom, theme->status_mid, 220)); stroke_rect(renderer, rect, theme->panel_border); + draw_panel_bevel(renderer, rect, theme->gloss); format_time_compact(clock_text, sizeof(clock_text), now_wall); if (TTF_SizeUTF8(font, clock_text, &time_width, NULL) != 0) { @@ -578,6 +587,7 @@ static void draw_info_panel(SDL_Renderer *renderer, fill_rect(renderer, rect, theme->panel_fill); stroke_rect(renderer, rect, theme->panel_border); + draw_panel_bevel(renderer, rect, theme->gloss); accent = (SDL_Rect){rect->x + 1, rect->y + 1, rect->w - 2, 36}; fill_rect(renderer, &accent, blend_color(theme->panel_fill, theme->ribbon_mid, 40)); @@ -973,6 +983,8 @@ void ui_render_guide(SDL_Renderer *renderer, draw_info_panel(renderer, fonts, theme, selected_channel_ptr, &info_panel, app_start_time, guide_focus_time); draw_panel_shadow(renderer, &preview); fill_rect(renderer, &preview, COLOR_BLACK); + stroke_rect(renderer, &preview, theme->panel_border); + draw_panel_bevel(renderer, &preview, theme->gloss); draw_video(renderer, video_texture, texture_width, texture_height, preview); draw_mini_status_bar(renderer, fonts->small, theme, selected_channel_ptr, &mini_status_bar, now_wall);