From 63e9621d560c937d9c725d153cab91da0eb582af Mon Sep 17 00:00:00 2001 From: MysterD Date: Sat, 19 Jun 2021 01:21:25 -0700 Subject: [PATCH] DJUI: Added drop shadow to text --- src/pc/djui/djui_button.c | 3 ++- src/pc/djui/djui_text.c | 17 ++++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/pc/djui/djui_button.c b/src/pc/djui/djui_button.c index 3ee5fa64d..36649d2c3 100644 --- a/src/pc/djui/djui_button.c +++ b/src/pc/djui/djui_button.c @@ -17,7 +17,7 @@ struct DjuiButton* djui_button_create(struct DjuiBase* parent, const char* messa struct DjuiRect* rect = djui_rect_create(&button->base); djui_base_set_size_type(&rect->base, DJUI_SVT_RELATIVE, DJUI_SVT_RELATIVE); djui_base_set_size(&rect->base, 1.0f, 1.0f); - djui_base_set_color(&rect->base, 225, 225, 225, 255); + djui_base_set_color(&rect->base, 200, 200, 200, 255); button->rect = rect; struct DjuiText* text = djui_text_create(&rect->base, message); @@ -25,6 +25,7 @@ struct DjuiButton* djui_button_create(struct DjuiBase* parent, const char* messa djui_base_set_size(&text->base, 1.0f, 1.0f); djui_base_set_color(&text->base, 11, 11, 11, 255); djui_text_set_alignment(text, DJUI_HALIGN_CENTER, DJUI_VALIGN_CENTER); + djui_text_set_drop_shadow(text, 0, 0, 0, 64); button->text = text; return button; diff --git a/src/pc/djui/djui_text.c b/src/pc/djui/djui_text.c index b2216b639..653b10d52 100644 --- a/src/pc/djui/djui_text.c +++ b/src/pc/djui/djui_text.c @@ -51,7 +51,7 @@ static void djui_text_translate(f32 x, f32 y) { sTextRenderY += y; } -static void djui_text_render_char(struct DjuiText* text, u8 d) { +static void djui_text_render_single_char(struct DjuiText* text, u8 d) { struct DjuiBaseRect* comp = &text->base.comp; f32 dX = comp->x + sTextRenderX * text->fontSize; @@ -70,6 +70,21 @@ static void djui_text_render_char(struct DjuiText* text, u8 d) { sTextRenderLastY = sTextRenderY; } +static void djui_text_render_char(struct DjuiText* text, u8 d) { + if (text->dropShadow.a > 0) { + // render drop shadow + struct DjuiBase* base = &text->base; + sTextRenderX += 0.5f; + sTextRenderY += 0.5f; + gDPSetEnvColor(gDisplayListHead++, text->dropShadow.r, text->dropShadow.g, text->dropShadow.b, text->dropShadow.a); + djui_text_render_single_char(text, d); + gDPSetEnvColor(gDisplayListHead++, base->color.r, base->color.g, base->color.b, base->color.a); + sTextRenderX -= 0.5f; + sTextRenderY -= 0.5f; + } + djui_text_render_single_char(text, d); +} + static f32 djui_text_measure_word_width(char* message) { f32 width = 0; while (*message != '\0') {