{-# OPTIONS_HADDOCK hide #-}
--------------------------------------------------------------------------------
-- |
-- Module      :  Graphics.Rendering.OpenGL.GL.ComparisonFunction
-- Copyright   :  (c) Sven Panne 2002-2019
-- License     :  BSD3
-- 
-- Maintainer  :  Sven Panne <svenpanne@gmail.com>
-- Stability   :  stable
-- Portability :  portable
--
-- This is a purely internal module for (un-)marshaling ComparisonFunction.
--
--------------------------------------------------------------------------------

module Graphics.Rendering.OpenGL.GL.ComparisonFunction (
   ComparisonFunction(..), marshalComparisonFunction,
   unmarshalComparisonFunction
) where

import Graphics.GL

--------------------------------------------------------------------------------

data ComparisonFunction =
     Never
   | Less
   | Equal
   | Lequal
   | Greater
   | Notequal
   | Gequal
   | Always
   deriving ( ComparisonFunction -> ComparisonFunction -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ComparisonFunction -> ComparisonFunction -> Bool
$c/= :: ComparisonFunction -> ComparisonFunction -> Bool
== :: ComparisonFunction -> ComparisonFunction -> Bool
$c== :: ComparisonFunction -> ComparisonFunction -> Bool
Eq, Eq ComparisonFunction
ComparisonFunction -> ComparisonFunction -> Bool
ComparisonFunction -> ComparisonFunction -> Ordering
ComparisonFunction -> ComparisonFunction -> ComparisonFunction
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: ComparisonFunction -> ComparisonFunction -> ComparisonFunction
$cmin :: ComparisonFunction -> ComparisonFunction -> ComparisonFunction
max :: ComparisonFunction -> ComparisonFunction -> ComparisonFunction
$cmax :: ComparisonFunction -> ComparisonFunction -> ComparisonFunction
>= :: ComparisonFunction -> ComparisonFunction -> Bool
$c>= :: ComparisonFunction -> ComparisonFunction -> Bool
> :: ComparisonFunction -> ComparisonFunction -> Bool
$c> :: ComparisonFunction -> ComparisonFunction -> Bool
<= :: ComparisonFunction -> ComparisonFunction -> Bool
$c<= :: ComparisonFunction -> ComparisonFunction -> Bool
< :: ComparisonFunction -> ComparisonFunction -> Bool
$c< :: ComparisonFunction -> ComparisonFunction -> Bool
compare :: ComparisonFunction -> ComparisonFunction -> Ordering
$ccompare :: ComparisonFunction -> ComparisonFunction -> Ordering
Ord, Int -> ComparisonFunction -> ShowS
[ComparisonFunction] -> ShowS
ComparisonFunction -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ComparisonFunction] -> ShowS
$cshowList :: [ComparisonFunction] -> ShowS
show :: ComparisonFunction -> String
$cshow :: ComparisonFunction -> String
showsPrec :: Int -> ComparisonFunction -> ShowS
$cshowsPrec :: Int -> ComparisonFunction -> ShowS
Show )

marshalComparisonFunction :: ComparisonFunction -> GLenum
marshalComparisonFunction :: ComparisonFunction -> GLenum
marshalComparisonFunction ComparisonFunction
x = case ComparisonFunction
x of
   ComparisonFunction
Never -> GLenum
GL_NEVER
   ComparisonFunction
Less -> GLenum
GL_LESS
   ComparisonFunction
Equal -> GLenum
GL_EQUAL
   ComparisonFunction
Lequal -> GLenum
GL_LEQUAL
   ComparisonFunction
Greater -> GLenum
GL_GREATER
   ComparisonFunction
Notequal -> GLenum
GL_NOTEQUAL
   ComparisonFunction
Gequal -> GLenum
GL_GEQUAL
   ComparisonFunction
Always -> GLenum
GL_ALWAYS

unmarshalComparisonFunction :: GLenum -> ComparisonFunction
unmarshalComparisonFunction :: GLenum -> ComparisonFunction
unmarshalComparisonFunction GLenum
x
   | GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_NEVER = ComparisonFunction
Never
   | GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_LESS = ComparisonFunction
Less
   | GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_EQUAL = ComparisonFunction
Equal
   | GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_LEQUAL = ComparisonFunction
Lequal
   | GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_GREATER = ComparisonFunction
Greater
   | GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_NOTEQUAL = ComparisonFunction
Notequal
   | GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_GEQUAL = ComparisonFunction
Gequal
   | GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_ALWAYS = ComparisonFunction
Always
   | Bool
otherwise = forall a. HasCallStack => String -> a
error (String
"unmarshalComparisonFunction: illegal value " forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> String
show GLenum
x)