-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.OES.MatrixPalette (
  -- * Extension Support
    gl_OES_matrix_palette

  -- * GL_OES_matrix_palette
  , glCurrentPaletteMatrixOES
  , glLoadPaletteFromModelViewMatrixOES
  , glMatrixIndexPointerOES
  , glWeightPointerOES
  , pattern GL_CURRENT_PALETTE_MATRIX_OES
  , pattern GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES
  , pattern GL_MATRIX_INDEX_ARRAY_OES
  , pattern GL_MATRIX_INDEX_ARRAY_POINTER_OES
  , pattern GL_MATRIX_INDEX_ARRAY_SIZE_OES
  , pattern GL_MATRIX_INDEX_ARRAY_STRIDE_OES
  , pattern GL_MATRIX_INDEX_ARRAY_TYPE_OES
  , pattern GL_MATRIX_PALETTE_OES
  , pattern GL_MAX_PALETTE_MATRICES_OES
  , pattern GL_MAX_VERTEX_UNITS_OES
  , pattern GL_WEIGHT_ARRAY_BUFFER_BINDING_OES
  , pattern GL_WEIGHT_ARRAY_OES
  , pattern GL_WEIGHT_ARRAY_POINTER_OES
  , pattern GL_WEIGHT_ARRAY_SIZE_OES
  , pattern GL_WEIGHT_ARRAY_STRIDE_OES
  , pattern GL_WEIGHT_ARRAY_TYPE_OES
) where

import Control.Monad.IO.Class
import Data.Set
import Foreign.Ptr
import Graphics.GL.Internal.FFI
import Graphics.GL.Internal.Proc
import Graphics.GL.Types
import System.IO.Unsafe

-- | Checks that the <https://www.khronos.org/registry/gles/extensions/OES/OES_matrix_palette.txt GL_OES_matrix_palette> extension is available.

gl_OES_matrix_palette :: Bool
gl_OES_matrix_palette :: Bool
gl_OES_matrix_palette = String -> Set String -> Bool
forall a. Ord a => a -> Set a -> Bool
member String
"GL_OES_matrix_palette" Set String
extensions
{-# NOINLINE gl_OES_matrix_palette #-}

-- | Usage: @'glCurrentPaletteMatrixOES' matrixpaletteindex@


glCurrentPaletteMatrixOES :: MonadIO m => GLuint -> m ()
glCurrentPaletteMatrixOES :: forall (m :: * -> *). MonadIO m => GLuint -> m ()
glCurrentPaletteMatrixOES = FunPtr (GLuint -> IO ()) -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> IO ()) -> GLuint -> m ()
ffiuintIOV FunPtr (GLuint -> IO ())
glCurrentPaletteMatrixOESFunPtr

glCurrentPaletteMatrixOESFunPtr :: FunPtr (GLuint -> IO ())
glCurrentPaletteMatrixOESFunPtr :: FunPtr (GLuint -> IO ())
glCurrentPaletteMatrixOESFunPtr = IO (FunPtr (GLuint -> IO ())) -> FunPtr (GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLuint -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glCurrentPaletteMatrixOES")

{-# NOINLINE glCurrentPaletteMatrixOESFunPtr #-}

-- | Usage: @'glLoadPaletteFromModelViewMatrixOES'@


glLoadPaletteFromModelViewMatrixOES :: MonadIO m => m ()
glLoadPaletteFromModelViewMatrixOES :: forall (m :: * -> *). MonadIO m => m ()
glLoadPaletteFromModelViewMatrixOES = FunPtr (IO ()) -> m ()
forall (m :: * -> *). MonadIO m => FunPtr (IO ()) -> m ()
ffiIOV FunPtr (IO ())
glLoadPaletteFromModelViewMatrixOESFunPtr

glLoadPaletteFromModelViewMatrixOESFunPtr :: FunPtr (IO ())
glLoadPaletteFromModelViewMatrixOESFunPtr :: FunPtr (IO ())
glLoadPaletteFromModelViewMatrixOESFunPtr = IO (FunPtr (IO ())) -> FunPtr (IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glLoadPaletteFromModelViewMatrixOES")

{-# NOINLINE glLoadPaletteFromModelViewMatrixOESFunPtr #-}

-- | Usage: @'glMatrixIndexPointerOES' size type stride pointer@
--
-- The length of @pointer@ should be @COMPSIZE(size,type,stride)@.


glMatrixIndexPointerOES :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glMatrixIndexPointerOES :: forall (m :: * -> *).
MonadIO m =>
GLint -> GLuint -> GLint -> Ptr () -> m ()
glMatrixIndexPointerOES = FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ())
-> GLint -> GLuint -> GLint -> Ptr () -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ())
-> GLint -> GLuint -> GLint -> Ptr () -> m ()
ffiintenumsizeiPtrVIOV FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ())
glMatrixIndexPointerOESFunPtr

glMatrixIndexPointerOESFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glMatrixIndexPointerOESFunPtr :: FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ())
glMatrixIndexPointerOESFunPtr = IO (FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ()))
-> FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glMatrixIndexPointerOES")

{-# NOINLINE glMatrixIndexPointerOESFunPtr #-}

-- | Usage: @'glWeightPointerOES' size type stride pointer@
--
-- The length of @pointer@ should be @COMPSIZE(type,stride)@.


glWeightPointerOES :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glWeightPointerOES :: forall (m :: * -> *).
MonadIO m =>
GLint -> GLuint -> GLint -> Ptr () -> m ()
glWeightPointerOES = FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ())
-> GLint -> GLuint -> GLint -> Ptr () -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ())
-> GLint -> GLuint -> GLint -> Ptr () -> m ()
ffiintenumsizeiPtrVIOV FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ())
glWeightPointerOESFunPtr

glWeightPointerOESFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glWeightPointerOESFunPtr :: FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ())
glWeightPointerOESFunPtr = IO (FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ()))
-> FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ())
forall a. IO a -> a
unsafePerformIO (String -> IO (FunPtr (GLint -> GLuint -> GLint -> Ptr () -> IO ()))
forall a. String -> IO (FunPtr a)
getProcAddress String
"glWeightPointerOES")

{-# NOINLINE glWeightPointerOESFunPtr #-}

pattern GL_CURRENT_PALETTE_MATRIX_OES  :: (Eq a, Num a) => a

pattern $mGL_CURRENT_PALETTE_MATRIX_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_CURRENT_PALETTE_MATRIX_OES :: forall a. (Eq a, Num a) => a
GL_CURRENT_PALETTE_MATRIX_OES = 0x8843

pattern GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES  :: (Eq a, Num a) => a

pattern $mGL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES :: forall a. (Eq a, Num a) => a
GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 0x8B9E

pattern GL_MATRIX_INDEX_ARRAY_OES  :: (Eq a, Num a) => a

pattern $mGL_MATRIX_INDEX_ARRAY_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_MATRIX_INDEX_ARRAY_OES :: forall a. (Eq a, Num a) => a
GL_MATRIX_INDEX_ARRAY_OES = 0x8844

pattern GL_MATRIX_INDEX_ARRAY_POINTER_OES  :: (Eq a, Num a) => a

pattern $mGL_MATRIX_INDEX_ARRAY_POINTER_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_MATRIX_INDEX_ARRAY_POINTER_OES :: forall a. (Eq a, Num a) => a
GL_MATRIX_INDEX_ARRAY_POINTER_OES = 0x8849

pattern GL_MATRIX_INDEX_ARRAY_SIZE_OES  :: (Eq a, Num a) => a

pattern $mGL_MATRIX_INDEX_ARRAY_SIZE_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_MATRIX_INDEX_ARRAY_SIZE_OES :: forall a. (Eq a, Num a) => a
GL_MATRIX_INDEX_ARRAY_SIZE_OES = 0x8846

pattern GL_MATRIX_INDEX_ARRAY_STRIDE_OES  :: (Eq a, Num a) => a

pattern $mGL_MATRIX_INDEX_ARRAY_STRIDE_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_MATRIX_INDEX_ARRAY_STRIDE_OES :: forall a. (Eq a, Num a) => a
GL_MATRIX_INDEX_ARRAY_STRIDE_OES = 0x8848

pattern GL_MATRIX_INDEX_ARRAY_TYPE_OES  :: (Eq a, Num a) => a

pattern $mGL_MATRIX_INDEX_ARRAY_TYPE_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_MATRIX_INDEX_ARRAY_TYPE_OES :: forall a. (Eq a, Num a) => a
GL_MATRIX_INDEX_ARRAY_TYPE_OES = 0x8847

pattern GL_MATRIX_PALETTE_OES  :: (Eq a, Num a) => a

pattern $mGL_MATRIX_PALETTE_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_MATRIX_PALETTE_OES :: forall a. (Eq a, Num a) => a
GL_MATRIX_PALETTE_OES = 0x8840

pattern GL_MAX_PALETTE_MATRICES_OES  :: (Eq a, Num a) => a

pattern $mGL_MAX_PALETTE_MATRICES_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_MAX_PALETTE_MATRICES_OES :: forall a. (Eq a, Num a) => a
GL_MAX_PALETTE_MATRICES_OES = 0x8842

pattern GL_MAX_VERTEX_UNITS_OES  :: (Eq a, Num a) => a

pattern $mGL_MAX_VERTEX_UNITS_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_MAX_VERTEX_UNITS_OES :: forall a. (Eq a, Num a) => a
GL_MAX_VERTEX_UNITS_OES = 0x86A4

pattern GL_WEIGHT_ARRAY_BUFFER_BINDING_OES  :: (Eq a, Num a) => a

pattern $mGL_WEIGHT_ARRAY_BUFFER_BINDING_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_WEIGHT_ARRAY_BUFFER_BINDING_OES :: forall a. (Eq a, Num a) => a
GL_WEIGHT_ARRAY_BUFFER_BINDING_OES = 0x889E

pattern GL_WEIGHT_ARRAY_OES  :: (Eq a, Num a) => a

pattern $mGL_WEIGHT_ARRAY_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_WEIGHT_ARRAY_OES :: forall a. (Eq a, Num a) => a
GL_WEIGHT_ARRAY_OES = 0x86AD

pattern GL_WEIGHT_ARRAY_POINTER_OES  :: (Eq a, Num a) => a

pattern $mGL_WEIGHT_ARRAY_POINTER_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_WEIGHT_ARRAY_POINTER_OES :: forall a. (Eq a, Num a) => a
GL_WEIGHT_ARRAY_POINTER_OES = 0x86AC

pattern GL_WEIGHT_ARRAY_SIZE_OES  :: (Eq a, Num a) => a

pattern $mGL_WEIGHT_ARRAY_SIZE_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_WEIGHT_ARRAY_SIZE_OES :: forall a. (Eq a, Num a) => a
GL_WEIGHT_ARRAY_SIZE_OES = 0x86AB

pattern GL_WEIGHT_ARRAY_STRIDE_OES  :: (Eq a, Num a) => a

pattern $mGL_WEIGHT_ARRAY_STRIDE_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_WEIGHT_ARRAY_STRIDE_OES :: forall a. (Eq a, Num a) => a
GL_WEIGHT_ARRAY_STRIDE_OES = 0x86AA

pattern GL_WEIGHT_ARRAY_TYPE_OES  :: (Eq a, Num a) => a

pattern $mGL_WEIGHT_ARRAY_TYPE_OES :: forall {r} {a}.
(Eq a, Num a) =>
a -> ((# #) -> r) -> ((# #) -> r) -> r
$bGL_WEIGHT_ARRAY_TYPE_OES :: forall a. (Eq a, Num a) => a
GL_WEIGHT_ARRAY_TYPE_OES = 0x86A9