summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2018-03-31 14:28:10 -0400
committerJune McEnroe <june@causal.agency>2018-03-31 14:28:10 -0400
commit10eb2a933246db7e1eb4ee893acb7572bfd93bbf (patch)
tree55fccc6852e377d206ce6463ce69e9dfbda07a8f
parentAdd hex output to scheme (diff)
downloadsrc-10eb2a933246db7e1eb4ee893acb7572bfd93bbf.tar.gz
src-10eb2a933246db7e1eb4ee893acb7572bfd93bbf.zip
Generate basic ANSI color scheme
-rw-r--r--bin/scheme.c60
1 files changed, 36 insertions, 24 deletions
diff --git a/bin/scheme.c b/bin/scheme.c
index 153eac21..72fc80b4 100644
--- a/bin/scheme.c
+++ b/bin/scheme.c
@@ -1,5 +1,4 @@
-/*
- * Copyright (C) 2018  June McEnroe <june@causal.agency>
+/* Copyright (C) 2018  June McEnroe <june@causal.agency>
  *
  * This program is free software: you can redistribute it and/or modify
  * it under the terms of the GNU Affero General Public License as published by
@@ -120,7 +119,39 @@ static void hex(const struct Hsv *scheme, uint8_t len) {
     }
 }
 
+enum {
+    BLACK,
+    RED,
+    GREEN,
+    YELLOW,
+    BLUE,
+    MAGENTA,
+    CYAN,
+    WHITE,
+};
+struct Ansi {
+    struct Hsv dark[8];
+    struct Hsv light[8];
+};
+
 int main(int argc, char *argv[]) {
+    struct Ansi scheme = {
+        .light = {
+            [BLACK]   = { 0.0,   0.0, 0.2 },
+            [RED]     = { 0.0,   1.0, 1.0 },
+            [GREEN]   = { 120.0, 1.0, 1.0 },
+            [YELLOW]  = { 60.0,  1.0, 1.0 },
+            [BLUE]    = { 240.0, 1.0, 1.0 },
+            [MAGENTA] = { 300.0, 1.0, 1.0 },
+            [CYAN]    = { 180.0, 1.0, 1.0 },
+            [WHITE]   = { 360.0, 0.0, 1.0 },
+        },
+    };
+    for (int i = 0; i < 8; ++i) {
+        scheme.dark[i] = scheme.light[i];
+        scheme.dark[i].v /= 2.0;
+    }
+
     enum { HEX, PNG } output = HEX;
 
     int opt;
@@ -132,29 +163,10 @@ int main(int argc, char *argv[]) {
         }
     }
 
-    struct Hsv scheme[] = {
-        { 0.0,   1.0, 1.0 },
-        { 45.0,  1.0, 1.0 },
-        { 90.0,  1.0, 1.0 },
-        { 135.0, 1.0, 1.0 },
-        { 180.0, 1.0, 1.0 },
-        { 225.0, 1.0, 1.0 },
-        { 270.0, 1.0, 1.0 },
-        { 315.0, 1.0, 1.0 },
-        { 0.0,   0.5, 1.0 },
-        { 45.0,  0.5, 1.0 },
-        { 90.0,  0.5, 1.0 },
-        { 135.0, 0.5, 1.0 },
-        { 180.0, 0.5, 1.0 },
-        { 225.0, 0.5, 1.0 },
-        { 270.0, 0.5, 1.0 },
-        { 315.0, 0.5, 1.0 },
-    };
-    size_t len = sizeof(scheme) / sizeof(scheme[0]);
-
+    size_t len = sizeof(scheme) / sizeof(struct Hsv);
     switch (output) {
-        case HEX: hex(scheme, len); break;
-        case PNG: png(scheme, len); break;
+        case HEX: hex((struct Hsv *)&scheme, len); break;
+        case PNG: png((struct Hsv *)&scheme, len); break;
     }
 
     return EX_OK;