vty-5.38: src/Graphics/Vty/Attributes/Color240.hs
-- This header file was generated by ./256colres.pl
module Graphics.Vty.Attributes.Color240
( rgbColorToColor240
, color240CodeToRGB
)
where
import Data.Word (Word8)
import Text.Printf
-- Note: rgbColor's mapping from RGB to 240 colors was generated from
-- 256colres.pl which is forked from xterm 256colres.pl.
-- | Create a value in the Color240 set from an RGB triple. This maps
-- the input arguments to an entry in the 240-color palette depicted at:
--
-- https://rich.readthedocs.io/en/stable/appendix/colors.html
rgbColorToColor240 :: Integral i => i -> i -> i -> Word8
rgbColorToColor240 r g b
| r < 0 && g < 0 && b < 0 = error "rgbColor with negative color component intensity"
| r == 8 && g == 8 && b == 8 = 216
| r == 18 && g == 18 && b == 18 = 217
| r == 28 && g == 28 && b == 28 = 218
| r == 38 && g == 38 && b == 38 = 219
| r == 48 && g == 48 && b == 48 = 220
| r == 58 && g == 58 && b == 58 = 221
| r == 68 && g == 68 && b == 68 = 222
| r == 78 && g == 78 && b == 78 = 223
| r == 88 && g == 88 && b == 88 = 224
| r == 98 && g == 98 && b == 98 = 225
| r == 108 && g == 108 && b == 108 = 226
| r == 118 && g == 118 && b == 118 = 227
| r == 128 && g == 128 && b == 128 = 228
| r == 138 && g == 138 && b == 138 = 229
| r == 148 && g == 148 && b == 148 = 230
| r == 158 && g == 158 && b == 158 = 231
| r == 168 && g == 168 && b == 168 = 232
| r == 178 && g == 178 && b == 178 = 233
| r == 188 && g == 188 && b == 188 = 234
| r == 198 && g == 198 && b == 198 = 235
| r == 208 && g == 208 && b == 208 = 236
| r == 218 && g == 218 && b == 218 = 237
| r == 228 && g == 228 && b == 228 = 238
| r == 238 && g == 238 && b == 238 = 239
| otherwise = 36 * go r + 6 * go g + go b
where go = simpleColor_ (error (printf "RGB color %d %d %d does not map to 240 palette."
(fromIntegral r :: Int)
(fromIntegral g :: Int)
(fromIntegral b :: Int)))
simpleColor_ :: Integral i => Word8 -> i -> Word8
simpleColor_ e c
| c <= 0 = 0
| c <= 95 = 1
| c <= 255 = fromIntegral ((c-16) `div` 40)
| otherwise = e
-- | Create a RGB triple from a value in the Color240 set.
color240CodeToRGB :: Word8 -> Maybe (Int, Int, Int)
color240CodeToRGB n = case n of
0 -> Just (0, 0, 0)
1 -> Just (0, 0, 95)
2 -> Just (0, 0, 135)
3 -> Just (0, 0, 175)
4 -> Just (0, 0, 215)
5 -> Just (0, 0, 255)
6 -> Just (0, 95, 0)
7 -> Just (0, 95, 95)
8 -> Just (0, 95, 135)
9 -> Just (0, 95, 175)
10 -> Just (0, 95, 215)
11 -> Just (0, 95, 255)
12 -> Just (0, 135, 0)
13 -> Just (0, 135, 95)
14 -> Just (0, 135, 135)
15 -> Just (0, 135, 175)
16 -> Just (0, 135, 215)
17 -> Just (0, 135, 255)
18 -> Just (0, 175, 0)
19 -> Just (0, 175, 95)
20 -> Just (0, 175, 135)
21 -> Just (0, 175, 175)
22 -> Just (0, 175, 215)
23 -> Just (0, 175, 255)
24 -> Just (0, 215, 0)
25 -> Just (0, 215, 95)
26 -> Just (0, 215, 135)
27 -> Just (0, 215, 175)
28 -> Just (0, 215, 215)
29 -> Just (0, 215, 255)
30 -> Just (0, 255, 0)
31 -> Just (0, 255, 95)
32 -> Just (0, 255, 135)
33 -> Just (0, 255, 175)
34 -> Just (0, 255, 215)
35 -> Just (0, 255, 255)
36 -> Just (95, 0, 0)
37 -> Just (95, 0, 95)
38 -> Just (95, 0, 135)
39 -> Just (95, 0, 175)
40 -> Just (95, 0, 215)
41 -> Just (95, 0, 255)
42 -> Just (95, 95, 0)
43 -> Just (95, 95, 95)
44 -> Just (95, 95, 135)
45 -> Just (95, 95, 175)
46 -> Just (95, 95, 215)
47 -> Just (95, 95, 255)
48 -> Just (95, 135, 0)
49 -> Just (95, 135, 95)
50 -> Just (95, 135, 135)
51 -> Just (95, 135, 175)
52 -> Just (95, 135, 215)
53 -> Just (95, 135, 255)
54 -> Just (95, 175, 0)
55 -> Just (95, 175, 95)
56 -> Just (95, 175, 135)
57 -> Just (95, 175, 175)
58 -> Just (95, 175, 215)
59 -> Just (95, 175, 255)
60 -> Just (95, 215, 0)
61 -> Just (95, 215, 95)
62 -> Just (95, 215, 135)
63 -> Just (95, 215, 175)
64 -> Just (95, 215, 215)
65 -> Just (95, 215, 255)
66 -> Just (95, 255, 0)
67 -> Just (95, 255, 95)
68 -> Just (95, 255, 135)
69 -> Just (95, 255, 175)
70 -> Just (95, 255, 215)
71 -> Just (95, 255, 255)
72 -> Just (135, 0, 0)
73 -> Just (135, 0, 95)
74 -> Just (135, 0, 135)
75 -> Just (135, 0, 175)
76 -> Just (135, 0, 215)
77 -> Just (135, 0, 255)
78 -> Just (135, 95, 0)
79 -> Just (135, 95, 95)
80 -> Just (135, 95, 135)
81 -> Just (135, 95, 175)
82 -> Just (135, 95, 215)
83 -> Just (135, 95, 255)
84 -> Just (135, 135, 0)
85 -> Just (135, 135, 95)
86 -> Just (135, 135, 135)
87 -> Just (135, 135, 175)
88 -> Just (135, 135, 215)
89 -> Just (135, 135, 255)
90 -> Just (135, 175, 0)
91 -> Just (135, 175, 95)
92 -> Just (135, 175, 135)
93 -> Just (135, 175, 175)
94 -> Just (135, 175, 215)
95 -> Just (135, 175, 255)
96 -> Just (135, 215, 0)
97 -> Just (135, 215, 95)
98 -> Just (135, 215, 135)
99 -> Just (135, 215, 175)
100 -> Just (135, 215, 215)
101 -> Just (135, 215, 255)
102 -> Just (135, 255, 0)
103 -> Just (135, 255, 95)
104 -> Just (135, 255, 135)
105 -> Just (135, 255, 175)
106 -> Just (135, 255, 215)
107 -> Just (135, 255, 255)
108 -> Just (175, 0, 0)
109 -> Just (175, 0, 95)
110 -> Just (175, 0, 135)
111 -> Just (175, 0, 175)
112 -> Just (175, 0, 215)
113 -> Just (175, 0, 255)
114 -> Just (175, 95, 0)
115 -> Just (175, 95, 95)
116 -> Just (175, 95, 135)
117 -> Just (175, 95, 175)
118 -> Just (175, 95, 215)
119 -> Just (175, 95, 255)
120 -> Just (175, 135, 0)
121 -> Just (175, 135, 95)
122 -> Just (175, 135, 135)
123 -> Just (175, 135, 175)
124 -> Just (175, 135, 215)
125 -> Just (175, 135, 255)
126 -> Just (175, 175, 0)
127 -> Just (175, 175, 95)
128 -> Just (175, 175, 135)
129 -> Just (175, 175, 175)
130 -> Just (175, 175, 215)
131 -> Just (175, 175, 255)
132 -> Just (175, 215, 0)
133 -> Just (175, 215, 95)
134 -> Just (175, 215, 135)
135 -> Just (175, 215, 175)
136 -> Just (175, 215, 215)
137 -> Just (175, 215, 255)
138 -> Just (175, 255, 0)
139 -> Just (175, 255, 95)
140 -> Just (175, 255, 135)
141 -> Just (175, 255, 175)
142 -> Just (175, 255, 215)
143 -> Just (175, 255, 255)
144 -> Just (215, 0, 0)
145 -> Just (215, 0, 95)
146 -> Just (215, 0, 135)
147 -> Just (215, 0, 175)
148 -> Just (215, 0, 215)
149 -> Just (215, 0, 255)
150 -> Just (215, 95, 0)
151 -> Just (215, 95, 95)
152 -> Just (215, 95, 135)
153 -> Just (215, 95, 175)
154 -> Just (215, 95, 215)
155 -> Just (215, 95, 255)
156 -> Just (215, 135, 0)
157 -> Just (215, 135, 95)
158 -> Just (215, 135, 135)
159 -> Just (215, 135, 175)
160 -> Just (215, 135, 215)
161 -> Just (215, 135, 255)
162 -> Just (215, 175, 0)
163 -> Just (215, 175, 95)
164 -> Just (215, 175, 135)
165 -> Just (215, 175, 175)
166 -> Just (215, 175, 215)
167 -> Just (215, 175, 255)
168 -> Just (215, 215, 0)
169 -> Just (215, 215, 95)
170 -> Just (215, 215, 135)
171 -> Just (215, 215, 175)
172 -> Just (215, 215, 215)
173 -> Just (215, 215, 255)
174 -> Just (215, 255, 0)
175 -> Just (215, 255, 95)
176 -> Just (215, 255, 135)
177 -> Just (215, 255, 175)
178 -> Just (215, 255, 215)
179 -> Just (215, 255, 255)
180 -> Just (255, 0, 0)
181 -> Just (255, 0, 95)
182 -> Just (255, 0, 135)
183 -> Just (255, 0, 175)
184 -> Just (255, 0, 215)
185 -> Just (255, 0, 255)
186 -> Just (255, 95, 0)
187 -> Just (255, 95, 95)
188 -> Just (255, 95, 135)
189 -> Just (255, 95, 175)
190 -> Just (255, 95, 215)
191 -> Just (255, 95, 255)
192 -> Just (255, 135, 0)
193 -> Just (255, 135, 95)
194 -> Just (255, 135, 135)
195 -> Just (255, 135, 175)
196 -> Just (255, 135, 215)
197 -> Just (255, 135, 255)
198 -> Just (255, 175, 0)
199 -> Just (255, 175, 95)
200 -> Just (255, 175, 135)
201 -> Just (255, 175, 175)
202 -> Just (255, 175, 215)
203 -> Just (255, 175, 255)
204 -> Just (255, 215, 0)
205 -> Just (255, 215, 95)
206 -> Just (255, 215, 135)
207 -> Just (255, 215, 175)
208 -> Just (255, 215, 215)
209 -> Just (255, 215, 255)
210 -> Just (255, 255, 0)
211 -> Just (255, 255, 95)
212 -> Just (255, 255, 135)
213 -> Just (255, 255, 175)
214 -> Just (255, 255, 215)
215 -> Just (255, 255, 255)
216 -> Just (8, 8, 8)
217 -> Just (18, 18, 18)
218 -> Just (28, 28, 28)
219 -> Just (38, 38, 38)
220 -> Just (48, 48, 48)
221 -> Just (58, 58, 58)
222 -> Just (68, 68, 68)
223 -> Just (78, 78, 78)
224 -> Just (88, 88, 88)
225 -> Just (98, 98, 98)
226 -> Just (108, 108, 108)
227 -> Just (118, 118, 118)
228 -> Just (128, 128, 128)
229 -> Just (138, 138, 138)
230 -> Just (148, 148, 148)
231 -> Just (158, 158, 158)
232 -> Just (168, 168, 168)
233 -> Just (178, 178, 178)
234 -> Just (188, 188, 188)
235 -> Just (198, 198, 198)
236 -> Just (208, 208, 208)
237 -> Just (218, 218, 218)
238 -> Just (228, 228, 228)
239 -> Just (238, 238, 238)
_ -> Nothing