-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcolors.h
125 lines (121 loc) · 7.1 KB
/
colors.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#include <vector>
#include <unordered_map>
const static std::vector<uint32_t> colors
{
0x000000, 0x00005f, 0x000087, 0x0000af, 0x0000d7, 0x0000ff, 0x005f00,
0x005f5f, 0x005f87, 0x005faf, 0x005fd7, 0x005fff, 0x008700, 0x00875f,
0x008787, 0x0087af, 0x0087d7, 0x0087ff, 0x00af00, 0x00af5f, 0x00af87,
0x00afaf, 0x00afd7, 0x00afff, 0x00d700, 0x00d75f, 0x00d787, 0x00d7af,
0x00d7d7, 0x00d7ff, 0x00ff00, 0x00ff5f, 0x00ff87, 0x00ffaf, 0x00ffd7,
0x00ffff, 0x5f0000, 0x5f005f, 0x5f0087, 0x5f00af, 0x5f00d7, 0x5f00ff,
0x5f5f00, 0x5f5f5f, 0x5f5f87, 0x5f5faf, 0x5f5fd7, 0x5f5fff, 0x5f8700,
0x5f875f, 0x5f8787, 0x5f87af, 0x5f87d7, 0x5f87ff, 0x5faf00, 0x5faf5f,
0x5faf87, 0x5fafaf, 0x5fafd7, 0x5fafff, 0x5fd700, 0x5fd75f, 0x5fd787,
0x5fd7af, 0x5fd7d7, 0x5fd7ff, 0x5fff00, 0x5fff5f, 0x5fff87, 0x5fffaf,
0x5fffd7, 0x5fffff, 0x870000, 0x87005f, 0x870087, 0x8700af, 0x8700d7,
0x8700ff, 0x875f00, 0x875f5f, 0x875f87, 0x875faf, 0x875fd7, 0x875fff,
0x878700, 0x87875f, 0x878787, 0x8787af, 0x8787d7, 0x8787ff, 0x87af00,
0x87af5f, 0x87af87, 0x87afaf, 0x87afd7, 0x87afff, 0x87d700, 0x87d75f,
0x87d787, 0x87d7af, 0x87d7d7, 0x87d7ff, 0x87ff00, 0x87ff5f, 0x87ff87,
0x87ffaf, 0x87ffd7, 0x87ffff, 0xaf0000, 0xaf005f, 0xaf0087, 0xaf00af,
0xaf00d7, 0xaf00ff, 0xaf5f00, 0xaf5f5f, 0xaf5f87, 0xaf5faf, 0xaf5fd7,
0xaf5fff, 0xaf8700, 0xaf875f, 0xaf8787, 0xaf87af, 0xaf87d7, 0xaf87ff,
0xafaf00, 0xafaf5f, 0xafaf87, 0xafafaf, 0xafafd7, 0xafafff, 0xafd700,
0xafd75f, 0xafd787, 0xafd7af, 0xafd7d7, 0xafd7ff, 0xafff00, 0xafff5f,
0xafff87, 0xafffaf, 0xafffd7, 0xafffff, 0xd70000, 0xd7005f, 0xd70087,
0xd700af, 0xd700d7, 0xd700ff, 0xd75f00, 0xd75f5f, 0xd75f87, 0xd75faf,
0xd75fd7, 0xd75fff, 0xd78700, 0xd7875f, 0xd78787, 0xd787af, 0xd787d7,
0xd787ff, 0xd7af00, 0xd7af5f, 0xd7af87, 0xd7afaf, 0xd7afd7, 0xd7afff,
0xd7d700, 0xd7d75f, 0xd7d787, 0xd7d7af, 0xd7d7d7, 0xd7d7ff, 0xd7ff00,
0xd7ff5f, 0xd7ff87, 0xd7ffaf, 0xd7ffd7, 0xd7ffff, 0xff0000, 0xff005f,
0xff0087, 0xff00af, 0xff00d7, 0xff00ff, 0xff5f00, 0xff5f5f, 0xff5f87,
0xff5faf, 0xff5fd7, 0xff5fff, 0xff8700, 0xff875f, 0xff8787, 0xff87af,
0xff87d7, 0xff87ff, 0xffaf00, 0xffaf5f, 0xffaf87, 0xffafaf, 0xffafd7,
0xffafff, 0xffd700, 0xffd75f, 0xffd787, 0xffd7af, 0xffd7d7, 0xffd7ff,
0xffff00, 0xffff5f, 0xffff87, 0xffffaf, 0xffffd7, 0xffffff, 0x080808,
0x121212, 0x1c1c1c, 0x262626, 0x303030, 0x3a3a3a, 0x444444, 0x4e4e4e,
0x585858, 0x626262, 0x6c6c6c, 0x767676, 0x808080, 0x8a8a8a, 0x949494,
0x9e9e9e, 0xa8a8a8, 0xb2b2b2, 0xbcbcbc, 0xc6c6c6, 0xd0d0d0, 0xdadada,
0xe4e4e4, 0xeeeeee
};
static std::unordered_map<uint32_t, uint8_t> color_map
{
{0x000000, 16}, {0x00005f, 17}, {0x000087, 18}, {0x0000af, 19},
{0x0000d7, 20}, {0x0000ff, 21}, {0x005f00, 22}, {0x005f5f, 23},
{0x005f87, 24}, {0x005faf, 25}, {0x005fd7, 26}, {0x005fff, 27},
{0x008700, 28}, {0x00875f, 29}, {0x008787, 30}, {0x0087af, 31},
{0x0087d7, 32}, {0x0087ff, 33}, {0x00af00, 34}, {0x00af5f, 35},
{0x00af87, 36}, {0x00afaf, 37}, {0x00afd7, 38}, {0x00afff, 39},
{0x00d700, 40}, {0x00d75f, 41}, {0x00d787, 42}, {0x00d7af, 43},
{0x00d7d7, 44}, {0x00d7ff, 45}, {0x00ff00, 46}, {0x00ff5f, 47},
{0x00ff87, 48}, {0x00ffaf, 49}, {0x00ffd7, 50}, {0x00ffff, 51},
{0x5f0000, 52}, {0x5f005f, 53}, {0x5f0087, 54}, {0x5f00af, 55},
{0x5f00d7, 56}, {0x5f00ff, 57}, {0x5f5f00, 58}, {0x5f5f5f, 59},
{0x5f5f87, 60}, {0x5f5faf, 61}, {0x5f5fd7, 62}, {0x5f5fff, 63},
{0x5f8700, 64}, {0x5f875f, 65}, {0x5f8787, 66}, {0x5f87af, 67},
{0x5f87d7, 68}, {0x5f87ff, 69}, {0x5faf00, 70}, {0x5faf5f, 71},
{0x5faf87, 72}, {0x5fafaf, 73}, {0x5fafd7, 74}, {0x5fafff, 75},
{0x5fd700, 76}, {0x5fd75f, 77}, {0x5fd787, 78}, {0x5fd7af, 79},
{0x5fd7d7, 80}, {0x5fd7ff, 81}, {0x5fff00, 82}, {0x5fff5f, 83},
{0x5fff87, 84}, {0x5fffaf, 85}, {0x5fffd7, 86}, {0x5fffff, 87},
{0x870000, 88}, {0x87005f, 89}, {0x870087, 90}, {0x8700af, 91},
{0x8700d7, 92}, {0x8700ff, 93}, {0x875f00, 94}, {0x875f5f, 95},
{0x875f87, 96}, {0x875faf, 97}, {0x875fd7, 98}, {0x875fff, 99},
{0x878700, 100}, {0x87875f, 101}, {0x878787, 102}, {0x8787af, 103},
{0x8787d7, 104}, {0x8787ff, 105}, {0x87af00, 106}, {0x87af5f, 107},
{0x87af87, 108}, {0x87afaf, 109}, {0x87afd7, 110}, {0x87afff, 111},
{0x87d700, 112}, {0x87d75f, 113}, {0x87d787, 114}, {0x87d7af, 115},
{0x87d7d7, 116}, {0x87d7ff, 117}, {0x87ff00, 118}, {0x87ff5f, 119},
{0x87ff87, 120}, {0x87ffaf, 121}, {0x87ffd7, 122}, {0x87ffff, 123},
{0xaf0000, 124}, {0xaf005f, 125}, {0xaf0087, 126}, {0xaf00af, 127},
{0xaf00d7, 128}, {0xaf00ff, 129}, {0xaf5f00, 130}, {0xaf5f5f, 131},
{0xaf5f87, 132}, {0xaf5faf, 133}, {0xaf5fd7, 134}, {0xaf5fff, 135},
{0xaf8700, 136}, {0xaf875f, 137}, {0xaf8787, 138}, {0xaf87af, 139},
{0xaf87d7, 140}, {0xaf87ff, 141}, {0xafaf00, 142}, {0xafaf5f, 143},
{0xafaf87, 144}, {0xafafaf, 145}, {0xafafd7, 146}, {0xafafff, 147},
{0xafd700, 148}, {0xafd75f, 149}, {0xafd787, 150}, {0xafd7af, 151},
{0xafd7d7, 152}, {0xafd7ff, 153}, {0xafff00, 154}, {0xafff5f, 155},
{0xafff87, 156}, {0xafffaf, 157}, {0xafffd7, 158}, {0xafffff, 159},
{0xd70000, 160}, {0xd7005f, 161}, {0xd70087, 162}, {0xd700af, 163},
{0xd700d7, 164}, {0xd700ff, 165}, {0xd75f00, 166}, {0xd75f5f, 167},
{0xd75f87, 168}, {0xd75faf, 169}, {0xd75fd7, 170}, {0xd75fff, 171},
{0xd78700, 172}, {0xd7875f, 173}, {0xd78787, 174}, {0xd787af, 175},
{0xd787d7, 176}, {0xd787ff, 177}, {0xd7af00, 178}, {0xd7af5f, 179},
{0xd7af87, 180}, {0xd7afaf, 181}, {0xd7afd7, 182}, {0xd7afff, 183},
{0xd7d700, 184}, {0xd7d75f, 185}, {0xd7d787, 186}, {0xd7d7af, 187},
{0xd7d7d7, 188}, {0xd7d7ff, 189}, {0xd7ff00, 190}, {0xd7ff5f, 191},
{0xd7ff87, 192}, {0xd7ffaf, 193}, {0xd7ffd7, 194}, {0xd7ffff, 195},
{0xff0000, 196}, {0xff005f, 197}, {0xff0087, 198}, {0xff00af, 199},
{0xff00d7, 200}, {0xff00ff, 201}, {0xff5f00, 202}, {0xff5f5f, 203},
{0xff5f87, 204}, {0xff5faf, 205}, {0xff5fd7, 206}, {0xff5fff, 207},
{0xff8700, 208}, {0xff875f, 209}, {0xff8787, 210}, {0xff87af, 211},
{0xff87d7, 212}, {0xff87ff, 213}, {0xffaf00, 214}, {0xffaf5f, 215},
{0xffaf87, 216}, {0xffafaf, 217}, {0xffafd7, 218}, {0xffafff, 219},
{0xffd700, 220}, {0xffd75f, 221}, {0xffd787, 222}, {0xffd7af, 223},
{0xffd7d7, 224}, {0xffd7ff, 225}, {0xffff00, 226}, {0xffff5f, 227},
{0xffff87, 228}, {0xffffaf, 229}, {0xffffd7, 230}, {0xffffff, 231},
{0x080808, 232}, {0x121212, 233}, {0x1c1c1c, 234}, {0x262626, 235},
{0x303030, 236}, {0x3a3a3a, 237}, {0x444444, 238}, {0x4e4e4e, 239},
{0x585858, 240}, {0x626262, 241}, {0x6c6c6c, 242}, {0x767676, 243},
{0x808080, 244}, {0x8a8a8a, 245}, {0x949494, 246}, {0x9e9e9e, 247},
{0xa8a8a8, 248}, {0xb2b2b2, 249}, {0xbcbcbc, 250}, {0xc6c6c6, 251},
{0xd0d0d0, 252}, {0xdadada, 253}, {0xe4e4e4, 254}, {0xeeeeee, 255}
};
uint64_t cdist(uint64_t a, uint64_t b) {
return
llabs(((a >> 16)& 0xFF) - ((b >> 16)& 0xFF)) +
llabs(((a >> 8) & 0xFF)- ((b >> 8) & 0xFF)) +
llabs((a & 0xFF)- (b & 0xFF));
}
uint8_t get_closest_color(uint64_t c) {
uint64_t closest = 0x0;
uint64_t dist = 0xffffff;
for(auto t : colors) {
uint64_t a = cdist(t, c);
if(a < dist) {
closest = t;
dist = a;
}
}
return color_map[closest];
}