{-# OPTIONS_HADDOCK hide #-}
module Graphics.Rendering.OpenGL.GL.BlendingFactor (
BlendingFactor(..), marshalBlendingFactor, unmarshalBlendingFactor
) where
import Graphics.GL
data BlendingFactor =
Zero
| One
| SrcColor
| OneMinusSrcColor
| DstColor
| OneMinusDstColor
| SrcAlpha
| OneMinusSrcAlpha
| DstAlpha
| OneMinusDstAlpha
| ConstantColor
| OneMinusConstantColor
| ConstantAlpha
| OneMinusConstantAlpha
| SrcAlphaSaturate
deriving ( Eq, Ord, Show )
marshalBlendingFactor :: BlendingFactor -> GLenum
marshalBlendingFactor x = case x of
Zero -> GL_ZERO
One -> GL_ONE
SrcColor -> GL_SRC_COLOR
OneMinusSrcColor -> GL_ONE_MINUS_SRC_COLOR
DstColor -> GL_DST_COLOR
OneMinusDstColor -> GL_ONE_MINUS_DST_COLOR
SrcAlpha -> GL_SRC_ALPHA
OneMinusSrcAlpha -> GL_ONE_MINUS_SRC_ALPHA
DstAlpha -> GL_DST_ALPHA
OneMinusDstAlpha -> GL_ONE_MINUS_DST_ALPHA
ConstantColor -> GL_CONSTANT_COLOR
OneMinusConstantColor -> GL_ONE_MINUS_CONSTANT_COLOR
ConstantAlpha -> GL_CONSTANT_ALPHA
OneMinusConstantAlpha -> GL_ONE_MINUS_CONSTANT_ALPHA
SrcAlphaSaturate -> GL_SRC_ALPHA_SATURATE
unmarshalBlendingFactor :: GLenum -> BlendingFactor
unmarshalBlendingFactor x
| x == GL_ZERO = Zero
| x == GL_ONE = One
| x == GL_SRC_COLOR = SrcColor
| x == GL_ONE_MINUS_SRC_COLOR = OneMinusSrcColor
| x == GL_DST_COLOR = DstColor
| x == GL_ONE_MINUS_DST_COLOR = OneMinusDstColor
| x == GL_SRC_ALPHA = SrcAlpha
| x == GL_ONE_MINUS_SRC_ALPHA = OneMinusSrcAlpha
| x == GL_DST_ALPHA = DstAlpha
| x == GL_ONE_MINUS_DST_ALPHA = OneMinusDstAlpha
| x == GL_CONSTANT_COLOR = ConstantColor
| x == GL_ONE_MINUS_CONSTANT_COLOR = OneMinusConstantColor
| x == GL_CONSTANT_ALPHA = ConstantAlpha
| x == GL_ONE_MINUS_CONSTANT_ALPHA = OneMinusConstantAlpha
| x == GL_SRC_ALPHA_SATURATE = SrcAlphaSaturate
| otherwise = error ("unmarshalBlendingFactor: illegal value " ++ show x)