-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.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.Raw.Internal.FFI
import Graphics.GL.Raw.Internal.Proc
import Graphics.GL.Raw.Types
import System.IO.Unsafe

gl_OES_matrix_palette :: Bool
gl_OES_matrix_palette = member "GL_OES_matrix_palette" extensions

glCurrentPaletteMatrixOES :: MonadIO m => GLuint -> m ()
glCurrentPaletteMatrixOES = ffiuintIOV glCurrentPaletteMatrixOESFunPtr

glCurrentPaletteMatrixOESFunPtr :: FunPtr (GLuint -> IO ())
glCurrentPaletteMatrixOESFunPtr = unsafePerformIO (getProcAddress "glCurrentPaletteMatrixOES")

{-# NOINLINE glCurrentPaletteMatrixOESFunPtr #-}

glLoadPaletteFromModelViewMatrixOES :: MonadIO m => m ()
glLoadPaletteFromModelViewMatrixOES = ffiIOV glLoadPaletteFromModelViewMatrixOESFunPtr

glLoadPaletteFromModelViewMatrixOESFunPtr :: FunPtr (IO ())
glLoadPaletteFromModelViewMatrixOESFunPtr = unsafePerformIO (getProcAddress "glLoadPaletteFromModelViewMatrixOES")

{-# NOINLINE glLoadPaletteFromModelViewMatrixOESFunPtr #-}

glMatrixIndexPointerOES :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glMatrixIndexPointerOES = ffiintenumsizeiPtrVIOV glMatrixIndexPointerOESFunPtr

glMatrixIndexPointerOESFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glMatrixIndexPointerOESFunPtr = unsafePerformIO (getProcAddress "glMatrixIndexPointerOES")

{-# NOINLINE glMatrixIndexPointerOESFunPtr #-}

glWeightPointerOES :: MonadIO m => GLint -> GLenum -> GLsizei -> Ptr () -> m ()
glWeightPointerOES = ffiintenumsizeiPtrVIOV glWeightPointerOESFunPtr

glWeightPointerOESFunPtr :: FunPtr (GLint -> GLenum -> GLsizei -> Ptr () -> IO ())
glWeightPointerOESFunPtr = unsafePerformIO (getProcAddress "glWeightPointerOES")

{-# NOINLINE glWeightPointerOESFunPtr #-}

pattern GL_CURRENT_PALETTE_MATRIX_OES = 0x8843 :: GLenum

pattern GL_MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES = 0x8B9E :: GLenum

pattern GL_MATRIX_INDEX_ARRAY_OES = 0x8844 :: GLenum

pattern GL_MATRIX_INDEX_ARRAY_POINTER_OES = 0x8849 :: GLenum

pattern GL_MATRIX_INDEX_ARRAY_SIZE_OES = 0x8846 :: GLenum

pattern GL_MATRIX_INDEX_ARRAY_STRIDE_OES = 0x8848 :: GLenum

pattern GL_MATRIX_INDEX_ARRAY_TYPE_OES = 0x8847 :: GLenum

pattern GL_MATRIX_PALETTE_OES = 0x8840 :: GLenum

pattern GL_MAX_PALETTE_MATRICES_OES = 0x8842 :: GLenum

pattern GL_MAX_VERTEX_UNITS_OES = 0x86A4 :: GLenum

pattern GL_WEIGHT_ARRAY_BUFFER_BINDING_OES = 0x889E :: GLenum

pattern GL_WEIGHT_ARRAY_OES = 0x86AD :: GLenum

pattern GL_WEIGHT_ARRAY_POINTER_OES = 0x86AC :: GLenum

pattern GL_WEIGHT_ARRAY_SIZE_OES = 0x86AB :: GLenum

pattern GL_WEIGHT_ARRAY_STRIDE_OES = 0x86AA :: GLenum

pattern GL_WEIGHT_ARRAY_TYPE_OES = 0x86A9 :: GLenum