{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
module THREE.Constants.Textures
( MappingModes (..)
, WrappingModes (..)
, Types (..)
, Formats (..)
, DdsS3tcFormats (..)
, PvrtcFormats (..)
, EtcFormats (..)
, AstcFormats (..)
, BptcFormats (..)
, RgtcFormats (..)
, TextureComparisonFunctions (..)
, InternalFormats (..)
, DepthPacking (..)
, ColorSpace (..)
, UvChannel (..)
, UnpackAlignment (..)
) where
import Miso
data MappingModes
= UVMapping
| CubeReflectionMapping
| CubeRefractionMapping
| EquirectangularReflectionMapping
| EquirectangularRefractionMapping
| CubeUVReflectionMapping
instance ToJSVal MappingModes where
toJSVal :: MappingModes -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal)
-> (MappingModes -> Int) -> MappingModes -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MappingModes -> Int
go
where
go :: MappingModes -> Int
go :: MappingModes -> Int
go = \case
MappingModes
UVMapping -> Int
300
MappingModes
CubeReflectionMapping -> Int
301
MappingModes
CubeRefractionMapping -> Int
302
MappingModes
EquirectangularReflectionMapping -> Int
303
MappingModes
EquirectangularRefractionMapping -> Int
304
MappingModes
CubeUVReflectionMapping -> Int
306
instance FromJSVal MappingModes where
fromJSVal :: JSVal -> IO (Maybe MappingModes)
fromJSVal = (Maybe Int -> Maybe MappingModes)
-> IO (Maybe Int) -> IO (Maybe MappingModes)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int -> (Int -> Maybe MappingModes) -> Maybe MappingModes
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe MappingModes
go) (IO (Maybe Int) -> IO (Maybe MappingModes))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe MappingModes)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe MappingModes
go :: Int -> Maybe MappingModes
go = \case
Int
300 -> MappingModes -> Maybe MappingModes
forall a. a -> Maybe a
Just MappingModes
UVMapping
Int
301 -> MappingModes -> Maybe MappingModes
forall a. a -> Maybe a
Just MappingModes
CubeReflectionMapping
Int
302 -> MappingModes -> Maybe MappingModes
forall a. a -> Maybe a
Just MappingModes
CubeRefractionMapping
Int
303 -> MappingModes -> Maybe MappingModes
forall a. a -> Maybe a
Just MappingModes
EquirectangularReflectionMapping
Int
304 -> MappingModes -> Maybe MappingModes
forall a. a -> Maybe a
Just MappingModes
EquirectangularRefractionMapping
Int
306 -> MappingModes -> Maybe MappingModes
forall a. a -> Maybe a
Just MappingModes
CubeUVReflectionMapping
Int
_ -> Maybe MappingModes
forall a. Maybe a
Nothing
data WrappingModes
= RepeatWrapping
| ClampToEdgeWrapping
| MirroredRepeatWrapping
instance ToJSVal WrappingModes where
toJSVal :: WrappingModes -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal)
-> (WrappingModes -> Int) -> WrappingModes -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. WrappingModes -> Int
go
where
go :: WrappingModes -> Int
go :: WrappingModes -> Int
go = \case
WrappingModes
RepeatWrapping -> Int
1000
WrappingModes
ClampToEdgeWrapping -> Int
1001
WrappingModes
MirroredRepeatWrapping -> Int
1002
instance FromJSVal WrappingModes where
fromJSVal :: JSVal -> IO (Maybe WrappingModes)
fromJSVal = (Maybe Int -> Maybe WrappingModes)
-> IO (Maybe Int) -> IO (Maybe WrappingModes)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int -> (Int -> Maybe WrappingModes) -> Maybe WrappingModes
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe WrappingModes
go) (IO (Maybe Int) -> IO (Maybe WrappingModes))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe WrappingModes)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe WrappingModes
go :: Int -> Maybe WrappingModes
go = \case
Int
1000 -> WrappingModes -> Maybe WrappingModes
forall a. a -> Maybe a
Just WrappingModes
RepeatWrapping
Int
1001 -> WrappingModes -> Maybe WrappingModes
forall a. a -> Maybe a
Just WrappingModes
ClampToEdgeWrapping
Int
1002 -> WrappingModes -> Maybe WrappingModes
forall a. a -> Maybe a
Just WrappingModes
MirroredRepeatWrapping
Int
_ -> Maybe WrappingModes
forall a. Maybe a
Nothing
data Types
= UnsignedByteType
| ByteType
| ShortType
| UnsignedShortType
| IntType
| UnsignedIntType
| FloatType
| HalfFloatType
| UnsignedShort4444Type
| UnsignedShort5551Type
| UnsignedInt248Type
| UnsignedInt5999Type
instance ToJSVal Types where
toJSVal :: Types -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal) -> (Types -> Int) -> Types -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Types -> Int
go
where
go :: Types -> Int
go :: Types -> Int
go = \case
Types
UnsignedByteType -> Int
1009
Types
ByteType -> Int
1010
Types
ShortType -> Int
1011
Types
UnsignedShortType -> Int
1012
Types
IntType -> Int
1013
Types
UnsignedIntType -> Int
1014
Types
FloatType -> Int
1015
Types
HalfFloatType -> Int
1016
Types
UnsignedShort4444Type -> Int
1017
Types
UnsignedShort5551Type -> Int
1018
Types
UnsignedInt248Type -> Int
1020
Types
UnsignedInt5999Type -> Int
35902
instance FromJSVal Types where
fromJSVal :: JSVal -> IO (Maybe Types)
fromJSVal = (Maybe Int -> Maybe Types) -> IO (Maybe Int) -> IO (Maybe Types)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int -> (Int -> Maybe Types) -> Maybe Types
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe Types
go) (IO (Maybe Int) -> IO (Maybe Types))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe Types)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe Types
go :: Int -> Maybe Types
go = \case
Int
1009 -> Types -> Maybe Types
forall a. a -> Maybe a
Just Types
UnsignedByteType
Int
1010 -> Types -> Maybe Types
forall a. a -> Maybe a
Just Types
ByteType
Int
1011 -> Types -> Maybe Types
forall a. a -> Maybe a
Just Types
ShortType
Int
1012 -> Types -> Maybe Types
forall a. a -> Maybe a
Just Types
UnsignedShortType
Int
1013 -> Types -> Maybe Types
forall a. a -> Maybe a
Just Types
IntType
Int
1014 -> Types -> Maybe Types
forall a. a -> Maybe a
Just Types
UnsignedIntType
Int
1015 -> Types -> Maybe Types
forall a. a -> Maybe a
Just Types
FloatType
Int
1016 -> Types -> Maybe Types
forall a. a -> Maybe a
Just Types
HalfFloatType
Int
1017 -> Types -> Maybe Types
forall a. a -> Maybe a
Just Types
UnsignedShort4444Type
Int
1018 -> Types -> Maybe Types
forall a. a -> Maybe a
Just Types
UnsignedShort5551Type
Int
1020 -> Types -> Maybe Types
forall a. a -> Maybe a
Just Types
UnsignedInt248Type
Int
35902 -> Types -> Maybe Types
forall a. a -> Maybe a
Just Types
UnsignedInt5999Type
Int
_ -> Maybe Types
forall a. Maybe a
Nothing
data Formats
= AlphaFormat
| RGBFormat
| RGBAFormat
| DepthFormat
| DepthStencilFormat
| RedFormat
| RedIntegerFormat
| RGFormat
| RGIntegerFormat
| RGBAIntegerFormat
instance ToJSVal Formats where
toJSVal :: Formats -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal) -> (Formats -> Int) -> Formats -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Formats -> Int
go
where
go :: Formats -> Int
go :: Formats -> Int
go = \case
Formats
AlphaFormat -> Int
1021
Formats
RGBFormat -> Int
1022
Formats
RGBAFormat -> Int
1023
Formats
DepthFormat -> Int
1026
Formats
DepthStencilFormat -> Int
1027
Formats
RedFormat -> Int
1028
Formats
RedIntegerFormat -> Int
1029
Formats
RGFormat -> Int
1030
Formats
RGIntegerFormat -> Int
1031
Formats
RGBAIntegerFormat -> Int
1033
instance FromJSVal Formats where
fromJSVal :: JSVal -> IO (Maybe Formats)
fromJSVal = (Maybe Int -> Maybe Formats)
-> IO (Maybe Int) -> IO (Maybe Formats)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int -> (Int -> Maybe Formats) -> Maybe Formats
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe Formats
go) (IO (Maybe Int) -> IO (Maybe Formats))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe Formats)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe Formats
go :: Int -> Maybe Formats
go = \case
Int
1021 -> Formats -> Maybe Formats
forall a. a -> Maybe a
Just Formats
AlphaFormat
Int
1022 -> Formats -> Maybe Formats
forall a. a -> Maybe a
Just Formats
RGBFormat
Int
1023 -> Formats -> Maybe Formats
forall a. a -> Maybe a
Just Formats
RGBAFormat
Int
1026 -> Formats -> Maybe Formats
forall a. a -> Maybe a
Just Formats
DepthFormat
Int
1027 -> Formats -> Maybe Formats
forall a. a -> Maybe a
Just Formats
DepthStencilFormat
Int
1028 -> Formats -> Maybe Formats
forall a. a -> Maybe a
Just Formats
RedFormat
Int
1029 -> Formats -> Maybe Formats
forall a. a -> Maybe a
Just Formats
RedIntegerFormat
Int
1030 -> Formats -> Maybe Formats
forall a. a -> Maybe a
Just Formats
RGFormat
Int
1031 -> Formats -> Maybe Formats
forall a. a -> Maybe a
Just Formats
RGIntegerFormat
Int
1033 -> Formats -> Maybe Formats
forall a. a -> Maybe a
Just Formats
RGBAIntegerFormat
Int
_ -> Maybe Formats
forall a. Maybe a
Nothing
data DdsS3tcFormats
= RGB_S3TC_DXT1_Format
| RGBA_S3TC_DXT1_Format
| RGBA_S3TC_DXT3_Format
| RGBA_S3TC_DXT5_Format
instance ToJSVal DdsS3tcFormats where
toJSVal :: DdsS3tcFormats -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal)
-> (DdsS3tcFormats -> Int) -> DdsS3tcFormats -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DdsS3tcFormats -> Int
go
where
go :: DdsS3tcFormats -> Int
go :: DdsS3tcFormats -> Int
go = \case
DdsS3tcFormats
RGB_S3TC_DXT1_Format -> Int
33776
DdsS3tcFormats
RGBA_S3TC_DXT1_Format -> Int
33777
DdsS3tcFormats
RGBA_S3TC_DXT3_Format -> Int
33778
DdsS3tcFormats
RGBA_S3TC_DXT5_Format -> Int
33779
instance FromJSVal DdsS3tcFormats where
fromJSVal :: JSVal -> IO (Maybe DdsS3tcFormats)
fromJSVal = (Maybe Int -> Maybe DdsS3tcFormats)
-> IO (Maybe Int) -> IO (Maybe DdsS3tcFormats)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int -> (Int -> Maybe DdsS3tcFormats) -> Maybe DdsS3tcFormats
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe DdsS3tcFormats
go) (IO (Maybe Int) -> IO (Maybe DdsS3tcFormats))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe DdsS3tcFormats)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe DdsS3tcFormats
go :: Int -> Maybe DdsS3tcFormats
go = \case
Int
33776 -> DdsS3tcFormats -> Maybe DdsS3tcFormats
forall a. a -> Maybe a
Just DdsS3tcFormats
RGB_S3TC_DXT1_Format
Int
33777 -> DdsS3tcFormats -> Maybe DdsS3tcFormats
forall a. a -> Maybe a
Just DdsS3tcFormats
RGBA_S3TC_DXT1_Format
Int
33778 -> DdsS3tcFormats -> Maybe DdsS3tcFormats
forall a. a -> Maybe a
Just DdsS3tcFormats
RGBA_S3TC_DXT3_Format
Int
33779 -> DdsS3tcFormats -> Maybe DdsS3tcFormats
forall a. a -> Maybe a
Just DdsS3tcFormats
RGBA_S3TC_DXT5_Format
Int
_ -> Maybe DdsS3tcFormats
forall a. Maybe a
Nothing
data PvrtcFormats
= RGB_PVRTC_4BPPV1_Format
| RGB_PVRTC_2BPPV1_Format
| RGBA_PVRTC_4BPPV1_Format
| RGBA_PVRTC_2BPPV1_Format
instance ToJSVal PvrtcFormats where
toJSVal :: PvrtcFormats -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal)
-> (PvrtcFormats -> Int) -> PvrtcFormats -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PvrtcFormats -> Int
go
where
go :: PvrtcFormats -> Int
go :: PvrtcFormats -> Int
go = \case
PvrtcFormats
RGB_PVRTC_4BPPV1_Format -> Int
35840
PvrtcFormats
RGB_PVRTC_2BPPV1_Format -> Int
35841
PvrtcFormats
RGBA_PVRTC_4BPPV1_Format -> Int
35842
PvrtcFormats
RGBA_PVRTC_2BPPV1_Format -> Int
35843
instance FromJSVal PvrtcFormats where
fromJSVal :: JSVal -> IO (Maybe PvrtcFormats)
fromJSVal = (Maybe Int -> Maybe PvrtcFormats)
-> IO (Maybe Int) -> IO (Maybe PvrtcFormats)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int -> (Int -> Maybe PvrtcFormats) -> Maybe PvrtcFormats
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe PvrtcFormats
go) (IO (Maybe Int) -> IO (Maybe PvrtcFormats))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe PvrtcFormats)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe PvrtcFormats
go :: Int -> Maybe PvrtcFormats
go = \case
Int
35840 -> PvrtcFormats -> Maybe PvrtcFormats
forall a. a -> Maybe a
Just PvrtcFormats
RGB_PVRTC_4BPPV1_Format
Int
35841 -> PvrtcFormats -> Maybe PvrtcFormats
forall a. a -> Maybe a
Just PvrtcFormats
RGB_PVRTC_2BPPV1_Format
Int
35842 -> PvrtcFormats -> Maybe PvrtcFormats
forall a. a -> Maybe a
Just PvrtcFormats
RGBA_PVRTC_4BPPV1_Format
Int
35843 -> PvrtcFormats -> Maybe PvrtcFormats
forall a. a -> Maybe a
Just PvrtcFormats
RGBA_PVRTC_2BPPV1_Format
Int
_ -> Maybe PvrtcFormats
forall a. Maybe a
Nothing
data EtcFormats
= RGB_ETC1_Format
| RGB_ETC2_Format
| RGBA_ETC2_EAC_Format
instance ToJSVal EtcFormats where
toJSVal :: EtcFormats -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal) -> (EtcFormats -> Int) -> EtcFormats -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. EtcFormats -> Int
go
where
go :: EtcFormats -> Int
go :: EtcFormats -> Int
go = \case
EtcFormats
RGB_ETC1_Format -> Int
36196
EtcFormats
RGB_ETC2_Format -> Int
37492
EtcFormats
RGBA_ETC2_EAC_Format -> Int
37496
instance FromJSVal EtcFormats where
fromJSVal :: JSVal -> IO (Maybe EtcFormats)
fromJSVal = (Maybe Int -> Maybe EtcFormats)
-> IO (Maybe Int) -> IO (Maybe EtcFormats)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int -> (Int -> Maybe EtcFormats) -> Maybe EtcFormats
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe EtcFormats
go) (IO (Maybe Int) -> IO (Maybe EtcFormats))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe EtcFormats)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe EtcFormats
go :: Int -> Maybe EtcFormats
go = \case
Int
36196 -> EtcFormats -> Maybe EtcFormats
forall a. a -> Maybe a
Just EtcFormats
RGB_ETC1_Format
Int
37492 -> EtcFormats -> Maybe EtcFormats
forall a. a -> Maybe a
Just EtcFormats
RGB_ETC2_Format
Int
37496 -> EtcFormats -> Maybe EtcFormats
forall a. a -> Maybe a
Just EtcFormats
RGBA_ETC2_EAC_Format
Int
_ -> Maybe EtcFormats
forall a. Maybe a
Nothing
data AstcFormats
= RGBA_ASTC_4x4_Format
| RGBA_ASTC_5x4_Format
| RGBA_ASTC_5x5_Format
| RGBA_ASTC_6x5_Format
| RGBA_ASTC_6x6_Format
| RGBA_ASTC_8x5_Format
| RGBA_ASTC_8x6_Format
| RGBA_ASTC_8x8_Format
| RGBA_ASTC_10x5_Format
| RGBA_ASTC_10x6_Format
| RGBA_ASTC_10x8_Format
| RGBA_ASTC_10x10_Format
| RGBA_ASTC_12x10_Format
| RGBA_ASTC_12x12_Format
instance ToJSVal AstcFormats where
toJSVal :: AstcFormats -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal)
-> (AstcFormats -> Int) -> AstcFormats -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AstcFormats -> Int
go
where
go :: AstcFormats -> Int
go :: AstcFormats -> Int
go = \case
AstcFormats
RGBA_ASTC_4x4_Format -> Int
37808
AstcFormats
RGBA_ASTC_5x4_Format -> Int
37809
AstcFormats
RGBA_ASTC_5x5_Format -> Int
37810
AstcFormats
RGBA_ASTC_6x5_Format -> Int
37811
AstcFormats
RGBA_ASTC_6x6_Format -> Int
37812
AstcFormats
RGBA_ASTC_8x5_Format -> Int
37813
AstcFormats
RGBA_ASTC_8x6_Format -> Int
37814
AstcFormats
RGBA_ASTC_8x8_Format -> Int
37815
AstcFormats
RGBA_ASTC_10x5_Format -> Int
37816
AstcFormats
RGBA_ASTC_10x6_Format -> Int
37817
AstcFormats
RGBA_ASTC_10x8_Format -> Int
37818
AstcFormats
RGBA_ASTC_10x10_Format -> Int
37819
AstcFormats
RGBA_ASTC_12x10_Format -> Int
37820
AstcFormats
RGBA_ASTC_12x12_Format -> Int
37821
instance FromJSVal AstcFormats where
fromJSVal :: JSVal -> IO (Maybe AstcFormats)
fromJSVal = (Maybe Int -> Maybe AstcFormats)
-> IO (Maybe Int) -> IO (Maybe AstcFormats)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int -> (Int -> Maybe AstcFormats) -> Maybe AstcFormats
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe AstcFormats
go) (IO (Maybe Int) -> IO (Maybe AstcFormats))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe AstcFormats)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe AstcFormats
go :: Int -> Maybe AstcFormats
go = \case
Int
37808 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_4x4_Format
Int
37809 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_5x4_Format
Int
37810 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_5x5_Format
Int
37811 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_6x5_Format
Int
37812 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_6x6_Format
Int
37813 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_8x5_Format
Int
37814 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_8x6_Format
Int
37815 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_8x8_Format
Int
37816 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_10x5_Format
Int
37817 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_10x6_Format
Int
37818 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_10x8_Format
Int
37819 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_10x10_Format
Int
37820 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_12x10_Format
Int
37821 -> AstcFormats -> Maybe AstcFormats
forall a. a -> Maybe a
Just AstcFormats
RGBA_ASTC_12x12_Format
Int
_ -> Maybe AstcFormats
forall a. Maybe a
Nothing
data BptcFormats
= RGBA_BPTC_Format
| RGB_BPTC_SIGNED_Format
| RGB_BPTC_UNSIGNED_Format
instance ToJSVal BptcFormats where
toJSVal :: BptcFormats -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal)
-> (BptcFormats -> Int) -> BptcFormats -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BptcFormats -> Int
go
where
go :: BptcFormats -> Int
go :: BptcFormats -> Int
go = \case
BptcFormats
RGBA_BPTC_Format -> Int
36492
BptcFormats
RGB_BPTC_SIGNED_Format -> Int
36494
BptcFormats
RGB_BPTC_UNSIGNED_Format -> Int
36495
instance FromJSVal BptcFormats where
fromJSVal :: JSVal -> IO (Maybe BptcFormats)
fromJSVal = (Maybe Int -> Maybe BptcFormats)
-> IO (Maybe Int) -> IO (Maybe BptcFormats)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int -> (Int -> Maybe BptcFormats) -> Maybe BptcFormats
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe BptcFormats
go) (IO (Maybe Int) -> IO (Maybe BptcFormats))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe BptcFormats)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe BptcFormats
go :: Int -> Maybe BptcFormats
go = \case
Int
36492 -> BptcFormats -> Maybe BptcFormats
forall a. a -> Maybe a
Just BptcFormats
RGBA_BPTC_Format
Int
36494 -> BptcFormats -> Maybe BptcFormats
forall a. a -> Maybe a
Just BptcFormats
RGB_BPTC_SIGNED_Format
Int
36495 -> BptcFormats -> Maybe BptcFormats
forall a. a -> Maybe a
Just BptcFormats
RGB_BPTC_UNSIGNED_Format
Int
_ -> Maybe BptcFormats
forall a. Maybe a
Nothing
data RgtcFormats
= RED_RGTC1_Format
| SIGNED_RED_RGTC1_Format
| RED_GREEN_RGTC2_Format
| SIGNED_RED_GREEN_RGTC2_Format
instance ToJSVal RgtcFormats where
toJSVal :: RgtcFormats -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal)
-> (RgtcFormats -> Int) -> RgtcFormats -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. RgtcFormats -> Int
go
where
go :: RgtcFormats -> Int
go :: RgtcFormats -> Int
go = \case
RgtcFormats
RED_RGTC1_Format -> Int
36283
RgtcFormats
SIGNED_RED_RGTC1_Format -> Int
36284
RgtcFormats
RED_GREEN_RGTC2_Format -> Int
36285
RgtcFormats
SIGNED_RED_GREEN_RGTC2_Format -> Int
36286
instance FromJSVal RgtcFormats where
fromJSVal :: JSVal -> IO (Maybe RgtcFormats)
fromJSVal = (Maybe Int -> Maybe RgtcFormats)
-> IO (Maybe Int) -> IO (Maybe RgtcFormats)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int -> (Int -> Maybe RgtcFormats) -> Maybe RgtcFormats
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe RgtcFormats
go) (IO (Maybe Int) -> IO (Maybe RgtcFormats))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe RgtcFormats)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe RgtcFormats
go :: Int -> Maybe RgtcFormats
go = \case
Int
36283 -> RgtcFormats -> Maybe RgtcFormats
forall a. a -> Maybe a
Just RgtcFormats
RED_RGTC1_Format
Int
36284 -> RgtcFormats -> Maybe RgtcFormats
forall a. a -> Maybe a
Just RgtcFormats
SIGNED_RED_RGTC1_Format
Int
36285 -> RgtcFormats -> Maybe RgtcFormats
forall a. a -> Maybe a
Just RgtcFormats
RED_GREEN_RGTC2_Format
Int
36286 -> RgtcFormats -> Maybe RgtcFormats
forall a. a -> Maybe a
Just RgtcFormats
SIGNED_RED_GREEN_RGTC2_Format
Int
_ -> Maybe RgtcFormats
forall a. Maybe a
Nothing
data TextureComparisonFunctions
= NeverCompare
| LessCompare
| EqualCompare
| LessEqualCompare
| GreaterCompare
| NotEqualCompare
| GreaterEqualCompare
| AlwaysCompare
instance ToJSVal TextureComparisonFunctions where
toJSVal :: TextureComparisonFunctions -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal)
-> (TextureComparisonFunctions -> Int)
-> TextureComparisonFunctions
-> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. TextureComparisonFunctions -> Int
go
where
go :: TextureComparisonFunctions -> Int
go :: TextureComparisonFunctions -> Int
go = \case
TextureComparisonFunctions
NeverCompare -> Int
512
TextureComparisonFunctions
LessCompare -> Int
513
TextureComparisonFunctions
EqualCompare -> Int
514
TextureComparisonFunctions
LessEqualCompare -> Int
515
TextureComparisonFunctions
GreaterCompare -> Int
516
TextureComparisonFunctions
NotEqualCompare -> Int
517
TextureComparisonFunctions
GreaterEqualCompare -> Int
518
TextureComparisonFunctions
AlwaysCompare -> Int
519
instance FromJSVal TextureComparisonFunctions where
fromJSVal :: JSVal -> IO (Maybe TextureComparisonFunctions)
fromJSVal = (Maybe Int -> Maybe TextureComparisonFunctions)
-> IO (Maybe Int) -> IO (Maybe TextureComparisonFunctions)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int
-> (Int -> Maybe TextureComparisonFunctions)
-> Maybe TextureComparisonFunctions
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe TextureComparisonFunctions
go) (IO (Maybe Int) -> IO (Maybe TextureComparisonFunctions))
-> (JSVal -> IO (Maybe Int))
-> JSVal
-> IO (Maybe TextureComparisonFunctions)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe TextureComparisonFunctions
go :: Int -> Maybe TextureComparisonFunctions
go = \case
Int
512 -> TextureComparisonFunctions -> Maybe TextureComparisonFunctions
forall a. a -> Maybe a
Just TextureComparisonFunctions
NeverCompare
Int
513 -> TextureComparisonFunctions -> Maybe TextureComparisonFunctions
forall a. a -> Maybe a
Just TextureComparisonFunctions
LessCompare
Int
514 -> TextureComparisonFunctions -> Maybe TextureComparisonFunctions
forall a. a -> Maybe a
Just TextureComparisonFunctions
EqualCompare
Int
515 -> TextureComparisonFunctions -> Maybe TextureComparisonFunctions
forall a. a -> Maybe a
Just TextureComparisonFunctions
LessEqualCompare
Int
516 -> TextureComparisonFunctions -> Maybe TextureComparisonFunctions
forall a. a -> Maybe a
Just TextureComparisonFunctions
GreaterCompare
Int
517 -> TextureComparisonFunctions -> Maybe TextureComparisonFunctions
forall a. a -> Maybe a
Just TextureComparisonFunctions
NotEqualCompare
Int
518 -> TextureComparisonFunctions -> Maybe TextureComparisonFunctions
forall a. a -> Maybe a
Just TextureComparisonFunctions
GreaterEqualCompare
Int
519 -> TextureComparisonFunctions -> Maybe TextureComparisonFunctions
forall a. a -> Maybe a
Just TextureComparisonFunctions
AlwaysCompare
Int
_ -> Maybe TextureComparisonFunctions
forall a. Maybe a
Nothing
data InternalFormats
= ALPHA
| RGB
| RGBA
| LUMINANCE
| LUMINANCE_ALPHA
| RED_INTEGER
| R8
| R8_SNORM
| R8I
| R8UI
| R16I
| R16UI
| R16F
| R32I
| R32UI
| R32F
| RG8
| RG8_SNORM
| RG8I
| RG8UI
| RG16I
| RG16UI
| RG16F
| RG32I
| RG32UI
| RG32F
| RGB565
| RGB8
| RGB8_SNORM
| RGB8I
| RGB8UI
| RGB16I
| RGB16UI
| RGB16F
| RGB32I
| RGB32UI
| RGB32F
| RGB9_E5
| SRGB8
| R11F_G11F_B10F
| RGBA4
| RGBA8
| RGBA8_SNORM
| RGBA8I
| RGBA8UI
| RGBA16I
| RGBA16UI
| RGBA16F
| RGBA32I
| RGBA32UI
| RGBA32F
| RGB5_A1
| RGB10_A2
| RGB10_A2UI
| SRGB8_ALPHA8
| DEPTH_COMPONENT16
| DEPTH_COMPONENT24
| DEPTH_COMPONENT32F
| DEPTH24_STENCIL8
| DEPTH32F_STENCIL8
instance ToJSVal InternalFormats where
toJSVal :: InternalFormats -> IO JSVal
toJSVal = MisoString -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (MisoString -> IO JSVal)
-> (InternalFormats -> MisoString) -> InternalFormats -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. InternalFormats -> MisoString
go
where
go :: InternalFormats -> MisoString
go :: InternalFormats -> MisoString
go = \case
InternalFormats
ALPHA -> MisoString
"ALPHA"
InternalFormats
RGB -> MisoString
"RGB"
InternalFormats
RGBA -> MisoString
"RGBA"
InternalFormats
LUMINANCE -> MisoString
"LUMINANCE"
InternalFormats
LUMINANCE_ALPHA -> MisoString
"LUMINANCE_ALPHA"
InternalFormats
RED_INTEGER -> MisoString
"RED_INTEGER"
InternalFormats
R8 -> MisoString
"R8"
InternalFormats
R8_SNORM -> MisoString
"R8_SNORM"
InternalFormats
R8I -> MisoString
"R8I"
InternalFormats
R8UI -> MisoString
"R8UI"
InternalFormats
R16I -> MisoString
"R16I"
InternalFormats
R16UI -> MisoString
"R16UI"
InternalFormats
R16F -> MisoString
"R16F"
InternalFormats
R32I -> MisoString
"R32I"
InternalFormats
R32UI -> MisoString
"R32UI"
InternalFormats
R32F -> MisoString
"R32F"
InternalFormats
RG8 -> MisoString
"RG8"
InternalFormats
RG8_SNORM -> MisoString
"RG8_SNORM"
InternalFormats
RG8I -> MisoString
"RG8I"
InternalFormats
RG8UI -> MisoString
"RG8UI"
InternalFormats
RG16I -> MisoString
"RG16I"
InternalFormats
RG16UI -> MisoString
"RG16UI"
InternalFormats
RG16F -> MisoString
"RG16F"
InternalFormats
RG32I -> MisoString
"RG32I"
InternalFormats
RG32UI -> MisoString
"RG32UI"
InternalFormats
RG32F -> MisoString
"RG32F"
InternalFormats
RGB565 -> MisoString
"RGB565"
InternalFormats
RGB8 -> MisoString
"RGB8"
InternalFormats
RGB8_SNORM -> MisoString
"RGB8_SNORM"
InternalFormats
RGB8I -> MisoString
"RGB8I"
InternalFormats
RGB8UI -> MisoString
"RGB8UI"
InternalFormats
RGB16I -> MisoString
"RGB16I"
InternalFormats
RGB16UI -> MisoString
"RGB16UI"
InternalFormats
RGB16F -> MisoString
"RGB16F"
InternalFormats
RGB32I -> MisoString
"RGB32I"
InternalFormats
RGB32UI -> MisoString
"RGB32UI"
InternalFormats
RGB32F -> MisoString
"RGB32F"
InternalFormats
RGB9_E5 -> MisoString
"RGB9_E5"
InternalFormats
SRGB8 -> MisoString
"SRGB8"
InternalFormats
R11F_G11F_B10F -> MisoString
"R11F_G11F_B10F"
InternalFormats
RGBA4 -> MisoString
"RGBA4"
InternalFormats
RGBA8 -> MisoString
"RGBA8"
InternalFormats
RGBA8_SNORM -> MisoString
"RGBA8_SNORM"
InternalFormats
RGBA8I -> MisoString
"RGBA8I"
InternalFormats
RGBA8UI -> MisoString
"RGBA8UI"
InternalFormats
RGBA16I -> MisoString
"RGBA16I"
InternalFormats
RGBA16UI -> MisoString
"RGBA16UI"
InternalFormats
RGBA16F -> MisoString
"RGBA16F"
InternalFormats
RGBA32I -> MisoString
"RGBA32I"
InternalFormats
RGBA32UI -> MisoString
"RGBA32UI"
InternalFormats
RGBA32F -> MisoString
"RGBA32F"
InternalFormats
RGB5_A1 -> MisoString
"RGB5_A1"
InternalFormats
RGB10_A2 -> MisoString
"RGB10_A2"
InternalFormats
RGB10_A2UI -> MisoString
"RGB10_A2UI"
InternalFormats
SRGB8_ALPHA8 -> MisoString
"SRGB8_ALPHA8"
InternalFormats
DEPTH_COMPONENT16 -> MisoString
"DEPTH_COMPONENT16"
InternalFormats
DEPTH_COMPONENT24 -> MisoString
"DEPTH_COMPONENT24"
InternalFormats
DEPTH_COMPONENT32F -> MisoString
"DEPTH_COMPONENT32F"
InternalFormats
DEPTH24_STENCIL8 -> MisoString
"DEPTH24_STENCIL8"
InternalFormats
DEPTH32F_STENCIL8 -> MisoString
"DEPTH32F_STENCIL8"
instance FromJSVal InternalFormats where
fromJSVal :: JSVal -> IO (Maybe InternalFormats)
fromJSVal = (Maybe MisoString -> Maybe InternalFormats)
-> IO (Maybe MisoString) -> IO (Maybe InternalFormats)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe MisoString
-> (MisoString -> Maybe InternalFormats) -> Maybe InternalFormats
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= MisoString -> Maybe InternalFormats
go) (IO (Maybe MisoString) -> IO (Maybe InternalFormats))
-> (JSVal -> IO (Maybe MisoString))
-> JSVal
-> IO (Maybe InternalFormats)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe MisoString)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: MisoString -> Maybe InternalFormats
go :: MisoString -> Maybe InternalFormats
go = \case
MisoString
"ALPHA" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
ALPHA
MisoString
"RGB" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB
MisoString
"RGBA" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGBA
MisoString
"LUMINANCE" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
LUMINANCE
MisoString
"LUMINANCE_ALPHA" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
LUMINANCE_ALPHA
MisoString
"RED_INTEGER" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RED_INTEGER
MisoString
"R8" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
R8
MisoString
"R8_SNORM" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
R8_SNORM
MisoString
"R8I" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
R8I
MisoString
"R8UI" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
R8UI
MisoString
"R16I" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
R16I
MisoString
"R16UI" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
R16UI
MisoString
"R16F" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
R16F
MisoString
"R32I" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
R32I
MisoString
"R32UI" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
R32UI
MisoString
"R32F" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
R32F
MisoString
"RG8" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RG8
MisoString
"RG8_SNORM" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RG8_SNORM
MisoString
"RG8I" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RG8I
MisoString
"RG8UI" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RG8UI
MisoString
"RG16I" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RG16I
MisoString
"RG16UI" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RG16UI
MisoString
"RG16F" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RG16F
MisoString
"RG32I" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RG32I
MisoString
"RG32UI" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RG32UI
MisoString
"RG32F" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RG32F
MisoString
"RGB565" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB565
MisoString
"RGB8" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB8
MisoString
"RGB8_SNORM" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB8_SNORM
MisoString
"RGB8I" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB8I
MisoString
"RGB8UI" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB8UI
MisoString
"RGB16I" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB16I
MisoString
"RGB16UI" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB16UI
MisoString
"RGB16F" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB16F
MisoString
"RGB32I" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB32I
MisoString
"RGB32UI" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB32UI
MisoString
"RGB32F" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB32F
MisoString
"RGB9_E5" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB9_E5
MisoString
"SRGB8" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
SRGB8
MisoString
"R11F_G11F_B10F" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
R11F_G11F_B10F
MisoString
"RGBA4" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGBA4
MisoString
"RGBA8" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGBA8
MisoString
"RGBA8_SNORM" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGBA8_SNORM
MisoString
"RGBA8I" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGBA8I
MisoString
"RGBA8UI" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGBA8UI
MisoString
"RGBA16I" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGBA16I
MisoString
"RGBA16UI" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGBA16UI
MisoString
"RGBA16F" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGBA16F
MisoString
"RGBA32I" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGBA32I
MisoString
"RGBA32UI" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGBA32UI
MisoString
"RGBA32F" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGBA32F
MisoString
"RGB5_A1" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB5_A1
MisoString
"RGB10_A2" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB10_A2
MisoString
"RGB10_A2UI" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
RGB10_A2UI
MisoString
"SRGB8_ALPHA8" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
SRGB8_ALPHA8
MisoString
"DEPTH_COMPONENT16" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
DEPTH_COMPONENT16
MisoString
"DEPTH_COMPONENT24" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
DEPTH_COMPONENT24
MisoString
"DEPTH_COMPONENT32F" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
DEPTH_COMPONENT32F
MisoString
"DEPTH24_STENCIL8" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
DEPTH24_STENCIL8
MisoString
"DEPTH32F_STENCIL8" -> InternalFormats -> Maybe InternalFormats
forall a. a -> Maybe a
Just InternalFormats
DEPTH32F_STENCIL8
MisoString
_ -> Maybe InternalFormats
forall a. Maybe a
Nothing
data DepthPacking
= BasicDepthPacking
| RGBADepthPacking
instance ToJSVal DepthPacking where
toJSVal :: DepthPacking -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal)
-> (DepthPacking -> Int) -> DepthPacking -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. DepthPacking -> Int
go
where
go :: DepthPacking -> Int
go :: DepthPacking -> Int
go = \case
DepthPacking
BasicDepthPacking -> Int
3200
DepthPacking
RGBADepthPacking -> Int
3201
instance FromJSVal DepthPacking where
fromJSVal :: JSVal -> IO (Maybe DepthPacking)
fromJSVal = (Maybe Int -> Maybe DepthPacking)
-> IO (Maybe Int) -> IO (Maybe DepthPacking)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int -> (Int -> Maybe DepthPacking) -> Maybe DepthPacking
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe DepthPacking
go) (IO (Maybe Int) -> IO (Maybe DepthPacking))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe DepthPacking)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe DepthPacking
go :: Int -> Maybe DepthPacking
go = \case
Int
3200 -> DepthPacking -> Maybe DepthPacking
forall a. a -> Maybe a
Just DepthPacking
BasicDepthPacking
Int
3201 -> DepthPacking -> Maybe DepthPacking
forall a. a -> Maybe a
Just DepthPacking
RGBADepthPacking
Int
_ -> Maybe DepthPacking
forall a. Maybe a
Nothing
data ColorSpace
= NoColorSpace
| SRGBColorSpace
| LinearSRGBColorSpace
instance ToJSVal ColorSpace where
toJSVal :: ColorSpace -> IO JSVal
toJSVal = MisoString -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (MisoString -> IO JSVal)
-> (ColorSpace -> MisoString) -> ColorSpace -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. ColorSpace -> MisoString
go
where
go :: ColorSpace -> MisoString
go :: ColorSpace -> MisoString
go = \case
ColorSpace
NoColorSpace -> MisoString
""
ColorSpace
SRGBColorSpace -> MisoString
"srgb"
ColorSpace
LinearSRGBColorSpace -> MisoString
"srgb-linear"
instance FromJSVal ColorSpace where
fromJSVal :: JSVal -> IO (Maybe ColorSpace)
fromJSVal = (Maybe MisoString -> Maybe ColorSpace)
-> IO (Maybe MisoString) -> IO (Maybe ColorSpace)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe MisoString
-> (MisoString -> Maybe ColorSpace) -> Maybe ColorSpace
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= MisoString -> Maybe ColorSpace
go) (IO (Maybe MisoString) -> IO (Maybe ColorSpace))
-> (JSVal -> IO (Maybe MisoString))
-> JSVal
-> IO (Maybe ColorSpace)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe MisoString)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: MisoString -> Maybe ColorSpace
go :: MisoString -> Maybe ColorSpace
go = \case
MisoString
"" -> ColorSpace -> Maybe ColorSpace
forall a. a -> Maybe a
Just ColorSpace
NoColorSpace
MisoString
"srgb" -> ColorSpace -> Maybe ColorSpace
forall a. a -> Maybe a
Just ColorSpace
SRGBColorSpace
MisoString
"srgb-linear" -> ColorSpace -> Maybe ColorSpace
forall a. a -> Maybe a
Just ColorSpace
LinearSRGBColorSpace
MisoString
_ -> Maybe ColorSpace
forall a. Maybe a
Nothing
data UvChannel
= Uv
| Uv1
| Uv2
| Uv3
instance ToJSVal UvChannel where
toJSVal :: UvChannel -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal) -> (UvChannel -> Int) -> UvChannel -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UvChannel -> Int
go
where
go :: UvChannel -> Int
go :: UvChannel -> Int
go = \case
UvChannel
Uv -> Int
0
UvChannel
Uv1 -> Int
1
UvChannel
Uv2 -> Int
2
UvChannel
Uv3 -> Int
3
instance FromJSVal UvChannel where
fromJSVal :: JSVal -> IO (Maybe UvChannel)
fromJSVal = (Maybe Int -> Maybe UvChannel)
-> IO (Maybe Int) -> IO (Maybe UvChannel)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int -> (Int -> Maybe UvChannel) -> Maybe UvChannel
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe UvChannel
go) (IO (Maybe Int) -> IO (Maybe UvChannel))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe UvChannel)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe UvChannel
go :: Int -> Maybe UvChannel
go = \case
Int
0 -> UvChannel -> Maybe UvChannel
forall a. a -> Maybe a
Just UvChannel
Uv
Int
1 -> UvChannel -> Maybe UvChannel
forall a. a -> Maybe a
Just UvChannel
Uv1
Int
2 -> UvChannel -> Maybe UvChannel
forall a. a -> Maybe a
Just UvChannel
Uv2
Int
3 -> UvChannel -> Maybe UvChannel
forall a. a -> Maybe a
Just UvChannel
Uv3
Int
_ -> Maybe UvChannel
forall a. Maybe a
Nothing
data UnpackAlignment
= ByteAlignment
| EvenNumberedBytes
| WordAlignment
| DoubleWordBoundaries
instance ToJSVal UnpackAlignment where
toJSVal :: UnpackAlignment -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal)
-> (UnpackAlignment -> Int) -> UnpackAlignment -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. UnpackAlignment -> Int
go
where
go :: UnpackAlignment -> Int
go :: UnpackAlignment -> Int
go = \case
UnpackAlignment
ByteAlignment -> Int
1
UnpackAlignment
EvenNumberedBytes -> Int
2
UnpackAlignment
WordAlignment -> Int
4
UnpackAlignment
DoubleWordBoundaries -> Int
8
instance FromJSVal UnpackAlignment where
fromJSVal :: JSVal -> IO (Maybe UnpackAlignment)
fromJSVal = (Maybe Int -> Maybe UnpackAlignment)
-> IO (Maybe Int) -> IO (Maybe UnpackAlignment)
forall a b. (a -> b) -> IO a -> IO b
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
fmap (Maybe Int
-> (Int -> Maybe UnpackAlignment) -> Maybe UnpackAlignment
forall a b. Maybe a -> (a -> Maybe b) -> Maybe b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= Int -> Maybe UnpackAlignment
go) (IO (Maybe Int) -> IO (Maybe UnpackAlignment))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe UnpackAlignment)
forall b c a. (b -> c) -> (a -> b) -> a -> c
. JSVal -> IO (Maybe Int)
forall a. FromJSVal a => JSVal -> IO (Maybe a)
fromJSVal
where
go :: Int -> Maybe UnpackAlignment
go :: Int -> Maybe UnpackAlignment
go = \case
Int
1 -> UnpackAlignment -> Maybe UnpackAlignment
forall a. a -> Maybe a
Just UnpackAlignment
ByteAlignment
Int
2 -> UnpackAlignment -> Maybe UnpackAlignment
forall a. a -> Maybe a
Just UnpackAlignment
EvenNumberedBytes
Int
4 -> UnpackAlignment -> Maybe UnpackAlignment
forall a. a -> Maybe a
Just UnpackAlignment
WordAlignment
Int
8 -> UnpackAlignment -> Maybe UnpackAlignment
forall a. a -> Maybe a
Just UnpackAlignment
DoubleWordBoundaries
Int
_ -> Maybe UnpackAlignment
forall a. Maybe a
Nothing