on master help sign in
Attributes/Color240: Add color240ToRGB function
commita2f3f9c74e0388fafa96c6d8ac710d45242edaca authorBrent Carmer <bcarmer@galois.com> dateWed 11 Jul 2018, 16:05 (8 years ago) parentbf96356
1 file changed+250
src/Graphics/Vty/Attributes/Color240.hs+250
src/Graphics/Vty/Attributes/Color240.hs+250
@@ -1,6 +1,7 @@
11-- This header file was generated by ./256colres.pl
22module Graphics.Vty.Attributes.Color240
33 ( rgbColor
4+ , color240ToRGB
45 )
56where
67
@@ -12,6 +13,8 @@ import Text.Printf
1213-- 256colres.pl which is forked from xterm 256colres.pl.
1314
1415-- | 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.
1518rgbColor :: Integral i => i -> i -> i -> Color
1619rgbColor r g b
1720 | r < 0 && g < 0 && b < 0 = error "rgbColor with negative color component intensity"
@@ -259,3 +262,250 @@ rgbColor r g b
259262 (fromIntegral r :: Int)
260263 (fromIntegral g :: Int)
261264 (fromIntegral b :: Int))
265+
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"