Last active
July 14, 2020 17:13
-
-
Save KillerGoldFisch/6e6fcacd7b2f2124aa78fc14ff568200 to your computer and use it in GitHub Desktop.
Color printing using printf under Microsoft Windows C/C++ https://ravehgonen.wordpress.com/2011/11/09/color-printing-using-printf-under-microsoft-windows-cc/
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "cfprintf.h" | |
#ifdef _WIN32 | |
#include <windows.h> | |
static HANDLE hConsole = 0; | |
#define BACK_TO_DEFAULT (15) | |
#else | |
#include <stdlib.h> | |
#include <string.h> | |
#include <stdarg.h> | |
#define BACK_TO_DEFAULT "\33[0m" | |
// black blue lgtgrn green red purple olive gray silver blue lgtgrn blue red purple yellow white | |
const char *FGs[] = { "1m" , "34m", "32m", "32m", "31m", "35m", "36m" , "37m", "37m", "34m", "32m", "34m", "31m", "35m", "33m", "m" }; | |
// black blue lgtgrn green red purple olive gray silver blue lgtgrn blue red purple yellow white | |
const char *BGs[] = { "40m", "44m", "42m", "46m", "41m", "45m", "46m" , "47m", "47m", "44m", "46m", "44m", "41m", "45m", "43m", "m" }; | |
#endif | |
void cfprintf_init() { | |
#ifdef _WIN32 | |
if (hConsole) | |
return; | |
hConsole = GetStdHandle(STD_OUTPUT_HANDLE); | |
#else | |
#endif | |
} | |
int qsort_positions(const void *x, const void *y) { | |
// Returns -1 if x < y | |
// 0 if x == y | |
// +1 if x > y | |
size_t *xx = (size_t*)x; | |
size_t *yy = (size_t*)y; | |
if (*xx < *yy) return -1; | |
else if (*xx > *yy) return 1; | |
else return 0; | |
} | |
int cfprintf(FILE *fout, const char *fmt, ...) { | |
struct POS { | |
size_t start, finish; | |
int color; | |
}; | |
size_t pos_counter; | |
struct POS pos[128]; | |
char *pos_0, *pos_1, *pos_2; | |
char *sptr; | |
va_list argp; | |
int c; | |
size_t cc; | |
const char *clrs[] = { | |
// 16 Colors for each of the following Backgrounds: | |
// BLACK BLUE GREEN DEEP GREEN DARK RED PURPLE OLIVE GRAY GRAY BLUE LIGHT GREEN LGT BLUE RED PURPLE YELLOW WHITE | |
"blackblack" ,"navyblack" ,"greenblack" ,"tealblack" ,"maroonblack" ,"purpleblack" ,"oliveblack" ,"silverblack" ,"grayblack" ,"blueblack" ,"limeblack" ,"aquablack","redblack","fuchsiablack","yellowblack","whiteblack", | |
"blacknavy" ,"navynavy" ,"greennavy" ,"tealnavy" ,"maroonnavy" ,"purplenavy" ,"olivenavy" ,"silvernavy" ,"graynavy" ,"bluenavy" ,"limenavy" ,"aquanavy","rednavy","fuchsianavy","yellownavy","whitenavy", | |
"blackgreen" ,"navygreen" ,"greengreen" ,"tealgreen" ,"maroongreen" ,"purplegreen" ,"olivegreen" ,"silvergreen" ,"graygreen" ,"bluegreen" ,"limegreen" ,"aquagreen","redgreen","fuchsiagreen","yellowgreen","whitegreen", | |
"blackteal" ,"navyteal" ,"greenteal" ,"tealteal" ,"maroonteal" ,"purpleteal" ,"oliveteal" ,"silverteal" ,"grayteal" ,"blueteal" ,"limeteal" ,"aquateal","redteal","fuchsiateal","yellowteal","whiteteal", | |
"blackmaroon" ,"navymaroon" ,"greenmaroon" ,"tealmaroon" ,"maroonmaroon" ,"purplemaroon" ,"olivemaroon" ,"silvermaroon" ,"graymaroon" ,"bluemaroon" ,"limemaroon" ,"aquamaroon","redmaroon","fuchsiamaroon","yellowmaroon","whitemaroon", | |
"blackpurple" ,"navypurple" ,"greenpurple" ,"tealpurple" ,"maroonpurple" ,"purplepurple" ,"olivepurple" ,"silverpurple" ,"graypurple" ,"bluepurple" ,"limepurple" ,"aquapurple","redpurple","fuchsiapurple","yellowpurple","whitepurple", | |
"blackolive" ,"navyolive" ,"greenolive" ,"tealolive" ,"maroonolive" ,"purpleolive" ,"oliveolive" ,"silverolive" ,"grayolive" ,"blueolive" ,"limeolive" ,"aquaolive","redolive","fuchsiaolive","yellowolive","whiteolive", | |
"blacksilver" ,"navysilver" ,"greensilver" ,"tealsilver" ,"maroonsilver" ,"purplesilver" ,"olivesilver" ,"silversilver" ,"graysilver" ,"bluesilver" ,"limesilver" ,"aquasilver","redsilver","fuchsiasilver","yellowsilver","whitesilver", | |
"blackgray" ,"navygray" ,"greengray" ,"tealgray" ,"maroongray" ,"purplegray" ,"olivegray" ,"silvergray" ,"graygray" ,"bluegray" ,"limegray" ,"aquagray","redgray","fuchsiagray","yellowgray","whitegray", | |
"blackblue" ,"navyblue" ,"greenblue" ,"tealblue" ,"maroonblue" ,"purpleblue" ,"oliveblue" ,"silverblue" ,"grayblue" ,"blueblue" ,"limeblue" ,"aquablue","redblue","fuchsiablue","yellowblue","whiteblue", | |
"blacklime" ,"navylime" ,"greenlime" ,"teallime" ,"maroonlime" ,"purplelime" ,"olivelime" ,"silverlime" ,"graylime" ,"bluelime" ,"limelime" ,"aqualime","redlime","fuchsialime","yellowlime","whitelime", | |
"blackaqua" ,"navyaqua" ,"greenaqua" ,"tealaqua" ,"maroonaqua" ,"purpleaqua" ,"oliveaqua" ,"silveraqua" ,"grayaqua" ,"blueaqua" ,"limeaqua" ,"aquaaqua","redaqua","fuchsiaaqua","yellowaqua","whiteaqua", | |
"blackred" ,"navyred" ,"greenred" ,"tealred" ,"maroonred" ,"purplered" ,"olivered" ,"silverred" ,"grayred" ,"bluered" ,"limered" ,"aquared","redred","fuchsiared","yellowred","whitered", | |
"blackfuchsia" ,"navyfuchsia" ,"greenfuchsia" ,"tealfuchsia" ,"maroonfuchsia","purplefuchsia","olivefuchsia" ,"silverfuchsia","grayfuchsia" ,"bluefuchsia" ,"limefuchsia" ,"aquafuchsia","redfuchsia","fuchsiafuchsia","yellowfuchsia","whitefuchsia", | |
"blackyellow" ,"navyyellow" ,"greenyellow" ,"tealyellow" ,"maroonyellow" ,"purpleyellow" ,"oliveyellow" ,"silveryellow" ,"grayyellow" ,"blueyellow" ,"limeyellow" ,"aquayellow","redyellow","fuchsiayellow","yellowyellow","whiteyellow", | |
"blackwhite" ,"navywhite" ,"greenwhite" ,"tealwhite" ,"maroonwhite" ,"purplewhite" ,"olivewhite" ,"silverwhite" ,"graywhite" ,"bluewhite" ,"limewhite" ,"aquawhite","redwhite","fuchsiawhite","yellowwhite","whitewhite" | |
}; | |
char fmt_copy[CFPRINTF_MAX_BUFFER_SIZE]; | |
size_t pc; | |
size_t remove_start, remove_finish; | |
cfprintf_init(); | |
va_start(argp, fmt); | |
vsnprintf(fmt_copy, CFPRINTF_MAX_BUFFER_SIZE, fmt, argp); | |
va_end(argp); | |
pos_counter = 0; | |
sptr = fmt_copy; | |
pos_0 = (char*)sptr; | |
while (pos_0) { | |
for (c = 0; c < 256; ++c) { | |
pos_0 = strstr(sptr, clrs[c]); | |
if (pos_0) { | |
pos_1 = strstr(pos_0, "{"); | |
if (pos_1 && (pos_1 - pos_0) == strlen(clrs[c])) { | |
pos_2 = strstr(pos_1, "}"); | |
if (pos_2) { | |
pos[pos_counter].color = c; | |
pos[pos_counter].start = pos_1 + 1 - fmt_copy; | |
pos[pos_counter].finish = pos_2 - 1 - fmt_copy; | |
++pos_counter; | |
// clear string meta-color directive | |
for (cc = 0; cc < strlen(clrs[c]) + 1; ++cc) | |
pos_0[cc] = '#'; | |
*pos_2 = ' '; | |
break; | |
} | |
else { | |
cfprintf(fout, "Warning: cfprintf identified a starting color label named yellowblack{%s} with no closing } bracket." | |
"\nformat text:%s" | |
"\nfull text:%s" | |
"\nposition in full text:redblack{%d}" | |
"\n", | |
clrs[c], fmt, fmt_copy, pos_0 - fmt_copy); | |
} | |
} | |
} | |
} | |
} | |
qsort(pos, pos_counter, sizeof(struct POS), &qsort_positions); | |
if (0 == pos_counter) { | |
fprintf(fout, "%s", fmt_copy); | |
} | |
else { | |
sptr = fmt_copy; | |
remove_start = 0; | |
#ifdef _WIN32 | |
SetConsoleTextAttribute(hConsole, BACK_TO_DEFAULT); | |
#else | |
fprintf(fout, "%s", BACK_TO_DEFAULT); | |
#endif | |
for (pc = 0; pc < pos_counter; ++pc) { | |
remove_start = pos[pc].start - 1 - strlen(clrs[pos[pc].color]);// inclusive | |
if (pc > 0) | |
remove_start -= (pos[pc - 1].finish + 1 + 1); | |
remove_finish = remove_start + strlen(clrs[pos[pc].color]); // inclusive | |
// print from last pos until remove_start (not inclusive) | |
sptr[remove_start] = 0x0; | |
fprintf(fout, "%s", sptr); | |
sptr[remove_start] = '#'; | |
#ifdef _WIN32 | |
SetConsoleTextAttribute(hConsole, pos[pc].color); | |
#else | |
int bg = pos[pc].color / 16; | |
int fg = pos[pc].color % 16; | |
//fprintf(fout, "\033[5m"); // blink | |
//fprintf(fout, "\033[25m"); // remove blink | |
fprintf(fout, "\033[1m"); // dim intensity. 1=bold | |
fprintf(fout, "\033[%s", BGs[bg]); | |
fprintf(fout, "\033[%s", FGs[fg]); | |
#endif | |
sptr = fmt_copy + pos[pc].start; | |
sptr[pos[pc].finish - pos[pc].start + 1] = 0x0; | |
fprintf(fout, "%s", sptr); | |
sptr[pos[pc].finish - pos[pc].start + 1] = '#'; | |
#ifdef _WIN32 | |
SetConsoleTextAttribute(hConsole, BACK_TO_DEFAULT); | |
#else | |
fprintf(fout, "%s", BACK_TO_DEFAULT); | |
#endif | |
sptr = fmt_copy + pos[pc].finish + 1 + 1; // jump over ending '}' | |
} | |
if (sptr) | |
fprintf(fout, "%s", sptr); | |
} | |
return 0; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#ifndef CFPRINTF_H | |
#define CFPRINTF_H | |
#include <stdio.h> | |
/* supports 16 foreground and background colors: | |
[0-15]=[black,navy,green,teal,maroon,purple,olive,silver,gray,blue,lime,aqua,red,fuchsia,yellow,white] | |
using the <color>{your text here} syntax. for example: | |
red{text printed in red-on-black color} | |
redwhite{text printed in red-on-white color} | |
*/ | |
#define CFPRINTF_MAX_BUFFER_SIZE (8192) | |
int cfprintf(FILE *f, const char *fmt, ...); // exactly as fprintf but with color support | |
#endif |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cfprintf(stdout, "blackblack{blackblack}"); | |
cfprintf(stdout, "navyblack{navyblack}"); | |
cfprintf(stdout, "greenblack{greenblack}"); | |
cfprintf(stdout, "tealblack{tealblack}"); | |
cfprintf(stdout, "maroonblack{maroonblack}"); | |
cfprintf(stdout, "purpleblack{purpleblack}"); | |
cfprintf(stdout, "oliveblack{oliveblack}"); | |
cfprintf(stdout, "silverblack{silverblack}"); | |
cfprintf(stdout, "grayblack{grayblack}"); | |
cfprintf(stdout, "blueblack{blueblack}"); | |
cfprintf(stdout, "limeblack{limeblack}"); | |
cfprintf(stdout, "aquablack{aquablack}"); | |
cfprintf(stdout, "redblack{redblack}"); | |
cfprintf(stdout, "fuchsiablack{fuchsiablack}"); | |
cfprintf(stdout, "yellowblack{yellowblack}"); | |
cfprintf(stdout, "whiteblack{whiteblack}"); | |
cfprintf(stdout, "blacknavy{blacknavy}"); | |
cfprintf(stdout, "navynavy{navynavy}"); | |
cfprintf(stdout, "greennavy{greennavy}"); | |
cfprintf(stdout, "tealnavy{tealnavy}"); | |
cfprintf(stdout, "maroonnavy{maroonnavy}"); | |
cfprintf(stdout, "purplenavy{purplenavy}"); | |
cfprintf(stdout, "olivenavy{olivenavy}"); | |
cfprintf(stdout, "silvernavy{silvernavy}"); | |
cfprintf(stdout, "graynavy{graynavy}"); | |
cfprintf(stdout, "bluenavy{bluenavy}"); | |
cfprintf(stdout, "limenavy{limenavy}"); | |
cfprintf(stdout, "aquanavy{aquanavy}"); | |
cfprintf(stdout, "rednavy{rednavy}"); | |
cfprintf(stdout, "fuchsianavy{fuchsianavy}"); | |
cfprintf(stdout, "yellownavy{yellownavy}"); | |
cfprintf(stdout, "whitenavy{whitenavy}"); | |
cfprintf(stdout, "blackgreen{blackgreen}"); | |
cfprintf(stdout, "navygreen{navygreen}"); | |
cfprintf(stdout, "greengreen{greengreen}"); | |
cfprintf(stdout, "tealgreen{tealgreen}"); | |
cfprintf(stdout, "maroongreen{maroongreen}"); | |
cfprintf(stdout, "purplegreen{purplegreen}"); | |
cfprintf(stdout, "olivegreen{olivegreen}"); | |
cfprintf(stdout, "silvergreen{silvergreen}"); | |
cfprintf(stdout, "graygreen{graygreen}"); | |
cfprintf(stdout, "bluegreen{bluegreen}"); | |
cfprintf(stdout, "limegreen{limegreen}"); | |
cfprintf(stdout, "aquagreen{aquagreen}"); | |
cfprintf(stdout, "redgreen{redgreen}"); | |
cfprintf(stdout, "fuchsiagreen{fuchsiagreen}"); | |
cfprintf(stdout, "yellowgreen{yellowgreen}"); | |
cfprintf(stdout, "whitegreen{whitegreen}"); | |
cfprintf(stdout, "blackteal{blackteal}"); | |
cfprintf(stdout, "navyteal{navyteal}"); | |
cfprintf(stdout, "greenteal{greenteal}"); | |
cfprintf(stdout, "tealteal{tealteal}"); | |
cfprintf(stdout, "maroonteal{maroonteal}"); | |
cfprintf(stdout, "purpleteal{purpleteal}"); | |
cfprintf(stdout, "oliveteal{oliveteal}"); | |
cfprintf(stdout, "silverteal{silverteal}"); | |
cfprintf(stdout, "grayteal{grayteal}"); | |
cfprintf(stdout, "blueteal{blueteal}"); | |
cfprintf(stdout, "limeteal{limeteal}"); | |
cfprintf(stdout, "aquateal{aquateal}"); | |
cfprintf(stdout, "redteal{redteal}"); | |
cfprintf(stdout, "fuchsiateal{fuchsiateal}"); | |
cfprintf(stdout, "yellowteal{yellowteal}"); | |
cfprintf(stdout, "whiteteal{whiteteal}"); | |
cfprintf(stdout, "blackmaroon{blackmaroon}"); | |
cfprintf(stdout, "navymaroon{navymaroon}"); | |
cfprintf(stdout, "greenmaroon{greenmaroon}"); | |
cfprintf(stdout, "tealmaroon{tealmaroon}"); | |
cfprintf(stdout, "maroonmaroon{maroonmaroon}"); | |
cfprintf(stdout, "purplemaroon{purplemaroon}"); | |
cfprintf(stdout, "olivemaroon{olivemaroon}"); | |
cfprintf(stdout, "silvermaroon{silvermaroon}"); | |
cfprintf(stdout, "graymaroon{graymaroon}"); | |
cfprintf(stdout, "bluemaroon{bluemaroon}"); | |
cfprintf(stdout, "limemaroon{limemaroon}"); | |
cfprintf(stdout, "aquamaroon{aquamaroon}"); | |
cfprintf(stdout, "redmaroon{redmaroon}"); | |
cfprintf(stdout, "fuchsiamaroon{fuchsiamaroon}"); | |
cfprintf(stdout, "yellowmaroon{yellowmaroon}"); | |
cfprintf(stdout, "whitemaroon{whitemaroon}"); | |
cfprintf(stdout, "blackpurple{blackpurple}"); | |
cfprintf(stdout, "navypurple{navypurple}"); | |
cfprintf(stdout, "greenpurple{greenpurple}"); | |
cfprintf(stdout, "tealpurple{tealpurple}"); | |
cfprintf(stdout, "maroonpurple{maroonpurple}"); | |
cfprintf(stdout, "purplepurple{purplepurple}"); | |
cfprintf(stdout, "olivepurple{olivepurple}"); | |
cfprintf(stdout, "silverpurple{silverpurple}"); | |
cfprintf(stdout, "graypurple{graypurple}"); | |
cfprintf(stdout, "bluepurple{bluepurple}"); | |
cfprintf(stdout, "limepurple{limepurple}"); | |
cfprintf(stdout, "aquapurple{aquapurple}"); | |
cfprintf(stdout, "redpurple{redpurple}"); | |
cfprintf(stdout, "fuchsiapurple{fuchsiapurple}"); | |
cfprintf(stdout, "yellowpurple{yellowpurple}"); | |
cfprintf(stdout, "whitepurple{whitepurple}"); | |
cfprintf(stdout, "blackolive{blackolive}"); | |
cfprintf(stdout, "navyolive{navyolive}"); | |
cfprintf(stdout, "greenolive{greenolive}"); | |
cfprintf(stdout, "tealolive{tealolive}"); | |
cfprintf(stdout, "maroonolive{maroonolive}"); | |
cfprintf(stdout, "purpleolive{purpleolive}"); | |
cfprintf(stdout, "oliveolive{oliveolive}"); | |
cfprintf(stdout, "silverolive{silverolive}"); | |
cfprintf(stdout, "grayolive{grayolive}"); | |
cfprintf(stdout, "blueolive{blueolive}"); | |
cfprintf(stdout, "limeolive{limeolive}"); | |
cfprintf(stdout, "aquaolive{aquaolive}"); | |
cfprintf(stdout, "redolive{redolive}"); | |
cfprintf(stdout, "fuchsiaolive{fuchsiaolive}"); | |
cfprintf(stdout, "yellowolive{yellowolive}"); | |
cfprintf(stdout, "whiteolive{whiteolive}"); | |
cfprintf(stdout, "blacksilver{blacksilver}"); | |
cfprintf(stdout, "navysilver{navysilver}"); | |
cfprintf(stdout, "greensilver{greensilver}"); | |
cfprintf(stdout, "tealsilver{tealsilver}"); | |
cfprintf(stdout, "maroonsilver{maroonsilver}"); | |
cfprintf(stdout, "purplesilver{purplesilver}"); | |
cfprintf(stdout, "olivesilver{olivesilver}"); | |
cfprintf(stdout, "silversilver{silversilver}"); | |
cfprintf(stdout, "graysilver{graysilver}"); | |
cfprintf(stdout, "bluesilver{bluesilver}"); | |
cfprintf(stdout, "limesilver{limesilver}"); | |
cfprintf(stdout, "aquasilver{aquasilver}"); | |
cfprintf(stdout, "redsilver{redsilver}"); | |
cfprintf(stdout, "fuchsiasilver{fuchsiasilver}"); | |
cfprintf(stdout, "yellowsilver{yellowsilver}"); | |
cfprintf(stdout, "whitesilver{whitesilver}"); | |
cfprintf(stdout, "blackgray{blackgray}"); | |
cfprintf(stdout, "navygray{navygray}"); | |
cfprintf(stdout, "greengray{greengray}"); | |
cfprintf(stdout, "tealgray{tealgray}"); | |
cfprintf(stdout, "maroongray{maroongray}"); | |
cfprintf(stdout, "purplegray{purplegray}"); | |
cfprintf(stdout, "olivegray{olivegray}"); | |
cfprintf(stdout, "silvergray{silvergray}"); | |
cfprintf(stdout, "graygray{graygray}"); | |
cfprintf(stdout, "bluegray{bluegray}"); | |
cfprintf(stdout, "limegray{limegray}"); | |
cfprintf(stdout, "aquagray{aquagray}"); | |
cfprintf(stdout, "redgray{redgray}"); | |
cfprintf(stdout, "fuchsiagray{fuchsiagray}"); | |
cfprintf(stdout, "yellowgray{yellowgray}"); | |
cfprintf(stdout, "whitegray{whitegray}"); | |
cfprintf(stdout, "blackblue{blackblue}"); | |
cfprintf(stdout, "navyblue{navyblue}"); | |
cfprintf(stdout, "greenblue{greenblue}"); | |
cfprintf(stdout, "tealblue{tealblue}"); | |
cfprintf(stdout, "maroonblue{maroonblue}"); | |
cfprintf(stdout, "purpleblue{purpleblue}"); | |
cfprintf(stdout, "oliveblue{oliveblue}"); | |
cfprintf(stdout, "silverblue{silverblue}"); | |
cfprintf(stdout, "grayblue{grayblue}"); | |
cfprintf(stdout, "blueblue{blueblue}"); | |
cfprintf(stdout, "limeblue{limeblue}"); | |
cfprintf(stdout, "aquablue{aquablue}"); | |
cfprintf(stdout, "redblue{redblue}"); | |
cfprintf(stdout, "fuchsiablue{fuchsiablue}"); | |
cfprintf(stdout, "yellowblue{yellowblue}"); | |
cfprintf(stdout, "whiteblue{whiteblue}"); | |
cfprintf(stdout, "blacklime{blacklime}"); | |
cfprintf(stdout, "navylime{navylime}"); | |
cfprintf(stdout, "greenlime{greenlime}"); | |
cfprintf(stdout, "teallime{teallime}"); | |
cfprintf(stdout, "maroonlime{maroonlime}"); | |
cfprintf(stdout, "purplelime{purplelime}"); | |
cfprintf(stdout, "olivelime{olivelime}"); | |
cfprintf(stdout, "silverlime{silverlime}"); | |
cfprintf(stdout, "graylime{graylime}"); | |
cfprintf(stdout, "bluelime{bluelime}"); | |
cfprintf(stdout, "limelime{limelime}"); | |
cfprintf(stdout, "aqualime{aqualime}"); | |
cfprintf(stdout, "redlime{redlime}"); | |
cfprintf(stdout, "fuchsialime{fuchsialime}"); | |
cfprintf(stdout, "yellowlime{yellowlime}"); | |
cfprintf(stdout, "whitelime{whitelime}"); | |
cfprintf(stdout, "blackaqua{blackaqua}"); | |
cfprintf(stdout, "navyaqua{navyaqua}"); | |
cfprintf(stdout, "greenaqua{greenaqua}"); | |
cfprintf(stdout, "tealaqua{tealaqua}"); | |
cfprintf(stdout, "maroonaqua{maroonaqua}"); | |
cfprintf(stdout, "purpleaqua{purpleaqua}"); | |
cfprintf(stdout, "oliveaqua{oliveaqua}"); | |
cfprintf(stdout, "silveraqua{silveraqua}"); | |
cfprintf(stdout, "grayaqua{grayaqua}"); | |
cfprintf(stdout, "blueaqua{blueaqua}"); | |
cfprintf(stdout, "limeaqua{limeaqua}"); | |
cfprintf(stdout, "aquaaqua{aquaaqua}"); | |
cfprintf(stdout, "redaqua{redaqua}"); | |
cfprintf(stdout, "fuchsiaaqua{fuchsiaaqua}"); | |
cfprintf(stdout, "yellowaqua{yellowaqua}"); | |
cfprintf(stdout, "whiteaqua{whiteaqua}"); | |
cfprintf(stdout, "blackred{blackred}"); | |
cfprintf(stdout, "navyred{navyred}"); | |
cfprintf(stdout, "greenred{greenred}"); | |
cfprintf(stdout, "tealred{tealred}"); | |
cfprintf(stdout, "maroonred{maroonred}"); | |
cfprintf(stdout, "purplered{purplered}"); | |
cfprintf(stdout, "olivered{olivered}"); | |
cfprintf(stdout, "silverred{silverred}"); | |
cfprintf(stdout, "grayred{grayred}"); | |
cfprintf(stdout, "bluered{bluered}"); | |
cfprintf(stdout, "limered{limered}"); | |
cfprintf(stdout, "aquared{aquared}"); | |
cfprintf(stdout, "redred{redred}"); | |
cfprintf(stdout, "fuchsiared{fuchsiared}"); | |
cfprintf(stdout, "yellowred{yellowred}"); | |
cfprintf(stdout, "whitered{whitered}"); | |
cfprintf(stdout, "blackfuchsia{blackfuchsia}"); | |
cfprintf(stdout, "navyfuchsia{navyfuchsia}"); | |
cfprintf(stdout, "greenfuchsia{greenfuchsia}"); | |
cfprintf(stdout, "tealfuchsia{tealfuchsia}"); | |
cfprintf(stdout, "maroonfuchsia{maroonfuchsia}"); | |
cfprintf(stdout, "purplefuchsia{purplefuchsia}"); | |
cfprintf(stdout, "olivefuchsia{olivefuchsia}"); | |
cfprintf(stdout, "silverfuchsia{silverfuchsia}"); | |
cfprintf(stdout, "grayfuchsia{grayfuchsia}"); | |
cfprintf(stdout, "bluefuchsia{bluefuchsia}"); | |
cfprintf(stdout, "limefuchsia{limefuchsia}"); | |
cfprintf(stdout, "aquafuchsia{aquafuchsia}"); | |
cfprintf(stdout, "redfuchsia{redfuchsia}"); | |
cfprintf(stdout, "fuchsiafuchsia{fuchsiafuchsia}"); | |
cfprintf(stdout, "yellowfuchsia{yellowfuchsia}"); | |
cfprintf(stdout, "whitefuchsia{whitefuchsia}"); | |
cfprintf(stdout, "blackyellow{blackyellow}"); | |
cfprintf(stdout, "navyyellow{navyyellow}"); | |
cfprintf(stdout, "greenyellow{greenyellow}"); | |
cfprintf(stdout, "tealyellow{tealyellow}"); | |
cfprintf(stdout, "maroonyellow{maroonyellow}"); | |
cfprintf(stdout, "purpleyellow{purpleyellow}"); | |
cfprintf(stdout, "oliveyellow{oliveyellow}"); | |
cfprintf(stdout, "silveryellow{silveryellow}"); | |
cfprintf(stdout, "grayyellow{grayyellow}"); | |
cfprintf(stdout, "blueyellow{blueyellow}"); | |
cfprintf(stdout, "limeyellow{limeyellow}"); | |
cfprintf(stdout, "aquayellow{aquayellow}"); | |
cfprintf(stdout, "redyellow{redyellow}"); | |
cfprintf(stdout, "fuchsiayellow{fuchsiayellow}"); | |
cfprintf(stdout, "yellowyellow{yellowyellow}"); | |
cfprintf(stdout, "whiteyellow{whiteyellow}"); | |
cfprintf(stdout, "blackwhite{blackwhite}"); | |
cfprintf(stdout, "navywhite{navywhite}"); | |
cfprintf(stdout, "greenwhite{greenwhite}"); | |
cfprintf(stdout, "tealwhite{tealwhite}"); | |
cfprintf(stdout, "maroonwhite{maroonwhite}"); | |
cfprintf(stdout, "purplewhite{purplewhite}"); | |
cfprintf(stdout, "olivewhite{olivewhite}"); | |
cfprintf(stdout, "silverwhite{silverwhite}"); | |
cfprintf(stdout, "graywhite{graywhite}"); | |
cfprintf(stdout, "bluewhite{bluewhite}"); | |
cfprintf(stdout, "limewhite{limewhite}"); | |
cfprintf(stdout, "aquawhite{aquawhite}"); | |
cfprintf(stdout, "redwhite{redwhite}"); | |
cfprintf(stdout, "fuchsiawhite{fuchsiawhite}"); | |
cfprintf(stdout, "yellowwhite{yellowwhite}"); | |
cfprintf(stdout, "whitewhite{whitewhite}"); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment