{-# LANGUAGE LambdaCase #-}
module THREE.Constants.CustomBlendingEquations
(
BlendingEquations (..)
) where
import Miso
data BlendingEquations
= AddEquation
| SubtractEquation
| ReverseSubtractEquation
| MinEquation
| MaxEquation
instance ToJSVal BlendingEquations where
toJSVal :: BlendingEquations -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal)
-> (BlendingEquations -> Int) -> BlendingEquations -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. BlendingEquations -> Int
go
where
go :: BlendingEquations -> Int
go :: BlendingEquations -> Int
go = \case
BlendingEquations
AddEquation -> Int
100
BlendingEquations
SubtractEquation -> Int
101
BlendingEquations
ReverseSubtractEquation -> Int
102
BlendingEquations
MinEquation -> Int
103
BlendingEquations
MaxEquation -> Int
104
instance FromJSVal BlendingEquations where
fromJSVal :: JSVal -> IO (Maybe BlendingEquations)
fromJSVal = (Maybe Int -> Maybe BlendingEquations)
-> IO (Maybe Int) -> IO (Maybe BlendingEquations)
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 BlendingEquations) -> Maybe BlendingEquations
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 BlendingEquations
go) (IO (Maybe Int) -> IO (Maybe BlendingEquations))
-> (JSVal -> IO (Maybe Int))
-> JSVal
-> IO (Maybe BlendingEquations)
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 BlendingEquations
go :: Int -> Maybe BlendingEquations
go = \case
Int
100 -> BlendingEquations -> Maybe BlendingEquations
forall a. a -> Maybe a
Just BlendingEquations
AddEquation
Int
101 -> BlendingEquations -> Maybe BlendingEquations
forall a. a -> Maybe a
Just BlendingEquations
SubtractEquation
Int
102 -> BlendingEquations -> Maybe BlendingEquations
forall a. a -> Maybe a
Just BlendingEquations
ReverseSubtractEquation
Int
103 -> BlendingEquations -> Maybe BlendingEquations
forall a. a -> Maybe a
Just BlendingEquations
MinEquation
Int
104 -> BlendingEquations -> Maybe BlendingEquations
forall a. a -> Maybe a
Just BlendingEquations
MaxEquation
Int
_ -> Maybe BlendingEquations
forall a. Maybe a
Nothing