#define RED      "\x1b[31m"
#define GREEN    "\x1b[32m"
#define YELLOW   "\x1b[33m"
#define BLUE     "\x1b[34m"
#define MAGENTA  "\x1b[35m"
#define CYAN     "\x1b[36m"
#define GRAY     "\x1b[37m"
#define DARKGRAY "\x1b[30m"

#define BG_BLACK   "\x1b[48;5;232m"
#define BG_RED     "\x1b[41m"
#define BG_GREEN   "\x1b[42m"
#define BG_YELLOW  "\x1b[43m"
#define BG_BLUE    "\x1b[44m"
#define BG_MAGENTA "\x1b[45m"
#define BG_CYAN    "\x1b[46m"
#define RESET      "\x1b[0m"
#define BOLD       "\x1b[1m"

// on background black
#define bprintf(code, format, ...)                                             \
    printf(code BG_BLACK format RESET, ##__VA_ARGS__)

// normal printout
#define cprintf(code, format, ...) printf(code format RESET, ##__VA_ARGS__)
/*

Code examples

example 1 (a snippet):


#ifdef MARTIN
        cprintf(BLUE, "LL Write - Len: %2d - If: %X - Data: ",buffer_len,
ll->ll_fifo_base); for (i=0; i < buffer_len/4; i++) cprintf(BLUE, "%.8X
",*(((unsigned *) buffer)+i)); printf("\n"); #endif

#ifdef MARTIN
        cprintf(CYAN, "LL Read - If: %X - Data: ",ll->ll_fifo_base);
#endif



example 2:

int main()
{
        int i=1;
        printf("Normal %i\n", i);
        cprintf(RED, "Red\n");
        cprintf(GREEN, "Green\n");
        cprintf(YELLOW, "Yellow\n");
        cprintf(BLUE, "Blue\n");
        cprintf(MAGENTA, "Mangenta %i\n", i);
        cprintf(CYAN, "Cyan %i\n", i);
        cprintf(BOLD, "White %i\n", i);
        cprintf(RED BOLD, "Red %i\n", i);
        cprintf(GREEN BOLD, "Green\n");
        cprintf(YELLOW BOLD, "Yellow\n");
        cprintf(BLUE BOLD, "Blue\n");
        cprintf(MAGENTA BOLD, "Mangenta %i\n", i);
        cprintf(CYAN BOLD, "Cyan %i\n", i);
}

*/