diff --git a/src/Graphics/Vty/Attributes/Color240.hs b/src/Graphics/Vty/Attributes/Color240.hs index 30b36d7..dded5d4 100644 --- a/src/Graphics/Vty/Attributes/Color240.hs +++ b/src/Graphics/Vty/Attributes/Color240.hs @@ -39,226 +39,18 @@ rgbColorToColor240 r g b | r == 218 && g == 218 && b == 218 = 237 | r == 228 && g == 228 && b == 228 = 238 | r == 238 && g == 238 && b == 238 = 239 - | r <= 0 && g <= 0 && b <= 0 = 0 - | r <= 0 && g <= 0 && b <= 95 = 1 - | r <= 0 && g <= 0 && b <= 135 = 2 - | r <= 0 && g <= 0 && b <= 175 = 3 - | r <= 0 && g <= 0 && b <= 215 = 4 - | r <= 0 && g <= 0 && b <= 255 = 5 - | r <= 0 && g <= 95 && b <= 0 = 6 - | r <= 0 && g <= 95 && b <= 95 = 7 - | r <= 0 && g <= 95 && b <= 135 = 8 - | r <= 0 && g <= 95 && b <= 175 = 9 - | r <= 0 && g <= 95 && b <= 215 = 10 - | r <= 0 && g <= 95 && b <= 255 = 11 - | r <= 0 && g <= 135 && b <= 0 = 12 - | r <= 0 && g <= 135 && b <= 95 = 13 - | r <= 0 && g <= 135 && b <= 135 = 14 - | r <= 0 && g <= 135 && b <= 175 = 15 - | r <= 0 && g <= 135 && b <= 215 = 16 - | r <= 0 && g <= 135 && b <= 255 = 17 - | r <= 0 && g <= 175 && b <= 0 = 18 - | r <= 0 && g <= 175 && b <= 95 = 19 - | r <= 0 && g <= 175 && b <= 135 = 20 - | r <= 0 && g <= 175 && b <= 175 = 21 - | r <= 0 && g <= 175 && b <= 215 = 22 - | r <= 0 && g <= 175 && b <= 255 = 23 - | r <= 0 && g <= 215 && b <= 0 = 24 - | r <= 0 && g <= 215 && b <= 95 = 25 - | r <= 0 && g <= 215 && b <= 135 = 26 - | r <= 0 && g <= 215 && b <= 175 = 27 - | r <= 0 && g <= 215 && b <= 215 = 28 - | r <= 0 && g <= 215 && b <= 255 = 29 - | r <= 0 && g <= 255 && b <= 0 = 30 - | r <= 0 && g <= 255 && b <= 95 = 31 - | r <= 0 && g <= 255 && b <= 135 = 32 - | r <= 0 && g <= 255 && b <= 175 = 33 - | r <= 0 && g <= 255 && b <= 215 = 34 - | r <= 0 && g <= 255 && b <= 255 = 35 - | r <= 95 && g <= 0 && b <= 0 = 36 - | r <= 95 && g <= 0 && b <= 95 = 37 - | r <= 95 && g <= 0 && b <= 135 = 38 - | r <= 95 && g <= 0 && b <= 175 = 39 - | r <= 95 && g <= 0 && b <= 215 = 40 - | r <= 95 && g <= 0 && b <= 255 = 41 - | r <= 95 && g <= 95 && b <= 0 = 42 - | r <= 95 && g <= 95 && b <= 95 = 43 - | r <= 95 && g <= 95 && b <= 135 = 44 - | r <= 95 && g <= 95 && b <= 175 = 45 - | r <= 95 && g <= 95 && b <= 215 = 46 - | r <= 95 && g <= 95 && b <= 255 = 47 - | r <= 95 && g <= 135 && b <= 0 = 48 - | r <= 95 && g <= 135 && b <= 95 = 49 - | r <= 95 && g <= 135 && b <= 135 = 50 - | r <= 95 && g <= 135 && b <= 175 = 51 - | r <= 95 && g <= 135 && b <= 215 = 52 - | r <= 95 && g <= 135 && b <= 255 = 53 - | r <= 95 && g <= 175 && b <= 0 = 54 - | r <= 95 && g <= 175 && b <= 95 = 55 - | r <= 95 && g <= 175 && b <= 135 = 56 - | r <= 95 && g <= 175 && b <= 175 = 57 - | r <= 95 && g <= 175 && b <= 215 = 58 - | r <= 95 && g <= 175 && b <= 255 = 59 - | r <= 95 && g <= 215 && b <= 0 = 60 - | r <= 95 && g <= 215 && b <= 95 = 61 - | r <= 95 && g <= 215 && b <= 135 = 62 - | r <= 95 && g <= 215 && b <= 175 = 63 - | r <= 95 && g <= 215 && b <= 215 = 64 - | r <= 95 && g <= 215 && b <= 255 = 65 - | r <= 95 && g <= 255 && b <= 0 = 66 - | r <= 95 && g <= 255 && b <= 95 = 67 - | r <= 95 && g <= 255 && b <= 135 = 68 - | r <= 95 && g <= 255 && b <= 175 = 69 - | r <= 95 && g <= 255 && b <= 215 = 70 - | r <= 95 && g <= 255 && b <= 255 = 71 - | r <= 135 && g <= 0 && b <= 0 = 72 - | r <= 135 && g <= 0 && b <= 95 = 73 - | r <= 135 && g <= 0 && b <= 135 = 74 - | r <= 135 && g <= 0 && b <= 175 = 75 - | r <= 135 && g <= 0 && b <= 215 = 76 - | r <= 135 && g <= 0 && b <= 255 = 77 - | r <= 135 && g <= 95 && b <= 0 = 78 - | r <= 135 && g <= 95 && b <= 95 = 79 - | r <= 135 && g <= 95 && b <= 135 = 80 - | r <= 135 && g <= 95 && b <= 175 = 81 - | r <= 135 && g <= 95 && b <= 215 = 82 - | r <= 135 && g <= 95 && b <= 255 = 83 - | r <= 135 && g <= 135 && b <= 0 = 84 - | r <= 135 && g <= 135 && b <= 95 = 85 - | r <= 135 && g <= 135 && b <= 135 = 86 - | r <= 135 && g <= 135 && b <= 175 = 87 - | r <= 135 && g <= 135 && b <= 215 = 88 - | r <= 135 && g <= 135 && b <= 255 = 89 - | r <= 135 && g <= 175 && b <= 0 = 90 - | r <= 135 && g <= 175 && b <= 95 = 91 - | r <= 135 && g <= 175 && b <= 135 = 92 - | r <= 135 && g <= 175 && b <= 175 = 93 - | r <= 135 && g <= 175 && b <= 215 = 94 - | r <= 135 && g <= 175 && b <= 255 = 95 - | r <= 135 && g <= 215 && b <= 0 = 96 - | r <= 135 && g <= 215 && b <= 95 = 97 - | r <= 135 && g <= 215 && b <= 135 = 98 - | r <= 135 && g <= 215 && b <= 175 = 99 - | r <= 135 && g <= 215 && b <= 215 = 100 - | r <= 135 && g <= 215 && b <= 255 = 101 - | r <= 135 && g <= 255 && b <= 0 = 102 - | r <= 135 && g <= 255 && b <= 95 = 103 - | r <= 135 && g <= 255 && b <= 135 = 104 - | r <= 135 && g <= 255 && b <= 175 = 105 - | r <= 135 && g <= 255 && b <= 215 = 106 - | r <= 135 && g <= 255 && b <= 255 = 107 - | r <= 175 && g <= 0 && b <= 0 = 108 - | r <= 175 && g <= 0 && b <= 95 = 109 - | r <= 175 && g <= 0 && b <= 135 = 110 - | r <= 175 && g <= 0 && b <= 175 = 111 - | r <= 175 && g <= 0 && b <= 215 = 112 - | r <= 175 && g <= 0 && b <= 255 = 113 - | r <= 175 && g <= 95 && b <= 0 = 114 - | r <= 175 && g <= 95 && b <= 95 = 115 - | r <= 175 && g <= 95 && b <= 135 = 116 - | r <= 175 && g <= 95 && b <= 175 = 117 - | r <= 175 && g <= 95 && b <= 215 = 118 - | r <= 175 && g <= 95 && b <= 255 = 119 - | r <= 175 && g <= 135 && b <= 0 = 120 - | r <= 175 && g <= 135 && b <= 95 = 121 - | r <= 175 && g <= 135 && b <= 135 = 122 - | r <= 175 && g <= 135 && b <= 175 = 123 - | r <= 175 && g <= 135 && b <= 215 = 124 - | r <= 175 && g <= 135 && b <= 255 = 125 - | r <= 175 && g <= 175 && b <= 0 = 126 - | r <= 175 && g <= 175 && b <= 95 = 127 - | r <= 175 && g <= 175 && b <= 135 = 128 - | r <= 175 && g <= 175 && b <= 175 = 129 - | r <= 175 && g <= 175 && b <= 215 = 130 - | r <= 175 && g <= 175 && b <= 255 = 131 - | r <= 175 && g <= 215 && b <= 0 = 132 - | r <= 175 && g <= 215 && b <= 95 = 133 - | r <= 175 && g <= 215 && b <= 135 = 134 - | r <= 175 && g <= 215 && b <= 175 = 135 - | r <= 175 && g <= 215 && b <= 215 = 136 - | r <= 175 && g <= 215 && b <= 255 = 137 - | r <= 175 && g <= 255 && b <= 0 = 138 - | r <= 175 && g <= 255 && b <= 95 = 139 - | r <= 175 && g <= 255 && b <= 135 = 140 - | r <= 175 && g <= 255 && b <= 175 = 141 - | r <= 175 && g <= 255 && b <= 215 = 142 - | r <= 175 && g <= 255 && b <= 255 = 143 - | r <= 215 && g <= 0 && b <= 0 = 144 - | r <= 215 && g <= 0 && b <= 95 = 145 - | r <= 215 && g <= 0 && b <= 135 = 146 - | r <= 215 && g <= 0 && b <= 175 = 147 - | r <= 215 && g <= 0 && b <= 215 = 148 - | r <= 215 && g <= 0 && b <= 255 = 149 - | r <= 215 && g <= 95 && b <= 0 = 150 - | r <= 215 && g <= 95 && b <= 95 = 151 - | r <= 215 && g <= 95 && b <= 135 = 152 - | r <= 215 && g <= 95 && b <= 175 = 153 - | r <= 215 && g <= 95 && b <= 215 = 154 - | r <= 215 && g <= 95 && b <= 255 = 155 - | r <= 215 && g <= 135 && b <= 0 = 156 - | r <= 215 && g <= 135 && b <= 95 = 157 - | r <= 215 && g <= 135 && b <= 135 = 158 - | r <= 215 && g <= 135 && b <= 175 = 159 - | r <= 215 && g <= 135 && b <= 215 = 160 - | r <= 215 && g <= 135 && b <= 255 = 161 - | r <= 215 && g <= 175 && b <= 0 = 162 - | r <= 215 && g <= 175 && b <= 95 = 163 - | r <= 215 && g <= 175 && b <= 135 = 164 - | r <= 215 && g <= 175 && b <= 175 = 165 - | r <= 215 && g <= 175 && b <= 215 = 166 - | r <= 215 && g <= 175 && b <= 255 = 167 - | r <= 215 && g <= 215 && b <= 0 = 168 - | r <= 215 && g <= 215 && b <= 95 = 169 - | r <= 215 && g <= 215 && b <= 135 = 170 - | r <= 215 && g <= 215 && b <= 175 = 171 - | r <= 215 && g <= 215 && b <= 215 = 172 - | r <= 215 && g <= 215 && b <= 255 = 173 - | r <= 215 && g <= 255 && b <= 0 = 174 - | r <= 215 && g <= 255 && b <= 95 = 175 - | r <= 215 && g <= 255 && b <= 135 = 176 - | r <= 215 && g <= 255 && b <= 175 = 177 - | r <= 215 && g <= 255 && b <= 215 = 178 - | r <= 215 && g <= 255 && b <= 255 = 179 - | r <= 255 && g <= 0 && b <= 0 = 180 - | r <= 255 && g <= 0 && b <= 95 = 181 - | r <= 255 && g <= 0 && b <= 135 = 182 - | r <= 255 && g <= 0 && b <= 175 = 183 - | r <= 255 && g <= 0 && b <= 215 = 184 - | r <= 255 && g <= 0 && b <= 255 = 185 - | r <= 255 && g <= 95 && b <= 0 = 186 - | r <= 255 && g <= 95 && b <= 95 = 187 - | r <= 255 && g <= 95 && b <= 135 = 188 - | r <= 255 && g <= 95 && b <= 175 = 189 - | r <= 255 && g <= 95 && b <= 215 = 190 - | r <= 255 && g <= 95 && b <= 255 = 191 - | r <= 255 && g <= 135 && b <= 0 = 192 - | r <= 255 && g <= 135 && b <= 95 = 193 - | r <= 255 && g <= 135 && b <= 135 = 194 - | r <= 255 && g <= 135 && b <= 175 = 195 - | r <= 255 && g <= 135 && b <= 215 = 196 - | r <= 255 && g <= 135 && b <= 255 = 197 - | r <= 255 && g <= 175 && b <= 0 = 198 - | r <= 255 && g <= 175 && b <= 95 = 199 - | r <= 255 && g <= 175 && b <= 135 = 200 - | r <= 255 && g <= 175 && b <= 175 = 201 - | r <= 255 && g <= 175 && b <= 215 = 202 - | r <= 255 && g <= 175 && b <= 255 = 203 - | r <= 255 && g <= 215 && b <= 0 = 204 - | r <= 255 && g <= 215 && b <= 95 = 205 - | r <= 255 && g <= 215 && b <= 135 = 206 - | r <= 255 && g <= 215 && b <= 175 = 207 - | r <= 255 && g <= 215 && b <= 215 = 208 - | r <= 255 && g <= 215 && b <= 255 = 209 - | r <= 255 && g <= 255 && b <= 0 = 210 - | r <= 255 && g <= 255 && b <= 95 = 211 - | r <= 255 && g <= 255 && b <= 135 = 212 - | r <= 255 && g <= 255 && b <= 175 = 213 - | r <= 255 && g <= 255 && b <= 215 = 214 - | r <= 255 && g <= 255 && b <= 255 = 215 - | otherwise = error (printf "RGB color %d %d %d does not map to 240 palette." + | 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)) + (fromIntegral b :: Int))) + +simpleColor_ :: Integral i => Word8 -> i -> Word8 +simpleColor_ e c + | c <= 0 = 0 + | c <= 95 = 1 + | c <= 255 = fromIntegral ((c-15) `div` 40) + | otherwise = e -- | Create a RGB triple from a value in the Color240 set. color240CodeToRGB :: Word8 -> Maybe (Int, Int, Int)