-- 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 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