{-# OPTIONS_HADDOCK hide #-}
--------------------------------------------------------------------------------
-- |
-- Module      :  Graphics.Rendering.OpenGL.GL.Texturing.TextureTarget
-- 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 marshaling texture targets.
--
--------------------------------------------------------------------------------

module Graphics.Rendering.OpenGL.GL.Texturing.TextureTarget (
   -- * Texture Target Classification
   BindableTextureTarget(..),
   ParameterizedTextureTarget(..),
   OneDimensionalTextureTarget(..),
   TwoDimensionalTextureTarget(..),
   ThreeDimensionalTextureTarget(..),
   QueryableTextureTarget(..),
   GettableTextureTarget(..),

   -- * One-Dimensional Texture Targets
   TextureTarget1D(..),

   -- * Two-Dimensional Texture Targets
   TextureTarget2D(..),
   TextureTarget2DMultisample(..),
   TextureTargetCubeMap(..),
   TextureTargetCubeMapFace(..),
   unmarshalTextureTargetCubeMapFace,

   -- * Three-Dimensional Texture Targets
   TextureTarget3D(..),
   TextureTarget2DMultisampleArray(..),

   -- * Texture Buffer Target
   TextureTargetBuffer(..)
) where

import Graphics.Rendering.OpenGL.GL.Capability
import Graphics.Rendering.OpenGL.GL.PixelRectangles.ColorTable
import Graphics.Rendering.OpenGL.GL.QueryUtils.PName
import Graphics.GL

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

class BindableTextureTarget t where
   marshalBindableTextureTarget :: t -> GLenum
   marshalBindableTextureTargetPName1I :: t -> PName1I

class ParameterizedTextureTarget t where
   marshalParameterizedTextureTarget :: t -> GLenum
   marshalParameterizedTextureTargetProxy :: t -> GLenum
   marshalParameterizedTextureTargetEnableCap :: t -> EnableCap

class OneDimensionalTextureTarget t where
   marshalOneDimensionalTextureTarget :: Proxy -> t -> GLenum

class TwoDimensionalTextureTarget t where
   marshalTwoDimensionalTextureTarget :: Proxy -> t -> GLenum

class ThreeDimensionalTextureTarget t where
   marshalThreeDimensionalTextureTarget :: Proxy -> t -> GLenum

class QueryableTextureTarget t where
   marshalQueryableTextureTarget :: t -> GLenum

class GettableTextureTarget t where
   marshalGettableTextureTarget :: t -> GLenum

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

data TextureTarget1D = Texture1D
   deriving ( TextureTarget1D -> TextureTarget1D -> Bool
(TextureTarget1D -> TextureTarget1D -> Bool)
-> (TextureTarget1D -> TextureTarget1D -> Bool)
-> Eq TextureTarget1D
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TextureTarget1D -> TextureTarget1D -> Bool
== :: TextureTarget1D -> TextureTarget1D -> Bool
$c/= :: TextureTarget1D -> TextureTarget1D -> Bool
/= :: TextureTarget1D -> TextureTarget1D -> Bool
Eq, Eq TextureTarget1D
Eq TextureTarget1D =>
(TextureTarget1D -> TextureTarget1D -> Ordering)
-> (TextureTarget1D -> TextureTarget1D -> Bool)
-> (TextureTarget1D -> TextureTarget1D -> Bool)
-> (TextureTarget1D -> TextureTarget1D -> Bool)
-> (TextureTarget1D -> TextureTarget1D -> Bool)
-> (TextureTarget1D -> TextureTarget1D -> TextureTarget1D)
-> (TextureTarget1D -> TextureTarget1D -> TextureTarget1D)
-> Ord TextureTarget1D
TextureTarget1D -> TextureTarget1D -> Bool
TextureTarget1D -> TextureTarget1D -> Ordering
TextureTarget1D -> TextureTarget1D -> TextureTarget1D
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
$ccompare :: TextureTarget1D -> TextureTarget1D -> Ordering
compare :: TextureTarget1D -> TextureTarget1D -> Ordering
$c< :: TextureTarget1D -> TextureTarget1D -> Bool
< :: TextureTarget1D -> TextureTarget1D -> Bool
$c<= :: TextureTarget1D -> TextureTarget1D -> Bool
<= :: TextureTarget1D -> TextureTarget1D -> Bool
$c> :: TextureTarget1D -> TextureTarget1D -> Bool
> :: TextureTarget1D -> TextureTarget1D -> Bool
$c>= :: TextureTarget1D -> TextureTarget1D -> Bool
>= :: TextureTarget1D -> TextureTarget1D -> Bool
$cmax :: TextureTarget1D -> TextureTarget1D -> TextureTarget1D
max :: TextureTarget1D -> TextureTarget1D -> TextureTarget1D
$cmin :: TextureTarget1D -> TextureTarget1D -> TextureTarget1D
min :: TextureTarget1D -> TextureTarget1D -> TextureTarget1D
Ord, Int -> TextureTarget1D -> ShowS
[TextureTarget1D] -> ShowS
TextureTarget1D -> String
(Int -> TextureTarget1D -> ShowS)
-> (TextureTarget1D -> String)
-> ([TextureTarget1D] -> ShowS)
-> Show TextureTarget1D
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TextureTarget1D -> ShowS
showsPrec :: Int -> TextureTarget1D -> ShowS
$cshow :: TextureTarget1D -> String
show :: TextureTarget1D -> String
$cshowList :: [TextureTarget1D] -> ShowS
showList :: [TextureTarget1D] -> ShowS
Show )

instance BindableTextureTarget TextureTarget1D where
   marshalBindableTextureTarget :: TextureTarget1D -> GLenum
marshalBindableTextureTarget = TextureTarget1D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget
   marshalBindableTextureTargetPName1I :: TextureTarget1D -> PName1I
marshalBindableTextureTargetPName1I TextureTarget1D
t = case TextureTarget1D
t of
      TextureTarget1D
Texture1D -> PName1I
GetTextureBinding1D

instance ParameterizedTextureTarget TextureTarget1D where
   marshalParameterizedTextureTarget :: TextureTarget1D -> GLenum
marshalParameterizedTextureTarget TextureTarget1D
t = case TextureTarget1D
t of
      TextureTarget1D
Texture1D -> GLenum
GL_TEXTURE_1D
   marshalParameterizedTextureTargetProxy :: TextureTarget1D -> GLenum
marshalParameterizedTextureTargetProxy TextureTarget1D
t = case TextureTarget1D
t of
      TextureTarget1D
Texture1D -> GLenum
GL_PROXY_TEXTURE_1D
   marshalParameterizedTextureTargetEnableCap :: TextureTarget1D -> EnableCap
marshalParameterizedTextureTargetEnableCap TextureTarget1D
t = case TextureTarget1D
t of
      TextureTarget1D
Texture1D -> EnableCap
CapTexture1D

instance OneDimensionalTextureTarget TextureTarget1D where
   marshalOneDimensionalTextureTarget :: Proxy -> TextureTarget1D -> GLenum
marshalOneDimensionalTextureTarget Proxy
p = case Proxy
p of
      Proxy
NoProxy -> TextureTarget1D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget
      Proxy
Proxy -> TextureTarget1D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTargetProxy

instance QueryableTextureTarget TextureTarget1D where
   marshalQueryableTextureTarget :: TextureTarget1D -> GLenum
marshalQueryableTextureTarget = TextureTarget1D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget

instance GettableTextureTarget TextureTarget1D where
   marshalGettableTextureTarget :: TextureTarget1D -> GLenum
marshalGettableTextureTarget = TextureTarget1D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget

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

data TextureTarget2D =
     Texture2D
   | Texture1DArray
   | TextureRectangle
   deriving ( TextureTarget2D -> TextureTarget2D -> Bool
(TextureTarget2D -> TextureTarget2D -> Bool)
-> (TextureTarget2D -> TextureTarget2D -> Bool)
-> Eq TextureTarget2D
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TextureTarget2D -> TextureTarget2D -> Bool
== :: TextureTarget2D -> TextureTarget2D -> Bool
$c/= :: TextureTarget2D -> TextureTarget2D -> Bool
/= :: TextureTarget2D -> TextureTarget2D -> Bool
Eq, Eq TextureTarget2D
Eq TextureTarget2D =>
(TextureTarget2D -> TextureTarget2D -> Ordering)
-> (TextureTarget2D -> TextureTarget2D -> Bool)
-> (TextureTarget2D -> TextureTarget2D -> Bool)
-> (TextureTarget2D -> TextureTarget2D -> Bool)
-> (TextureTarget2D -> TextureTarget2D -> Bool)
-> (TextureTarget2D -> TextureTarget2D -> TextureTarget2D)
-> (TextureTarget2D -> TextureTarget2D -> TextureTarget2D)
-> Ord TextureTarget2D
TextureTarget2D -> TextureTarget2D -> Bool
TextureTarget2D -> TextureTarget2D -> Ordering
TextureTarget2D -> TextureTarget2D -> TextureTarget2D
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
$ccompare :: TextureTarget2D -> TextureTarget2D -> Ordering
compare :: TextureTarget2D -> TextureTarget2D -> Ordering
$c< :: TextureTarget2D -> TextureTarget2D -> Bool
< :: TextureTarget2D -> TextureTarget2D -> Bool
$c<= :: TextureTarget2D -> TextureTarget2D -> Bool
<= :: TextureTarget2D -> TextureTarget2D -> Bool
$c> :: TextureTarget2D -> TextureTarget2D -> Bool
> :: TextureTarget2D -> TextureTarget2D -> Bool
$c>= :: TextureTarget2D -> TextureTarget2D -> Bool
>= :: TextureTarget2D -> TextureTarget2D -> Bool
$cmax :: TextureTarget2D -> TextureTarget2D -> TextureTarget2D
max :: TextureTarget2D -> TextureTarget2D -> TextureTarget2D
$cmin :: TextureTarget2D -> TextureTarget2D -> TextureTarget2D
min :: TextureTarget2D -> TextureTarget2D -> TextureTarget2D
Ord, Int -> TextureTarget2D -> ShowS
[TextureTarget2D] -> ShowS
TextureTarget2D -> String
(Int -> TextureTarget2D -> ShowS)
-> (TextureTarget2D -> String)
-> ([TextureTarget2D] -> ShowS)
-> Show TextureTarget2D
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TextureTarget2D -> ShowS
showsPrec :: Int -> TextureTarget2D -> ShowS
$cshow :: TextureTarget2D -> String
show :: TextureTarget2D -> String
$cshowList :: [TextureTarget2D] -> ShowS
showList :: [TextureTarget2D] -> ShowS
Show )

instance BindableTextureTarget TextureTarget2D where
   marshalBindableTextureTarget :: TextureTarget2D -> GLenum
marshalBindableTextureTarget = TextureTarget2D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget
   marshalBindableTextureTargetPName1I :: TextureTarget2D -> PName1I
marshalBindableTextureTargetPName1I TextureTarget2D
t = case TextureTarget2D
t of
      TextureTarget2D
Texture2D -> PName1I
GetTextureBinding2D
      TextureTarget2D
Texture1DArray -> PName1I
GetTextureBinding1DArray
      TextureTarget2D
TextureRectangle -> PName1I
GetTextureBindingRectangle

instance ParameterizedTextureTarget TextureTarget2D where
   marshalParameterizedTextureTarget :: TextureTarget2D -> GLenum
marshalParameterizedTextureTarget TextureTarget2D
t = case TextureTarget2D
t of
      TextureTarget2D
Texture2D -> GLenum
GL_TEXTURE_2D
      TextureTarget2D
Texture1DArray -> GLenum
GL_TEXTURE_1D_ARRAY
      TextureTarget2D
TextureRectangle -> GLenum
GL_TEXTURE_RECTANGLE
   marshalParameterizedTextureTargetProxy :: TextureTarget2D -> GLenum
marshalParameterizedTextureTargetProxy TextureTarget2D
t = case TextureTarget2D
t of
      TextureTarget2D
Texture2D -> GLenum
GL_PROXY_TEXTURE_2D
      TextureTarget2D
Texture1DArray -> GLenum
GL_PROXY_TEXTURE_1D_ARRAY
      TextureTarget2D
TextureRectangle -> GLenum
GL_PROXY_TEXTURE_RECTANGLE
   marshalParameterizedTextureTargetEnableCap :: TextureTarget2D -> EnableCap
marshalParameterizedTextureTargetEnableCap TextureTarget2D
t = case TextureTarget2D
t of
      TextureTarget2D
Texture2D -> EnableCap
CapTexture2D
      TextureTarget2D
Texture1DArray -> EnableCap
CapTexture1DArray
      TextureTarget2D
TextureRectangle -> EnableCap
CapTextureRectangle

instance TwoDimensionalTextureTarget TextureTarget2D where
   marshalTwoDimensionalTextureTarget :: Proxy -> TextureTarget2D -> GLenum
marshalTwoDimensionalTextureTarget Proxy
p = case Proxy
p of
      Proxy
NoProxy -> TextureTarget2D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget
      Proxy
Proxy -> TextureTarget2D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTargetProxy

instance QueryableTextureTarget TextureTarget2D where
   marshalQueryableTextureTarget :: TextureTarget2D -> GLenum
marshalQueryableTextureTarget = TextureTarget2D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget

instance GettableTextureTarget TextureTarget2D where
   marshalGettableTextureTarget :: TextureTarget2D -> GLenum
marshalGettableTextureTarget = TextureTarget2D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget

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

data TextureTarget2DMultisample = Texture2DMultisample
   deriving ( TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
(TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool)
-> (TextureTarget2DMultisample
    -> TextureTarget2DMultisample -> Bool)
-> Eq TextureTarget2DMultisample
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
== :: TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
$c/= :: TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
/= :: TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
Eq, Eq TextureTarget2DMultisample
Eq TextureTarget2DMultisample =>
(TextureTarget2DMultisample
 -> TextureTarget2DMultisample -> Ordering)
-> (TextureTarget2DMultisample
    -> TextureTarget2DMultisample -> Bool)
-> (TextureTarget2DMultisample
    -> TextureTarget2DMultisample -> Bool)
-> (TextureTarget2DMultisample
    -> TextureTarget2DMultisample -> Bool)
-> (TextureTarget2DMultisample
    -> TextureTarget2DMultisample -> Bool)
-> (TextureTarget2DMultisample
    -> TextureTarget2DMultisample -> TextureTarget2DMultisample)
-> (TextureTarget2DMultisample
    -> TextureTarget2DMultisample -> TextureTarget2DMultisample)
-> Ord TextureTarget2DMultisample
TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
TextureTarget2DMultisample
-> TextureTarget2DMultisample -> Ordering
TextureTarget2DMultisample
-> TextureTarget2DMultisample -> TextureTarget2DMultisample
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
$ccompare :: TextureTarget2DMultisample
-> TextureTarget2DMultisample -> Ordering
compare :: TextureTarget2DMultisample
-> TextureTarget2DMultisample -> Ordering
$c< :: TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
< :: TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
$c<= :: TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
<= :: TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
$c> :: TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
> :: TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
$c>= :: TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
>= :: TextureTarget2DMultisample -> TextureTarget2DMultisample -> Bool
$cmax :: TextureTarget2DMultisample
-> TextureTarget2DMultisample -> TextureTarget2DMultisample
max :: TextureTarget2DMultisample
-> TextureTarget2DMultisample -> TextureTarget2DMultisample
$cmin :: TextureTarget2DMultisample
-> TextureTarget2DMultisample -> TextureTarget2DMultisample
min :: TextureTarget2DMultisample
-> TextureTarget2DMultisample -> TextureTarget2DMultisample
Ord, Int -> TextureTarget2DMultisample -> ShowS
[TextureTarget2DMultisample] -> ShowS
TextureTarget2DMultisample -> String
(Int -> TextureTarget2DMultisample -> ShowS)
-> (TextureTarget2DMultisample -> String)
-> ([TextureTarget2DMultisample] -> ShowS)
-> Show TextureTarget2DMultisample
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TextureTarget2DMultisample -> ShowS
showsPrec :: Int -> TextureTarget2DMultisample -> ShowS
$cshow :: TextureTarget2DMultisample -> String
show :: TextureTarget2DMultisample -> String
$cshowList :: [TextureTarget2DMultisample] -> ShowS
showList :: [TextureTarget2DMultisample] -> ShowS
Show )

instance BindableTextureTarget TextureTarget2DMultisample where
   marshalBindableTextureTarget :: TextureTarget2DMultisample -> GLenum
marshalBindableTextureTarget = TextureTarget2DMultisample -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget
   marshalBindableTextureTargetPName1I :: TextureTarget2DMultisample -> PName1I
marshalBindableTextureTargetPName1I TextureTarget2DMultisample
t = case TextureTarget2DMultisample
t of
      TextureTarget2DMultisample
Texture2DMultisample -> PName1I
GetTextureBinding2DMultisample

instance ParameterizedTextureTarget TextureTarget2DMultisample where
   marshalParameterizedTextureTarget :: TextureTarget2DMultisample -> GLenum
marshalParameterizedTextureTarget TextureTarget2DMultisample
t = case TextureTarget2DMultisample
t of
      TextureTarget2DMultisample
Texture2DMultisample -> GLenum
GL_TEXTURE_2D_MULTISAMPLE
   marshalParameterizedTextureTargetProxy :: TextureTarget2DMultisample -> GLenum
marshalParameterizedTextureTargetProxy TextureTarget2DMultisample
t = case TextureTarget2DMultisample
t of
      TextureTarget2DMultisample
Texture2DMultisample -> GLenum
GL_PROXY_TEXTURE_2D_MULTISAMPLE
   marshalParameterizedTextureTargetEnableCap :: TextureTarget2DMultisample -> EnableCap
marshalParameterizedTextureTargetEnableCap TextureTarget2DMultisample
t = case TextureTarget2DMultisample
t of
      TextureTarget2DMultisample
Texture2DMultisample -> EnableCap
CapTexture2DMultisample

instance QueryableTextureTarget TextureTarget2DMultisample where
   marshalQueryableTextureTarget :: TextureTarget2DMultisample -> GLenum
marshalQueryableTextureTarget = TextureTarget2DMultisample -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget

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

data TextureTargetCubeMap = TextureCubeMap
   deriving ( TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
(TextureTargetCubeMap -> TextureTargetCubeMap -> Bool)
-> (TextureTargetCubeMap -> TextureTargetCubeMap -> Bool)
-> Eq TextureTargetCubeMap
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
== :: TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
$c/= :: TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
/= :: TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
Eq, Eq TextureTargetCubeMap
Eq TextureTargetCubeMap =>
(TextureTargetCubeMap -> TextureTargetCubeMap -> Ordering)
-> (TextureTargetCubeMap -> TextureTargetCubeMap -> Bool)
-> (TextureTargetCubeMap -> TextureTargetCubeMap -> Bool)
-> (TextureTargetCubeMap -> TextureTargetCubeMap -> Bool)
-> (TextureTargetCubeMap -> TextureTargetCubeMap -> Bool)
-> (TextureTargetCubeMap
    -> TextureTargetCubeMap -> TextureTargetCubeMap)
-> (TextureTargetCubeMap
    -> TextureTargetCubeMap -> TextureTargetCubeMap)
-> Ord TextureTargetCubeMap
TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
TextureTargetCubeMap -> TextureTargetCubeMap -> Ordering
TextureTargetCubeMap
-> TextureTargetCubeMap -> TextureTargetCubeMap
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
$ccompare :: TextureTargetCubeMap -> TextureTargetCubeMap -> Ordering
compare :: TextureTargetCubeMap -> TextureTargetCubeMap -> Ordering
$c< :: TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
< :: TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
$c<= :: TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
<= :: TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
$c> :: TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
> :: TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
$c>= :: TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
>= :: TextureTargetCubeMap -> TextureTargetCubeMap -> Bool
$cmax :: TextureTargetCubeMap
-> TextureTargetCubeMap -> TextureTargetCubeMap
max :: TextureTargetCubeMap
-> TextureTargetCubeMap -> TextureTargetCubeMap
$cmin :: TextureTargetCubeMap
-> TextureTargetCubeMap -> TextureTargetCubeMap
min :: TextureTargetCubeMap
-> TextureTargetCubeMap -> TextureTargetCubeMap
Ord, Int -> TextureTargetCubeMap -> ShowS
[TextureTargetCubeMap] -> ShowS
TextureTargetCubeMap -> String
(Int -> TextureTargetCubeMap -> ShowS)
-> (TextureTargetCubeMap -> String)
-> ([TextureTargetCubeMap] -> ShowS)
-> Show TextureTargetCubeMap
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TextureTargetCubeMap -> ShowS
showsPrec :: Int -> TextureTargetCubeMap -> ShowS
$cshow :: TextureTargetCubeMap -> String
show :: TextureTargetCubeMap -> String
$cshowList :: [TextureTargetCubeMap] -> ShowS
showList :: [TextureTargetCubeMap] -> ShowS
Show )

instance BindableTextureTarget TextureTargetCubeMap where
   marshalBindableTextureTarget :: TextureTargetCubeMap -> GLenum
marshalBindableTextureTarget = TextureTargetCubeMap -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget
   marshalBindableTextureTargetPName1I :: TextureTargetCubeMap -> PName1I
marshalBindableTextureTargetPName1I TextureTargetCubeMap
t = case TextureTargetCubeMap
t of
      TextureTargetCubeMap
TextureCubeMap -> PName1I
GetTextureBindingCubeMap

instance ParameterizedTextureTarget TextureTargetCubeMap where
   marshalParameterizedTextureTarget :: TextureTargetCubeMap -> GLenum
marshalParameterizedTextureTarget TextureTargetCubeMap
t = case TextureTargetCubeMap
t of
      TextureTargetCubeMap
TextureCubeMap -> GLenum
GL_TEXTURE_CUBE_MAP
   marshalParameterizedTextureTargetProxy :: TextureTargetCubeMap -> GLenum
marshalParameterizedTextureTargetProxy TextureTargetCubeMap
t = case TextureTargetCubeMap
t of
      TextureTargetCubeMap
TextureCubeMap -> GLenum
GL_PROXY_TEXTURE_CUBE_MAP
   marshalParameterizedTextureTargetEnableCap :: TextureTargetCubeMap -> EnableCap
marshalParameterizedTextureTargetEnableCap TextureTargetCubeMap
t = case TextureTargetCubeMap
t of
      TextureTargetCubeMap
TextureCubeMap -> EnableCap
CapTextureCubeMap

instance TwoDimensionalTextureTarget TextureTargetCubeMap where
   marshalTwoDimensionalTextureTarget :: Proxy -> TextureTargetCubeMap -> GLenum
marshalTwoDimensionalTextureTarget Proxy
p = case Proxy
p of
      Proxy
NoProxy -> \TextureTargetCubeMap
t -> String -> GLenum
forall a. HasCallStack => String -> a
error (String
"No non-proxy target for " String -> ShowS
forall a. [a] -> [a] -> [a]
++ TextureTargetCubeMap -> String
forall a. Show a => a -> String
show TextureTargetCubeMap
t)
      Proxy
Proxy -> TextureTargetCubeMap -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTargetProxy

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

data TextureTargetCubeMapFace =
     TextureCubeMapPositiveX
   | TextureCubeMapNegativeX
   | TextureCubeMapPositiveY
   | TextureCubeMapNegativeY
   | TextureCubeMapPositiveZ
   | TextureCubeMapNegativeZ
   deriving ( TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
(TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool)
-> (TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool)
-> Eq TextureTargetCubeMapFace
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
== :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
$c/= :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
/= :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
Eq, Eq TextureTargetCubeMapFace
Eq TextureTargetCubeMapFace =>
(TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Ordering)
-> (TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool)
-> (TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool)
-> (TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool)
-> (TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool)
-> (TextureTargetCubeMapFace
    -> TextureTargetCubeMapFace -> TextureTargetCubeMapFace)
-> (TextureTargetCubeMapFace
    -> TextureTargetCubeMapFace -> TextureTargetCubeMapFace)
-> Ord TextureTargetCubeMapFace
TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Ordering
TextureTargetCubeMapFace
-> TextureTargetCubeMapFace -> TextureTargetCubeMapFace
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
$ccompare :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Ordering
compare :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Ordering
$c< :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
< :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
$c<= :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
<= :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
$c> :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
> :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
$c>= :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
>= :: TextureTargetCubeMapFace -> TextureTargetCubeMapFace -> Bool
$cmax :: TextureTargetCubeMapFace
-> TextureTargetCubeMapFace -> TextureTargetCubeMapFace
max :: TextureTargetCubeMapFace
-> TextureTargetCubeMapFace -> TextureTargetCubeMapFace
$cmin :: TextureTargetCubeMapFace
-> TextureTargetCubeMapFace -> TextureTargetCubeMapFace
min :: TextureTargetCubeMapFace
-> TextureTargetCubeMapFace -> TextureTargetCubeMapFace
Ord, Int -> TextureTargetCubeMapFace -> ShowS
[TextureTargetCubeMapFace] -> ShowS
TextureTargetCubeMapFace -> String
(Int -> TextureTargetCubeMapFace -> ShowS)
-> (TextureTargetCubeMapFace -> String)
-> ([TextureTargetCubeMapFace] -> ShowS)
-> Show TextureTargetCubeMapFace
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TextureTargetCubeMapFace -> ShowS
showsPrec :: Int -> TextureTargetCubeMapFace -> ShowS
$cshow :: TextureTargetCubeMapFace -> String
show :: TextureTargetCubeMapFace -> String
$cshowList :: [TextureTargetCubeMapFace] -> ShowS
showList :: [TextureTargetCubeMapFace] -> ShowS
Show )

instance TwoDimensionalTextureTarget TextureTargetCubeMapFace where
   marshalTwoDimensionalTextureTarget :: Proxy -> TextureTargetCubeMapFace -> GLenum
marshalTwoDimensionalTextureTarget Proxy
p = case Proxy
p of
      Proxy
NoProxy -> TextureTargetCubeMapFace -> GLenum
forall t. QueryableTextureTarget t => t -> GLenum
marshalQueryableTextureTarget
      -- We could silently map this to TextureCubeMap if we wanted.
      Proxy
Proxy -> \TextureTargetCubeMapFace
t -> String -> GLenum
forall a. HasCallStack => String -> a
error (String
"No proxy target for " String -> ShowS
forall a. [a] -> [a] -> [a]
++ TextureTargetCubeMapFace -> String
forall a. Show a => a -> String
show TextureTargetCubeMapFace
t)

instance QueryableTextureTarget TextureTargetCubeMapFace where
   marshalQueryableTextureTarget :: TextureTargetCubeMapFace -> GLenum
marshalQueryableTextureTarget TextureTargetCubeMapFace
t = case TextureTargetCubeMapFace
t of
      TextureTargetCubeMapFace
TextureCubeMapPositiveX -> GLenum
GL_TEXTURE_CUBE_MAP_POSITIVE_X
      TextureTargetCubeMapFace
TextureCubeMapNegativeX -> GLenum
GL_TEXTURE_CUBE_MAP_NEGATIVE_X
      TextureTargetCubeMapFace
TextureCubeMapPositiveY -> GLenum
GL_TEXTURE_CUBE_MAP_POSITIVE_Y
      TextureTargetCubeMapFace
TextureCubeMapNegativeY -> GLenum
GL_TEXTURE_CUBE_MAP_NEGATIVE_Y
      TextureTargetCubeMapFace
TextureCubeMapPositiveZ -> GLenum
GL_TEXTURE_CUBE_MAP_POSITIVE_Z
      TextureTargetCubeMapFace
TextureCubeMapNegativeZ -> GLenum
GL_TEXTURE_CUBE_MAP_NEGATIVE_Z

instance GettableTextureTarget TextureTargetCubeMapFace where
   marshalGettableTextureTarget :: TextureTargetCubeMapFace -> GLenum
marshalGettableTextureTarget = TextureTargetCubeMapFace -> GLenum
forall t. QueryableTextureTarget t => t -> GLenum
marshalQueryableTextureTarget

unmarshalTextureTargetCubeMapFace :: GLenum -> TextureTargetCubeMapFace
unmarshalTextureTargetCubeMapFace :: GLenum -> TextureTargetCubeMapFace
unmarshalTextureTargetCubeMapFace GLenum
x
   | GLenum
x GLenum -> GLenum -> Bool
forall a. Eq a => a -> a -> Bool
== GLenum
GL_TEXTURE_CUBE_MAP_POSITIVE_X = TextureTargetCubeMapFace
TextureCubeMapPositiveX
   | GLenum
x GLenum -> GLenum -> Bool
forall a. Eq a => a -> a -> Bool
== GLenum
GL_TEXTURE_CUBE_MAP_NEGATIVE_X = TextureTargetCubeMapFace
TextureCubeMapNegativeX
   | GLenum
x GLenum -> GLenum -> Bool
forall a. Eq a => a -> a -> Bool
== GLenum
GL_TEXTURE_CUBE_MAP_POSITIVE_Y = TextureTargetCubeMapFace
TextureCubeMapPositiveY
   | GLenum
x GLenum -> GLenum -> Bool
forall a. Eq a => a -> a -> Bool
== GLenum
GL_TEXTURE_CUBE_MAP_NEGATIVE_Y = TextureTargetCubeMapFace
TextureCubeMapNegativeY
   | GLenum
x GLenum -> GLenum -> Bool
forall a. Eq a => a -> a -> Bool
== GLenum
GL_TEXTURE_CUBE_MAP_POSITIVE_Z = TextureTargetCubeMapFace
TextureCubeMapPositiveZ
   | GLenum
x GLenum -> GLenum -> Bool
forall a. Eq a => a -> a -> Bool
== GLenum
GL_TEXTURE_CUBE_MAP_NEGATIVE_Z = TextureTargetCubeMapFace
TextureCubeMapNegativeZ
   | Bool
otherwise = String -> TextureTargetCubeMapFace
forall a. HasCallStack => String -> a
error (String -> TextureTargetCubeMapFace)
-> String -> TextureTargetCubeMapFace
forall a b. (a -> b) -> a -> b
$ String
"unmarshalTextureTargetCubeMapFace: unknown enum " String -> ShowS
forall a. [a] -> [a] -> [a]
++ GLenum -> String
forall a. Show a => a -> String
show GLenum
x

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

data TextureTarget3D =
     Texture3D
   | Texture2DArray
   | TextureCubeMapArray
   deriving ( TextureTarget3D -> TextureTarget3D -> Bool
(TextureTarget3D -> TextureTarget3D -> Bool)
-> (TextureTarget3D -> TextureTarget3D -> Bool)
-> Eq TextureTarget3D
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TextureTarget3D -> TextureTarget3D -> Bool
== :: TextureTarget3D -> TextureTarget3D -> Bool
$c/= :: TextureTarget3D -> TextureTarget3D -> Bool
/= :: TextureTarget3D -> TextureTarget3D -> Bool
Eq, Eq TextureTarget3D
Eq TextureTarget3D =>
(TextureTarget3D -> TextureTarget3D -> Ordering)
-> (TextureTarget3D -> TextureTarget3D -> Bool)
-> (TextureTarget3D -> TextureTarget3D -> Bool)
-> (TextureTarget3D -> TextureTarget3D -> Bool)
-> (TextureTarget3D -> TextureTarget3D -> Bool)
-> (TextureTarget3D -> TextureTarget3D -> TextureTarget3D)
-> (TextureTarget3D -> TextureTarget3D -> TextureTarget3D)
-> Ord TextureTarget3D
TextureTarget3D -> TextureTarget3D -> Bool
TextureTarget3D -> TextureTarget3D -> Ordering
TextureTarget3D -> TextureTarget3D -> TextureTarget3D
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
$ccompare :: TextureTarget3D -> TextureTarget3D -> Ordering
compare :: TextureTarget3D -> TextureTarget3D -> Ordering
$c< :: TextureTarget3D -> TextureTarget3D -> Bool
< :: TextureTarget3D -> TextureTarget3D -> Bool
$c<= :: TextureTarget3D -> TextureTarget3D -> Bool
<= :: TextureTarget3D -> TextureTarget3D -> Bool
$c> :: TextureTarget3D -> TextureTarget3D -> Bool
> :: TextureTarget3D -> TextureTarget3D -> Bool
$c>= :: TextureTarget3D -> TextureTarget3D -> Bool
>= :: TextureTarget3D -> TextureTarget3D -> Bool
$cmax :: TextureTarget3D -> TextureTarget3D -> TextureTarget3D
max :: TextureTarget3D -> TextureTarget3D -> TextureTarget3D
$cmin :: TextureTarget3D -> TextureTarget3D -> TextureTarget3D
min :: TextureTarget3D -> TextureTarget3D -> TextureTarget3D
Ord, Int -> TextureTarget3D -> ShowS
[TextureTarget3D] -> ShowS
TextureTarget3D -> String
(Int -> TextureTarget3D -> ShowS)
-> (TextureTarget3D -> String)
-> ([TextureTarget3D] -> ShowS)
-> Show TextureTarget3D
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TextureTarget3D -> ShowS
showsPrec :: Int -> TextureTarget3D -> ShowS
$cshow :: TextureTarget3D -> String
show :: TextureTarget3D -> String
$cshowList :: [TextureTarget3D] -> ShowS
showList :: [TextureTarget3D] -> ShowS
Show )

instance BindableTextureTarget TextureTarget3D where
   marshalBindableTextureTarget :: TextureTarget3D -> GLenum
marshalBindableTextureTarget = TextureTarget3D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget
   marshalBindableTextureTargetPName1I :: TextureTarget3D -> PName1I
marshalBindableTextureTargetPName1I TextureTarget3D
t = case TextureTarget3D
t of
      TextureTarget3D
Texture3D -> PName1I
GetTextureBinding3D
      TextureTarget3D
Texture2DArray -> PName1I
GetTextureBinding2DArray
      TextureTarget3D
TextureCubeMapArray -> PName1I
GetTextureBindingCubeMapArray

instance ParameterizedTextureTarget TextureTarget3D where
   marshalParameterizedTextureTarget :: TextureTarget3D -> GLenum
marshalParameterizedTextureTarget TextureTarget3D
t = case TextureTarget3D
t of
      TextureTarget3D
Texture3D -> GLenum
GL_TEXTURE_3D
      TextureTarget3D
Texture2DArray -> GLenum
GL_TEXTURE_2D_ARRAY
      TextureTarget3D
TextureCubeMapArray -> GLenum
GL_TEXTURE_CUBE_MAP_ARRAY
   marshalParameterizedTextureTargetProxy :: TextureTarget3D -> GLenum
marshalParameterizedTextureTargetProxy TextureTarget3D
t = case TextureTarget3D
t of
      TextureTarget3D
Texture3D -> GLenum
GL_PROXY_TEXTURE_3D
      TextureTarget3D
Texture2DArray -> GLenum
GL_PROXY_TEXTURE_2D_ARRAY
      TextureTarget3D
TextureCubeMapArray -> GLenum
GL_PROXY_TEXTURE_CUBE_MAP_ARRAY
   marshalParameterizedTextureTargetEnableCap :: TextureTarget3D -> EnableCap
marshalParameterizedTextureTargetEnableCap TextureTarget3D
t = case TextureTarget3D
t of
      TextureTarget3D
Texture3D -> EnableCap
CapTexture3D
      TextureTarget3D
Texture2DArray -> EnableCap
CapTexture2DArray
      TextureTarget3D
TextureCubeMapArray -> EnableCap
CapTextureCubeMapArray

instance ThreeDimensionalTextureTarget TextureTarget3D where
   marshalThreeDimensionalTextureTarget :: Proxy -> TextureTarget3D -> GLenum
marshalThreeDimensionalTextureTarget Proxy
p = case Proxy
p of
      Proxy
NoProxy -> TextureTarget3D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget
      Proxy
Proxy -> TextureTarget3D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTargetProxy

instance QueryableTextureTarget TextureTarget3D where
   marshalQueryableTextureTarget :: TextureTarget3D -> GLenum
marshalQueryableTextureTarget = TextureTarget3D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget

instance GettableTextureTarget TextureTarget3D where
   marshalGettableTextureTarget :: TextureTarget3D -> GLenum
marshalGettableTextureTarget = TextureTarget3D -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget

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

data TextureTarget2DMultisampleArray = Texture2DMultisampleArray
   deriving ( TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
(TextureTarget2DMultisampleArray
 -> TextureTarget2DMultisampleArray -> Bool)
-> (TextureTarget2DMultisampleArray
    -> TextureTarget2DMultisampleArray -> Bool)
-> Eq TextureTarget2DMultisampleArray
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
== :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
$c/= :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
/= :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
Eq, Eq TextureTarget2DMultisampleArray
Eq TextureTarget2DMultisampleArray =>
(TextureTarget2DMultisampleArray
 -> TextureTarget2DMultisampleArray -> Ordering)
-> (TextureTarget2DMultisampleArray
    -> TextureTarget2DMultisampleArray -> Bool)
-> (TextureTarget2DMultisampleArray
    -> TextureTarget2DMultisampleArray -> Bool)
-> (TextureTarget2DMultisampleArray
    -> TextureTarget2DMultisampleArray -> Bool)
-> (TextureTarget2DMultisampleArray
    -> TextureTarget2DMultisampleArray -> Bool)
-> (TextureTarget2DMultisampleArray
    -> TextureTarget2DMultisampleArray
    -> TextureTarget2DMultisampleArray)
-> (TextureTarget2DMultisampleArray
    -> TextureTarget2DMultisampleArray
    -> TextureTarget2DMultisampleArray)
-> Ord TextureTarget2DMultisampleArray
TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Ordering
TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray
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
$ccompare :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Ordering
compare :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Ordering
$c< :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
< :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
$c<= :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
<= :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
$c> :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
> :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
$c>= :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
>= :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray -> Bool
$cmax :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray
max :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray
$cmin :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray
min :: TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray
-> TextureTarget2DMultisampleArray
Ord, Int -> TextureTarget2DMultisampleArray -> ShowS
[TextureTarget2DMultisampleArray] -> ShowS
TextureTarget2DMultisampleArray -> String
(Int -> TextureTarget2DMultisampleArray -> ShowS)
-> (TextureTarget2DMultisampleArray -> String)
-> ([TextureTarget2DMultisampleArray] -> ShowS)
-> Show TextureTarget2DMultisampleArray
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TextureTarget2DMultisampleArray -> ShowS
showsPrec :: Int -> TextureTarget2DMultisampleArray -> ShowS
$cshow :: TextureTarget2DMultisampleArray -> String
show :: TextureTarget2DMultisampleArray -> String
$cshowList :: [TextureTarget2DMultisampleArray] -> ShowS
showList :: [TextureTarget2DMultisampleArray] -> ShowS
Show )

instance BindableTextureTarget TextureTarget2DMultisampleArray where
   marshalBindableTextureTarget :: TextureTarget2DMultisampleArray -> GLenum
marshalBindableTextureTarget = TextureTarget2DMultisampleArray -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget
   marshalBindableTextureTargetPName1I :: TextureTarget2DMultisampleArray -> PName1I
marshalBindableTextureTargetPName1I TextureTarget2DMultisampleArray
t = case TextureTarget2DMultisampleArray
t of
      TextureTarget2DMultisampleArray
Texture2DMultisampleArray -> PName1I
GetTextureBinding2DMultisampleArray

instance ParameterizedTextureTarget TextureTarget2DMultisampleArray where
   marshalParameterizedTextureTarget :: TextureTarget2DMultisampleArray -> GLenum
marshalParameterizedTextureTarget TextureTarget2DMultisampleArray
t = case TextureTarget2DMultisampleArray
t of
      TextureTarget2DMultisampleArray
Texture2DMultisampleArray -> GLenum
GL_TEXTURE_2D_MULTISAMPLE_ARRAY
   marshalParameterizedTextureTargetProxy :: TextureTarget2DMultisampleArray -> GLenum
marshalParameterizedTextureTargetProxy TextureTarget2DMultisampleArray
t = case TextureTarget2DMultisampleArray
t of
      TextureTarget2DMultisampleArray
Texture2DMultisampleArray -> GLenum
GL_PROXY_TEXTURE_2D_MULTISAMPLE_ARRAY
   marshalParameterizedTextureTargetEnableCap :: TextureTarget2DMultisampleArray -> EnableCap
marshalParameterizedTextureTargetEnableCap TextureTarget2DMultisampleArray
t = case TextureTarget2DMultisampleArray
t of
      TextureTarget2DMultisampleArray
Texture2DMultisampleArray -> EnableCap
CapTexture2DMultisampleArray

instance QueryableTextureTarget TextureTarget2DMultisampleArray where
   marshalQueryableTextureTarget :: TextureTarget2DMultisampleArray -> GLenum
marshalQueryableTextureTarget = TextureTarget2DMultisampleArray -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTarget

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

data TextureTargetBuffer = TextureBuffer'
   deriving ( TextureTargetBuffer -> TextureTargetBuffer -> Bool
(TextureTargetBuffer -> TextureTargetBuffer -> Bool)
-> (TextureTargetBuffer -> TextureTargetBuffer -> Bool)
-> Eq TextureTargetBuffer
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: TextureTargetBuffer -> TextureTargetBuffer -> Bool
== :: TextureTargetBuffer -> TextureTargetBuffer -> Bool
$c/= :: TextureTargetBuffer -> TextureTargetBuffer -> Bool
/= :: TextureTargetBuffer -> TextureTargetBuffer -> Bool
Eq, Eq TextureTargetBuffer
Eq TextureTargetBuffer =>
(TextureTargetBuffer -> TextureTargetBuffer -> Ordering)
-> (TextureTargetBuffer -> TextureTargetBuffer -> Bool)
-> (TextureTargetBuffer -> TextureTargetBuffer -> Bool)
-> (TextureTargetBuffer -> TextureTargetBuffer -> Bool)
-> (TextureTargetBuffer -> TextureTargetBuffer -> Bool)
-> (TextureTargetBuffer
    -> TextureTargetBuffer -> TextureTargetBuffer)
-> (TextureTargetBuffer
    -> TextureTargetBuffer -> TextureTargetBuffer)
-> Ord TextureTargetBuffer
TextureTargetBuffer -> TextureTargetBuffer -> Bool
TextureTargetBuffer -> TextureTargetBuffer -> Ordering
TextureTargetBuffer -> TextureTargetBuffer -> TextureTargetBuffer
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
$ccompare :: TextureTargetBuffer -> TextureTargetBuffer -> Ordering
compare :: TextureTargetBuffer -> TextureTargetBuffer -> Ordering
$c< :: TextureTargetBuffer -> TextureTargetBuffer -> Bool
< :: TextureTargetBuffer -> TextureTargetBuffer -> Bool
$c<= :: TextureTargetBuffer -> TextureTargetBuffer -> Bool
<= :: TextureTargetBuffer -> TextureTargetBuffer -> Bool
$c> :: TextureTargetBuffer -> TextureTargetBuffer -> Bool
> :: TextureTargetBuffer -> TextureTargetBuffer -> Bool
$c>= :: TextureTargetBuffer -> TextureTargetBuffer -> Bool
>= :: TextureTargetBuffer -> TextureTargetBuffer -> Bool
$cmax :: TextureTargetBuffer -> TextureTargetBuffer -> TextureTargetBuffer
max :: TextureTargetBuffer -> TextureTargetBuffer -> TextureTargetBuffer
$cmin :: TextureTargetBuffer -> TextureTargetBuffer -> TextureTargetBuffer
min :: TextureTargetBuffer -> TextureTargetBuffer -> TextureTargetBuffer
Ord, Int -> TextureTargetBuffer -> ShowS
[TextureTargetBuffer] -> ShowS
TextureTargetBuffer -> String
(Int -> TextureTargetBuffer -> ShowS)
-> (TextureTargetBuffer -> String)
-> ([TextureTargetBuffer] -> ShowS)
-> Show TextureTargetBuffer
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> TextureTargetBuffer -> ShowS
showsPrec :: Int -> TextureTargetBuffer -> ShowS
$cshow :: TextureTargetBuffer -> String
show :: TextureTargetBuffer -> String
$cshowList :: [TextureTargetBuffer] -> ShowS
showList :: [TextureTargetBuffer] -> ShowS
Show )

instance BindableTextureTarget TextureTargetBuffer where
   marshalBindableTextureTarget :: TextureTargetBuffer -> GLenum
marshalBindableTextureTarget TextureTargetBuffer
t = case TextureTargetBuffer
t of
      TextureTargetBuffer
TextureBuffer' -> GLenum
GL_TEXTURE_BUFFER
   marshalBindableTextureTargetPName1I :: TextureTargetBuffer -> PName1I
marshalBindableTextureTargetPName1I TextureTargetBuffer
t = case TextureTargetBuffer
t of
      TextureTargetBuffer
TextureBuffer' -> PName1I
GetTextureBindingBuffer