You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cointop/vendor/github.com/tomnomnom/xtermcolor/colors.go

320 lines
12 KiB
Go

// Package xtermcolor provides a palette for xterm colors, and conversion to that palette from anything implementing color.Color
package xtermcolor
import (
"errors"
"image/color"
"strconv"
)
// Colors lists Xterm color codes vs. RGBA; values taken from https://gist.github.com/jasonm23/2868981
// color.Palette is really []color.Color and provides .Convert() and .Index()
var Colors = color.Palette{
// Basic block
0: color.RGBA{0x00, 0x00, 0x00, 0xff},
1: color.RGBA{0x80, 0x00, 0x00, 0xff},
2: color.RGBA{0x00, 0x80, 0x00, 0xff},
3: color.RGBA{0x80, 0x80, 0x00, 0xff},
4: color.RGBA{0x00, 0x00, 0x80, 0xff},
5: color.RGBA{0x80, 0x00, 0x80, 0xff},
6: color.RGBA{0x00, 0x80, 0x80, 0xff},
7: color.RGBA{0xc0, 0xc0, 0xc0, 0xff},
8: color.RGBA{0x80, 0x80, 0x80, 0xff},
9: color.RGBA{0xff, 0x00, 0x00, 0xff},
10: color.RGBA{0x00, 0xff, 0x00, 0xff},
11: color.RGBA{0xff, 0xff, 0x00, 0xff},
12: color.RGBA{0x00, 0x00, 0xff, 0xff},
13: color.RGBA{0xff, 0x00, 0xff, 0xff},
14: color.RGBA{0x00, 0xff, 0xff, 0xff},
15: color.RGBA{0xff, 0xff, 0xff, 0xff},
// 6x6x6 cube block
16: color.RGBA{0x00, 0x00, 0x00, 0xff},
17: color.RGBA{0x00, 0x00, 0x5f, 0xff},
18: color.RGBA{0x00, 0x00, 0x87, 0xff},
19: color.RGBA{0x00, 0x00, 0xaf, 0xff},
20: color.RGBA{0x00, 0x00, 0xd7, 0xff},
21: color.RGBA{0x00, 0x00, 0xff, 0xff},
22: color.RGBA{0x00, 0x5f, 0x00, 0xff},
23: color.RGBA{0x00, 0x5f, 0x5f, 0xff},
24: color.RGBA{0x00, 0x5f, 0x87, 0xff},
25: color.RGBA{0x00, 0x5f, 0xaf, 0xff},
26: color.RGBA{0x00, 0x5f, 0xd7, 0xff},
27: color.RGBA{0x00, 0x5f, 0xff, 0xff},
28: color.RGBA{0x00, 0x87, 0x00, 0xff},
29: color.RGBA{0x00, 0x87, 0x5f, 0xff},
30: color.RGBA{0x00, 0x87, 0x87, 0xff},
31: color.RGBA{0x00, 0x87, 0xaf, 0xff},
32: color.RGBA{0x00, 0x87, 0xd7, 0xff},
33: color.RGBA{0x00, 0x87, 0xff, 0xff},
34: color.RGBA{0x00, 0xaf, 0x00, 0xff},
35: color.RGBA{0x00, 0xaf, 0x5f, 0xff},
36: color.RGBA{0x00, 0xaf, 0x87, 0xff},
37: color.RGBA{0x00, 0xaf, 0xaf, 0xff},
38: color.RGBA{0x00, 0xaf, 0xd7, 0xff},
39: color.RGBA{0x00, 0xaf, 0xff, 0xff},
40: color.RGBA{0x00, 0xd7, 0x00, 0xff},
41: color.RGBA{0x00, 0xd7, 0x5f, 0xff},
42: color.RGBA{0x00, 0xd7, 0x87, 0xff},
43: color.RGBA{0x00, 0xd7, 0xaf, 0xff},
44: color.RGBA{0x00, 0xd7, 0xd7, 0xff},
45: color.RGBA{0x00, 0xd7, 0xff, 0xff},
46: color.RGBA{0x00, 0xff, 0x00, 0xff},
47: color.RGBA{0x00, 0xff, 0x5f, 0xff},
48: color.RGBA{0x00, 0xff, 0x87, 0xff},
49: color.RGBA{0x00, 0xff, 0xaf, 0xff},
50: color.RGBA{0x00, 0xff, 0xd7, 0xff},
51: color.RGBA{0x00, 0xff, 0xff, 0xff},
82: color.RGBA{0x5f, 0xff, 0x00, 0xff},
83: color.RGBA{0x5f, 0xff, 0x5f, 0xff},
84: color.RGBA{0x5f, 0xff, 0x87, 0xff},
85: color.RGBA{0x5f, 0xff, 0xaf, 0xff},
86: color.RGBA{0x5f, 0xff, 0xd7, 0xff},
87: color.RGBA{0x5f, 0xff, 0xff, 0xff},
76: color.RGBA{0x5f, 0xd7, 0x00, 0xff},
77: color.RGBA{0x5f, 0xd7, 0x5f, 0xff},
78: color.RGBA{0x5f, 0xd7, 0x87, 0xff},
79: color.RGBA{0x5f, 0xd7, 0xaf, 0xff},
80: color.RGBA{0x5f, 0xd7, 0xd7, 0xff},
81: color.RGBA{0x5f, 0xd7, 0xff, 0xff},
70: color.RGBA{0x5f, 0xaf, 0x00, 0xff},
71: color.RGBA{0x5f, 0xaf, 0x5f, 0xff},
72: color.RGBA{0x5f, 0xaf, 0x87, 0xff},
73: color.RGBA{0x5f, 0xaf, 0xaf, 0xff},
74: color.RGBA{0x5f, 0xaf, 0xd7, 0xff},
75: color.RGBA{0x5f, 0xaf, 0xff, 0xff},
64: color.RGBA{0x5f, 0x87, 0x00, 0xff},
65: color.RGBA{0x5f, 0x87, 0x5f, 0xff},
66: color.RGBA{0x5f, 0x87, 0x87, 0xff},
67: color.RGBA{0x5f, 0x87, 0xaf, 0xff},
68: color.RGBA{0x5f, 0x87, 0xd7, 0xff},
69: color.RGBA{0x5f, 0x87, 0xff, 0xff},
58: color.RGBA{0x5f, 0x5f, 0x00, 0xff},
59: color.RGBA{0x5f, 0x5f, 0x5f, 0xff},
60: color.RGBA{0x5f, 0x5f, 0x87, 0xff},
61: color.RGBA{0x5f, 0x5f, 0xaf, 0xff},
62: color.RGBA{0x5f, 0x5f, 0xd7, 0xff},
63: color.RGBA{0x5f, 0x5f, 0xff, 0xff},
52: color.RGBA{0x5f, 0x00, 0x00, 0xff},
53: color.RGBA{0x5f, 0x00, 0x5f, 0xff},
54: color.RGBA{0x5f, 0x00, 0x87, 0xff},
55: color.RGBA{0x5f, 0x00, 0xaf, 0xff},
56: color.RGBA{0x5f, 0x00, 0xd7, 0xff},
57: color.RGBA{0x5f, 0x00, 0xff, 0xff},
93: color.RGBA{0x87, 0x00, 0xff, 0xff},
92: color.RGBA{0x87, 0x00, 0xd7, 0xff},
91: color.RGBA{0x87, 0x00, 0xaf, 0xff},
90: color.RGBA{0x87, 0x00, 0x87, 0xff},
89: color.RGBA{0x87, 0x00, 0x5f, 0xff},
88: color.RGBA{0x87, 0x00, 0x00, 0xff},
99: color.RGBA{0x87, 0x5f, 0xff, 0xff},
98: color.RGBA{0x87, 0x5f, 0xd7, 0xff},
97: color.RGBA{0x87, 0x5f, 0xaf, 0xff},
96: color.RGBA{0x87, 0x5f, 0x87, 0xff},
95: color.RGBA{0x87, 0x5f, 0x5f, 0xff},
94: color.RGBA{0x87, 0x5f, 0x00, 0xff},
105: color.RGBA{0x87, 0x87, 0xff, 0xff},
104: color.RGBA{0x87, 0x87, 0xd7, 0xff},
103: color.RGBA{0x87, 0x87, 0xaf, 0xff},
102: color.RGBA{0x87, 0x87, 0x87, 0xff},
101: color.RGBA{0x87, 0x87, 0x5f, 0xff},
100: color.RGBA{0x87, 0x87, 0x00, 0xff},
111: color.RGBA{0x87, 0xaf, 0xff, 0xff},
110: color.RGBA{0x87, 0xaf, 0xd7, 0xff},
109: color.RGBA{0x87, 0xaf, 0xaf, 0xff},
108: color.RGBA{0x87, 0xaf, 0x87, 0xff},
107: color.RGBA{0x87, 0xaf, 0x5f, 0xff},
106: color.RGBA{0x87, 0xaf, 0x00, 0xff},
117: color.RGBA{0x87, 0xd7, 0xff, 0xff},
116: color.RGBA{0x87, 0xd7, 0xd7, 0xff},
115: color.RGBA{0x87, 0xd7, 0xaf, 0xff},
114: color.RGBA{0x87, 0xd7, 0x87, 0xff},
113: color.RGBA{0x87, 0xd7, 0x5f, 0xff},
112: color.RGBA{0x87, 0xd7, 0x00, 0xff},
123: color.RGBA{0x87, 0xff, 0xff, 0xff},
122: color.RGBA{0x87, 0xff, 0xd7, 0xff},
121: color.RGBA{0x87, 0xff, 0xaf, 0xff},
120: color.RGBA{0x87, 0xff, 0x87, 0xff},
119: color.RGBA{0x87, 0xff, 0x5f, 0xff},
118: color.RGBA{0x87, 0xff, 0x00, 0xff},
159: color.RGBA{0xaf, 0xff, 0xff, 0xff},
158: color.RGBA{0xaf, 0xff, 0xd7, 0xff},
157: color.RGBA{0xaf, 0xff, 0xaf, 0xff},
156: color.RGBA{0xaf, 0xff, 0x87, 0xff},
155: color.RGBA{0xaf, 0xff, 0x5f, 0xff},
154: color.RGBA{0xaf, 0xff, 0x00, 0xff},
153: color.RGBA{0xaf, 0xd7, 0xff, 0xff},
152: color.RGBA{0xaf, 0xd7, 0xd7, 0xff},
151: color.RGBA{0xaf, 0xd7, 0xaf, 0xff},
150: color.RGBA{0xaf, 0xd7, 0x87, 0xff},
149: color.RGBA{0xaf, 0xd7, 0x5f, 0xff},
148: color.RGBA{0xaf, 0xd7, 0x00, 0xff},
147: color.RGBA{0xaf, 0xaf, 0xff, 0xff},
146: color.RGBA{0xaf, 0xaf, 0xd7, 0xff},
145: color.RGBA{0xaf, 0xaf, 0xaf, 0xff},
144: color.RGBA{0xaf, 0xaf, 0x87, 0xff},
143: color.RGBA{0xaf, 0xaf, 0x5f, 0xff},
142: color.RGBA{0xaf, 0xaf, 0x00, 0xff},
141: color.RGBA{0xaf, 0x87, 0xff, 0xff},
140: color.RGBA{0xaf, 0x87, 0xd7, 0xff},
139: color.RGBA{0xaf, 0x87, 0xaf, 0xff},
138: color.RGBA{0xaf, 0x87, 0x87, 0xff},
137: color.RGBA{0xaf, 0x87, 0x5f, 0xff},
136: color.RGBA{0xaf, 0x87, 0x00, 0xff},
135: color.RGBA{0xaf, 0x5f, 0xff, 0xff},
134: color.RGBA{0xaf, 0x5f, 0xd7, 0xff},
133: color.RGBA{0xaf, 0x5f, 0xaf, 0xff},
132: color.RGBA{0xaf, 0x5f, 0x87, 0xff},
131: color.RGBA{0xaf, 0x5f, 0x5f, 0xff},
130: color.RGBA{0xaf, 0x5f, 0x00, 0xff},
129: color.RGBA{0xaf, 0x00, 0xff, 0xff},
128: color.RGBA{0xaf, 0x00, 0xd7, 0xff},
127: color.RGBA{0xaf, 0x00, 0xaf, 0xff},
126: color.RGBA{0xaf, 0x00, 0x87, 0xff},
125: color.RGBA{0xaf, 0x00, 0x5f, 0xff},
124: color.RGBA{0xaf, 0x00, 0x00, 0xff},
160: color.RGBA{0xd7, 0x00, 0x00, 0xff},
161: color.RGBA{0xd7, 0x00, 0x5f, 0xff},
162: color.RGBA{0xd7, 0x00, 0x87, 0xff},
163: color.RGBA{0xd7, 0x00, 0xaf, 0xff},
164: color.RGBA{0xd7, 0x00, 0xd7, 0xff},
165: color.RGBA{0xd7, 0x00, 0xff, 0xff},
166: color.RGBA{0xd7, 0x5f, 0x00, 0xff},
167: color.RGBA{0xd7, 0x5f, 0x5f, 0xff},
168: color.RGBA{0xd7, 0x5f, 0x87, 0xff},
169: color.RGBA{0xd7, 0x5f, 0xaf, 0xff},
170: color.RGBA{0xd7, 0x5f, 0xd7, 0xff},
171: color.RGBA{0xd7, 0x5f, 0xff, 0xff},
172: color.RGBA{0xd7, 0x87, 0x00, 0xff},
173: color.RGBA{0xd7, 0x87, 0x5f, 0xff},
174: color.RGBA{0xd7, 0x87, 0x87, 0xff},
175: color.RGBA{0xd7, 0x87, 0xaf, 0xff},
176: color.RGBA{0xd7, 0x87, 0xd7, 0xff},
177: color.RGBA{0xd7, 0x87, 0xff, 0xff},
178: color.RGBA{0xdf, 0xaf, 0x00, 0xff},
179: color.RGBA{0xdf, 0xaf, 0x5f, 0xff},
180: color.RGBA{0xdf, 0xaf, 0x87, 0xff},
181: color.RGBA{0xdf, 0xaf, 0xaf, 0xff},
182: color.RGBA{0xdf, 0xaf, 0xdf, 0xff},
183: color.RGBA{0xdf, 0xaf, 0xff, 0xff},
184: color.RGBA{0xdf, 0xdf, 0x00, 0xff},
185: color.RGBA{0xdf, 0xdf, 0x5f, 0xff},
186: color.RGBA{0xdf, 0xdf, 0x87, 0xff},
187: color.RGBA{0xdf, 0xdf, 0xaf, 0xff},
188: color.RGBA{0xdf, 0xdf, 0xdf, 0xff},
189: color.RGBA{0xdf, 0xdf, 0xff, 0xff},
190: color.RGBA{0xdf, 0xff, 0x00, 0xff},
191: color.RGBA{0xdf, 0xff, 0x5f, 0xff},
192: color.RGBA{0xdf, 0xff, 0x87, 0xff},
193: color.RGBA{0xdf, 0xff, 0xaf, 0xff},
194: color.RGBA{0xdf, 0xff, 0xdf, 0xff},
195: color.RGBA{0xdf, 0xff, 0xff, 0xff},
226: color.RGBA{0xff, 0xff, 0x00, 0xff},
227: color.RGBA{0xff, 0xff, 0x5f, 0xff},
228: color.RGBA{0xff, 0xff, 0x87, 0xff},
229: color.RGBA{0xff, 0xff, 0xaf, 0xff},
230: color.RGBA{0xff, 0xff, 0xdf, 0xff},
231: color.RGBA{0xff, 0xff, 0xff, 0xff},
220: color.RGBA{0xff, 0xdf, 0x00, 0xff},
221: color.RGBA{0xff, 0xdf, 0x5f, 0xff},
222: color.RGBA{0xff, 0xdf, 0x87, 0xff},
223: color.RGBA{0xff, 0xdf, 0xaf, 0xff},
224: color.RGBA{0xff, 0xdf, 0xdf, 0xff},
225: color.RGBA{0xff, 0xdf, 0xff, 0xff},
214: color.RGBA{0xff, 0xaf, 0x00, 0xff},
215: color.RGBA{0xff, 0xaf, 0x5f, 0xff},
216: color.RGBA{0xff, 0xaf, 0x87, 0xff},
217: color.RGBA{0xff, 0xaf, 0xaf, 0xff},
218: color.RGBA{0xff, 0xaf, 0xdf, 0xff},
219: color.RGBA{0xff, 0xaf, 0xff, 0xff},
208: color.RGBA{0xff, 0x87, 0x00, 0xff},
209: color.RGBA{0xff, 0x87, 0x5f, 0xff},
210: color.RGBA{0xff, 0x87, 0x87, 0xff},
211: color.RGBA{0xff, 0x87, 0xaf, 0xff},
212: color.RGBA{0xff, 0x87, 0xdf, 0xff},
213: color.RGBA{0xff, 0x87, 0xff, 0xff},
202: color.RGBA{0xff, 0x5f, 0x00, 0xff},
203: color.RGBA{0xff, 0x5f, 0x5f, 0xff},
204: color.RGBA{0xff, 0x5f, 0x87, 0xff},
205: color.RGBA{0xff, 0x5f, 0xaf, 0xff},
206: color.RGBA{0xff, 0x5f, 0xdf, 0xff},
207: color.RGBA{0xff, 0x5f, 0xff, 0xff},
196: color.RGBA{0xff, 0x00, 0x00, 0xff},
197: color.RGBA{0xff, 0x00, 0x5f, 0xff},
198: color.RGBA{0xff, 0x00, 0x87, 0xff},
199: color.RGBA{0xff, 0x00, 0xaf, 0xff},
200: color.RGBA{0xff, 0x00, 0xdf, 0xff},
201: color.RGBA{0xff, 0x00, 0xff, 0xff},
// Grayscale block
232: color.RGBA{0x08, 0x08, 0x08, 0xff},
233: color.RGBA{0x12, 0x12, 0x12, 0xff},
234: color.RGBA{0x1c, 0x1c, 0x1c, 0xff},
235: color.RGBA{0x26, 0x26, 0x26, 0xff},
236: color.RGBA{0x30, 0x30, 0x30, 0xff},
237: color.RGBA{0x3a, 0x3a, 0x3a, 0xff},
238: color.RGBA{0x44, 0x44, 0x44, 0xff},
239: color.RGBA{0x4e, 0x4e, 0x4e, 0xff},
240: color.RGBA{0x58, 0x58, 0x58, 0xff},
241: color.RGBA{0x62, 0x62, 0x62, 0xff},
242: color.RGBA{0x6c, 0x6c, 0x6c, 0xff},
243: color.RGBA{0x76, 0x76, 0x76, 0xff},
255: color.RGBA{0xee, 0xee, 0xee, 0xff},
254: color.RGBA{0xe4, 0xe4, 0xe4, 0xff},
253: color.RGBA{0xda, 0xda, 0xda, 0xff},
252: color.RGBA{0xd0, 0xd0, 0xd0, 0xff},
251: color.RGBA{0xc6, 0xc6, 0xc6, 0xff},
250: color.RGBA{0xbc, 0xbc, 0xbc, 0xff},
249: color.RGBA{0xb2, 0xb2, 0xb2, 0xff},
248: color.RGBA{0xa8, 0xa8, 0xa8, 0xff},
247: color.RGBA{0x9e, 0x9e, 0x9e, 0xff},
246: color.RGBA{0x94, 0x94, 0x94, 0xff},
245: color.RGBA{0x8a, 0x8a, 0x8a, 0xff},
244: color.RGBA{0x80, 0x80, 0x80, 0xff},
}
var (
// ErrorEmptyHexStr is returned by FromHexStr when an empty hex string is provided
ErrorEmptyHexStr = errors.New("Empty hex string provided")
// ErrorHexParse is returned by FromHexStr when an invalid hex string is provided
ErrorHexParse = errors.New("Failed to parse string as hex; try something like #CC66FF")
)
// Convert a 32 bit color to a color.RGBA
func intToRGBA(c uint32) color.RGBA {
r := uint8((c >> 24) & 0xff)
g := uint8((c >> 16) & 0xff)
b := uint8((c >> 8) & 0xff)
a := uint8(c & 0xff)
return color.RGBA{r, g, b, a}
}
// FromColor finds the closest xterm colour to a given color.Color
func FromColor(target color.Color) uint8 {
return uint8(Colors.Index(target))
}
// FromInt finds the closest xterm color to a given 32 bit RGBA color (e.g. 0xff00ff00).
func FromInt(target uint32) uint8 {
return FromColor(intToRGBA(target))
}
// FromHexStr finds the closest xterm color to a given 24 bit hex string, e.g. "#CC66FF" or "FEFEFE"
// It's mostly useful if you're used to specifying colours as hex in CSS etc
func FromHexStr(str string) (uint8, error) {
if len(str) == 0 {
return 0, ErrorEmptyHexStr
}
if str[0] == '#' {
str = str[1:]
}
v, err := strconv.ParseUint(str, 16, 24)
if err != nil {
return 0, ErrorHexParse
}
return FromInt(uint32((v << 8) + 0xFF)), nil
}