mirror of
https://github.com/ilyakooo0/vty.git
synced 2024-11-25 19:22:08 +03:00
rewrite the color logic
This commit is contained in:
parent
90ea18379d
commit
ffdd86df1c
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user