module Codec.Ktx2.DFD.Khronos.BasicV2 where
import Data.Binary (Binary(..))
import Data.Binary.Get (Get, getWord8, getWord16le, getWord32le, runGetOrFail)
import Data.Binary.Put (PutM, putWord8, putWord16le, putWord32le, runPut)
import Data.ByteString qualified as BS
import Data.ByteString.Lazy qualified as BSL
import Data.ByteString.Lazy qualified as LBS
import Data.Vector (Vector)
import Data.Vector qualified as Vector
import Data.Word (Word8, Word16, Word32)
import GHC.Generics (Generic)
import Codec.Ktx2.DFD qualified as DFD
pattern VENDOR_ID :: (Eq a, Num a) => a
pattern $mVENDOR_ID :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bVENDOR_ID :: forall a. (Eq a, Num a) => a
VENDOR_ID = 0
pattern DESCRIPTOR_TYPE :: (Eq a, Num a) => a
pattern $mDESCRIPTOR_TYPE :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bDESCRIPTOR_TYPE :: forall a. (Eq a, Num a) => a
DESCRIPTOR_TYPE = 0
pattern VERSION :: (Eq a, Num a) => a
pattern $mVERSION :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bVERSION :: forall a. (Eq a, Num a) => a
VERSION = 2
data BasicV2 = BasicV2
{ BasicV2 -> Word8
colorModel :: Word8
, BasicV2 -> Word8
colorPrimaries :: Word8
, BasicV2 -> Word8
transferFunction :: Word8
, BasicV2 -> Word8
flags :: Word8
, BasicV2 -> Word8
texelBlockDimension0 :: Word8
, BasicV2 -> Word8
texelBlockDimension1 :: Word8
, BasicV2 -> Word8
texelBlockDimension2 :: Word8
, BasicV2 -> Word8
texelBlockDimension3 :: Word8
, BasicV2 -> Word8
bytesPlane0 :: Word8
, BasicV2 -> Word8
bytesPlane1 :: Word8
, BasicV2 -> Word8
bytesPlane2 :: Word8
, BasicV2 -> Word8
bytesPlane3 :: Word8
, BasicV2 -> Word8
bytesPlane4 :: Word8
, BasicV2 -> Word8
bytesPlane5 :: Word8
, BasicV2 -> Word8
bytesPlane6 :: Word8
, BasicV2 -> Word8
bytesPlane7 :: Word8
, BasicV2 -> Vector Sample
samples :: Vector Sample
}
deriving (BasicV2 -> BasicV2 -> Bool
(BasicV2 -> BasicV2 -> Bool)
-> (BasicV2 -> BasicV2 -> Bool) -> Eq BasicV2
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: BasicV2 -> BasicV2 -> Bool
== :: BasicV2 -> BasicV2 -> Bool
$c/= :: BasicV2 -> BasicV2 -> Bool
/= :: BasicV2 -> BasicV2 -> Bool
Eq, Int -> BasicV2 -> ShowS
[BasicV2] -> ShowS
BasicV2 -> String
(Int -> BasicV2 -> ShowS)
-> (BasicV2 -> String) -> ([BasicV2] -> ShowS) -> Show BasicV2
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> BasicV2 -> ShowS
showsPrec :: Int -> BasicV2 -> ShowS
$cshow :: BasicV2 -> String
show :: BasicV2 -> String
$cshowList :: [BasicV2] -> ShowS
showList :: [BasicV2] -> ShowS
Show, (forall x. BasicV2 -> Rep BasicV2 x)
-> (forall x. Rep BasicV2 x -> BasicV2) -> Generic BasicV2
forall x. Rep BasicV2 x -> BasicV2
forall x. BasicV2 -> Rep BasicV2 x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. BasicV2 -> Rep BasicV2 x
from :: forall x. BasicV2 -> Rep BasicV2 x
$cto :: forall x. Rep BasicV2 x -> BasicV2
to :: forall x. Rep BasicV2 x -> BasicV2
Generic)
getter :: Int -> Get BasicV2
getter :: Int -> Get BasicV2
getter Int
numSamples = do
Word8
colorModel <- Get Word8
getWord8
Word8
colorPrimaries <- Get Word8
getWord8
Word8
transferFunction <- Get Word8
getWord8
Word8
flags <- Get Word8
getWord8
Word8
texelBlockDimension0 <- (Word8 -> Word8) -> Get Word8 -> Get Word8
forall a b. (a -> b) -> Get a -> Get b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Word8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
+ Word8
1) Get Word8
getWord8
Word8
texelBlockDimension1 <- (Word8 -> Word8) -> Get Word8 -> Get Word8
forall a b. (a -> b) -> Get a -> Get b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Word8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
+ Word8
1) Get Word8
getWord8
Word8
texelBlockDimension2 <- (Word8 -> Word8) -> Get Word8 -> Get Word8
forall a b. (a -> b) -> Get a -> Get b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Word8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
+ Word8
1) Get Word8
getWord8
Word8
texelBlockDimension3 <- (Word8 -> Word8) -> Get Word8 -> Get Word8
forall a b. (a -> b) -> Get a -> Get b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Word8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
+ Word8
1) Get Word8
getWord8
Word8
bytesPlane0 <- Get Word8
getWord8
Word8
bytesPlane1 <- Get Word8
getWord8
Word8
bytesPlane2 <- Get Word8
getWord8
Word8
bytesPlane3 <- Get Word8
getWord8
Word8
bytesPlane4 <- Get Word8
getWord8
Word8
bytesPlane5 <- Get Word8
getWord8
Word8
bytesPlane6 <- Get Word8
getWord8
Word8
bytesPlane7 <- Get Word8
getWord8
Vector Sample
samples <- Int -> Get Sample -> Get (Vector Sample)
forall (m :: * -> *) a. Monad m => Int -> m a -> m (Vector a)
Vector.replicateM Int
numSamples Get Sample
forall t. Binary t => Get t
get
pure BasicV2{Word8
Vector Sample
colorModel :: Word8
colorPrimaries :: Word8
transferFunction :: Word8
flags :: Word8
texelBlockDimension0 :: Word8
texelBlockDimension1 :: Word8
texelBlockDimension2 :: Word8
texelBlockDimension3 :: Word8
bytesPlane0 :: Word8
bytesPlane1 :: Word8
bytesPlane2 :: Word8
bytesPlane3 :: Word8
bytesPlane4 :: Word8
bytesPlane5 :: Word8
bytesPlane6 :: Word8
bytesPlane7 :: Word8
samples :: Vector Sample
colorModel :: Word8
colorPrimaries :: Word8
transferFunction :: Word8
flags :: Word8
texelBlockDimension0 :: Word8
texelBlockDimension1 :: Word8
texelBlockDimension2 :: Word8
texelBlockDimension3 :: Word8
bytesPlane0 :: Word8
bytesPlane1 :: Word8
bytesPlane2 :: Word8
bytesPlane3 :: Word8
bytesPlane4 :: Word8
bytesPlane5 :: Word8
bytesPlane6 :: Word8
bytesPlane7 :: Word8
samples :: Vector Sample
..}
putter :: BasicV2 -> PutM ()
putter :: BasicV2 -> PutM ()
putter BasicV2{Word8
Vector Sample
colorModel :: BasicV2 -> Word8
colorPrimaries :: BasicV2 -> Word8
transferFunction :: BasicV2 -> Word8
flags :: BasicV2 -> Word8
texelBlockDimension0 :: BasicV2 -> Word8
texelBlockDimension1 :: BasicV2 -> Word8
texelBlockDimension2 :: BasicV2 -> Word8
texelBlockDimension3 :: BasicV2 -> Word8
bytesPlane0 :: BasicV2 -> Word8
bytesPlane1 :: BasicV2 -> Word8
bytesPlane2 :: BasicV2 -> Word8
bytesPlane3 :: BasicV2 -> Word8
bytesPlane4 :: BasicV2 -> Word8
bytesPlane5 :: BasicV2 -> Word8
bytesPlane6 :: BasicV2 -> Word8
bytesPlane7 :: BasicV2 -> Word8
samples :: BasicV2 -> Vector Sample
colorModel :: Word8
colorPrimaries :: Word8
transferFunction :: Word8
flags :: Word8
texelBlockDimension0 :: Word8
texelBlockDimension1 :: Word8
texelBlockDimension2 :: Word8
texelBlockDimension3 :: Word8
bytesPlane0 :: Word8
bytesPlane1 :: Word8
bytesPlane2 :: Word8
bytesPlane3 :: Word8
bytesPlane4 :: Word8
bytesPlane5 :: Word8
bytesPlane6 :: Word8
bytesPlane7 :: Word8
samples :: Vector Sample
..} = do
Word8 -> PutM ()
putWord8 Word8
colorModel
Word8 -> PutM ()
putWord8 Word8
colorPrimaries
Word8 -> PutM ()
putWord8 Word8
transferFunction
Word8 -> PutM ()
putWord8 Word8
flags
Word8 -> PutM ()
putWord8 (Word8 -> PutM ()) -> Word8 -> PutM ()
forall a b. (a -> b) -> a -> b
$ Word8
texelBlockDimension0 Word8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
- Word8
1
Word8 -> PutM ()
putWord8 (Word8 -> PutM ()) -> Word8 -> PutM ()
forall a b. (a -> b) -> a -> b
$ Word8
texelBlockDimension1 Word8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
- Word8
1
Word8 -> PutM ()
putWord8 (Word8 -> PutM ()) -> Word8 -> PutM ()
forall a b. (a -> b) -> a -> b
$ Word8
texelBlockDimension2 Word8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
- Word8
1
Word8 -> PutM ()
putWord8 (Word8 -> PutM ()) -> Word8 -> PutM ()
forall a b. (a -> b) -> a -> b
$ Word8
texelBlockDimension3 Word8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
- Word8
1
Word8 -> PutM ()
putWord8 Word8
bytesPlane0
Word8 -> PutM ()
putWord8 Word8
bytesPlane1
Word8 -> PutM ()
putWord8 Word8
bytesPlane2
Word8 -> PutM ()
putWord8 Word8
bytesPlane3
Word8 -> PutM ()
putWord8 Word8
bytesPlane4
Word8 -> PutM ()
putWord8 Word8
bytesPlane5
Word8 -> PutM ()
putWord8 Word8
bytesPlane6
Word8 -> PutM ()
putWord8 Word8
bytesPlane7
(Sample -> PutM ()) -> Vector Sample -> PutM ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> Vector a -> m ()
Vector.mapM_ Sample -> PutM ()
forall t. Binary t => t -> PutM ()
put Vector Sample
samples
data Sample = Sample
{ Sample -> Word16
bitOffset :: Word16
, Sample -> Word8
bitLength :: Word8
, Sample -> Word8
channelType :: Word8
, Sample -> Word8
samplePosition0 :: Word8
, Sample -> Word8
samplePosition1 :: Word8
, Sample -> Word8
samplePosition2 :: Word8
, Sample -> Word8
samplePosition3 :: Word8
, Sample -> Word32
sampleLower :: Word32
, Sample -> Word32
sampleUpper :: Word32
}
deriving (Sample -> Sample -> Bool
(Sample -> Sample -> Bool)
-> (Sample -> Sample -> Bool) -> Eq Sample
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: Sample -> Sample -> Bool
== :: Sample -> Sample -> Bool
$c/= :: Sample -> Sample -> Bool
/= :: Sample -> Sample -> Bool
Eq, Int -> Sample -> ShowS
[Sample] -> ShowS
Sample -> String
(Int -> Sample -> ShowS)
-> (Sample -> String) -> ([Sample] -> ShowS) -> Show Sample
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Sample -> ShowS
showsPrec :: Int -> Sample -> ShowS
$cshow :: Sample -> String
show :: Sample -> String
$cshowList :: [Sample] -> ShowS
showList :: [Sample] -> ShowS
Show, (forall x. Sample -> Rep Sample x)
-> (forall x. Rep Sample x -> Sample) -> Generic Sample
forall x. Rep Sample x -> Sample
forall x. Sample -> Rep Sample x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. Sample -> Rep Sample x
from :: forall x. Sample -> Rep Sample x
$cto :: forall x. Rep Sample x -> Sample
to :: forall x. Rep Sample x -> Sample
Generic)
instance Binary Sample where
get :: Get Sample
get = do
Word16
bitOffset <- Get Word16
getWord16le
Word8
bitLength <- (Word8 -> Word8) -> Get Word8 -> Get Word8
forall a b. (a -> b) -> Get a -> Get b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Word8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
+Word8
1) Get Word8
getWord8
Word8
channelType <- Get Word8
getWord8
Word8
samplePosition0 <- Get Word8
getWord8
Word8
samplePosition1 <- Get Word8
getWord8
Word8
samplePosition2 <- Get Word8
getWord8
Word8
samplePosition3 <- Get Word8
getWord8
Word32
sampleLower <- Get Word32
getWord32le
Word32
sampleUpper <- Get Word32
getWord32le
pure Sample{Word8
Word16
Word32
bitOffset :: Word16
bitLength :: Word8
channelType :: Word8
samplePosition0 :: Word8
samplePosition1 :: Word8
samplePosition2 :: Word8
samplePosition3 :: Word8
sampleLower :: Word32
sampleUpper :: Word32
bitOffset :: Word16
bitLength :: Word8
channelType :: Word8
samplePosition0 :: Word8
samplePosition1 :: Word8
samplePosition2 :: Word8
samplePosition3 :: Word8
sampleLower :: Word32
sampleUpper :: Word32
..}
put :: Sample -> PutM ()
put Sample{Word8
Word16
Word32
bitOffset :: Sample -> Word16
bitLength :: Sample -> Word8
channelType :: Sample -> Word8
samplePosition0 :: Sample -> Word8
samplePosition1 :: Sample -> Word8
samplePosition2 :: Sample -> Word8
samplePosition3 :: Sample -> Word8
sampleLower :: Sample -> Word32
sampleUpper :: Sample -> Word32
bitOffset :: Word16
bitLength :: Word8
channelType :: Word8
samplePosition0 :: Word8
samplePosition1 :: Word8
samplePosition2 :: Word8
samplePosition3 :: Word8
sampleLower :: Word32
sampleUpper :: Word32
..} = do
Word16 -> PutM ()
putWord16le Word16
bitOffset
Word8 -> PutM ()
putWord8 (Word8 -> PutM ()) -> Word8 -> PutM ()
forall a b. (a -> b) -> a -> b
$ Word8
bitLength Word8 -> Word8 -> Word8
forall a. Num a => a -> a -> a
- Word8
1
Word8 -> PutM ()
putWord8 Word8
channelType
Word8 -> PutM ()
putWord8 Word8
samplePosition0
Word8 -> PutM ()
putWord8 Word8
samplePosition1
Word8 -> PutM ()
putWord8 Word8
samplePosition2
Word8 -> PutM ()
putWord8 Word8
samplePosition3
Word32 -> PutM ()
putWord32le Word32
sampleLower
Word32 -> PutM ()
putWord32le Word32
sampleUpper
fromBlock :: DFD.Block -> Maybe BasicV2
fromBlock :: Block -> Maybe BasicV2
fromBlock DFD.Block{Word32
descriptorBlockSize :: Word32
descriptorBlockSize :: Block -> Word32
descriptorBlockSize, ByteString
body :: ByteString
body :: Block -> ByteString
body} =
case Get BasicV2
-> ByteString
-> Either
(ByteString, ByteOffset, String) (ByteString, ByteOffset, BasicV2)
forall a.
Get a
-> ByteString
-> Either
(ByteString, ByteOffset, String) (ByteString, ByteOffset, a)
runGetOrFail (Int -> Get BasicV2
getter Int
numSamples) ([ByteString] -> ByteString
LBS.fromChunks [ByteString
body]) of
Left (ByteString, ByteOffset, String)
_err ->
Maybe BasicV2
forall a. Maybe a
Nothing
Right (ByteString
_bytes, ByteOffset
_offset, BasicV2
ok) ->
BasicV2 -> Maybe BasicV2
forall a. a -> Maybe a
Just BasicV2
ok
where
numSamples :: Int
numSamples =
Int -> Int -> Int
forall a. Integral a => a -> a -> a
div (Word32 -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral Word32
descriptorBlockSize Int -> Int -> Int
forall a. Num a => a -> a -> a
- Int
24) Int
16
toBlock :: BasicV2 -> DFD.Block
toBlock :: BasicV2 -> Block
toBlock BasicV2
v2 =
DFD.Block
{ descriptorType :: Word32
descriptorType =
Word32
forall a. (Eq a, Num a) => a
DESCRIPTOR_TYPE
, vendorId :: Word32
vendorId =
Word32
forall a. (Eq a, Num a) => a
VENDOR_ID
, versionNumber :: Word32
versionNumber =
Word32
forall a. (Eq a, Num a) => a
VERSION
, descriptorBlockSize :: Word32
descriptorBlockSize =
Int -> Word32
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> Word32) -> Int -> Word32
forall a b. (a -> b) -> a -> b
$ ByteString -> Int
BS.length ByteString
body Int -> Int -> Int
forall a. Num a => a -> a -> a
+ Int
8
, body :: ByteString
body =
ByteString
body
}
where
body :: ByteString
body = ByteString -> ByteString
BSL.toStrict (ByteString -> ByteString)
-> (PutM () -> ByteString) -> PutM () -> ByteString
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PutM () -> ByteString
runPut (PutM () -> ByteString) -> PutM () -> ByteString
forall a b. (a -> b) -> a -> b
$ BasicV2 -> PutM ()
putter BasicV2
v2
unspecified :: BasicV2
unspecified :: BasicV2
unspecified = BasicV2
{ colorModel :: Word8
colorModel = Word8
KHR_DF_MODEL_UNSPECIFIED
, colorPrimaries :: Word8
colorPrimaries = Word8
KHR_DF_PRIMARIES_UNSPECIFIED
, transferFunction :: Word8
transferFunction = Word8
KHR_DF_TRANSFER_LINEAR
, flags :: Word8
flags = Word8
KHR_DF_FLAG_ALPHA_STRAIGHT
, texelBlockDimension0 :: Word8
texelBlockDimension0 = Word8
1
, texelBlockDimension1 :: Word8
texelBlockDimension1 = Word8
1
, texelBlockDimension2 :: Word8
texelBlockDimension2 = Word8
1
, texelBlockDimension3 :: Word8
texelBlockDimension3 = Word8
1
, bytesPlane0 :: Word8
bytesPlane0 = Word8
0
, bytesPlane1 :: Word8
bytesPlane1 = Word8
0
, bytesPlane2 :: Word8
bytesPlane2 = Word8
0
, bytesPlane3 :: Word8
bytesPlane3 = Word8
0
, bytesPlane4 :: Word8
bytesPlane4 = Word8
0
, bytesPlane5 :: Word8
bytesPlane5 = Word8
0
, bytesPlane6 :: Word8
bytesPlane6 = Word8
0
, bytesPlane7 :: Word8
bytesPlane7 = Word8
0
, samples :: Vector Sample
samples = Vector Sample
forall a. Monoid a => a
mempty
}
pattern KHR_DF_MODEL_UNSPECIFIED :: Word8
pattern $mKHR_DF_MODEL_UNSPECIFIED :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_UNSPECIFIED :: Word8
KHR_DF_MODEL_UNSPECIFIED = 0
pattern KHR_DF_MODEL_RGBSDA :: Word8
pattern $mKHR_DF_MODEL_RGBSDA :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_RGBSDA :: Word8
KHR_DF_MODEL_RGBSDA = 1
pattern KHR_DF_MODEL_YUVSDA :: Word8
pattern $mKHR_DF_MODEL_YUVSDA :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_YUVSDA :: Word8
KHR_DF_MODEL_YUVSDA = 2
pattern KHR_DF_MODEL_YIQSDA :: Word8
pattern $mKHR_DF_MODEL_YIQSDA :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_YIQSDA :: Word8
KHR_DF_MODEL_YIQSDA = 3
pattern KHR_DF_MODEL_LABSDA :: Word8
pattern $mKHR_DF_MODEL_LABSDA :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_LABSDA :: Word8
KHR_DF_MODEL_LABSDA = 4
pattern KHR_DF_MODEL_CMYKA :: Word8
pattern $mKHR_DF_MODEL_CMYKA :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_CMYKA :: Word8
KHR_DF_MODEL_CMYKA = 5
pattern KHR_DF_MODEL_XYZW :: Word8
pattern $mKHR_DF_MODEL_XYZW :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_XYZW :: Word8
KHR_DF_MODEL_XYZW = 6
pattern KHR_DF_MODEL_HSVA_ANG :: Word8
pattern $mKHR_DF_MODEL_HSVA_ANG :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_HSVA_ANG :: Word8
KHR_DF_MODEL_HSVA_ANG = 7
pattern KHR_DF_MODEL_HSLA_ANG :: Word8
pattern $mKHR_DF_MODEL_HSLA_ANG :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_HSLA_ANG :: Word8
KHR_DF_MODEL_HSLA_ANG = 8
pattern KHR_DF_MODEL_HSVA_HEX :: Word8
pattern $mKHR_DF_MODEL_HSVA_HEX :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_HSVA_HEX :: Word8
KHR_DF_MODEL_HSVA_HEX = 9
pattern KHR_DF_MODEL_HSLA_HEX :: Word8
pattern $mKHR_DF_MODEL_HSLA_HEX :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_HSLA_HEX :: Word8
KHR_DF_MODEL_HSLA_HEX = 10
pattern KHR_DF_MODEL_YCGCOA :: Word8
pattern $mKHR_DF_MODEL_YCGCOA :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_YCGCOA :: Word8
KHR_DF_MODEL_YCGCOA = 11
pattern KHR_DF_MODEL_YCCBCCRC :: Word8
pattern $mKHR_DF_MODEL_YCCBCCRC :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_YCCBCCRC :: Word8
KHR_DF_MODEL_YCCBCCRC = 12
pattern KHR_DF_MODEL_ICTCP :: Word8
pattern $mKHR_DF_MODEL_ICTCP :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_ICTCP :: Word8
KHR_DF_MODEL_ICTCP = 13
pattern KHR_DF_MODEL_CIEXYZ :: Word8
pattern $mKHR_DF_MODEL_CIEXYZ :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_CIEXYZ :: Word8
KHR_DF_MODEL_CIEXYZ = 14
pattern KHR_DF_MODEL_CIEXYY :: Word8
pattern $mKHR_DF_MODEL_CIEXYY :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_CIEXYY :: Word8
KHR_DF_MODEL_CIEXYY = 15
pattern KHR_DF_MODEL_DXT1A :: Word8
pattern $mKHR_DF_MODEL_DXT1A :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_DXT1A :: Word8
KHR_DF_MODEL_DXT1A = 128
pattern KHR_DF_MODEL_BC1A :: Word8
pattern $mKHR_DF_MODEL_BC1A :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_BC1A :: Word8
KHR_DF_MODEL_BC1A = KHR_DF_MODEL_DXT1A
pattern KHR_DF_MODEL_DXT2 :: Word8
pattern $mKHR_DF_MODEL_DXT2 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_DXT2 :: Word8
KHR_DF_MODEL_DXT2 = 129
pattern KHR_DF_MODEL_DXT3 :: Word8
pattern $mKHR_DF_MODEL_DXT3 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_DXT3 :: Word8
KHR_DF_MODEL_DXT3 = KHR_DF_MODEL_DXT2
pattern KHR_DF_MODEL_BC2 :: Word8
pattern $mKHR_DF_MODEL_BC2 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_BC2 :: Word8
KHR_DF_MODEL_BC2 = KHR_DF_MODEL_DXT2
pattern KHR_DF_MODEL_DXT4 :: Word8
pattern $mKHR_DF_MODEL_DXT4 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_DXT4 :: Word8
KHR_DF_MODEL_DXT4 = 130
pattern KHR_DF_MODEL_DXT5 :: Word8
pattern $mKHR_DF_MODEL_DXT5 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_DXT5 :: Word8
KHR_DF_MODEL_DXT5 = KHR_DF_MODEL_DXT4
pattern KHR_DF_MODEL_BC3 :: Word8
pattern $mKHR_DF_MODEL_BC3 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_BC3 :: Word8
KHR_DF_MODEL_BC3 = KHR_DF_MODEL_DXT4
pattern KHR_DF_MODEL_BC4 :: Word8
pattern $mKHR_DF_MODEL_BC4 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_BC4 :: Word8
KHR_DF_MODEL_BC4 = 131
pattern KHR_DF_MODEL_BC5 :: Word8
pattern $mKHR_DF_MODEL_BC5 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_BC5 :: Word8
KHR_DF_MODEL_BC5 = 132
pattern KHR_DF_MODEL_BC6H :: Word8
pattern $mKHR_DF_MODEL_BC6H :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_BC6H :: Word8
KHR_DF_MODEL_BC6H = 133
pattern KHR_DF_MODEL_BC7 :: Word8
pattern $mKHR_DF_MODEL_BC7 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_BC7 :: Word8
KHR_DF_MODEL_BC7 = 134
pattern KHR_DF_MODEL_ETC1 :: Word8
pattern $mKHR_DF_MODEL_ETC1 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_ETC1 :: Word8
KHR_DF_MODEL_ETC1 = 160
pattern KHR_DF_MODEL_ETC2 :: Word8
pattern $mKHR_DF_MODEL_ETC2 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_ETC2 :: Word8
KHR_DF_MODEL_ETC2 = 161
pattern KHR_DF_MODEL_ASTC2 :: Word8
pattern $mKHR_DF_MODEL_ASTC2 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_ASTC2 :: Word8
KHR_DF_MODEL_ASTC2 = 162
pattern KHR_DF_MODEL_ETC1S :: Word8
pattern $mKHR_DF_MODEL_ETC1S :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_ETC1S :: Word8
KHR_DF_MODEL_ETC1S = 163
pattern KHR_DF_MODEL_PVRTC :: Word8
pattern $mKHR_DF_MODEL_PVRTC :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_PVRTC :: Word8
KHR_DF_MODEL_PVRTC = 164
pattern KHR_DF_MODEL_PVRTC2 :: Word8
pattern $mKHR_DF_MODEL_PVRTC2 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_MODEL_PVRTC2 :: Word8
KHR_DF_MODEL_PVRTC2 = 165
pattern KHR_DF_PRIMARIES_UNSPECIFIED :: Word8
pattern $mKHR_DF_PRIMARIES_UNSPECIFIED :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_PRIMARIES_UNSPECIFIED :: Word8
KHR_DF_PRIMARIES_UNSPECIFIED = 0
pattern KHR_DF_PRIMARIES_BT709 :: Word8
pattern $mKHR_DF_PRIMARIES_BT709 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_PRIMARIES_BT709 :: Word8
KHR_DF_PRIMARIES_BT709 = 1
pattern KHR_DF_PRIMARIES_SRGB :: Word8
pattern $mKHR_DF_PRIMARIES_SRGB :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_PRIMARIES_SRGB :: Word8
KHR_DF_PRIMARIES_SRGB = KHR_DF_PRIMARIES_BT709
pattern KHR_DF_PRIMARIES_BT601_EBU :: Word8
pattern $mKHR_DF_PRIMARIES_BT601_EBU :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_PRIMARIES_BT601_EBU :: Word8
KHR_DF_PRIMARIES_BT601_EBU = 2
pattern KHR_DF_PRIMARIES_BT601_SMPTE :: Word8
pattern $mKHR_DF_PRIMARIES_BT601_SMPTE :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_PRIMARIES_BT601_SMPTE :: Word8
KHR_DF_PRIMARIES_BT601_SMPTE = 3
pattern KHR_DF_PRIMARIES_BT2020 :: Word8
pattern $mKHR_DF_PRIMARIES_BT2020 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_PRIMARIES_BT2020 :: Word8
KHR_DF_PRIMARIES_BT2020 = 4
pattern KHR_DF_PRIMARIES_CIEXYZ :: Word8
pattern $mKHR_DF_PRIMARIES_CIEXYZ :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_PRIMARIES_CIEXYZ :: Word8
KHR_DF_PRIMARIES_CIEXYZ = 5
pattern KHR_DF_PRIMARIES_ACES :: Word8
pattern $mKHR_DF_PRIMARIES_ACES :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_PRIMARIES_ACES :: Word8
KHR_DF_PRIMARIES_ACES = 6
pattern KHR_DF_PRIMARIES_ACESCC :: Word8
pattern $mKHR_DF_PRIMARIES_ACESCC :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_PRIMARIES_ACESCC :: Word8
KHR_DF_PRIMARIES_ACESCC = 7
pattern KHR_DF_PRIMARIES_NTSC1953 :: Word8
pattern $mKHR_DF_PRIMARIES_NTSC1953 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_PRIMARIES_NTSC1953 :: Word8
KHR_DF_PRIMARIES_NTSC1953 = 8
pattern KHR_DF_PRIMARIES_PAL525 :: Word8
pattern $mKHR_DF_PRIMARIES_PAL525 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_PRIMARIES_PAL525 :: Word8
KHR_DF_PRIMARIES_PAL525 = 9
pattern KHR_DF_PRIMARIES_DISPLAYP3 :: Word8
pattern $mKHR_DF_PRIMARIES_DISPLAYP3 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_PRIMARIES_DISPLAYP3 :: Word8
KHR_DF_PRIMARIES_DISPLAYP3 = 10
pattern KHR_DF_PRIMARIES_ADOBERGB :: Word8
pattern $mKHR_DF_PRIMARIES_ADOBERGB :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_PRIMARIES_ADOBERGB :: Word8
KHR_DF_PRIMARIES_ADOBERGB = 11
pattern KHR_DF_TRANSFER_UNSPECIFIED :: Word8
pattern $mKHR_DF_TRANSFER_UNSPECIFIED :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_UNSPECIFIED :: Word8
KHR_DF_TRANSFER_UNSPECIFIED = 0
pattern KHR_DF_TRANSFER_LINEAR :: Word8
pattern $mKHR_DF_TRANSFER_LINEAR :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_LINEAR :: Word8
KHR_DF_TRANSFER_LINEAR = 1
pattern KHR_DF_TRANSFER_SRGB :: Word8
pattern $mKHR_DF_TRANSFER_SRGB :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_SRGB :: Word8
KHR_DF_TRANSFER_SRGB = 2
pattern KHR_DF_TRANSFER_ITU :: Word8
pattern $mKHR_DF_TRANSFER_ITU :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_ITU :: Word8
KHR_DF_TRANSFER_ITU = 3
pattern KHR_DF_TRANSFER_NTSC :: Word8
pattern $mKHR_DF_TRANSFER_NTSC :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_NTSC :: Word8
KHR_DF_TRANSFER_NTSC = 4
pattern KHR_DF_TRANSFER_SLOG :: Word8
pattern $mKHR_DF_TRANSFER_SLOG :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_SLOG :: Word8
KHR_DF_TRANSFER_SLOG = 5
pattern KHR_DF_TRANSFER_SLOG2 :: Word8
pattern $mKHR_DF_TRANSFER_SLOG2 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_SLOG2 :: Word8
KHR_DF_TRANSFER_SLOG2 = 6
pattern KHR_DF_TRANSFER_BT1886 :: Word8
pattern $mKHR_DF_TRANSFER_BT1886 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_BT1886 :: Word8
KHR_DF_TRANSFER_BT1886 = 7
pattern KHR_DF_TRANSFER_HLG_OETF :: Word8
pattern $mKHR_DF_TRANSFER_HLG_OETF :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_HLG_OETF :: Word8
KHR_DF_TRANSFER_HLG_OETF = 8
pattern KHR_DF_TRANSFER_HLG_EOTF :: Word8
pattern $mKHR_DF_TRANSFER_HLG_EOTF :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_HLG_EOTF :: Word8
KHR_DF_TRANSFER_HLG_EOTF = 9
pattern KHR_DF_TRANSFER_PQ_EOTF :: Word8
pattern $mKHR_DF_TRANSFER_PQ_EOTF :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_PQ_EOTF :: Word8
KHR_DF_TRANSFER_PQ_EOTF = 10
pattern KHR_DF_TRANSFER_PQ_OETF :: Word8
pattern $mKHR_DF_TRANSFER_PQ_OETF :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_PQ_OETF :: Word8
KHR_DF_TRANSFER_PQ_OETF = 11
pattern KHR_DF_TRANSFER_DCIP3 :: Word8
pattern $mKHR_DF_TRANSFER_DCIP3 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_DCIP3 :: Word8
KHR_DF_TRANSFER_DCIP3 = 12
pattern KHR_DF_TRANSFER_PAL_OETF :: Word8
pattern $mKHR_DF_TRANSFER_PAL_OETF :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_PAL_OETF :: Word8
KHR_DF_TRANSFER_PAL_OETF = 13
pattern KHR_DF_TRANSFER_PAL625_EOTF :: Word8
pattern $mKHR_DF_TRANSFER_PAL625_EOTF :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_PAL625_EOTF :: Word8
KHR_DF_TRANSFER_PAL625_EOTF = 14
pattern KHR_DF_TRANSFER_ST240 :: Word8
pattern $mKHR_DF_TRANSFER_ST240 :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_ST240 :: Word8
KHR_DF_TRANSFER_ST240 = 15
pattern KHR_DF_TRANSFER_ACESCC :: Word8
pattern $mKHR_DF_TRANSFER_ACESCC :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_ACESCC :: Word8
KHR_DF_TRANSFER_ACESCC = 16
pattern KHR_DF_TRANSFER_ACESCCT :: Word8
pattern $mKHR_DF_TRANSFER_ACESCCT :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_ACESCCT :: Word8
KHR_DF_TRANSFER_ACESCCT = 17
pattern KHR_DF_TRANSFER_ADOBERGB :: Word8
pattern $mKHR_DF_TRANSFER_ADOBERGB :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_TRANSFER_ADOBERGB :: Word8
KHR_DF_TRANSFER_ADOBERGB = 18
pattern KHR_DF_FLAG_ALPHA_STRAIGHT :: Word8
pattern $mKHR_DF_FLAG_ALPHA_STRAIGHT :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_FLAG_ALPHA_STRAIGHT :: Word8
KHR_DF_FLAG_ALPHA_STRAIGHT = 0
pattern KHR_DF_FLAG_ALPHA_PREMULTIPLIED :: Word8
pattern $mKHR_DF_FLAG_ALPHA_PREMULTIPLIED :: forall {r}. Word8 -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_FLAG_ALPHA_PREMULTIPLIED :: Word8
KHR_DF_FLAG_ALPHA_PREMULTIPLIED = 1
pattern KHR_DF_SAMPLE_DATATYPE_FLOAT :: (Eq a, Num a) => a
pattern $mKHR_DF_SAMPLE_DATATYPE_FLOAT :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_SAMPLE_DATATYPE_FLOAT :: forall a. (Eq a, Num a) => a
KHR_DF_SAMPLE_DATATYPE_FLOAT = 0x80
pattern KHR_DF_SAMPLE_DATATYPE_SIGNED :: (Eq a, Num a) => a
pattern $mKHR_DF_SAMPLE_DATATYPE_SIGNED :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_SAMPLE_DATATYPE_SIGNED :: forall a. (Eq a, Num a) => a
KHR_DF_SAMPLE_DATATYPE_SIGNED = 0x40
pattern KHR_DF_SAMPLE_DATATYPE_EXPONENT :: (Eq a, Num a) => a
pattern $mKHR_DF_SAMPLE_DATATYPE_EXPONENT :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_SAMPLE_DATATYPE_EXPONENT :: forall a. (Eq a, Num a) => a
KHR_DF_SAMPLE_DATATYPE_EXPONENT = 0x20
pattern KHR_DF_SAMPLE_DATATYPE_LINEAR :: (Eq a, Num a) => a
pattern $mKHR_DF_SAMPLE_DATATYPE_LINEAR :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bKHR_DF_SAMPLE_DATATYPE_LINEAR :: forall a. (Eq a, Num a) => a
KHR_DF_SAMPLE_DATATYPE_LINEAR = 0x10