-- #hide -------------------------------------------------------------------------------- -- | -- Module : Graphics.Rendering.OpenGL.GL.BlendingFactor -- Copyright : (c) Sven Panne 2002-2006 -- License : BSD-style (see the file libraries/OpenGL/LICENSE) -- -- Maintainer : sven.panne@aedion.de -- Stability : stable -- Portability : portable -- -- This is a purely internal module for (un-)marshaling BlendingFactor. -- -------------------------------------------------------------------------------- module Graphics.Rendering.OpenGL.GL.BlendingFactor ( BlendingFactor(..), marshalBlendingFactor, unmarshalBlendingFactor ) where import Graphics.Rendering.OpenGL.GL.BasicTypes ( GLenum ) -------------------------------------------------------------------------------- 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 -> 0x0 One -> 0x1 SrcColor -> 0x300 OneMinusSrcColor -> 0x301 DstColor -> 0x306 OneMinusDstColor -> 0x307 SrcAlpha -> 0x302 OneMinusSrcAlpha -> 0x303 DstAlpha -> 0x304 OneMinusDstAlpha -> 0x305 ConstantColor -> 0x8001 OneMinusConstantColor -> 0x8002 ConstantAlpha -> 0x8003 OneMinusConstantAlpha -> 0x8004 SrcAlphaSaturate -> 0x308 unmarshalBlendingFactor :: GLenum -> BlendingFactor unmarshalBlendingFactor x | x == 0x0 = Zero | x == 0x1 = One | x == 0x300 = SrcColor | x == 0x301 = OneMinusSrcColor | x == 0x306 = DstColor | x == 0x307 = OneMinusDstColor | x == 0x302 = SrcAlpha | x == 0x303 = OneMinusSrcAlpha | x == 0x304 = DstAlpha | x == 0x305 = OneMinusDstAlpha | x == 0x8001 = ConstantColor | x == 0x8002 = OneMinusConstantColor | x == 0x8003 = ConstantAlpha | x == 0x8004 = OneMinusConstantAlpha | x == 0x308 = SrcAlphaSaturate | otherwise = error ("unmarshalBlendingFactor: illegal value " ++ show x)