aboutsummaryrefslogtreecommitdiff
path: root/host/matelight/color.c
diff options
context:
space:
mode:
Diffstat (limited to 'host/matelight/color.c')
-rw-r--r--host/matelight/color.c291
1 files changed, 291 insertions, 0 deletions
diff --git a/host/matelight/color.c b/host/matelight/color.c
new file mode 100644
index 0000000..938bdf1
--- /dev/null
+++ b/host/matelight/color.c
@@ -0,0 +1,291 @@
+
+#include "color.h"
+#include <stdlib.h>
+#include <stdio.h>
+
+int xterm_color_index(color_t c){
+ int candidate = 0;
+ int best_distance = 0x7fffffff;
+ for(int i=0; i<256; i++){
+ color_t k = colortable[i];
+ int tmp = abs(c.r - k.r);
+ tmp *= tmp;
+ int distance = tmp;
+ if(distance > best_distance)
+ continue;
+ tmp = abs(c.g - k.g);
+ tmp *= tmp;
+ distance += tmp;
+ if(distance > best_distance)
+ continue;
+ tmp = abs(c.b - k.b);
+ tmp *= tmp;
+ distance += tmp;
+ if(distance > best_distance)
+ continue;
+ best_distance = distance;
+ candidate = i;
+ }
+ return candidate;
+}
+
+color_t colortable[256] = {
+ {0x00, 0x00, 0x00},
+ {0xa8, 0x00, 0x00},
+ {0x00, 0xa8, 0x00},
+ {0xa8, 0x54, 0x00},
+ {0x00, 0x00, 0xa8},
+ {0xa8, 0x00, 0xa8},
+ {0x00, 0xa8, 0xa8},
+ {0xa8, 0xa8, 0xa8},
+ {0x54, 0x54, 0x54},
+ {0xfc, 0x54, 0x54},
+ {0x54, 0xfc, 0x54},
+ {0xfc, 0xfc, 0x54},
+ {0x54, 0x54, 0xfc},
+ {0xfc, 0x54, 0xfc},
+ {0x54, 0xfc, 0xfc},
+ {0xfc, 0xfc, 0xfc},
+ {0x00, 0x00, 0x00},
+ {0x00, 0x00, 0x5f},
+ {0x00, 0x00, 0x87},
+ {0x00, 0x00, 0xaf},
+ {0x00, 0x00, 0xd7},
+ {0x00, 0x00, 0xff},
+ {0x00, 0x5f, 0x00},
+ {0x00, 0x5f, 0x5f},
+ {0x00, 0x5f, 0x87},
+ {0x00, 0x5f, 0xaf},
+ {0x00, 0x5f, 0xd7},
+ {0x00, 0x5f, 0xff},
+ {0x00, 0x87, 0x00},
+ {0x00, 0x87, 0x5f},
+ {0x00, 0x87, 0x87},
+ {0x00, 0x87, 0xaf},
+ {0x00, 0x87, 0xd7},
+ {0x00, 0x87, 0xff},
+ {0x00, 0xaf, 0x00},
+ {0x00, 0xaf, 0x5f},
+ {0x00, 0xaf, 0x87},
+ {0x00, 0xaf, 0xaf},
+ {0x00, 0xaf, 0xd7},
+ {0x00, 0xaf, 0xff},
+ {0x00, 0xd7, 0x00},
+ {0x00, 0xd7, 0x5f},
+ {0x00, 0xd7, 0x87},
+ {0x00, 0xd7, 0xaf},
+ {0x00, 0xd7, 0xd7},
+ {0x00, 0xd7, 0xff},
+ {0x00, 0xff, 0x00},
+ {0x00, 0xff, 0x5f},
+ {0x00, 0xff, 0x87},
+ {0x00, 0xff, 0xaf},
+ {0x00, 0xff, 0xd7},
+ {0x00, 0xff, 0xff},
+ {0x5f, 0x00, 0x00},
+ {0x5f, 0x00, 0x5f},
+ {0x5f, 0x00, 0x87},
+ {0x5f, 0x00, 0xaf},
+ {0x5f, 0x00, 0xd7},
+ {0x5f, 0x00, 0xff},
+ {0x5f, 0x5f, 0x00},
+ {0x5f, 0x5f, 0x5f},
+ {0x5f, 0x5f, 0x87},
+ {0x5f, 0x5f, 0xaf},
+ {0x5f, 0x5f, 0xd7},
+ {0x5f, 0x5f, 0xff},
+ {0x5f, 0x87, 0x00},
+ {0x5f, 0x87, 0x5f},
+ {0x5f, 0x87, 0x87},
+ {0x5f, 0x87, 0xaf},
+ {0x5f, 0x87, 0xd7},
+ {0x5f, 0x87, 0xff},
+ {0x5f, 0xaf, 0x00},
+ {0x5f, 0xaf, 0x5f},
+ {0x5f, 0xaf, 0x87},
+ {0x5f, 0xaf, 0xaf},
+ {0x5f, 0xaf, 0xd7},
+ {0x5f, 0xaf, 0xff},
+ {0x5f, 0xd7, 0x00},
+ {0x5f, 0xd7, 0x5f},
+ {0x5f, 0xd7, 0x87},
+ {0x5f, 0xd7, 0xaf},
+ {0x5f, 0xd7, 0xd7},
+ {0x5f, 0xd7, 0xff},
+ {0x5f, 0xff, 0x00},
+ {0x5f, 0xff, 0x5f},
+ {0x5f, 0xff, 0x87},
+ {0x5f, 0xff, 0xaf},
+ {0x5f, 0xff, 0xd7},
+ {0x5f, 0xff, 0xff},
+ {0x87, 0x00, 0x00},
+ {0x87, 0x00, 0x5f},
+ {0x87, 0x00, 0x87},
+ {0x87, 0x00, 0xaf},
+ {0x87, 0x00, 0xd7},
+ {0x87, 0x00, 0xff},
+ {0x87, 0x5f, 0x00},
+ {0x87, 0x5f, 0x5f},
+ {0x87, 0x5f, 0x87},
+ {0x87, 0x5f, 0xaf},
+ {0x87, 0x5f, 0xd7},
+ {0x87, 0x5f, 0xff},
+ {0x87, 0x87, 0x00},
+ {0x87, 0x87, 0x5f},
+ {0x87, 0x87, 0x87},
+ {0x87, 0x87, 0xaf},
+ {0x87, 0x87, 0xd7},
+ {0x87, 0x87, 0xff},
+ {0x87, 0xaf, 0x00},
+ {0x87, 0xaf, 0x5f},
+ {0x87, 0xaf, 0x87},
+ {0x87, 0xaf, 0xaf},
+ {0x87, 0xaf, 0xd7},
+ {0x87, 0xaf, 0xff},
+ {0x87, 0xd7, 0x00},
+ {0x87, 0xd7, 0x5f},
+ {0x87, 0xd7, 0x87},
+ {0x87, 0xd7, 0xaf},
+ {0x87, 0xd7, 0xd7},
+ {0x87, 0xd7, 0xff},
+ {0x87, 0xff, 0x00},
+ {0x87, 0xff, 0x5f},
+ {0x87, 0xff, 0x87},
+ {0x87, 0xff, 0xaf},
+ {0x87, 0xff, 0xd7},
+ {0x87, 0xff, 0xff},
+ {0xaf, 0x00, 0x00},
+ {0xaf, 0x00, 0x5f},
+ {0xaf, 0x00, 0x87},
+ {0xaf, 0x00, 0xaf},
+ {0xaf, 0x00, 0xd7},
+ {0xaf, 0x00, 0xff},
+ {0xaf, 0x5f, 0x00},
+ {0xaf, 0x5f, 0x5f},
+ {0xaf, 0x5f, 0x87},
+ {0xaf, 0x5f, 0xaf},
+ {0xaf, 0x5f, 0xd7},
+ {0xaf, 0x5f, 0xff},
+ {0xaf, 0x87, 0x00},
+ {0xaf, 0x87, 0x5f},
+ {0xaf, 0x87, 0x87},
+ {0xaf, 0x87, 0xaf},
+ {0xaf, 0x87, 0xd7},
+ {0xaf, 0x87, 0xff},
+ {0xaf, 0xaf, 0x00},
+ {0xaf, 0xaf, 0x5f},
+ {0xaf, 0xaf, 0x87},
+ {0xaf, 0xaf, 0xaf},
+ {0xaf, 0xaf, 0xd7},
+ {0xaf, 0xaf, 0xff},
+ {0xaf, 0xd7, 0x00},
+ {0xaf, 0xd7, 0x5f},
+ {0xaf, 0xd7, 0x87},
+ {0xaf, 0xd7, 0xaf},
+ {0xaf, 0xd7, 0xd7},
+ {0xaf, 0xd7, 0xff},
+ {0xaf, 0xff, 0x00},
+ {0xaf, 0xff, 0x5f},
+ {0xaf, 0xff, 0x87},
+ {0xaf, 0xff, 0xaf},
+ {0xaf, 0xff, 0xd7},
+ {0xaf, 0xff, 0xff},
+ {0xd7, 0x00, 0x00},
+ {0xd7, 0x00, 0x5f},
+ {0xd7, 0x00, 0x87},
+ {0xd7, 0x00, 0xaf},
+ {0xd7, 0x00, 0xd7},
+ {0xd7, 0x00, 0xff},
+ {0xd7, 0x5f, 0x00},
+ {0xd7, 0x5f, 0x5f},
+ {0xd7, 0x5f, 0x87},
+ {0xd7, 0x5f, 0xaf},
+ {0xd7, 0x5f, 0xd7},
+ {0xd7, 0x5f, 0xff},
+ {0xd7, 0x87, 0x00},
+ {0xd7, 0x87, 0x5f},
+ {0xd7, 0x87, 0x87},
+ {0xd7, 0x87, 0xaf},
+ {0xd7, 0x87, 0xd7},
+ {0xd7, 0x87, 0xff},
+ {0xd7, 0xaf, 0x00},
+ {0xd7, 0xaf, 0x5f},
+ {0xd7, 0xaf, 0x87},
+ {0xd7, 0xaf, 0xaf},
+ {0xd7, 0xaf, 0xd7},
+ {0xd7, 0xaf, 0xff},
+ {0xd7, 0xd7, 0x00},
+ {0xd7, 0xd7, 0x5f},
+ {0xd7, 0xd7, 0x87},
+ {0xd7, 0xd7, 0xaf},
+ {0xd7, 0xd7, 0xd7},
+ {0xd7, 0xd7, 0xff},
+ {0xd7, 0xff, 0x00},
+ {0xd7, 0xff, 0x5f},
+ {0xd7, 0xff, 0x87},
+ {0xd7, 0xff, 0xaf},
+ {0xd7, 0xff, 0xd7},
+ {0xd7, 0xff, 0xff},
+ {0xff, 0x00, 0x00},
+ {0xff, 0x00, 0x5f},
+ {0xff, 0x00, 0x87},
+ {0xff, 0x00, 0xaf},
+ {0xff, 0x00, 0xd7},
+ {0xff, 0x00, 0xff},
+ {0xff, 0x5f, 0x00},
+ {0xff, 0x5f, 0x5f},
+ {0xff, 0x5f, 0x87},
+ {0xff, 0x5f, 0xaf},
+ {0xff, 0x5f, 0xd7},
+ {0xff, 0x5f, 0xff},
+ {0xff, 0x87, 0x00},
+ {0xff, 0x87, 0x5f},
+ {0xff, 0x87, 0x87},
+ {0xff, 0x87, 0xaf},
+ {0xff, 0x87, 0xd7},
+ {0xff, 0x87, 0xff},
+ {0xff, 0xaf, 0x00},
+ {0xff, 0xaf, 0x5f},
+ {0xff, 0xaf, 0x87},
+ {0xff, 0xaf, 0xaf},
+ {0xff, 0xaf, 0xd7},
+ {0xff, 0xaf, 0xff},
+ {0xff, 0xd7, 0x00},
+ {0xff, 0xd7, 0x5f},
+ {0xff, 0xd7, 0x87},
+ {0xff, 0xd7, 0xaf},
+ {0xff, 0xd7, 0xd7},
+ {0xff, 0xd7, 0xff},
+ {0xff, 0xff, 0x00},
+ {0xff, 0xff, 0x5f},
+ {0xff, 0xff, 0x87},
+ {0xff, 0xff, 0xaf},
+ {0xff, 0xff, 0xd7},
+ {0xff, 0xff, 0xff},
+ {0x00, 0x00, 0x00},
+ {0x12, 0x12, 0x12},
+ {0x1c, 0x1c, 0x1c},
+ {0x26, 0x26, 0x26},
+ {0x30, 0x30, 0x30},
+ {0x3a, 0x3a, 0x3a},
+ {0x44, 0x44, 0x44},
+ {0x4e, 0x4e, 0x4e},
+ {0x58, 0x58, 0x58},
+ {0x62, 0x62, 0x62},
+ {0x6c, 0x6c, 0x6c},
+ {0x76, 0x76, 0x76},
+ {0x80, 0x80, 0x80},
+ {0x8a, 0x8a, 0x8a},
+ {0x94, 0x94, 0x94},
+ {0x9e, 0x9e, 0x9e},
+ {0xa8, 0xa8, 0xa8},
+ {0xb2, 0xb2, 0xb2},
+ {0xbc, 0xbc, 0xbc},
+ {0xc6, 0xc6, 0xc6},
+ {0xd0, 0xd0, 0xd0},
+ {0xda, 0xda, 0xda},
+ {0xe4, 0xe4, 0xe4},
+ {0xee, 0xee, 0xee}
+};
+
+