From 5bdc4d2f180717c23fb469bcb9e044876e07cf94 Mon Sep 17 00:00:00 2001 From: Andreas Eversberg Date: Fri, 24 Sep 2021 16:09:19 +0200 Subject: [PATCH] Refactoring ASCCI-Art image printing --- libaaimage/Makefile.am | 7 ++++ libaaimage/aaimage.c | 74 +++++++++++++++++++++++++++++++++++++++++ libaaimage/aaimage.h | 3 ++ libmobile/image.h | 3 -- libmobile/main_mobile.c | 4 +-- 5 files changed, 86 insertions(+), 5 deletions(-) create mode 100644 libaaimage/Makefile.am create mode 100644 libaaimage/aaimage.c create mode 100644 libaaimage/aaimage.h delete mode 100644 libmobile/image.h diff --git a/libaaimage/Makefile.am b/libaaimage/Makefile.am new file mode 100644 index 0000000..80122aa --- /dev/null +++ b/libaaimage/Makefile.am @@ -0,0 +1,7 @@ +AM_CPPFLAGS = -Wall -Wextra -g $(all_includes) + +noinst_LIBRARIES = libaaimage.a + +libaaimage_a_SOURCES = \ + aaimage.c + diff --git a/libaaimage/aaimage.c b/libaaimage/aaimage.c new file mode 100644 index 0000000..8e8b757 --- /dev/null +++ b/libaaimage/aaimage.c @@ -0,0 +1,74 @@ + +#include +#include +#include +#include "aaimage.h" + +extern const char *aaimage[]; + +void print_aaimage(void) +{ + int i, j; + + for (i = 0; aaimage[i]; i++) { + for (j = 0; j < (int)strlen(aaimage[i]); j++) { + if (aaimage[i][j] == '@') { + j++; + switch(aaimage[i][j]) { + case 'k': /* black */ + printf("\033[0;30m"); + break; + case 'r': /* red */ + printf("\033[0;31m"); + break; + case 'g': /* green */ + printf("\033[0;32m"); + break; + case 'y': /* yellow */ + printf("\033[0;33m"); + break; + case 'b': /* blue */ + printf("\033[0;34m"); + break; + case 'm': /* magenta */ + printf("\033[0;35m"); + break; + case 'c': /* cyan */ + printf("\033[0;36m"); + break; + case 'w': /* white */ + printf("\033[0;37m"); + break; + case 'K': /* bright black */ + printf("This will not work on some terminals, please use 'w'\n"); + abort(); + case 'R': /* bright red */ + printf("\033[1;31m"); + break; + case 'G': /* bright green */ + printf("\033[1;32m"); + break; + case 'Y': /* bright yellow */ + printf("\033[1;33m"); + break; + case 'B': /* bright blue */ + printf("\033[1;34m"); + break; + case 'M': /* bright magenta */ + printf("\033[1;35m"); + break; + case 'C': /* bright cyan */ + printf("\033[1;36m"); + break; + case 'W': /* bright white */ + printf("\033[1;37m"); + break; + } + } else + printf("%c", aaimage[i][j]); + } + printf("\n"); + } + printf("\033[0;39m"); +} + diff --git a/libaaimage/aaimage.h b/libaaimage/aaimage.h new file mode 100644 index 0000000..2e4ef8b --- /dev/null +++ b/libaaimage/aaimage.h @@ -0,0 +1,3 @@ + +void print_aaimage(void); + diff --git a/libmobile/image.h b/libmobile/image.h deleted file mode 100644 index 08a6f5b..0000000 --- a/libmobile/image.h +++ /dev/null @@ -1,3 +0,0 @@ - -void print_image(void); - diff --git a/libmobile/main_mobile.c b/libmobile/main_mobile.c index e2513d9..c0221e8 100644 --- a/libmobile/main_mobile.c +++ b/libmobile/main_mobile.c @@ -41,7 +41,7 @@ #endif #include "../liboptions/options.h" #include "../libfm/fm.h" -#include "image.h" +#include "../libaaimage/aaimage.h" #define DEFAULT_LO_OFFSET -1000000.0 @@ -519,7 +519,7 @@ void main_mobile(const char *name, int *quit, void (*myhandler)(void), const cha return; if (!loopback) - print_image(); + print_aaimage(); /* real time priority */ if (rt_prio > 0) {