{-# LANGUAGE LambdaCase #-}
module THREE.Constants.Textures.MinificationFilters
( MinificationFilters (..)
) where
import Miso
data MinificationFilters
= NearestFilter
| NearestMipmapNearestFilter
| NearestMipmapLinearFilter
| LinearFilter
| LinearMipmapNearestFilter
| LinearMipmapLinearFilter
instance ToJSVal MinificationFilters where
toJSVal :: MinificationFilters -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal)
-> (MinificationFilters -> Int) -> MinificationFilters -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MinificationFilters -> Int
go
where
go :: MinificationFilters -> Int
go :: MinificationFilters -> Int
go = \case
MinificationFilters
NearestFilter -> Int
1003
MinificationFilters
NearestMipmapNearestFilter -> Int
1004
MinificationFilters
NearestMipmapLinearFilter -> Int
1005
MinificationFilters
LinearFilter -> Int
1006
MinificationFilters
LinearMipmapNearestFilter -> Int
1007
MinificationFilters
LinearMipmapLinearFilter -> Int
1008
instance FromJSVal MinificationFilters where
fromJSVal :: JSVal -> IO (Maybe MinificationFilters)
fromJSVal = (Maybe Int -> Maybe MinificationFilters)
-> IO (Maybe Int) -> IO (Maybe MinificationFilters)
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 MinificationFilters) -> Maybe MinificationFilters
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 MinificationFilters
go) (IO (Maybe Int) -> IO (Maybe MinificationFilters))
-> (JSVal -> IO (Maybe Int))
-> JSVal
-> IO (Maybe MinificationFilters)
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 MinificationFilters
go :: Int -> Maybe MinificationFilters
go = \case
Int
1003 -> MinificationFilters -> Maybe MinificationFilters
forall a. a -> Maybe a
Just MinificationFilters
NearestFilter
Int
1004 -> MinificationFilters -> Maybe MinificationFilters
forall a. a -> Maybe a
Just MinificationFilters
NearestMipmapNearestFilter
Int
1005 -> MinificationFilters -> Maybe MinificationFilters
forall a. a -> Maybe a
Just MinificationFilters
NearestMipmapLinearFilter
Int
1006 -> MinificationFilters -> Maybe MinificationFilters
forall a. a -> Maybe a
Just MinificationFilters
LinearFilter
Int
1007 -> MinificationFilters -> Maybe MinificationFilters
forall a. a -> Maybe a
Just MinificationFilters
LinearMipmapNearestFilter
Int
1008 -> MinificationFilters -> Maybe MinificationFilters
forall a. a -> Maybe a
Just MinificationFilters
LinearMipmapLinearFilter
Int
_ -> Maybe MinificationFilters
forall a. Maybe a
Nothing