diff options
-rw-r--r-- | bin/scheme.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/bin/scheme.c b/bin/scheme.c index d008ea51..df69b903 100644 --- a/bin/scheme.c +++ b/bin/scheme.c @@ -112,11 +112,9 @@ static void png(const struct Hsv *scheme, uint8_t len) { pngInt(crc); } -static void linux(const struct Hsv *scheme, uint8_t len) { - if (len > 16) len = 16; +static void hsv(const struct Hsv *scheme, uint8_t len) { for (uint8_t i = 0; i < len; ++i) { - struct Rgb rgb = toRgb(scheme[i]); - printf("\x1B]P%x%02x%02x%02x", i, rgb.r, rgb.g, rgb.b); + printf("%g,%g,%g\n", scheme[i].h, scheme[i].s, scheme[i].v); } } @@ -127,6 +125,14 @@ static void hex(const struct Hsv *scheme, uint8_t len) { } } +static void linux(const struct Hsv *scheme, uint8_t len) { + if (len > 16) len = 16; + for (uint8_t i = 0; i < len; ++i) { + struct Rgb rgb = toRgb(scheme[i]); + printf("\x1B]P%x%02x%02x%02x", i, rgb.r, rgb.g, rgb.b); + } +} + static const struct Hsv R = { 0.0, 1.0, 1.0 }; static const struct Hsv Y = { 60.0, 1.0, 1.0 }; static const struct Hsv G = { 120.0, 1.0, 1.0 }; @@ -184,13 +190,14 @@ static struct Terminal genTerminal(struct Ansi ansi) { int main(int argc, char *argv[]) { enum { ANSI, TERMINAL } generate = ANSI; - enum { HEX, LINUX, PNG } output = HEX; + enum { HSV, HEX, LINUX, PNG } output = HEX; int opt; - while (0 < (opt = getopt(argc, argv, "agltx"))) { + while (0 < (opt = getopt(argc, argv, "aghltx"))) { switch (opt) { case 'a': generate = ANSI; break; case 'g': output = PNG; break; + case 'h': output = HSV; break; case 'l': output = LINUX; break; case 't': generate = TERMINAL; break; case 'x': output = HEX; break; @@ -215,6 +222,7 @@ int main(int argc, char *argv[]) { } switch (output) { + case HSV: hsv(scheme, len); break; case HEX: hex(scheme, len); break; case LINUX: linux(scheme, len); break; case PNG: png(scheme, len); break; |