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