Merge pull request #2 from jtdaugherty/master

sync
This commit is contained in:
Willem Van Onsem 2021-02-17 07:43:55 +01:00 committed by GitHub
commit e886dc0f83
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 336 additions and 249 deletions

View File

@ -14,5 +14,4 @@ utf8FromIso :: [Int] -> [Word8]
utf8FromIso = encode . map toEnum
ppUtf8 :: [Int] -> IO ()
ppUtf8 = print . map (\f -> f "") . map showHex . utf8FromIso
ppUtf8 = print . map (`showHex` "") . utf8FromIso

View File

@ -42,7 +42,7 @@ pop = do
readParam :: Word -> Eval CapParam
readParam pn = do
!params <- get >>= return . evalParams
!params <- evalParams <$> get
return $! genericIndex params pn
push :: CapParam -> Eval ()
@ -64,11 +64,11 @@ writeCapExpr cap params =
in snd $ runWriter (runStateT (writeCapOps (capOps cap)) s0)
writeCapOps :: CapOps -> Eval ()
writeCapOps ops = mapM_ writeCapOp ops
writeCapOps = mapM_ writeCapOp
writeCapOp :: CapOp -> Eval ()
writeCapOp (Bytes !offset !count) = do
!cap <- get >>= return . evalExpression
!cap <- evalExpression <$> get
let bytes = Vector.take count $ Vector.drop offset (capBytes cap)
Vector.forM_ bytes $ tell.writeWord8
writeCapOp DecOut = do

View File

@ -128,7 +128,7 @@ paramEscapeParser = do
literalPercentParser :: CapParser BuildResults
literalPercentParser = do
_ <- char '%'
startOffset <- getState >>= return . nextOffset
startOffset <- nextOffset <$> getState
incOffset 1
return $ BuildResults 0 [Bytes startOffset 1] []
@ -154,7 +154,7 @@ incrementOpParser = do
pushOpParser :: CapParser BuildResults
pushOpParser = do
_ <- char 'p'
paramN <- digit >>= return . (\d -> read [d])
paramN <- read . pure <$> digit
incOffset 2
return $ BuildResults (fromEnum paramN) [PushParam $ paramN - 1] []
@ -299,7 +299,7 @@ compareOpParser
bytesOpParser :: CapParser BuildResults
bytesOpParser = do
bytes <- many1 $ satisfy (/= '%')
startOffset <- getState >>= return . nextOffset
startOffset <- nextOffset <$> getState
let !c = length bytes
!s <- getState
let s' = s { nextOffset = startOffset + c }

View File

@ -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-16) `div` 40)
| otherwise = e
-- | Create a RGB triple from a value in the Color240 set.
color240CodeToRGB :: Word8 -> Maybe (Int, Int, Int)

View File

@ -146,7 +146,7 @@ data Image =
-- | pretty print just the structure of an image.
ppImageStructure :: Image -> String
ppImageStructure inImg = go 0 inImg
ppImageStructure = go 0
where
go indent img = tab indent ++ pp indent img
tab indent = concat $ replicate indent " "

View File

@ -137,7 +137,7 @@ readFromDevice = do
threadWaitRead fd
bytesRead <- fdReadBuf fd bufferPtr (fromIntegral maxBytes)
if bytesRead > 0
then fmap (map $ chr . fromIntegral) $ peekArray (fromIntegral bytesRead) bufferPtr
then map (chr . fromIntegral) <$> peekArray (fromIntegral bytesRead) bufferPtr
else return []
when (not $ null stringRep) $ logMsg $ "input bytes: " ++ show stringRep
return stringRep

View File

@ -81,7 +81,7 @@ combinedOpsForLayers :: Picture -> DisplayRegion -> ST s (MRowOps s)
combinedOpsForLayers pic r
| regionWidth r == 0 || regionHeight r == 0 = MVector.new 0
| otherwise = do
layerOps <- mapM (`buildSpans` layer) (picLayers pic)
layerOps <- mapM (`buildSpans` r) (picLayers pic)
case layerOps of
[] -> fail "empty picture"
[ops] -> substituteSkips (picBackground pic) ops
@ -136,8 +136,8 @@ mergeUnder upper lower = do
return upper
mergeRowUnder :: SpanOps -> SpanOps -> SpanOps
mergeRowUnder upperRowOps lowerRowOps =
onUpperOp Vector.empty (Vector.head upperRowOps) (Vector.tail upperRowOps) lowerRowOps
mergeRowUnder upperRowOps =
onUpperOp Vector.empty (Vector.head upperRowOps) (Vector.tail upperRowOps)
where
-- H: it will never be the case that we are out of upper ops
-- before lower ops.

View File

@ -52,7 +52,7 @@ dropOps :: Int -> SpanOps -> SpanOps
dropOps w = snd . splitOpsAt w
splitOpsAt :: Int -> SpanOps -> (SpanOps, SpanOps)
splitOpsAt inW inOps = splitOpsAt' inW inOps
splitOpsAt = splitOpsAt'
where
splitOpsAt' 0 ops = (Vector.empty, ops)
splitOpsAt' remainingColumns ops = case Vector.head ops of
@ -103,7 +103,7 @@ displayOpsColumns ops
-- | The number of rows the DisplayOps are defined for.
displayOpsRows :: DisplayOps -> Int
displayOpsRows ops = Vector.length ops
displayOpsRows = Vector.length
affectedRegion :: DisplayOps -> DisplayRegion
affectedRegion ops = (displayOpsColumns ops, displayOpsRows ops)

269
test/VerifyColor240.hs Normal file
View File

@ -0,0 +1,269 @@
module VerifyColor240 where
import Data.Word(Word8)
import Verify
import Graphics.Vty.Attributes.Color240(rgbColorToColor240)
oldRgbColorToColor240 :: Integral i => i -> i -> i -> Word8
oldRgbColorToColor240 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
| 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."
(fromIntegral r :: Int)
(fromIntegral g :: Int)
(fromIntegral b :: Int))
sameColor :: Int -> Int -> Int -> Bool
sameColor r g b = oldRgbColorToColor240 r g b == rgbColorToColor240 r g b
genVal :: Gen Int
genVal = chooseInt (0, 255)
sameColorCheck :: Property
sameColorCheck = forAll genVal (\r -> forAll genVal (\g -> forAll genVal (sameColor r g)))
tests :: IO [Test]
tests = return
[ verify "check rgbColorToColor240 optimization is correct" sameColorCheck
]

View File

@ -69,6 +69,7 @@ library
exposed-modules: Graphics.Vty
Graphics.Vty.Attributes
Graphics.Vty.Attributes.Color
Graphics.Vty.Attributes.Color240
Graphics.Vty.Config
Graphics.Vty.Error
Graphics.Vty.Image
@ -104,8 +105,7 @@ library
Graphics.Vty.UnicodeWidthTable.Query
Graphics.Vty.UnicodeWidthTable.Install
other-modules: Graphics.Vty.Attributes.Color240
Graphics.Vty.Debug.Image
other-modules: Graphics.Vty.Debug.Image
Graphics.Vty.Input.Terminfo.ANSIVT
c-sources: cbits/gwinsz.c
@ -189,7 +189,7 @@ test-suite verify-using-mock-terminal
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,
@ -222,7 +222,7 @@ test-suite verify-terminal
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,
@ -255,7 +255,7 @@ test-suite verify-display-attributes
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,
@ -281,7 +281,7 @@ test-suite verify-empty-image-props
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,
@ -308,7 +308,7 @@ test-suite verify-eval-terminfo-caps
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
blaze-builder >= 0.3.3.2 && < 0.5,
bytestring,
@ -338,7 +338,7 @@ test-suite verify-image-ops
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,
@ -366,7 +366,7 @@ test-suite verify-image-trans
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,
@ -393,7 +393,7 @@ test-suite verify-inline
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,
@ -421,7 +421,7 @@ test-suite verify-parse-terminfo-caps
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,
@ -453,7 +453,7 @@ test-suite verify-simple-span-generation
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,
@ -485,7 +485,7 @@ test-suite verify-crop-span-generation
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,
@ -514,6 +514,32 @@ test-suite verify-layers-span-generation
Verify.Graphics.Vty.Image
Verify.Graphics.Vty.Span
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,
deepseq >= 1.1 && < 1.5,
mtl >= 1.1.1.0 && < 2.3,
text >= 0.11.3,
unix,
utf8-string >= 0.3 && < 1.1,
vector >= 0.7
test-suite verify-color-mapping
default-language: Haskell2010
default-extensions: ScopedTypeVariables
type: detailed-0.9
hs-source-dirs: test
test-module: VerifyColor240
other-modules: Verify
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
@ -528,6 +554,7 @@ test-suite verify-layers-span-generation
utf8-string >= 0.3 && < 1.1,
vector >= 0.7
test-suite verify-utf8-width
default-language: Haskell2010
default-extensions: ScopedTypeVariables
@ -543,7 +570,7 @@ test-suite verify-utf8-width
build-depends: vty,
Cabal >= 1.20,
QuickCheck >= 2.7,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,
@ -571,7 +598,7 @@ test-suite verify-using-mock-input
quickcheck-assertions >= 0.1.1,
test-framework == 0.8.*,
test-framework-smallcheck == 0.2.*,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,
@ -607,7 +634,7 @@ test-suite verify-config
test-framework == 0.8.*,
test-framework-smallcheck == 0.2.*,
test-framework-hunit,
random >= 1.0 && < 1.2,
random >= 1.0 && < 1.3,
base >= 4.8 && < 5,
bytestring,
containers,