@@ -1,511 +1,298 @@
11-- This header file was generated by ./256colres.pl
22module Graphics.Vty.Attributes.Color240
3− ( rgbColor
4− , color240ToRGB
3+ ( rgbColorToColor240
4+ , color240CodeToRGB
55 )
66where
77
8−import Graphics.Vty.Attributes.Color
9−
8+import Data.Word (Word8)
109import Text.Printf
1110
1211-- Note: rgbColor's mapping from RGB to 240 colors was generated from
1312-- 256colres.pl which is forked from xterm 256colres.pl.
1413
15−-- | Create a Vty 'Color' (in the 240 color set) from an RGB triple.
16−-- This function is lossy in the sense that we only internally support 240 colors but the
17−-- #RRGGBB format supports 16^3 colors.
18−rgbColor :: Integral i => i -> i -> i -> Color
19−rgbColor r g b
14+-- | Create a value in the Color240 set from an RGB triple
15+rgbColorToColor240 :: Integral i => i -> i -> i -> Word8
16+rgbColorToColor240 r g b
2017 | r < 0 && g < 0 && b < 0 = error "rgbColor with negative color component intensity"
21− | r == 8 && g == 8 && b == 8 = Color240 216
22− | r == 18 && g == 18 && b == 18 = Color240 217
23− | r == 28 && g == 28 && b == 28 = Color240 218
24− | r == 38 && g == 38 && b == 38 = Color240 219
25− | r == 48 && g == 48 && b == 48 = Color240 220
26− | r == 58 && g == 58 && b == 58 = Color240 221
27− | r == 68 && g == 68 && b == 68 = Color240 222
28− | r == 78 && g == 78 && b == 78 = Color240 223
29− | r == 88 && g == 88 && b == 88 = Color240 224
30− | r == 98 && g == 98 && b == 98 = Color240 225
31− | r == 108 && g == 108 && b == 108 = Color240 226
32− | r == 118 && g == 118 && b == 118 = Color240 227
33− | r == 128 && g == 128 && b == 128 = Color240 228
34− | r == 138 && g == 138 && b == 138 = Color240 229
35− | r == 148 && g == 148 && b == 148 = Color240 230
36− | r == 158 && g == 158 && b == 158 = Color240 231
37− | r == 168 && g == 168 && b == 168 = Color240 232
38− | r == 178 && g == 178 && b == 178 = Color240 233
39− | r == 188 && g == 188 && b == 188 = Color240 234
40− | r == 198 && g == 198 && b == 198 = Color240 235
41− | r == 208 && g == 208 && b == 208 = Color240 236
42− | r == 218 && g == 218 && b == 218 = Color240 237
43− | r == 228 && g == 228 && b == 228 = Color240 238
44− | r == 238 && g == 238 && b == 238 = Color240 239
45− | r <= 0 && g <= 0 && b <= 0 = Color240 0
46− | r <= 0 && g <= 0 && b <= 95 = Color240 1
47− | r <= 0 && g <= 0 && b <= 135 = Color240 2
48− | r <= 0 && g <= 0 && b <= 175 = Color240 3
49− | r <= 0 && g <= 0 && b <= 215 = Color240 4
50− | r <= 0 && g <= 0 && b <= 255 = Color240 5
51− | r <= 0 && g <= 95 && b <= 0 = Color240 6
52− | r <= 0 && g <= 95 && b <= 95 = Color240 7
53− | r <= 0 && g <= 95 && b <= 135 = Color240 8
54− | r <= 0 && g <= 95 && b <= 175 = Color240 9
55− | r <= 0 && g <= 95 && b <= 215 = Color240 10
56− | r <= 0 && g <= 95 && b <= 255 = Color240 11
57− | r <= 0 && g <= 135 && b <= 0 = Color240 12
58− | r <= 0 && g <= 135 && b <= 95 = Color240 13
59− | r <= 0 && g <= 135 && b <= 135 = Color240 14
60− | r <= 0 && g <= 135 && b <= 175 = Color240 15
61− | r <= 0 && g <= 135 && b <= 215 = Color240 16
62− | r <= 0 && g <= 135 && b <= 255 = Color240 17
63− | r <= 0 && g <= 175 && b <= 0 = Color240 18
64− | r <= 0 && g <= 175 && b <= 95 = Color240 19
65− | r <= 0 && g <= 175 && b <= 135 = Color240 20
66− | r <= 0 && g <= 175 && b <= 175 = Color240 21
67− | r <= 0 && g <= 175 && b <= 215 = Color240 22
68− | r <= 0 && g <= 175 && b <= 255 = Color240 23
69− | r <= 0 && g <= 215 && b <= 0 = Color240 24
70− | r <= 0 && g <= 215 && b <= 95 = Color240 25
71− | r <= 0 && g <= 215 && b <= 135 = Color240 26
72− | r <= 0 && g <= 215 && b <= 175 = Color240 27
73− | r <= 0 && g <= 215 && b <= 215 = Color240 28
74− | r <= 0 && g <= 215 && b <= 255 = Color240 29
75− | r <= 0 && g <= 255 && b <= 0 = Color240 30
76− | r <= 0 && g <= 255 && b <= 95 = Color240 31
77− | r <= 0 && g <= 255 && b <= 135 = Color240 32
78− | r <= 0 && g <= 255 && b <= 175 = Color240 33
79− | r <= 0 && g <= 255 && b <= 215 = Color240 34
80− | r <= 0 && g <= 255 && b <= 255 = Color240 35
81− | r <= 95 && g <= 0 && b <= 0 = Color240 36
82− | r <= 95 && g <= 0 && b <= 95 = Color240 37
83− | r <= 95 && g <= 0 && b <= 135 = Color240 38
84− | r <= 95 && g <= 0 && b <= 175 = Color240 39
85− | r <= 95 && g <= 0 && b <= 215 = Color240 40
86− | r <= 95 && g <= 0 && b <= 255 = Color240 41
87− | r <= 95 && g <= 95 && b <= 0 = Color240 42
88− | r <= 95 && g <= 95 && b <= 95 = Color240 43
89− | r <= 95 && g <= 95 && b <= 135 = Color240 44
90− | r <= 95 && g <= 95 && b <= 175 = Color240 45
91− | r <= 95 && g <= 95 && b <= 215 = Color240 46
92− | r <= 95 && g <= 95 && b <= 255 = Color240 47
93− | r <= 95 && g <= 135 && b <= 0 = Color240 48
94− | r <= 95 && g <= 135 && b <= 95 = Color240 49
95− | r <= 95 && g <= 135 && b <= 135 = Color240 50
96− | r <= 95 && g <= 135 && b <= 175 = Color240 51
97− | r <= 95 && g <= 135 && b <= 215 = Color240 52
98− | r <= 95 && g <= 135 && b <= 255 = Color240 53
99− | r <= 95 && g <= 175 && b <= 0 = Color240 54
100− | r <= 95 && g <= 175 && b <= 95 = Color240 55
101− | r <= 95 && g <= 175 && b <= 135 = Color240 56
102− | r <= 95 && g <= 175 && b <= 175 = Color240 57
103− | r <= 95 && g <= 175 && b <= 215 = Color240 58
104− | r <= 95 && g <= 175 && b <= 255 = Color240 59
105− | r <= 95 && g <= 215 && b <= 0 = Color240 60
106− | r <= 95 && g <= 215 && b <= 95 = Color240 61
107− | r <= 95 && g <= 215 && b <= 135 = Color240 62
108− | r <= 95 && g <= 215 && b <= 175 = Color240 63
109− | r <= 95 && g <= 215 && b <= 215 = Color240 64
110− | r <= 95 && g <= 215 && b <= 255 = Color240 65
111− | r <= 95 && g <= 255 && b <= 0 = Color240 66
112− | r <= 95 && g <= 255 && b <= 95 = Color240 67
113− | r <= 95 && g <= 255 && b <= 135 = Color240 68
114− | r <= 95 && g <= 255 && b <= 175 = Color240 69
115− | r <= 95 && g <= 255 && b <= 215 = Color240 70
116− | r <= 95 && g <= 255 && b <= 255 = Color240 71
117− | r <= 135 && g <= 0 && b <= 0 = Color240 72
118− | r <= 135 && g <= 0 && b <= 95 = Color240 73
119− | r <= 135 && g <= 0 && b <= 135 = Color240 74
120− | r <= 135 && g <= 0 && b <= 175 = Color240 75
121− | r <= 135 && g <= 0 && b <= 215 = Color240 76
122− | r <= 135 && g <= 0 && b <= 255 = Color240 77
123− | r <= 135 && g <= 95 && b <= 0 = Color240 78
124− | r <= 135 && g <= 95 && b <= 95 = Color240 79
125− | r <= 135 && g <= 95 && b <= 135 = Color240 80
126− | r <= 135 && g <= 95 && b <= 175 = Color240 81
127− | r <= 135 && g <= 95 && b <= 215 = Color240 82
128− | r <= 135 && g <= 95 && b <= 255 = Color240 83
129− | r <= 135 && g <= 135 && b <= 0 = Color240 84
130− | r <= 135 && g <= 135 && b <= 95 = Color240 85
131− | r <= 135 && g <= 135 && b <= 135 = Color240 86
132− | r <= 135 && g <= 135 && b <= 175 = Color240 87
133− | r <= 135 && g <= 135 && b <= 215 = Color240 88
134− | r <= 135 && g <= 135 && b <= 255 = Color240 89
135− | r <= 135 && g <= 175 && b <= 0 = Color240 90
136− | r <= 135 && g <= 175 && b <= 95 = Color240 91
137− | r <= 135 && g <= 175 && b <= 135 = Color240 92
138− | r <= 135 && g <= 175 && b <= 175 = Color240 93
139− | r <= 135 && g <= 175 && b <= 215 = Color240 94
140− | r <= 135 && g <= 175 && b <= 255 = Color240 95
141− | r <= 135 && g <= 215 && b <= 0 = Color240 96
142− | r <= 135 && g <= 215 && b <= 95 = Color240 97
143− | r <= 135 && g <= 215 && b <= 135 = Color240 98
144− | r <= 135 && g <= 215 && b <= 175 = Color240 99
145− | r <= 135 && g <= 215 && b <= 215 = Color240 100
146− | r <= 135 && g <= 215 && b <= 255 = Color240 101
147− | r <= 135 && g <= 255 && b <= 0 = Color240 102
148− | r <= 135 && g <= 255 && b <= 95 = Color240 103
149− | r <= 135 && g <= 255 && b <= 135 = Color240 104
150− | r <= 135 && g <= 255 && b <= 175 = Color240 105
151− | r <= 135 && g <= 255 && b <= 215 = Color240 106
152− | r <= 135 && g <= 255 && b <= 255 = Color240 107
153− | r <= 175 && g <= 0 && b <= 0 = Color240 108
154− | r <= 175 && g <= 0 && b <= 95 = Color240 109
155− | r <= 175 && g <= 0 && b <= 135 = Color240 110
156− | r <= 175 && g <= 0 && b <= 175 = Color240 111
157− | r <= 175 && g <= 0 && b <= 215 = Color240 112
158− | r <= 175 && g <= 0 && b <= 255 = Color240 113
159− | r <= 175 && g <= 95 && b <= 0 = Color240 114
160− | r <= 175 && g <= 95 && b <= 95 = Color240 115
161− | r <= 175 && g <= 95 && b <= 135 = Color240 116
162− | r <= 175 && g <= 95 && b <= 175 = Color240 117
163− | r <= 175 && g <= 95 && b <= 215 = Color240 118
164− | r <= 175 && g <= 95 && b <= 255 = Color240 119
165− | r <= 175 && g <= 135 && b <= 0 = Color240 120
166− | r <= 175 && g <= 135 && b <= 95 = Color240 121
167− | r <= 175 && g <= 135 && b <= 135 = Color240 122
168− | r <= 175 && g <= 135 && b <= 175 = Color240 123
169− | r <= 175 && g <= 135 && b <= 215 = Color240 124
170− | r <= 175 && g <= 135 && b <= 255 = Color240 125
171− | r <= 175 && g <= 175 && b <= 0 = Color240 126
172− | r <= 175 && g <= 175 && b <= 95 = Color240 127
173− | r <= 175 && g <= 175 && b <= 135 = Color240 128
174− | r <= 175 && g <= 175 && b <= 175 = Color240 129
175− | r <= 175 && g <= 175 && b <= 215 = Color240 130
176− | r <= 175 && g <= 175 && b <= 255 = Color240 131
177− | r <= 175 && g <= 215 && b <= 0 = Color240 132
178− | r <= 175 && g <= 215 && b <= 95 = Color240 133
179− | r <= 175 && g <= 215 && b <= 135 = Color240 134
180− | r <= 175 && g <= 215 && b <= 175 = Color240 135
181− | r <= 175 && g <= 215 && b <= 215 = Color240 136
182− | r <= 175 && g <= 215 && b <= 255 = Color240 137
183− | r <= 175 && g <= 255 && b <= 0 = Color240 138
184− | r <= 175 && g <= 255 && b <= 95 = Color240 139
185− | r <= 175 && g <= 255 && b <= 135 = Color240 140
186− | r <= 175 && g <= 255 && b <= 175 = Color240 141
187− | r <= 175 && g <= 255 && b <= 215 = Color240 142
188− | r <= 175 && g <= 255 && b <= 255 = Color240 143
189− | r <= 215 && g <= 0 && b <= 0 = Color240 144
190− | r <= 215 && g <= 0 && b <= 95 = Color240 145
191− | r <= 215 && g <= 0 && b <= 135 = Color240 146
192− | r <= 215 && g <= 0 && b <= 175 = Color240 147
193− | r <= 215 && g <= 0 && b <= 215 = Color240 148
194− | r <= 215 && g <= 0 && b <= 255 = Color240 149
195− | r <= 215 && g <= 95 && b <= 0 = Color240 150
196− | r <= 215 && g <= 95 && b <= 95 = Color240 151
197− | r <= 215 && g <= 95 && b <= 135 = Color240 152
198− | r <= 215 && g <= 95 && b <= 175 = Color240 153
199− | r <= 215 && g <= 95 && b <= 215 = Color240 154
200− | r <= 215 && g <= 95 && b <= 255 = Color240 155
201− | r <= 215 && g <= 135 && b <= 0 = Color240 156
202− | r <= 215 && g <= 135 && b <= 95 = Color240 157
203− | r <= 215 && g <= 135 && b <= 135 = Color240 158
204− | r <= 215 && g <= 135 && b <= 175 = Color240 159
205− | r <= 215 && g <= 135 && b <= 215 = Color240 160
206− | r <= 215 && g <= 135 && b <= 255 = Color240 161
207− | r <= 215 && g <= 175 && b <= 0 = Color240 162
208− | r <= 215 && g <= 175 && b <= 95 = Color240 163
209− | r <= 215 && g <= 175 && b <= 135 = Color240 164
210− | r <= 215 && g <= 175 && b <= 175 = Color240 165
211− | r <= 215 && g <= 175 && b <= 215 = Color240 166
212− | r <= 215 && g <= 175 && b <= 255 = Color240 167
213− | r <= 215 && g <= 215 && b <= 0 = Color240 168
214− | r <= 215 && g <= 215 && b <= 95 = Color240 169
215− | r <= 215 && g <= 215 && b <= 135 = Color240 170
216− | r <= 215 && g <= 215 && b <= 175 = Color240 171
217− | r <= 215 && g <= 215 && b <= 215 = Color240 172
218− | r <= 215 && g <= 215 && b <= 255 = Color240 173
219− | r <= 215 && g <= 255 && b <= 0 = Color240 174
220− | r <= 215 && g <= 255 && b <= 95 = Color240 175
221− | r <= 215 && g <= 255 && b <= 135 = Color240 176
222− | r <= 215 && g <= 255 && b <= 175 = Color240 177
223− | r <= 215 && g <= 255 && b <= 215 = Color240 178
224− | r <= 215 && g <= 255 && b <= 255 = Color240 179
225− | r <= 255 && g <= 0 && b <= 0 = Color240 180
226− | r <= 255 && g <= 0 && b <= 95 = Color240 181
227− | r <= 255 && g <= 0 && b <= 135 = Color240 182
228− | r <= 255 && g <= 0 && b <= 175 = Color240 183
229− | r <= 255 && g <= 0 && b <= 215 = Color240 184
230− | r <= 255 && g <= 0 && b <= 255 = Color240 185
231− | r <= 255 && g <= 95 && b <= 0 = Color240 186
232− | r <= 255 && g <= 95 && b <= 95 = Color240 187
233− | r <= 255 && g <= 95 && b <= 135 = Color240 188
234− | r <= 255 && g <= 95 && b <= 175 = Color240 189
235− | r <= 255 && g <= 95 && b <= 215 = Color240 190
236− | r <= 255 && g <= 95 && b <= 255 = Color240 191
237− | r <= 255 && g <= 135 && b <= 0 = Color240 192
238− | r <= 255 && g <= 135 && b <= 95 = Color240 193
239− | r <= 255 && g <= 135 && b <= 135 = Color240 194
240− | r <= 255 && g <= 135 && b <= 175 = Color240 195
241− | r <= 255 && g <= 135 && b <= 215 = Color240 196
242− | r <= 255 && g <= 135 && b <= 255 = Color240 197
243− | r <= 255 && g <= 175 && b <= 0 = Color240 198
244− | r <= 255 && g <= 175 && b <= 95 = Color240 199
245− | r <= 255 && g <= 175 && b <= 135 = Color240 200
246− | r <= 255 && g <= 175 && b <= 175 = Color240 201
247− | r <= 255 && g <= 175 && b <= 215 = Color240 202
248− | r <= 255 && g <= 175 && b <= 255 = Color240 203
249− | r <= 255 && g <= 215 && b <= 0 = Color240 204
250− | r <= 255 && g <= 215 && b <= 95 = Color240 205
251− | r <= 255 && g <= 215 && b <= 135 = Color240 206
252− | r <= 255 && g <= 215 && b <= 175 = Color240 207
253− | r <= 255 && g <= 215 && b <= 215 = Color240 208
254− | r <= 255 && g <= 215 && b <= 255 = Color240 209
255− | r <= 255 && g <= 255 && b <= 0 = Color240 210
256− | r <= 255 && g <= 255 && b <= 95 = Color240 211
257− | r <= 255 && g <= 255 && b <= 135 = Color240 212
258− | r <= 255 && g <= 255 && b <= 175 = Color240 213
259− | r <= 255 && g <= 255 && b <= 215 = Color240 214
260− | r <= 255 && g <= 255 && b <= 255 = Color240 215
261− | otherwise = error (printf "RGB color %d %d %d does not map to 240 palette."
18+ | r == 8 && g == 8 && b == 8 = 216
19+ | r == 18 && g == 18 && b == 18 = 217
20+ | r == 28 && g == 28 && b == 28 = 218
21+ | r == 38 && g == 38 && b == 38 = 219
22+ | r == 48 && g == 48 && b == 48 = 220
23+ | r == 58 && g == 58 && b == 58 = 221
24+ | r == 68 && g == 68 && b == 68 = 222
25+ | r == 78 && g == 78 && b == 78 = 223
26+ | r == 88 && g == 88 && b == 88 = 224
27+ | r == 98 && g == 98 && b == 98 = 225
28+ | r == 108 && g == 108 && b == 108 = 226
29+ | r == 118 && g == 118 && b == 118 = 227
30+ | r == 128 && g == 128 && b == 128 = 228
31+ | r == 138 && g == 138 && b == 138 = 229
32+ | r == 148 && g == 148 && b == 148 = 230
33+ | r == 158 && g == 158 && b == 158 = 231
34+ | r == 168 && g == 168 && b == 168 = 232
35+ | r == 178 && g == 178 && b == 178 = 233
36+ | r == 188 && g == 188 && b == 188 = 234
37+ | r == 198 && g == 198 && b == 198 = 235
38+ | r == 208 && g == 208 && b == 208 = 236
39+ | r == 218 && g == 218 && b == 218 = 237
40+ | r == 228 && g == 228 && b == 228 = 238
41+ | r == 238 && g == 238 && b == 238 = 239
42+ | otherwise = 36 * go r + 6 * go g + go b
43+ where go = simpleColor_ (error (printf "RGB color %d %d %d does not map to 240 palette."
26244 (fromIntegral r :: Int)
26345 (fromIntegral g :: Int)
264− (fromIntegral b :: Int))
46+ (fromIntegral b :: Int)))
47+
48+simpleColor_ :: Integral i => Word8 -> i -> Word8
49+simpleColor_ e c
50+ | c <= 0 = 0
51+ | c <= 95 = 1
52+ | c <= 255 = fromIntegral ((c-16) `div` 40)
53+ | otherwise = e
26554
266−-- | Create a RGB triple from a Vty 'Color' (in the 240 color set). Error if Color is not
267−-- a Color240.
268−color240ToRGB :: Color -> (Int, Int, Int)
269−color240ToRGB (Color240 n) = case n of
270− 0 -> (0, 0, 0)
271− 1 -> (0, 0, 95)
272− 2 -> (0, 0, 135)
273− 3 -> (0, 0, 175)
274− 4 -> (0, 0, 215)
275− 5 -> (0, 0, 255)
276− 6 -> (0, 95, 0)
277− 7 -> (0, 95, 95)
278− 8 -> (0, 95, 135)
279− 9 -> (0, 95, 175)
280− 10 -> (0, 95, 215)
281− 11 -> (0, 95, 255)
282− 12 -> (0, 135, 0)
283− 13 -> (0, 135, 95)
284− 14 -> (0, 135, 135)
285− 15 -> (0, 135, 175)
286− 16 -> (0, 135, 215)
287− 17 -> (0, 135, 255)
288− 18 -> (0, 175, 0)
289− 19 -> (0, 175, 95)
290− 20 -> (0, 175, 135)
291− 21 -> (0, 175, 175)
292− 22 -> (0, 175, 215)
293− 23 -> (0, 175, 255)
294− 24 -> (0, 215, 0)
295− 25 -> (0, 215, 95)
296− 26 -> (0, 215, 135)
297− 27 -> (0, 215, 175)
298− 28 -> (0, 215, 215)
299− 29 -> (0, 215, 255)
300− 30 -> (0, 255, 0)
301− 31 -> (0, 255, 95)
302− 32 -> (0, 255, 135)
303− 33 -> (0, 255, 175)
304− 34 -> (0, 255, 215)
305− 35 -> (0, 255, 255)
306− 36 -> (95, 0, 0)
307− 37 -> (95, 0, 95)
308− 38 -> (95, 0, 135)
309− 39 -> (95, 0, 175)
310− 40 -> (95, 0, 215)
311− 41 -> (95, 0, 255)
312− 42 -> (95, 95, 0)
313− 43 -> (95, 95, 95)
314− 44 -> (95, 95, 135)
315− 45 -> (95, 95, 175)
316− 46 -> (95, 95, 215)
317− 47 -> (95, 95, 255)
318− 48 -> (95, 135, 0)
319− 49 -> (95, 135, 95)
320− 50 -> (95, 135, 135)
321− 51 -> (95, 135, 175)
322− 52 -> (95, 135, 215)
323− 53 -> (95, 135, 255)
324− 54 -> (95, 175, 0)
325− 55 -> (95, 175, 95)
326− 56 -> (95, 175, 135)
327− 57 -> (95, 175, 175)
328− 58 -> (95, 175, 215)
329− 59 -> (95, 175, 255)
330− 60 -> (95, 215, 0)
331− 61 -> (95, 215, 95)
332− 62 -> (95, 215, 135)
333− 63 -> (95, 215, 175)
334− 64 -> (95, 215, 215)
335− 65 -> (95, 215, 255)
336− 66 -> (95, 255, 0)
337− 67 -> (95, 255, 95)
338− 68 -> (95, 255, 135)
339− 69 -> (95, 255, 175)
340− 70 -> (95, 255, 215)
341− 71 -> (95, 255, 255)
342− 72 -> (135, 0, 0)
343− 73 -> (135, 0, 95)
344− 74 -> (135, 0, 135)
345− 75 -> (135, 0, 175)
346− 76 -> (135, 0, 215)
347− 77 -> (135, 0, 255)
348− 78 -> (135, 95, 0)
349− 79 -> (135, 95, 95)
350− 80 -> (135, 95, 135)
351− 81 -> (135, 95, 175)
352− 82 -> (135, 95, 215)
353− 83 -> (135, 95, 255)
354− 84 -> (135, 135, 0)
355− 85 -> (135, 135, 95)
356− 86 -> (135, 135, 135)
357− 87 -> (135, 135, 175)
358− 88 -> (135, 135, 215)
359− 89 -> (135, 135, 255)
360− 90 -> (135, 175, 0)
361− 91 -> (135, 175, 95)
362− 92 -> (135, 175, 135)
363− 93 -> (135, 175, 175)
364− 94 -> (135, 175, 215)
365− 95 -> (135, 175, 255)
366− 96 -> (135, 215, 0)
367− 97 -> (135, 215, 95)
368− 98 -> (135, 215, 135)
369− 99 -> (135, 215, 175)
370− 100 -> (135, 215, 215)
371− 101 -> (135, 215, 255)
372− 102 -> (135, 255, 0)
373− 103 -> (135, 255, 95)
374− 104 -> (135, 255, 135)
375− 105 -> (135, 255, 175)
376− 106 -> (135, 255, 215)
377− 107 -> (135, 255, 255)
378− 108 -> (175, 0, 0)
379− 109 -> (175, 0, 95)
380− 110 -> (175, 0, 135)
381− 111 -> (175, 0, 175)
382− 112 -> (175, 0, 215)
383− 113 -> (175, 0, 255)
384− 114 -> (175, 95, 0)
385− 115 -> (175, 95, 95)
386− 116 -> (175, 95, 135)
387− 117 -> (175, 95, 175)
388− 118 -> (175, 95, 215)
389− 119 -> (175, 95, 255)
390− 120 -> (175, 135, 0)
391− 121 -> (175, 135, 95)
392− 122 -> (175, 135, 135)
393− 123 -> (175, 135, 175)
394− 124 -> (175, 135, 215)
395− 125 -> (175, 135, 255)
396− 126 -> (175, 175, 0)
397− 127 -> (175, 175, 95)
398− 128 -> (175, 175, 135)
399− 129 -> (175, 175, 175)
400− 130 -> (175, 175, 215)
401− 131 -> (175, 175, 255)
402− 132 -> (175, 215, 0)
403− 133 -> (175, 215, 95)
404− 134 -> (175, 215, 135)
405− 135 -> (175, 215, 175)
406− 136 -> (175, 215, 215)
407− 137 -> (175, 215, 255)
408− 138 -> (175, 255, 0)
409− 139 -> (175, 255, 95)
410− 140 -> (175, 255, 135)
411− 141 -> (175, 255, 175)
412− 142 -> (175, 255, 215)
413− 143 -> (175, 255, 255)
414− 144 -> (215, 0, 0)
415− 145 -> (215, 0, 95)
416− 146 -> (215, 0, 135)
417− 147 -> (215, 0, 175)
418− 148 -> (215, 0, 215)
419− 149 -> (215, 0, 255)
420− 150 -> (215, 95, 0)
421− 151 -> (215, 95, 95)
422− 152 -> (215, 95, 135)
423− 153 -> (215, 95, 175)
424− 154 -> (215, 95, 215)
425− 155 -> (215, 95, 255)
426− 156 -> (215, 135, 0)
427− 157 -> (215, 135, 95)
428− 158 -> (215, 135, 135)
429− 159 -> (215, 135, 175)
430− 160 -> (215, 135, 215)
431− 161 -> (215, 135, 255)
432− 162 -> (215, 175, 0)
433− 163 -> (215, 175, 95)
434− 164 -> (215, 175, 135)
435− 165 -> (215, 175, 175)
436− 166 -> (215, 175, 215)
437− 167 -> (215, 175, 255)
438− 168 -> (215, 215, 0)
439− 169 -> (215, 215, 95)
440− 170 -> (215, 215, 135)
441− 171 -> (215, 215, 175)
442− 172 -> (215, 215, 215)
443− 173 -> (215, 215, 255)
444− 174 -> (215, 255, 0)
445− 175 -> (215, 255, 95)
446− 176 -> (215, 255, 135)
447− 177 -> (215, 255, 175)
448− 178 -> (215, 255, 215)
449− 179 -> (215, 255, 255)
450− 180 -> (255, 0, 0)
451− 181 -> (255, 0, 95)
452− 182 -> (255, 0, 135)
453− 183 -> (255, 0, 175)
454− 184 -> (255, 0, 215)
455− 185 -> (255, 0, 255)
456− 186 -> (255, 95, 0)
457− 187 -> (255, 95, 95)
458− 188 -> (255, 95, 135)
459− 189 -> (255, 95, 175)
460− 190 -> (255, 95, 215)
461− 191 -> (255, 95, 255)
462− 192 -> (255, 135, 0)
463− 193 -> (255, 135, 95)
464− 194 -> (255, 135, 135)
465− 195 -> (255, 135, 175)
466− 196 -> (255, 135, 215)
467− 197 -> (255, 135, 255)
468− 198 -> (255, 175, 0)
469− 199 -> (255, 175, 95)
470− 200 -> (255, 175, 135)
471− 201 -> (255, 175, 175)
472− 202 -> (255, 175, 215)
473− 203 -> (255, 175, 255)
474− 204 -> (255, 215, 0)
475− 205 -> (255, 215, 95)
476− 206 -> (255, 215, 135)
477− 207 -> (255, 215, 175)
478− 208 -> (255, 215, 215)
479− 209 -> (255, 215, 255)
480− 210 -> (255, 255, 0)
481− 211 -> (255, 255, 95)
482− 212 -> (255, 255, 135)
483− 213 -> (255, 255, 175)
484− 214 -> (255, 255, 215)
485− 215 -> (255, 255, 255)
486− 216 -> (8, 8, 8)
487− 217 -> (18, 18, 18)
488− 218 -> (28, 28, 28)
489− 219 -> (38, 38, 38)
490− 220 -> (48, 48, 48)
491− 221 -> (58, 58, 58)
492− 222 -> (68, 68, 68)
493− 223 -> (78, 78, 78)
494− 224 -> (88, 88, 88)
495− 225 -> (98, 98, 98)
496− 226 -> (108, 108, 108)
497− 227 -> (118, 118, 118)
498− 228 -> (128, 128, 128)
499− 229 -> (138, 138, 138)
500− 230 -> (148, 148, 148)
501− 231 -> (158, 158, 158)
502− 232 -> (168, 168, 168)
503− 233 -> (178, 178, 178)
504− 234 -> (188, 188, 188)
505− 235 -> (198, 198, 198)
506− 236 -> (208, 208, 208)
507− 237 -> (218, 218, 218)
508− 238 -> (228, 228, 228)
509− 239 -> (238, 238, 238)
510− _ -> error (printf "Color240 %d is invalid." n)
511−color240ToRGB _ = error "tried to map non-Color240 to RGB"
55+-- | Create a RGB triple from a value in the Color240 set.
56+color240CodeToRGB :: Word8 -> Maybe (Int, Int, Int)
57+color240CodeToRGB n = case n of
58+ 0 -> Just (0, 0, 0)
59+ 1 -> Just (0, 0, 95)
60+ 2 -> Just (0, 0, 135)
61+ 3 -> Just (0, 0, 175)
62+ 4 -> Just (0, 0, 215)
63+ 5 -> Just (0, 0, 255)
64+ 6 -> Just (0, 95, 0)
65+ 7 -> Just (0, 95, 95)
66+ 8 -> Just (0, 95, 135)
67+ 9 -> Just (0, 95, 175)
68+ 10 -> Just (0, 95, 215)
69+ 11 -> Just (0, 95, 255)
70+ 12 -> Just (0, 135, 0)
71+ 13 -> Just (0, 135, 95)
72+ 14 -> Just (0, 135, 135)
73+ 15 -> Just (0, 135, 175)
74+ 16 -> Just (0, 135, 215)
75+ 17 -> Just (0, 135, 255)
76+ 18 -> Just (0, 175, 0)
77+ 19 -> Just (0, 175, 95)
78+ 20 -> Just (0, 175, 135)
79+ 21 -> Just (0, 175, 175)
80+ 22 -> Just (0, 175, 215)
81+ 23 -> Just (0, 175, 255)
82+ 24 -> Just (0, 215, 0)
83+ 25 -> Just (0, 215, 95)
84+ 26 -> Just (0, 215, 135)
85+ 27 -> Just (0, 215, 175)
86+ 28 -> Just (0, 215, 215)
87+ 29 -> Just (0, 215, 255)
88+ 30 -> Just (0, 255, 0)
89+ 31 -> Just (0, 255, 95)
90+ 32 -> Just (0, 255, 135)
91+ 33 -> Just (0, 255, 175)
92+ 34 -> Just (0, 255, 215)
93+ 35 -> Just (0, 255, 255)
94+ 36 -> Just (95, 0, 0)
95+ 37 -> Just (95, 0, 95)
96+ 38 -> Just (95, 0, 135)
97+ 39 -> Just (95, 0, 175)
98+ 40 -> Just (95, 0, 215)
99+ 41 -> Just (95, 0, 255)
100+ 42 -> Just (95, 95, 0)
101+ 43 -> Just (95, 95, 95)
102+ 44 -> Just (95, 95, 135)
103+ 45 -> Just (95, 95, 175)
104+ 46 -> Just (95, 95, 215)
105+ 47 -> Just (95, 95, 255)
106+ 48 -> Just (95, 135, 0)
107+ 49 -> Just (95, 135, 95)
108+ 50 -> Just (95, 135, 135)
109+ 51 -> Just (95, 135, 175)
110+ 52 -> Just (95, 135, 215)
111+ 53 -> Just (95, 135, 255)
112+ 54 -> Just (95, 175, 0)
113+ 55 -> Just (95, 175, 95)
114+ 56 -> Just (95, 175, 135)
115+ 57 -> Just (95, 175, 175)
116+ 58 -> Just (95, 175, 215)
117+ 59 -> Just (95, 175, 255)
118+ 60 -> Just (95, 215, 0)
119+ 61 -> Just (95, 215, 95)
120+ 62 -> Just (95, 215, 135)
121+ 63 -> Just (95, 215, 175)
122+ 64 -> Just (95, 215, 215)
123+ 65 -> Just (95, 215, 255)
124+ 66 -> Just (95, 255, 0)
125+ 67 -> Just (95, 255, 95)
126+ 68 -> Just (95, 255, 135)
127+ 69 -> Just (95, 255, 175)
128+ 70 -> Just (95, 255, 215)
129+ 71 -> Just (95, 255, 255)
130+ 72 -> Just (135, 0, 0)
131+ 73 -> Just (135, 0, 95)
132+ 74 -> Just (135, 0, 135)
133+ 75 -> Just (135, 0, 175)
134+ 76 -> Just (135, 0, 215)
135+ 77 -> Just (135, 0, 255)
136+ 78 -> Just (135, 95, 0)
137+ 79 -> Just (135, 95, 95)
138+ 80 -> Just (135, 95, 135)
139+ 81 -> Just (135, 95, 175)
140+ 82 -> Just (135, 95, 215)
141+ 83 -> Just (135, 95, 255)
142+ 84 -> Just (135, 135, 0)
143+ 85 -> Just (135, 135, 95)
144+ 86 -> Just (135, 135, 135)
145+ 87 -> Just (135, 135, 175)
146+ 88 -> Just (135, 135, 215)
147+ 89 -> Just (135, 135, 255)
148+ 90 -> Just (135, 175, 0)
149+ 91 -> Just (135, 175, 95)
150+ 92 -> Just (135, 175, 135)
151+ 93 -> Just (135, 175, 175)
152+ 94 -> Just (135, 175, 215)
153+ 95 -> Just (135, 175, 255)
154+ 96 -> Just (135, 215, 0)
155+ 97 -> Just (135, 215, 95)
156+ 98 -> Just (135, 215, 135)
157+ 99 -> Just (135, 215, 175)
158+ 100 -> Just (135, 215, 215)
159+ 101 -> Just (135, 215, 255)
160+ 102 -> Just (135, 255, 0)
161+ 103 -> Just (135, 255, 95)
162+ 104 -> Just (135, 255, 135)
163+ 105 -> Just (135, 255, 175)
164+ 106 -> Just (135, 255, 215)
165+ 107 -> Just (135, 255, 255)
166+ 108 -> Just (175, 0, 0)
167+ 109 -> Just (175, 0, 95)
168+ 110 -> Just (175, 0, 135)
169+ 111 -> Just (175, 0, 175)
170+ 112 -> Just (175, 0, 215)
171+ 113 -> Just (175, 0, 255)
172+ 114 -> Just (175, 95, 0)
173+ 115 -> Just (175, 95, 95)
174+ 116 -> Just (175, 95, 135)
175+ 117 -> Just (175, 95, 175)
176+ 118 -> Just (175, 95, 215)
177+ 119 -> Just (175, 95, 255)
178+ 120 -> Just (175, 135, 0)
179+ 121 -> Just (175, 135, 95)
180+ 122 -> Just (175, 135, 135)
181+ 123 -> Just (175, 135, 175)
182+ 124 -> Just (175, 135, 215)
183+ 125 -> Just (175, 135, 255)
184+ 126 -> Just (175, 175, 0)
185+ 127 -> Just (175, 175, 95)
186+ 128 -> Just (175, 175, 135)
187+ 129 -> Just (175, 175, 175)
188+ 130 -> Just (175, 175, 215)
189+ 131 -> Just (175, 175, 255)
190+ 132 -> Just (175, 215, 0)
191+ 133 -> Just (175, 215, 95)
192+ 134 -> Just (175, 215, 135)
193+ 135 -> Just (175, 215, 175)
194+ 136 -> Just (175, 215, 215)
195+ 137 -> Just (175, 215, 255)
196+ 138 -> Just (175, 255, 0)
197+ 139 -> Just (175, 255, 95)
198+ 140 -> Just (175, 255, 135)
199+ 141 -> Just (175, 255, 175)
200+ 142 -> Just (175, 255, 215)
201+ 143 -> Just (175, 255, 255)
202+ 144 -> Just (215, 0, 0)
203+ 145 -> Just (215, 0, 95)
204+ 146 -> Just (215, 0, 135)
205+ 147 -> Just (215, 0, 175)
206+ 148 -> Just (215, 0, 215)
207+ 149 -> Just (215, 0, 255)
208+ 150 -> Just (215, 95, 0)
209+ 151 -> Just (215, 95, 95)
210+ 152 -> Just (215, 95, 135)
211+ 153 -> Just (215, 95, 175)
212+ 154 -> Just (215, 95, 215)
213+ 155 -> Just (215, 95, 255)
214+ 156 -> Just (215, 135, 0)
215+ 157 -> Just (215, 135, 95)
216+ 158 -> Just (215, 135, 135)
217+ 159 -> Just (215, 135, 175)
218+ 160 -> Just (215, 135, 215)
219+ 161 -> Just (215, 135, 255)
220+ 162 -> Just (215, 175, 0)
221+ 163 -> Just (215, 175, 95)
222+ 164 -> Just (215, 175, 135)
223+ 165 -> Just (215, 175, 175)
224+ 166 -> Just (215, 175, 215)
225+ 167 -> Just (215, 175, 255)
226+ 168 -> Just (215, 215, 0)
227+ 169 -> Just (215, 215, 95)
228+ 170 -> Just (215, 215, 135)
229+ 171 -> Just (215, 215, 175)
230+ 172 -> Just (215, 215, 215)
231+ 173 -> Just (215, 215, 255)
232+ 174 -> Just (215, 255, 0)
233+ 175 -> Just (215, 255, 95)
234+ 176 -> Just (215, 255, 135)
235+ 177 -> Just (215, 255, 175)
236+ 178 -> Just (215, 255, 215)
237+ 179 -> Just (215, 255, 255)
238+ 180 -> Just (255, 0, 0)
239+ 181 -> Just (255, 0, 95)
240+ 182 -> Just (255, 0, 135)
241+ 183 -> Just (255, 0, 175)
242+ 184 -> Just (255, 0, 215)
243+ 185 -> Just (255, 0, 255)
244+ 186 -> Just (255, 95, 0)
245+ 187 -> Just (255, 95, 95)
246+ 188 -> Just (255, 95, 135)
247+ 189 -> Just (255, 95, 175)
248+ 190 -> Just (255, 95, 215)
249+ 191 -> Just (255, 95, 255)
250+ 192 -> Just (255, 135, 0)
251+ 193 -> Just (255, 135, 95)
252+ 194 -> Just (255, 135, 135)
253+ 195 -> Just (255, 135, 175)
254+ 196 -> Just (255, 135, 215)
255+ 197 -> Just (255, 135, 255)
256+ 198 -> Just (255, 175, 0)
257+ 199 -> Just (255, 175, 95)
258+ 200 -> Just (255, 175, 135)
259+ 201 -> Just (255, 175, 175)
260+ 202 -> Just (255, 175, 215)
261+ 203 -> Just (255, 175, 255)
262+ 204 -> Just (255, 215, 0)
263+ 205 -> Just (255, 215, 95)
264+ 206 -> Just (255, 215, 135)
265+ 207 -> Just (255, 215, 175)
266+ 208 -> Just (255, 215, 215)
267+ 209 -> Just (255, 215, 255)
268+ 210 -> Just (255, 255, 0)
269+ 211 -> Just (255, 255, 95)
270+ 212 -> Just (255, 255, 135)
271+ 213 -> Just (255, 255, 175)
272+ 214 -> Just (255, 255, 215)
273+ 215 -> Just (255, 255, 255)
274+ 216 -> Just (8, 8, 8)
275+ 217 -> Just (18, 18, 18)
276+ 218 -> Just (28, 28, 28)
277+ 219 -> Just (38, 38, 38)
278+ 220 -> Just (48, 48, 48)
279+ 221 -> Just (58, 58, 58)
280+ 222 -> Just (68, 68, 68)
281+ 223 -> Just (78, 78, 78)
282+ 224 -> Just (88, 88, 88)
283+ 225 -> Just (98, 98, 98)
284+ 226 -> Just (108, 108, 108)
285+ 227 -> Just (118, 118, 118)
286+ 228 -> Just (128, 128, 128)
287+ 229 -> Just (138, 138, 138)
288+ 230 -> Just (148, 148, 148)
289+ 231 -> Just (158, 158, 158)
290+ 232 -> Just (168, 168, 168)
291+ 233 -> Just (178, 178, 178)
292+ 234 -> Just (188, 188, 188)
293+ 235 -> Just (198, 198, 198)
294+ 236 -> Just (208, 208, 208)
295+ 237 -> Just (218, 218, 218)
296+ 238 -> Just (228, 228, 228)
297+ 239 -> Just (238, 238, 238)
298+ _ -> Nothing