{-# OPTIONS_HADDOCK hide #-}
module Graphics.Rendering.OpenGL.GL.BufferMode (
BufferMode(..), marshalBufferMode, unmarshalBufferMode,
unmarshalBufferModeSafe,
maxColorAttachments,
) where
import Graphics.GL
data BufferMode =
NoBuffers
| FrontLeftBuffer
| FrontRightBuffer
| BackLeftBuffer
| BackRightBuffer
| FrontBuffers
| BackBuffers
| LeftBuffers
| RightBuffers
| FrontAndBackBuffers
| AuxBuffer GLsizei
| FBOColorAttachment GLsizei
deriving ( BufferMode -> BufferMode -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: BufferMode -> BufferMode -> Bool
$c/= :: BufferMode -> BufferMode -> Bool
== :: BufferMode -> BufferMode -> Bool
$c== :: BufferMode -> BufferMode -> Bool
Eq, Eq BufferMode
BufferMode -> BufferMode -> Bool
BufferMode -> BufferMode -> Ordering
BufferMode -> BufferMode -> BufferMode
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 :: BufferMode -> BufferMode -> BufferMode
$cmin :: BufferMode -> BufferMode -> BufferMode
max :: BufferMode -> BufferMode -> BufferMode
$cmax :: BufferMode -> BufferMode -> BufferMode
>= :: BufferMode -> BufferMode -> Bool
$c>= :: BufferMode -> BufferMode -> Bool
> :: BufferMode -> BufferMode -> Bool
$c> :: BufferMode -> BufferMode -> Bool
<= :: BufferMode -> BufferMode -> Bool
$c<= :: BufferMode -> BufferMode -> Bool
< :: BufferMode -> BufferMode -> Bool
$c< :: BufferMode -> BufferMode -> Bool
compare :: BufferMode -> BufferMode -> Ordering
$ccompare :: BufferMode -> BufferMode -> Ordering
Ord, Int -> BufferMode -> ShowS
[BufferMode] -> ShowS
BufferMode -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [BufferMode] -> ShowS
$cshowList :: [BufferMode] -> ShowS
show :: BufferMode -> String
$cshow :: BufferMode -> String
showsPrec :: Int -> BufferMode -> ShowS
$cshowsPrec :: Int -> BufferMode -> ShowS
Show )
marshalBufferMode :: BufferMode -> Maybe GLenum
marshalBufferMode :: BufferMode -> Maybe GLenum
marshalBufferMode BufferMode
x = case BufferMode
x of
BufferMode
NoBuffers -> forall a. a -> Maybe a
Just GLenum
GL_NONE
BufferMode
FrontLeftBuffer -> forall a. a -> Maybe a
Just GLenum
GL_FRONT_LEFT
BufferMode
FrontRightBuffer -> forall a. a -> Maybe a
Just GLenum
GL_FRONT_RIGHT
BufferMode
BackLeftBuffer -> forall a. a -> Maybe a
Just GLenum
GL_BACK_LEFT
BufferMode
BackRightBuffer -> forall a. a -> Maybe a
Just GLenum
GL_BACK_RIGHT
BufferMode
FrontBuffers -> forall a. a -> Maybe a
Just GLenum
GL_FRONT
BufferMode
BackBuffers -> forall a. a -> Maybe a
Just GLenum
GL_BACK
BufferMode
LeftBuffers -> forall a. a -> Maybe a
Just GLenum
GL_LEFT
BufferMode
RightBuffers -> forall a. a -> Maybe a
Just GLenum
GL_RIGHT
BufferMode
FrontAndBackBuffers -> forall a. a -> Maybe a
Just GLenum
GL_FRONT_AND_BACK
AuxBuffer GLsizei
i
| forall a b. (Integral a, Num b) => a -> b
fromIntegral GLsizei
i forall a. Ord a => a -> a -> Bool
<= GLenum
maxAuxBuffer -> forall a. a -> Maybe a
Just (GLenum
GL_AUX0 forall a. Num a => a -> a -> a
+ forall a b. (Integral a, Num b) => a -> b
fromIntegral GLsizei
i)
| Bool
otherwise -> forall a. Maybe a
Nothing
FBOColorAttachment GLsizei
i
| forall a b. (Integral a, Num b) => a -> b
fromIntegral GLsizei
i forall a. Ord a => a -> a -> Bool
<= GLenum
maxColorAttachments -> forall a. a -> Maybe a
Just (GLenum
GL_COLOR_ATTACHMENT0 forall a. Num a => a -> a -> a
+ forall a b. (Integral a, Num b) => a -> b
fromIntegral GLsizei
i)
| Bool
otherwise -> forall a. Maybe a
Nothing
unmarshalBufferMode :: GLenum -> BufferMode
unmarshalBufferMode :: GLenum -> BufferMode
unmarshalBufferMode GLenum
x = forall b a. b -> (a -> b) -> Maybe a -> b
maybe
(forall a. HasCallStack => String -> a
error (String
"unmarshalBufferMode: illegal value " forall a. [a] -> [a] -> [a]
++ forall a. Show a => a -> String
show GLenum
x)) forall a. a -> a
id forall a b. (a -> b) -> a -> b
$ GLenum -> Maybe BufferMode
unmarshalBufferModeSafe GLenum
x
unmarshalBufferModeSafe :: GLenum -> Maybe BufferMode
unmarshalBufferModeSafe :: GLenum -> Maybe BufferMode
unmarshalBufferModeSafe GLenum
x
| GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_NONE = forall a. a -> Maybe a
Just BufferMode
NoBuffers
| GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_FRONT_LEFT = forall a. a -> Maybe a
Just BufferMode
FrontLeftBuffer
| GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_FRONT_RIGHT = forall a. a -> Maybe a
Just BufferMode
FrontRightBuffer
| GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_BACK_LEFT = forall a. a -> Maybe a
Just BufferMode
BackLeftBuffer
| GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_BACK_RIGHT = forall a. a -> Maybe a
Just BufferMode
BackRightBuffer
| GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_FRONT = forall a. a -> Maybe a
Just BufferMode
FrontBuffers
| GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_BACK = forall a. a -> Maybe a
Just BufferMode
BackBuffers
| GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_LEFT = forall a. a -> Maybe a
Just BufferMode
LeftBuffers
| GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_RIGHT = forall a. a -> Maybe a
Just BufferMode
RightBuffers
| GLenum
x forall a. Eq a => a -> a -> Bool
== GLenum
GL_FRONT_AND_BACK = forall a. a -> Maybe a
Just BufferMode
FrontAndBackBuffers
| GLenum
GL_AUX0 forall a. Ord a => a -> a -> Bool
<= GLenum
x Bool -> Bool -> Bool
&& GLenum
x forall a. Ord a => a -> a -> Bool
<= GLenum
GL_AUX0 forall a. Num a => a -> a -> a
+ GLenum
maxAuxBuffer = forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. GLsizei -> BufferMode
AuxBuffer forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral forall a b. (a -> b) -> a -> b
$ GLenum
x forall a. Num a => a -> a -> a
- GLenum
GL_AUX0
| GLenum
GL_COLOR_ATTACHMENT0 forall a. Ord a => a -> a -> Bool
<= GLenum
x Bool -> Bool -> Bool
&& GLenum
x forall a. Ord a => a -> a -> Bool
<= GLenum
GL_COLOR_ATTACHMENT0 forall a. Num a => a -> a -> a
+ GLenum
maxColorAttachments
= forall a. a -> Maybe a
Just forall b c a. (b -> c) -> (a -> b) -> a -> c
. GLsizei -> BufferMode
FBOColorAttachment forall b c a. (b -> c) -> (a -> b) -> a -> c
. forall a b. (Integral a, Num b) => a -> b
fromIntegral forall a b. (a -> b) -> a -> b
$ GLenum
x forall a. Num a => a -> a -> a
- GLenum
GL_COLOR_ATTACHMENT0
| Bool
otherwise = forall a. Maybe a
Nothing
maxAuxBuffer :: GLenum
maxAuxBuffer :: GLenum
maxAuxBuffer = GLenum
246
maxColorAttachments :: GLenum
maxColorAttachments :: GLenum
maxColorAttachments = GLenum
16