@@ -1,298 +1,510 @@
11-- This header file was generated by ./256colres.pl
22module Graphics.Vty.Attributes.Color240
3− ( rgbColorToColor240
3+ ( rgbColor
44 , color240CodeToRGB
55 )
66where
77
8+import Graphics.Vty.Attributes.Color
9+
810import Data.Word (Word8)
911import Text.Printf
1012
1113-- Note: rgbColor's mapping from RGB to 240 colors was generated from
1214-- 256colres.pl which is forked from xterm 256colres.pl.
1315
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
16+-- | Create a Vty 'Color' (in the 240 color set) from an RGB triple.
17+-- This function is lossy in the sense that we only internally support 240 colors but the
18+-- #RRGGBB format supports 16^3 colors.
19+rgbColor :: Integral i => i -> i -> i -> Color
20+rgbColor r g b
1721 | r < 0 && g < 0 && b < 0 = error "rgbColor with negative color component intensity"
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."
22+ | r == 8 && g == 8 && b == 8 = Color240 216
23+ | r == 18 && g == 18 && b == 18 = Color240 217
24+ | r == 28 && g == 28 && b == 28 = Color240 218
25+ | r == 38 && g == 38 && b == 38 = Color240 219
26+ | r == 48 && g == 48 && b == 48 = Color240 220
27+ | r == 58 && g == 58 && b == 58 = Color240 221
28+ | r == 68 && g == 68 && b == 68 = Color240 222
29+ | r == 78 && g == 78 && b == 78 = Color240 223
30+ | r == 88 && g == 88 && b == 88 = Color240 224
31+ | r == 98 && g == 98 && b == 98 = Color240 225
32+ | r == 108 && g == 108 && b == 108 = Color240 226
33+ | r == 118 && g == 118 && b == 118 = Color240 227
34+ | r == 128 && g == 128 && b == 128 = Color240 228
35+ | r == 138 && g == 138 && b == 138 = Color240 229
36+ | r == 148 && g == 148 && b == 148 = Color240 230
37+ | r == 158 && g == 158 && b == 158 = Color240 231
38+ | r == 168 && g == 168 && b == 168 = Color240 232
39+ | r == 178 && g == 178 && b == 178 = Color240 233
40+ | r == 188 && g == 188 && b == 188 = Color240 234
41+ | r == 198 && g == 198 && b == 198 = Color240 235
42+ | r == 208 && g == 208 && b == 208 = Color240 236
43+ | r == 218 && g == 218 && b == 218 = Color240 237
44+ | r == 228 && g == 228 && b == 228 = Color240 238
45+ | r == 238 && g == 238 && b == 238 = Color240 239
46+ | r <= 0 && g <= 0 && b <= 0 = Color240 0
47+ | r <= 0 && g <= 0 && b <= 95 = Color240 1
48+ | r <= 0 && g <= 0 && b <= 135 = Color240 2
49+ | r <= 0 && g <= 0 && b <= 175 = Color240 3
50+ | r <= 0 && g <= 0 && b <= 215 = Color240 4
51+ | r <= 0 && g <= 0 && b <= 255 = Color240 5
52+ | r <= 0 && g <= 95 && b <= 0 = Color240 6
53+ | r <= 0 && g <= 95 && b <= 95 = Color240 7
54+ | r <= 0 && g <= 95 && b <= 135 = Color240 8
55+ | r <= 0 && g <= 95 && b <= 175 = Color240 9
56+ | r <= 0 && g <= 95 && b <= 215 = Color240 10
57+ | r <= 0 && g <= 95 && b <= 255 = Color240 11
58+ | r <= 0 && g <= 135 && b <= 0 = Color240 12
59+ | r <= 0 && g <= 135 && b <= 95 = Color240 13
60+ | r <= 0 && g <= 135 && b <= 135 = Color240 14
61+ | r <= 0 && g <= 135 && b <= 175 = Color240 15
62+ | r <= 0 && g <= 135 && b <= 215 = Color240 16
63+ | r <= 0 && g <= 135 && b <= 255 = Color240 17
64+ | r <= 0 && g <= 175 && b <= 0 = Color240 18
65+ | r <= 0 && g <= 175 && b <= 95 = Color240 19
66+ | r <= 0 && g <= 175 && b <= 135 = Color240 20
67+ | r <= 0 && g <= 175 && b <= 175 = Color240 21
68+ | r <= 0 && g <= 175 && b <= 215 = Color240 22
69+ | r <= 0 && g <= 175 && b <= 255 = Color240 23
70+ | r <= 0 && g <= 215 && b <= 0 = Color240 24
71+ | r <= 0 && g <= 215 && b <= 95 = Color240 25
72+ | r <= 0 && g <= 215 && b <= 135 = Color240 26
73+ | r <= 0 && g <= 215 && b <= 175 = Color240 27
74+ | r <= 0 && g <= 215 && b <= 215 = Color240 28
75+ | r <= 0 && g <= 215 && b <= 255 = Color240 29
76+ | r <= 0 && g <= 255 && b <= 0 = Color240 30
77+ | r <= 0 && g <= 255 && b <= 95 = Color240 31
78+ | r <= 0 && g <= 255 && b <= 135 = Color240 32
79+ | r <= 0 && g <= 255 && b <= 175 = Color240 33
80+ | r <= 0 && g <= 255 && b <= 215 = Color240 34
81+ | r <= 0 && g <= 255 && b <= 255 = Color240 35
82+ | r <= 95 && g <= 0 && b <= 0 = Color240 36
83+ | r <= 95 && g <= 0 && b <= 95 = Color240 37
84+ | r <= 95 && g <= 0 && b <= 135 = Color240 38
85+ | r <= 95 && g <= 0 && b <= 175 = Color240 39
86+ | r <= 95 && g <= 0 && b <= 215 = Color240 40
87+ | r <= 95 && g <= 0 && b <= 255 = Color240 41
88+ | r <= 95 && g <= 95 && b <= 0 = Color240 42
89+ | r <= 95 && g <= 95 && b <= 95 = Color240 43
90+ | r <= 95 && g <= 95 && b <= 135 = Color240 44
91+ | r <= 95 && g <= 95 && b <= 175 = Color240 45
92+ | r <= 95 && g <= 95 && b <= 215 = Color240 46
93+ | r <= 95 && g <= 95 && b <= 255 = Color240 47
94+ | r <= 95 && g <= 135 && b <= 0 = Color240 48
95+ | r <= 95 && g <= 135 && b <= 95 = Color240 49
96+ | r <= 95 && g <= 135 && b <= 135 = Color240 50
97+ | r <= 95 && g <= 135 && b <= 175 = Color240 51
98+ | r <= 95 && g <= 135 && b <= 215 = Color240 52
99+ | r <= 95 && g <= 135 && b <= 255 = Color240 53
100+ | r <= 95 && g <= 175 && b <= 0 = Color240 54
101+ | r <= 95 && g <= 175 && b <= 95 = Color240 55
102+ | r <= 95 && g <= 175 && b <= 135 = Color240 56
103+ | r <= 95 && g <= 175 && b <= 175 = Color240 57
104+ | r <= 95 && g <= 175 && b <= 215 = Color240 58
105+ | r <= 95 && g <= 175 && b <= 255 = Color240 59
106+ | r <= 95 && g <= 215 && b <= 0 = Color240 60
107+ | r <= 95 && g <= 215 && b <= 95 = Color240 61
108+ | r <= 95 && g <= 215 && b <= 135 = Color240 62
109+ | r <= 95 && g <= 215 && b <= 175 = Color240 63
110+ | r <= 95 && g <= 215 && b <= 215 = Color240 64
111+ | r <= 95 && g <= 215 && b <= 255 = Color240 65
112+ | r <= 95 && g <= 255 && b <= 0 = Color240 66
113+ | r <= 95 && g <= 255 && b <= 95 = Color240 67
114+ | r <= 95 && g <= 255 && b <= 135 = Color240 68
115+ | r <= 95 && g <= 255 && b <= 175 = Color240 69
116+ | r <= 95 && g <= 255 && b <= 215 = Color240 70
117+ | r <= 95 && g <= 255 && b <= 255 = Color240 71
118+ | r <= 135 && g <= 0 && b <= 0 = Color240 72
119+ | r <= 135 && g <= 0 && b <= 95 = Color240 73
120+ | r <= 135 && g <= 0 && b <= 135 = Color240 74
121+ | r <= 135 && g <= 0 && b <= 175 = Color240 75
122+ | r <= 135 && g <= 0 && b <= 215 = Color240 76
123+ | r <= 135 && g <= 0 && b <= 255 = Color240 77
124+ | r <= 135 && g <= 95 && b <= 0 = Color240 78
125+ | r <= 135 && g <= 95 && b <= 95 = Color240 79
126+ | r <= 135 && g <= 95 && b <= 135 = Color240 80
127+ | r <= 135 && g <= 95 && b <= 175 = Color240 81
128+ | r <= 135 && g <= 95 && b <= 215 = Color240 82
129+ | r <= 135 && g <= 95 && b <= 255 = Color240 83
130+ | r <= 135 && g <= 135 && b <= 0 = Color240 84
131+ | r <= 135 && g <= 135 && b <= 95 = Color240 85
132+ | r <= 135 && g <= 135 && b <= 135 = Color240 86
133+ | r <= 135 && g <= 135 && b <= 175 = Color240 87
134+ | r <= 135 && g <= 135 && b <= 215 = Color240 88
135+ | r <= 135 && g <= 135 && b <= 255 = Color240 89
136+ | r <= 135 && g <= 175 && b <= 0 = Color240 90
137+ | r <= 135 && g <= 175 && b <= 95 = Color240 91
138+ | r <= 135 && g <= 175 && b <= 135 = Color240 92
139+ | r <= 135 && g <= 175 && b <= 175 = Color240 93
140+ | r <= 135 && g <= 175 && b <= 215 = Color240 94
141+ | r <= 135 && g <= 175 && b <= 255 = Color240 95
142+ | r <= 135 && g <= 215 && b <= 0 = Color240 96
143+ | r <= 135 && g <= 215 && b <= 95 = Color240 97
144+ | r <= 135 && g <= 215 && b <= 135 = Color240 98
145+ | r <= 135 && g <= 215 && b <= 175 = Color240 99
146+ | r <= 135 && g <= 215 && b <= 215 = Color240 100
147+ | r <= 135 && g <= 215 && b <= 255 = Color240 101
148+ | r <= 135 && g <= 255 && b <= 0 = Color240 102
149+ | r <= 135 && g <= 255 && b <= 95 = Color240 103
150+ | r <= 135 && g <= 255 && b <= 135 = Color240 104
151+ | r <= 135 && g <= 255 && b <= 175 = Color240 105
152+ | r <= 135 && g <= 255 && b <= 215 = Color240 106
153+ | r <= 135 && g <= 255 && b <= 255 = Color240 107
154+ | r <= 175 && g <= 0 && b <= 0 = Color240 108
155+ | r <= 175 && g <= 0 && b <= 95 = Color240 109
156+ | r <= 175 && g <= 0 && b <= 135 = Color240 110
157+ | r <= 175 && g <= 0 && b <= 175 = Color240 111
158+ | r <= 175 && g <= 0 && b <= 215 = Color240 112
159+ | r <= 175 && g <= 0 && b <= 255 = Color240 113
160+ | r <= 175 && g <= 95 && b <= 0 = Color240 114
161+ | r <= 175 && g <= 95 && b <= 95 = Color240 115
162+ | r <= 175 && g <= 95 && b <= 135 = Color240 116
163+ | r <= 175 && g <= 95 && b <= 175 = Color240 117
164+ | r <= 175 && g <= 95 && b <= 215 = Color240 118
165+ | r <= 175 && g <= 95 && b <= 255 = Color240 119
166+ | r <= 175 && g <= 135 && b <= 0 = Color240 120
167+ | r <= 175 && g <= 135 && b <= 95 = Color240 121
168+ | r <= 175 && g <= 135 && b <= 135 = Color240 122
169+ | r <= 175 && g <= 135 && b <= 175 = Color240 123
170+ | r <= 175 && g <= 135 && b <= 215 = Color240 124
171+ | r <= 175 && g <= 135 && b <= 255 = Color240 125
172+ | r <= 175 && g <= 175 && b <= 0 = Color240 126
173+ | r <= 175 && g <= 175 && b <= 95 = Color240 127
174+ | r <= 175 && g <= 175 && b <= 135 = Color240 128
175+ | r <= 175 && g <= 175 && b <= 175 = Color240 129
176+ | r <= 175 && g <= 175 && b <= 215 = Color240 130
177+ | r <= 175 && g <= 175 && b <= 255 = Color240 131
178+ | r <= 175 && g <= 215 && b <= 0 = Color240 132
179+ | r <= 175 && g <= 215 && b <= 95 = Color240 133
180+ | r <= 175 && g <= 215 && b <= 135 = Color240 134
181+ | r <= 175 && g <= 215 && b <= 175 = Color240 135
182+ | r <= 175 && g <= 215 && b <= 215 = Color240 136
183+ | r <= 175 && g <= 215 && b <= 255 = Color240 137
184+ | r <= 175 && g <= 255 && b <= 0 = Color240 138
185+ | r <= 175 && g <= 255 && b <= 95 = Color240 139
186+ | r <= 175 && g <= 255 && b <= 135 = Color240 140
187+ | r <= 175 && g <= 255 && b <= 175 = Color240 141
188+ | r <= 175 && g <= 255 && b <= 215 = Color240 142
189+ | r <= 175 && g <= 255 && b <= 255 = Color240 143
190+ | r <= 215 && g <= 0 && b <= 0 = Color240 144
191+ | r <= 215 && g <= 0 && b <= 95 = Color240 145
192+ | r <= 215 && g <= 0 && b <= 135 = Color240 146
193+ | r <= 215 && g <= 0 && b <= 175 = Color240 147
194+ | r <= 215 && g <= 0 && b <= 215 = Color240 148
195+ | r <= 215 && g <= 0 && b <= 255 = Color240 149
196+ | r <= 215 && g <= 95 && b <= 0 = Color240 150
197+ | r <= 215 && g <= 95 && b <= 95 = Color240 151
198+ | r <= 215 && g <= 95 && b <= 135 = Color240 152
199+ | r <= 215 && g <= 95 && b <= 175 = Color240 153
200+ | r <= 215 && g <= 95 && b <= 215 = Color240 154
201+ | r <= 215 && g <= 95 && b <= 255 = Color240 155
202+ | r <= 215 && g <= 135 && b <= 0 = Color240 156
203+ | r <= 215 && g <= 135 && b <= 95 = Color240 157
204+ | r <= 215 && g <= 135 && b <= 135 = Color240 158
205+ | r <= 215 && g <= 135 && b <= 175 = Color240 159
206+ | r <= 215 && g <= 135 && b <= 215 = Color240 160
207+ | r <= 215 && g <= 135 && b <= 255 = Color240 161
208+ | r <= 215 && g <= 175 && b <= 0 = Color240 162
209+ | r <= 215 && g <= 175 && b <= 95 = Color240 163
210+ | r <= 215 && g <= 175 && b <= 135 = Color240 164
211+ | r <= 215 && g <= 175 && b <= 175 = Color240 165
212+ | r <= 215 && g <= 175 && b <= 215 = Color240 166
213+ | r <= 215 && g <= 175 && b <= 255 = Color240 167
214+ | r <= 215 && g <= 215 && b <= 0 = Color240 168
215+ | r <= 215 && g <= 215 && b <= 95 = Color240 169
216+ | r <= 215 && g <= 215 && b <= 135 = Color240 170
217+ | r <= 215 && g <= 215 && b <= 175 = Color240 171
218+ | r <= 215 && g <= 215 && b <= 215 = Color240 172
219+ | r <= 215 && g <= 215 && b <= 255 = Color240 173
220+ | r <= 215 && g <= 255 && b <= 0 = Color240 174
221+ | r <= 215 && g <= 255 && b <= 95 = Color240 175
222+ | r <= 215 && g <= 255 && b <= 135 = Color240 176
223+ | r <= 215 && g <= 255 && b <= 175 = Color240 177
224+ | r <= 215 && g <= 255 && b <= 215 = Color240 178
225+ | r <= 215 && g <= 255 && b <= 255 = Color240 179
226+ | r <= 255 && g <= 0 && b <= 0 = Color240 180
227+ | r <= 255 && g <= 0 && b <= 95 = Color240 181
228+ | r <= 255 && g <= 0 && b <= 135 = Color240 182
229+ | r <= 255 && g <= 0 && b <= 175 = Color240 183
230+ | r <= 255 && g <= 0 && b <= 215 = Color240 184
231+ | r <= 255 && g <= 0 && b <= 255 = Color240 185
232+ | r <= 255 && g <= 95 && b <= 0 = Color240 186
233+ | r <= 255 && g <= 95 && b <= 95 = Color240 187
234+ | r <= 255 && g <= 95 && b <= 135 = Color240 188
235+ | r <= 255 && g <= 95 && b <= 175 = Color240 189
236+ | r <= 255 && g <= 95 && b <= 215 = Color240 190
237+ | r <= 255 && g <= 95 && b <= 255 = Color240 191
238+ | r <= 255 && g <= 135 && b <= 0 = Color240 192
239+ | r <= 255 && g <= 135 && b <= 95 = Color240 193
240+ | r <= 255 && g <= 135 && b <= 135 = Color240 194
241+ | r <= 255 && g <= 135 && b <= 175 = Color240 195
242+ | r <= 255 && g <= 135 && b <= 215 = Color240 196
243+ | r <= 255 && g <= 135 && b <= 255 = Color240 197
244+ | r <= 255 && g <= 175 && b <= 0 = Color240 198
245+ | r <= 255 && g <= 175 && b <= 95 = Color240 199
246+ | r <= 255 && g <= 175 && b <= 135 = Color240 200
247+ | r <= 255 && g <= 175 && b <= 175 = Color240 201
248+ | r <= 255 && g <= 175 && b <= 215 = Color240 202
249+ | r <= 255 && g <= 175 && b <= 255 = Color240 203
250+ | r <= 255 && g <= 215 && b <= 0 = Color240 204
251+ | r <= 255 && g <= 215 && b <= 95 = Color240 205
252+ | r <= 255 && g <= 215 && b <= 135 = Color240 206
253+ | r <= 255 && g <= 215 && b <= 175 = Color240 207
254+ | r <= 255 && g <= 215 && b <= 215 = Color240 208
255+ | r <= 255 && g <= 215 && b <= 255 = Color240 209
256+ | r <= 255 && g <= 255 && b <= 0 = Color240 210
257+ | r <= 255 && g <= 255 && b <= 95 = Color240 211
258+ | r <= 255 && g <= 255 && b <= 135 = Color240 212
259+ | r <= 255 && g <= 255 && b <= 175 = Color240 213
260+ | r <= 255 && g <= 255 && b <= 215 = Color240 214
261+ | r <= 255 && g <= 255 && b <= 255 = Color240 215
262+ | otherwise = error (printf "RGB color %d %d %d does not map to 240 palette."
44263 (fromIntegral r :: Int)
45264 (fromIntegral g :: 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
265+ (fromIntegral b :: Int))
54266
55267-- | Create a RGB triple from a value in the Color240 set.
56−color240CodeToRGB :: Word8 -> Maybe (Int, Int, Int)
268+color240CodeToRGB :: Word8 -> (Int, Int, Int)
57269color240CodeToRGB 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
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 value %d is invalid." n)