1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
{-# OPTIONS_HADDOCK hide #-}
module Codec.BMP.Compression
(Compression(..))
where
import Data.Word
import Data.Binary
import Data.Binary.Get
import Data.Binary.Put
-- | The Compression mode says how the image data is encoded in the file.
data Compression
= CompressionRGB
| CompressionRLE8
| CompressionRLE4
| CompressionBitFields
| CompressionJPEG
| CompressionPNG
| CompressionUnknown Word32
deriving (Show, Eq)
instance Binary Compression where
get
= do c <- getWord32le
case c of
0 -> return $ CompressionRGB
1 -> return $ CompressionRLE8
2 -> return $ CompressionRLE4
3 -> return $ CompressionBitFields
4 -> return $ CompressionJPEG
5 -> return $ CompressionPNG
_ -> return $ CompressionUnknown c
put c
= case c of
CompressionRGB -> putWord32le 0
CompressionRLE8 -> putWord32le 1
CompressionRLE4 -> putWord32le 2
CompressionBitFields -> putWord32le 3
CompressionJPEG -> putWord32le 4
CompressionPNG -> putWord32le 5
CompressionUnknown x -> putWord32le x
|