From 80825e620c0ca4b6ef8281d5173bba579bc67e0c Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Sun, 14 Sep 2025 13:30:11 +0200 Subject: [PATCH] Ansicodes --- ansicodes/Makefile | 14 ++++++++++ ansicodes/ansi.h | 64 ++++++++++++++++++++++++++++++++++++++++++++++ ansicodes/main.c | 58 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 136 insertions(+) create mode 100644 ansicodes/Makefile create mode 100644 ansicodes/ansi.h create mode 100644 ansicodes/main.c diff --git a/ansicodes/Makefile b/ansicodes/Makefile new file mode 100644 index 0000000..d246f81 --- /dev/null +++ b/ansicodes/Makefile @@ -0,0 +1,14 @@ +CC = gcc +CFLAGS = -Wall -O2 + +TARGET = main.elf +SRC = main.c + +#LDFLAGS = + +$(TARGET): $(SRC) + @echo CC $@ + @$(CC) $(CFLAGS) -o $@ $^ $(LDFLAGS) + +clean: + rm -f $(TARGET) diff --git a/ansicodes/ansi.h b/ansicodes/ansi.h new file mode 100644 index 0000000..627fa51 --- /dev/null +++ b/ansicodes/ansi.h @@ -0,0 +1,64 @@ +#ifndef ANSI_H +#define ANSI_H + +/* Set this to make all the codes no-ops */ +//#define ANSI_DISABLE + +#ifndef ANSI_DISABLE +#define ESC(x) x +#else +#define ESC(x) +#endif + +/* Reset */ +#define ANSI_RESET ESC("\033[0m") + +/* Styles */ +#define ANSI_BOLD ESC("\033[1m") +#define ANSI_DIM ESC("\033[2m") +#define ANSI_UNDER ESC("\033[4m") +#define ANSI_BLINK ESC("\033[5m") +#define ANSI_REV ESC("\033[7m") +#define ANSI_HIDDEN ESC("\033[8m") + +/* Foreground colors */ +#define ANSI_FG_BLACK ESC("\033[30m") +#define ANSI_FG_RED ESC("\033[31m") +#define ANSI_FG_GREEN ESC("\033[32m") +#define ANSI_FG_YELLOW ESC("\033[33m") +#define ANSI_FG_BLUE ESC("\033[34m") +#define ANSI_FG_MAGENTA ESC("\033[35m") +#define ANSI_FG_CYAN ESC("\033[36m") +#define ANSI_FG_WHITE ESC("\033[37m") + +/* Bright foreground colors */ +#define ANSI_FG_BBLACK ESC("\033[90m") +#define ANSI_FG_BRED ESC("\033[91m") +#define ANSI_FG_BGREEN ESC("\033[92m") +#define ANSI_FG_BYELLOW ESC("\033[93m") +#define ANSI_FG_BBLUE ESC("\033[94m") +#define ANSI_FG_BMAGENTA ESC("\033[95m") +#define ANSI_FG_BCYAN ESC("\033[96m") +#define ANSI_FG_BWHITE ESC("\033[97m") + +/* Background colors */ +#define ANSI_BG_BLACK ESC("\033[40m") +#define ANSI_BG_RED ESC("\033[41m") +#define ANSI_BG_GREEN ESC("\033[42m") +#define ANSI_BG_YELLOW ESC("\033[43m") +#define ANSI_BG_BLUE ESC("\033[44m") +#define ANSI_BG_MAGENTA ESC("\033[45m") +#define ANSI_BG_CYAN ESC("\033[46m") +#define ANSI_BG_WHITE ESC("\033[47m") + +/* Bright background colors */ +#define ANSI_BG_BBLACK ESC("\033[100m") +#define ANSI_BG_BRED ESC("\033[101m") +#define ANSI_BG_BGREEN ESC("\033[102m") +#define ANSI_BG_BYELLOW ESC("\033[103m") +#define ANSI_BG_BBLUE ESC("\033[104m") +#define ANSI_BG_BMAGENTA ESC("\033[105m") +#define ANSI_BG_BCYAN ESC("\033[106m") +#define ANSI_BG_BWHITE ESC("\033[107m") + +#endif // ANSI_H diff --git a/ansicodes/main.c b/ansicodes/main.c new file mode 100644 index 0000000..bf9773f --- /dev/null +++ b/ansicodes/main.c @@ -0,0 +1,58 @@ +#include "ansi.h" +#include +#include +#include +#include + +int main(int argc, char *argv[]) { + + if (!isatty(STDOUT_FILENO) || !(getenv("TERM") && strcmp(getenv("TERM"), "dumb") != 0)) { + printf("This terminal does not seem to support ANSI\n"); + exit(EXIT_FAILURE); + } + + printf(ANSI_BOLD "ABCDE" ANSI_RESET "\n"); + printf(ANSI_DIM "ABCDE" ANSI_RESET "\n"); + printf(ANSI_UNDER "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BLINK "ABCDE" ANSI_RESET "\n"); + printf(ANSI_REV "ABCDE" ANSI_RESET "\n"); + printf(ANSI_HIDDEN "ABCDE" ANSI_RESET "\n"); + + printf(ANSI_FG_BLACK "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_RED "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_GREEN "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_YELLOW "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_BLUE "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_MAGENTA "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_CYAN "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_WHITE "ABCDE" ANSI_RESET "\n"); + + printf(ANSI_FG_BBLACK "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_BRED "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_BGREEN "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_BYELLOW "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_BBLUE "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_BMAGENTA "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_BCYAN "ABCDE" ANSI_RESET "\n"); + printf(ANSI_FG_BWHITE "ABCDE" ANSI_RESET "\n"); + + printf(ANSI_BG_BLACK "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_RED "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_GREEN "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_YELLOW "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_BLUE "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_MAGENTA "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_CYAN "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_WHITE "ABCDE" ANSI_RESET "\n"); + + printf(ANSI_BG_BBLACK "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_BRED "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_BGREEN "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_BYELLOW "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_BBLUE "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_BMAGENTA "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_BCYAN "ABCDE" ANSI_RESET "\n"); + printf(ANSI_BG_BWHITE "ABCDE" ANSI_RESET "\n"); + + exit(EXIT_SUCCESS); +}