{-# LANGUAGE ViewPatterns #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Gpu.Vulkan.Pipeline.ColorBlendAttachment.Middle.Internal (
	State(..), stateToCore ) where

import Gpu.Vulkan.Enum
import Gpu.Vulkan.Base.Middle.Internal

import qualified Gpu.Vulkan.ColorComponent.Enum as ColorComponent
import qualified Gpu.Vulkan.Pipeline.ColorBlendAttachment.Core as C

data State = State {
	State -> Bool
stateBlendEnable :: Bool,
	State -> BlendFactor
stateSrcColorBlendFactor :: BlendFactor,
	State -> BlendFactor
stateDstColorBlendFactor :: BlendFactor,
	State -> BlendOp
stateColorBlendOp :: BlendOp,
	State -> BlendFactor
stateSrcAlphaBlendFactor :: BlendFactor,
	State -> BlendFactor
stateDstAlphaBlendFactor :: BlendFactor,
	State -> BlendOp
stateAlphaBlendOp :: BlendOp,
	State -> Flags
stateColorWriteMask :: ColorComponent.Flags }
	deriving Int -> State -> ShowS
[State] -> ShowS
State -> String
(Int -> State -> ShowS)
-> (State -> String) -> ([State] -> ShowS) -> Show State
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> State -> ShowS
showsPrec :: Int -> State -> ShowS
$cshow :: State -> String
show :: State -> String
$cshowList :: [State] -> ShowS
showList :: [State] -> ShowS
Show

stateToCore :: State -> C.State
stateToCore :: State -> State
stateToCore State {
	stateBlendEnable :: State -> Bool
stateBlendEnable = Bool -> Word32
boolToBool32 -> Word32
be,
	stateSrcColorBlendFactor :: State -> BlendFactor
stateSrcColorBlendFactor = BlendFactor Word32
scbf,
	stateDstColorBlendFactor :: State -> BlendFactor
stateDstColorBlendFactor = BlendFactor Word32
dcbf,
	stateColorBlendOp :: State -> BlendOp
stateColorBlendOp = BlendOp Word32
cbo,
	stateSrcAlphaBlendFactor :: State -> BlendFactor
stateSrcAlphaBlendFactor = BlendFactor Word32
sabf,
	stateDstAlphaBlendFactor :: State -> BlendFactor
stateDstAlphaBlendFactor = BlendFactor Word32
dabf,
	stateAlphaBlendOp :: State -> BlendOp
stateAlphaBlendOp = BlendOp Word32
abo,
	stateColorWriteMask :: State -> Flags
stateColorWriteMask = ColorComponent.FlagBits Word32
cwm
	} = C.State {
		stateBlendEnable :: Word32
C.stateBlendEnable = Word32
be,
		stateSrcColorBlendFactor :: Word32
C.stateSrcColorBlendFactor = Word32
scbf,
		stateDstColorBlendFactor :: Word32
C.stateDstColorBlendFactor = Word32
dcbf,
		stateColorBlendOp :: Word32
C.stateColorBlendOp = Word32
cbo,
		stateSrcAlphaBlendFactor :: Word32
C.stateSrcAlphaBlendFactor = Word32
sabf,
		stateDstAlphaBlendFactor :: Word32
C.stateDstAlphaBlendFactor = Word32
dabf,
		stateAlphaBlendOp :: Word32
C.stateAlphaBlendOp = Word32
abo,
		stateColorWriteMask :: Word32
C.stateColorWriteMask = Word32
cwm }