diff options
Diffstat (limited to 'bin')
-rw-r--r-- | bin/.gitignore | 2 | ||||
-rw-r--r-- | bin/Makefile | 5 | ||||
-rw-r--r-- | bin/scheme.c | 33 |
3 files changed, 38 insertions, 2 deletions
diff --git a/bin/.gitignore b/bin/.gitignore index 5ff66354..0c078cbb 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -1,4 +1,6 @@ tags +scheme.h +*.o atch dtch glitch diff --git a/bin/Makefile b/bin/Makefile index 677b5673..5ccf614a 100644 --- a/bin/Makefile +++ b/bin/Makefile @@ -13,11 +13,14 @@ bsd: any $(BSD_BINS) linux: any $(LIN_BINS) .gitignore: Makefile - echo tags $(ALL_BINS) scheme.png | tr ' ' '\n' > .gitignore + echo tags scheme.h *.o $(ALL_BINS) scheme.png | tr ' ' '\n' > .gitignore tags: *.c ctags -w *.c +scheme.h: scheme + ./scheme -c > scheme.h + atch: dtch ln -f dtch atch diff --git a/bin/scheme.c b/bin/scheme.c index 20c7efbf..4ec5453b 100644 --- a/bin/scheme.c +++ b/bin/scheme.c @@ -126,6 +126,36 @@ static void hex(bool ansi) { printHex(scheme.cursor); } +static void printC(struct Hsv hsv) { + struct Rgb rgb = toRgb(hsv); + printf("\t0x%02X%02X%02X,\n", rgb.r, rgb.g, rgb.b); +} +static void header(void) { + printf( + "// This file is generated by scheme -c.\n\n" + "#include <stdint.h>\n\n" + "const struct {\n" + "\tuint32_t darkBlack, darkRed, darkGreen, darkYellow;\n" + "\tuint32_t darkBlue, darkMagenta, darkCyan, darkWhite;\n" + "\tuint32_t lightBlack, lightRed, lightGreen, lightYellow;\n" + "\tuint32_t lightBlue, lightMagenta, lightCyan, lightWhite;\n" + "\tuint32_t background, text, bold, selection, cursor;\n" + "} SCHEME = {\n" + ); + for (int i = BLACK; i <= WHITE; ++i) { + printC(scheme.dark[i]); + } + for (int i = BLACK; i <= WHITE; ++i) { + printC(scheme.light[i]); + } + printC(scheme.background); + printC(scheme.text); + printC(scheme.bold); + printC(scheme.selection); + printC(scheme.cursor); + printf("};\n"); +} + static void console(void) { for (int i = BLACK; i <= WHITE; ++i) { struct Rgb rgb = toRgb(scheme.dark[i]); @@ -235,7 +265,7 @@ int main(int argc, char *argv[]) { bool ansi = true; char out = 'x'; int opt; - while (0 < (opt = getopt(argc, argv, "aghlmtx"))) { + while (0 < (opt = getopt(argc, argv, "acghlmtx"))) { switch (opt) { break; case 'a': ansi = true; break; case 't': ansi = false; @@ -244,6 +274,7 @@ int main(int argc, char *argv[]) { } } switch (out) { + break; case 'c': header(); break; case 'g': png((struct Hsv *)&scheme, (ansi ? 16 : 21)); break; case 'h': hsv(ansi); break; case 'l': console(); |