{-# LANGUAGE LambdaCase #-}
module THREE.Constants.CustomBlendingEquations.SourceFactors
(
SourceFactors (..)
) where
import Miso
data SourceFactors
= ZeroFactor
| OneFactor
| SrcColorFactor
| OneMinusSrcColorFactor
| SrcAlphaFactor
| OneMinusSrcAlphaFactor
| DstAlphaFactor
| OneMinusDstAlphaFactor
| DstColorFactor
| OneMinusDstColorFactor
| SrcAlphaSaturateFactor
| ConstantColorFactor
| OneMinusConstantColorFactor
| ConstantAlphaFactor
| OneMinusConstantAlphaFactor
instance ToJSVal SourceFactors where
toJSVal :: SourceFactors -> IO JSVal
toJSVal = Int -> IO JSVal
forall a. ToJSVal a => a -> IO JSVal
toJSVal (Int -> IO JSVal)
-> (SourceFactors -> Int) -> SourceFactors -> IO JSVal
forall b c a. (b -> c) -> (a -> b) -> a -> c
. SourceFactors -> Int
go
where
go :: SourceFactors -> Int
go :: SourceFactors -> Int
go = \case
SourceFactors
ZeroFactor -> Int
200
SourceFactors
OneFactor -> Int
201
SourceFactors
SrcColorFactor -> Int
202
SourceFactors
OneMinusSrcColorFactor -> Int
203
SourceFactors
SrcAlphaFactor -> Int
204
SourceFactors
OneMinusSrcAlphaFactor -> Int
205
SourceFactors
DstAlphaFactor -> Int
206
SourceFactors
OneMinusDstAlphaFactor -> Int
207
SourceFactors
DstColorFactor -> Int
208
SourceFactors
OneMinusDstColorFactor -> Int
209
SourceFactors
SrcAlphaSaturateFactor -> Int
210
SourceFactors
ConstantColorFactor -> Int
211
SourceFactors
OneMinusConstantColorFactor -> Int
212
SourceFactors
ConstantAlphaFactor -> Int
213
SourceFactors
OneMinusConstantAlphaFactor -> Int
214
instance FromJSVal SourceFactors where
fromJSVal :: JSVal -> IO (Maybe SourceFactors)
fromJSVal = (Maybe Int -> Maybe SourceFactors)
-> IO (Maybe Int) -> IO (Maybe SourceFactors)
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 SourceFactors) -> Maybe SourceFactors
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 SourceFactors
go) (IO (Maybe Int) -> IO (Maybe SourceFactors))
-> (JSVal -> IO (Maybe Int)) -> JSVal -> IO (Maybe SourceFactors)
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 SourceFactors
go :: Int -> Maybe SourceFactors
go = \case
Int
200 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
ZeroFactor
Int
201 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
OneFactor
Int
202 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
SrcColorFactor
Int
203 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
OneMinusSrcColorFactor
Int
204 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
SrcAlphaFactor
Int
205 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
OneMinusSrcAlphaFactor
Int
206 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
DstAlphaFactor
Int
207 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
OneMinusDstAlphaFactor
Int
208 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
DstColorFactor
Int
209 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
OneMinusDstColorFactor
Int
210 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
SrcAlphaSaturateFactor
Int
211 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
ConstantColorFactor
Int
212 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
OneMinusConstantColorFactor
Int
213 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
ConstantAlphaFactor
Int
214 -> SourceFactors -> Maybe SourceFactors
forall a. a -> Maybe a
Just SourceFactors
OneMinusConstantAlphaFactor
Int
_ -> Maybe SourceFactors
forall a. Maybe a
Nothing