Trianglix 4.

This commit is contained in:
Jonas 'Sortie' Termansen 2021-12-24 00:19:51 +01:00
parent c3549dc90b
commit 75dfa634db
1 changed files with 40 additions and 21 deletions

View File

@ -1178,6 +1178,18 @@ static void RenderSenaryDigit(FrameBufferInfo fb, unsigned int digit,
static void RenderBackground(FrameBufferInfo fb, struct Desktop* desktop)
{
uint32_t green_color = MakeColor(0, 220, 0);
uint32_t bright_green_color = MakeColor(0, 255, 0);
uint32_t red_color = MakeColor(255, 0, 0);
uint32_t bright_red_color = MakeColor(255, 255, 255);
uint32_t text_color = desktop->object->is_core() ? green_color : MakeColor(255, 255, 255);
uint32_t selected_text_color = desktop->object->is_core() ? bright_green_color : MakeColor(255, 222, 0);
uint32_t emotional_color = desktop->object->is_core() ? text_color : red_color;
uint32_t very_emotional_color = desktop->object->is_core() ? bright_green_color : bright_red_color;
bool was_runes = use_runes;
use_runes = use_runes || desktop->object->is_core();
if ( desktop->object->is_unstable_core() )
@ -1216,12 +1228,15 @@ static void RenderBackground(FrameBufferInfo fb, struct Desktop* desktop)
struct timespec now;
clock_gettime(CLOCK_REALTIME, &now);
RenderSenaryDigit(fb, now.tv_sec/(6*6*6*6*6) % 6, MakeColor(255, 255, 255), MakeColor(255, 100, 100), 15, fb.xres-SENARY_FONT_WIDTH*(6+1));
RenderSenaryDigit(fb, now.tv_sec/(6*6*6*6) % 6, MakeColor(255, 255, 255), MakeColor(255, 100, 100), 15, fb.xres-SENARY_FONT_WIDTH*(5+1));
RenderSenaryDigit(fb, now.tv_sec/(6*6*6) % 6, MakeColor(255, 255, 255), MakeColor(255, 100, 100), 15, fb.xres-SENARY_FONT_WIDTH*(4+1));
RenderSenaryDigit(fb, now.tv_sec/(6*6) % 6, MakeColor(255, 255, 255), MakeColor(255, 100, 100), 15, fb.xres-SENARY_FONT_WIDTH*(3+1));
RenderSenaryDigit(fb, now.tv_sec/6 % 6, MakeColor(255, 255, 255), MakeColor(255, 100, 100), 15, fb.xres-SENARY_FONT_WIDTH*(2+1));
RenderSenaryDigit(fb, now.tv_sec/1 % 6, MakeColor(255, 255, 255), MakeColor(255, 100, 100), 15, fb.xres-SENARY_FONT_WIDTH*(1+1));
uint32_t digit_pri = text_color;
uint32_t digit_sec = desktop->object->is_core() ? green_color : MakeColor(255, 100, 100);
RenderSenaryDigit(fb, now.tv_sec/(6*6*6*6*6) % 6, digit_pri, digit_sec, 15, fb.xres-SENARY_FONT_WIDTH*(6+1));
RenderSenaryDigit(fb, now.tv_sec/(6*6*6*6) % 6, digit_pri, digit_sec, 15, fb.xres-SENARY_FONT_WIDTH*(5+1));
RenderSenaryDigit(fb, now.tv_sec/(6*6*6) % 6, digit_pri, digit_sec, 15, fb.xres-SENARY_FONT_WIDTH*(4+1));
RenderSenaryDigit(fb, now.tv_sec/(6*6) % 6, digit_pri, digit_sec, 15, fb.xres-SENARY_FONT_WIDTH*(3+1));
RenderSenaryDigit(fb, now.tv_sec/6 % 6, digit_pri, digit_sec, 15, fb.xres-SENARY_FONT_WIDTH*(2+1));
RenderSenaryDigit(fb, now.tv_sec/1 % 6, digit_pri, digit_sec, 15, fb.xres-SENARY_FONT_WIDTH*(1+1));
struct timespec xtime = desktop->experienced_time;
@ -1252,8 +1267,8 @@ static void RenderBackground(FrameBufferInfo fb, struct Desktop* desktop)
int slogan_pos_x = (fb.xres - slogan_width) / 2;
int slogan_pos_y = 15;
uint32_t slogan_color = desktop->angry ?
MakeColor(255, 0, 0) :
MakeColor(255, 255, 255);
emotional_color :
text_color;
RenderText(fb, slogan, slogan_color, slogan_pos_x, slogan_pos_y, INT_MAX, INT_MAX);
bool show_warning = !desktop->flashing_warning || xtime.tv_nsec < 500000000;
@ -1265,8 +1280,8 @@ static void RenderBackground(FrameBufferInfo fb, struct Desktop* desktop)
int warning_pos_x = (fb.xres - warning_width) / 2;
int warning_pos_y = 15 + FONT_HEIGHT * 2;
uint32_t warning_color = desktop->critical_warning ?
MakeColor(255, 0, 0) :
MakeColor(255, 255, 255);
very_emotional_color :
text_color;
bool used_runes = use_runes;
use_runes = use_runes || desktop->rune_warning;
RenderText(fb, warning, warning_color, warning_pos_x, warning_pos_y, INT_MAX, INT_MAX);
@ -1280,7 +1295,7 @@ static void RenderBackground(FrameBufferInfo fb, struct Desktop* desktop)
int title_width = (int) title_length * (FONT_WIDTH+1);
int title_pos_x = (fb.xres - title_width) / 2;
int title_pos_y = fb.yres - 15 - FONT_HEIGHT;
uint32_t title_color = MakeColor(255, 255, 255);
uint32_t title_color = text_color;
RenderText(fb, title, title_color, title_pos_x, title_pos_y, INT_MAX, INT_MAX);
int alpha = (uint8_t) ((sin(desktop->color_angle) + 1.0f) * 128.f);
@ -1289,13 +1304,17 @@ static void RenderBackground(FrameBufferInfo fb, struct Desktop* desktop)
if ( 255 < alpha )
alpha = 255;
uint32_t pri_color = desktop->object->is_core() && !desktop->object->is_unstable_core() ?
MakeColor(255, 255, 255, alpha) :
uint32_t pri_color = desktop->object->is_core() ?
is_angry ?
MakeColor(0, 255, 0, alpha) :
MakeColor(0, 160, 0, alpha) :
is_angry ?
MakeColor(114, 21, 36, alpha) :
MakeColor(255, 222, 0, alpha);
uint32_t sec_color = desktop->object->is_core() && !desktop->object->is_unstable_core() ?
MakeColor(255, 255, 255, 255) :
uint32_t sec_color = desktop->object->is_core()?
is_angry ?
MakeColor(0, 32, 0, 255) :
MakeColor(0, 160, 0, 255) :
is_angry ?
MakeColor(255, 0, 0, 255) :
MakeColor(114, 255, 36, 255);
@ -1342,7 +1361,7 @@ static void RenderBackground(FrameBufferInfo fb, struct Desktop* desktop)
int help_height = FONT_HEIGHT;
int help_pos_x = (fb.xres - help_width) / 2;
int help_pos_y = 15 + (3 + i) * (help_height);
RenderTextShadow(fb, help, MakeColor(255, 255, 255), help_pos_x, help_pos_y, INT_MAX, INT_MAX);
RenderTextShadow(fb, help, text_color, help_pos_x, help_pos_y, INT_MAX, INT_MAX);
}
use_runes = was_runes;
@ -1351,8 +1370,8 @@ static void RenderBackground(FrameBufferInfo fb, struct Desktop* desktop)
float normal_dist = size * 2.0;
uint32_t unselected_color = MakeColor(255, 255, 255);
uint32_t selected_color = MakeColor(255, 222, 0);
uint32_t unselected_color = text_color;
uint32_t selected_color = selected_text_color;
for ( size_t i = 0; i < desktop->num_actions; i++ )
{
float dist = normal_dist;
@ -1386,7 +1405,7 @@ static void RenderBackground(FrameBufferInfo fb, struct Desktop* desktop)
int command_height = FONT_HEIGHT;
int command_pos_x = (fb.xres - command_width) / 2;
int command_pos_y = (fb.yres - command_height) / 2;
RenderTextShadow(fb, command, MakeColor(255, 255, 255), command_pos_x, command_pos_y, INT_MAX, INT_MAX);
RenderTextShadow(fb, command, text_color, command_pos_x, command_pos_y, INT_MAX, INT_MAX);
if ( is_password_prompt )
free(password_command);
@ -1396,7 +1415,7 @@ static void RenderBackground(FrameBufferInfo fb, struct Desktop* desktop)
int prompt_height = FONT_HEIGHT;
int prompt_pos_x = (fb.xres - prompt_width) / 2;
int prompt_pos_y = (fb.yres - prompt_height) / 2 - FONT_HEIGHT - 2;
RenderTextShadow(fb, prompt, MakeColor(255, 255, 255), prompt_pos_x, prompt_pos_y, INT_MAX, INT_MAX);
RenderTextShadow(fb, prompt, text_color, prompt_pos_x, prompt_pos_y, INT_MAX, INT_MAX);
const char* error = desktop->object->error_message();
int error_length = strlen(error);
@ -1404,7 +1423,7 @@ static void RenderBackground(FrameBufferInfo fb, struct Desktop* desktop)
int error_height = FONT_HEIGHT;
int error_pos_x = (fb.xres - error_width) / 2;
int error_pos_y = (fb.yres - error_height) / 2 + FONT_HEIGHT - 2;
RenderText(fb, error, MakeColor(255, 0, 0), error_pos_x, error_pos_y, INT_MAX, INT_MAX);
RenderText(fb, error, emotional_color, error_pos_x, error_pos_y, INT_MAX, INT_MAX);
use_runes = was_runes;
}