From 39516e219a1fb1d34e9260384a2ff03327523709 Mon Sep 17 00:00:00 2001 From: Dr-Noob Date: Thu, 19 Aug 2021 12:12:36 +0200 Subject: [PATCH] [v0.99] Add support to use 3 colors in logo instead of 2. Add colors for new intel logo (which uses 3 colors) --- src/common/args.c | 22 +++++++++++++--------- src/common/ascii.h | 4 ++-- src/common/printer.c | 10 +++++++--- src/common/printer.h | 12 ++++++++---- 4 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/common/args.c b/src/common/args.c index d37c0ae..1d35c36 100644 --- a/src/common/args.c +++ b/src/common/args.c @@ -5,12 +5,13 @@ #include "args.h" #include "global.h" -#define NUM_COLORS 4 +#define NUM_COLORS 5 -#define COLOR_STR_INTEL "intel" -#define COLOR_STR_AMD "amd" -#define COLOR_STR_IBM "ibm" -#define COLOR_STR_ARM "arm" +#define COLOR_STR_INTEL "intel" +#define COLOR_STR_INTEL_NEW "intel-new" +#define COLOR_STR_AMD "amd" +#define COLOR_STR_IBM "ibm" +#define COLOR_STR_ARM "arm" static const char *SYTLES_STR_LIST[] = { [STYLE_EMPTY] = NULL, @@ -156,6 +157,7 @@ bool parse_color(char* optarg_str, struct color*** cs) { bool free_ptr = true; if(strcmp(optarg_str, COLOR_STR_INTEL) == 0) color_to_copy = COLOR_DEFAULT_INTEL; + else if(strcmp(optarg_str, COLOR_STR_INTEL_NEW) == 0) color_to_copy = COLOR_DEFAULT_INTEL_NEW; else if(strcmp(optarg_str, COLOR_STR_AMD) == 0) color_to_copy = COLOR_DEFAULT_AMD; else if(strcmp(optarg_str, COLOR_STR_IBM) == 0) color_to_copy = COLOR_DEFAULT_IBM; else if(strcmp(optarg_str, COLOR_STR_ARM) == 0) color_to_copy = COLOR_DEFAULT_ARM; @@ -169,14 +171,16 @@ bool parse_color(char* optarg_str, struct color*** cs) { strcpy(str_to_parse, color_to_copy); } - ret = sscanf(str_to_parse, "%d,%d,%d:%d,%d,%d:%d,%d,%d:%d,%d,%d", + ret = sscanf(str_to_parse, "%d,%d,%d:%d,%d,%d:%d,%d,%d:%d,%d,%d:%d,%d,%d", &c[0]->R, &c[0]->G, &c[0]->B, &c[1]->R, &c[1]->G, &c[1]->B, &c[2]->R, &c[2]->G, &c[2]->B, - &c[3]->R, &c[3]->G, &c[3]->B); + &c[3]->R, &c[3]->G, &c[3]->B, + &c[4]->R, &c[4]->G, &c[4]->B); - if(ret != 12) { - printErr("Expected to read 12 values for color but read %d", ret); + int expected_colors = 3 * NUM_COLORS; + if(ret != expected_colors) { + printErr("Expected to read %d values for color but read %d", expected_colors, ret); return false; } diff --git a/src/common/ascii.h b/src/common/ascii.h index 6f41cf6..235c2e2 100644 --- a/src/common/ascii.h +++ b/src/common/ascii.h @@ -33,7 +33,7 @@ struct ascii_logo { uint32_t width; uint32_t height; bool replace_blocks; - char color_ascii[8][100]; + char color_ascii[3][100]; char color_text[2][100]; }; @@ -321,7 +321,7 @@ asciiL logo_apple = { ASCII_APPLE, 32, 17, false, {COLOR_FG_WHITE}, // Long variants | ----------------------------------------------------------------------------------------------------------| asciiL logo_amd_l = { ASCII_AMD_L, 62, 19, true, {COLOR_BG_WHITE, COLOR_BG_GREEN}, {COLOR_FG_WHITE, COLOR_FG_GREEN} }; asciiL logo_intel_l = { ASCII_INTEL_L, 62, 19, true, {COLOR_BG_CYAN, COLOR_BG_WHITE}, {COLOR_FG_CYAN, COLOR_FG_WHITE} }; -asciiL logo_intel_l_new = { ASCII_INTEL_L_NEW, 57, 14, true, {COLOR_BG_CYAN, COLOR_BG_WHITE}, {COLOR_FG_CYAN, COLOR_FG_WHITE} }; +asciiL logo_intel_l_new = { ASCII_INTEL_L_NEW, 57, 14, true, {COLOR_BG_CYAN, COLOR_BG_WHITE, COLOR_BG_BLUE}, {COLOR_FG_CYAN, COLOR_FG_WHITE} }; asciiL logo_arm_l = { ASCII_ARM_L, 60, 8, true, {COLOR_BG_CYAN}, {COLOR_FG_WHITE, COLOR_FG_CYAN} }; asciiL logo_ibm_l = { ASCII_IBM_L, 62, 13, true, {COLOR_BG_CYAN, COLOR_FG_WHITE}, {COLOR_FG_CYAN, COLOR_FG_WHITE} }; asciiL logo_unknown = { NULL, 0, 0, false, {COLOR_NONE}, {COLOR_NONE, COLOR_NONE} }; diff --git a/src/common/printer.c b/src/common/printer.c index dd42a48..08f4f0d 100644 --- a/src/common/printer.c +++ b/src/common/printer.c @@ -243,7 +243,7 @@ bool ascii_fits_screen(int termw, struct ascii_logo logo, int lf) { // on logo->replace_blocks void replace_bgbyfg_color(struct ascii_logo* logo) { // Replace background by foreground color - for(int i=0; i < 2; i++) { + for(int i=0; i < 3; i++) { if(logo->color_ascii[i] == NULL) break; if(strcmp(logo->color_ascii[i], COLOR_BG_BLACK) == 0) strcpy(logo->color_ascii[i], COLOR_FG_BLACK); @@ -323,6 +323,7 @@ void choose_ascii_art(struct ascii* art, struct color** cs, struct terminal* ter strcpy(logo->color_text[1], COLOR_NONE); strcpy(logo->color_ascii[0], COLOR_NONE); strcpy(logo->color_ascii[1], COLOR_NONE); + strcpy(logo->color_ascii[2], COLOR_NONE); art->reset[0] = '\0'; break; case STYLE_RETRO: @@ -331,10 +332,11 @@ void choose_ascii_art(struct ascii* art, struct color** cs, struct terminal* ter // fall through case STYLE_FANCY: if(cs != NULL) { - strcpy(logo->color_text[0], rgb_to_ansi(cs[2], false, true)); - strcpy(logo->color_text[1], rgb_to_ansi(cs[3], false, true)); + strcpy(logo->color_text[0], rgb_to_ansi(cs[3], false, true)); + strcpy(logo->color_text[1], rgb_to_ansi(cs[4], false, true)); strcpy(logo->color_ascii[0], rgb_to_ansi(cs[0], logo->replace_blocks, true)); strcpy(logo->color_ascii[1], rgb_to_ansi(cs[1], logo->replace_blocks, true)); + strcpy(logo->color_ascii[2], rgb_to_ansi(cs[2], logo->replace_blocks, true)); } strcpy(art->reset, COLOR_RESET); break; @@ -399,6 +401,7 @@ void print_ascii_generic(struct ascii* art, uint32_t la, int32_t text_space, con if(logo->replace_blocks && logo->art[logo_pos] != ' ') { if(logo->art[logo_pos] == '#') printf("%s%c%s", logo->color_ascii[0], ' ', art->reset); else if(logo->art[logo_pos] == '@') printf("%s%c%s", logo->color_ascii[1], ' ', art->reset); + else if(logo->art[logo_pos] == '%') printf("%s%c%s", logo->color_ascii[2], ' ', art->reset); else printf("%c", logo->art[logo_pos]); } else @@ -652,6 +655,7 @@ void print_ascii_arm(struct ascii* art, uint32_t la, int32_t text_space, const c if(logo->replace_blocks && logo->art[logo_pos] != ' ') { if(logo->art[logo_pos] == '#') printf("%s%c%s", logo->color_ascii[0], ' ', art->reset); else if(logo->art[logo_pos] == '@') printf("%s%c%s", logo->color_ascii[1], ' ', art->reset); + else if(logo->art[logo_pos] == '%') printf("%s%c%s", logo->color_ascii[2], ' ', art->reset); else printf("%c", logo->art[logo_pos]); } else diff --git a/src/common/printer.h b/src/common/printer.h index 6bcf675..382b0fe 100644 --- a/src/common/printer.h +++ b/src/common/printer.h @@ -13,10 +13,14 @@ typedef int STYLE; #include "../arm/midr.h" #endif -#define COLOR_DEFAULT_INTEL "15,125,194:230,230,230:40,150,220:230,230,230" -#define COLOR_DEFAULT_AMD "250,250,250:0,154,102:250,250,250:0,154,102" -#define COLOR_DEFAULT_IBM "92,119,172:92,119,172:240,240,240:92,119,172" -#define COLOR_DEFAULT_ARM "0,145,189:0,145,189:240,240,240:0,145,189" +// +-----------------------------------+-----------------------+ +// | Color logo | Color text | +// | Color 1 | Color 2 | Color 3 | Color 1 | Color 2 | +#define COLOR_DEFAULT_INTEL "015,125,194:230,230,230:000,000,000:040,150,220:230,230,230" +#define COLOR_DEFAULT_INTEL_NEW "030,204,251:250,250,250:000,104,181:230,230,230:030,204,251" +#define COLOR_DEFAULT_AMD "250,250,250:000,154,102:000,000,000:250,250,250:000,154,102" +#define COLOR_DEFAULT_IBM "092,119,172:092,119,172:000,000,000:240,240,240:092,119,172" +#define COLOR_DEFAULT_ARM "000,145,189:000,145,189:000,000,000:240,240,240:000,145,189" #ifdef ARCH_X86 void print_levels(struct cpuInfo* cpu);