-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.EXT.DrawBuffersIndexed (
  -- * Extension Support
    gl_EXT_draw_buffers_indexed

  -- * GL_EXT_draw_buffers_indexed
  , glBlendEquationSeparateiEXT
  , glBlendEquationiEXT
  , glBlendFuncSeparateiEXT
  , glBlendFunciEXT
  , glColorMaskiEXT
  , glDisableiEXT
  , glEnableiEXT
  , glIsEnablediEXT
  , pattern GL_BLEND
  , pattern GL_BLEND_DST_ALPHA
  , pattern GL_BLEND_DST_RGB
  , pattern GL_BLEND_EQUATION_ALPHA
  , pattern GL_BLEND_EQUATION_RGB
  , pattern GL_BLEND_SRC_ALPHA
  , pattern GL_BLEND_SRC_RGB
  , pattern GL_COLOR_WRITEMASK
  , pattern GL_CONSTANT_ALPHA
  , pattern GL_CONSTANT_COLOR
  , pattern GL_DST_ALPHA
  , pattern GL_DST_COLOR
  , pattern GL_FUNC_ADD
  , pattern GL_FUNC_REVERSE_SUBTRACT
  , pattern GL_FUNC_SUBTRACT
  , pattern GL_MAX
  , pattern GL_MIN
  , pattern GL_ONE
  , pattern GL_ONE_MINUS_CONSTANT_ALPHA
  , pattern GL_ONE_MINUS_CONSTANT_COLOR
  , pattern GL_ONE_MINUS_DST_ALPHA
  , pattern GL_ONE_MINUS_DST_COLOR
  , pattern GL_ONE_MINUS_SRC_ALPHA
  , pattern GL_ONE_MINUS_SRC_COLOR
  , pattern GL_SRC_ALPHA
  , pattern GL_SRC_ALPHA_SATURATE
  , pattern GL_SRC_COLOR
  , pattern GL_ZERO
) 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.Internal.Shared
import Graphics.GL.Types
import System.IO.Unsafe

-- | Checks that the <https://www.khronos.org/registry/gles/extensions/EXT/EXT_draw_buffers_indexed.txt GL_EXT_draw_buffers_indexed> extension is available.

gl_EXT_draw_buffers_indexed :: Bool
gl_EXT_draw_buffers_indexed :: Bool
gl_EXT_draw_buffers_indexed = [Char] -> Set [Char] -> Bool
forall a. Ord a => a -> Set a -> Bool
member "GL_EXT_draw_buffers_indexed" Set [Char]
extensions
{-# NOINLINE gl_EXT_draw_buffers_indexed #-}

-- | Usage: @'glBlendEquationSeparateiEXT' buf modeRGB modeAlpha@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendEquationSeparatei'.


glBlendEquationSeparateiEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
glBlendEquationSeparateiEXT :: GLuint -> GLuint -> GLuint -> m ()
glBlendEquationSeparateiEXT = FunPtr (GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> m ()
ffiuintenumenumIOV FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glBlendEquationSeparateiEXTFunPtr

glBlendEquationSeparateiEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
glBlendEquationSeparateiEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glBlendEquationSeparateiEXTFunPtr = IO (FunPtr (GLuint -> GLuint -> GLuint -> IO ()))
-> FunPtr (GLuint -> GLuint -> GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLuint -> GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBlendEquationSeparateiEXT")

{-# NOINLINE glBlendEquationSeparateiEXTFunPtr #-}

-- | Usage: @'glBlendEquationiEXT' buf mode@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendEquationi'.


glBlendEquationiEXT :: MonadIO m => GLuint -> GLenum -> m ()
glBlendEquationiEXT :: GLuint -> GLuint -> m ()
glBlendEquationiEXT = FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> m ()
ffiuintenumIOV FunPtr (GLuint -> GLuint -> IO ())
glBlendEquationiEXTFunPtr

glBlendEquationiEXTFunPtr :: FunPtr (GLuint -> GLenum -> IO ())
glBlendEquationiEXTFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glBlendEquationiEXTFunPtr = IO (FunPtr (GLuint -> GLuint -> IO ()))
-> FunPtr (GLuint -> GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBlendEquationiEXT")

{-# NOINLINE glBlendEquationiEXTFunPtr #-}

-- | Usage: @'glBlendFuncSeparateiEXT' buf srcRGB dstRGB srcAlpha dstAlpha@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendFuncSeparatei'.


glBlendFuncSeparateiEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
glBlendFuncSeparateiEXT :: GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
glBlendFuncSeparateiEXT = FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
ffiuintenumenumenumenumIOV FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glBlendFuncSeparateiEXTFunPtr

glBlendFuncSeparateiEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> GLenum -> GLenum -> IO ())
glBlendFuncSeparateiEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
glBlendFuncSeparateiEXTFunPtr = IO
  (FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()))
-> FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr (GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBlendFuncSeparateiEXT")

{-# NOINLINE glBlendFuncSeparateiEXTFunPtr #-}

-- | Usage: @'glBlendFunciEXT' buf src dst@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glBlendFunci'.


glBlendFunciEXT :: MonadIO m => GLuint -> GLenum -> GLenum -> m ()
glBlendFunciEXT :: GLuint -> GLuint -> GLuint -> m ()
glBlendFunciEXT = FunPtr (GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> GLuint -> IO ())
-> GLuint -> GLuint -> GLuint -> m ()
ffiuintenumenumIOV FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glBlendFunciEXTFunPtr

glBlendFunciEXTFunPtr :: FunPtr (GLuint -> GLenum -> GLenum -> IO ())
glBlendFunciEXTFunPtr :: FunPtr (GLuint -> GLuint -> GLuint -> IO ())
glBlendFunciEXTFunPtr = IO (FunPtr (GLuint -> GLuint -> GLuint -> IO ()))
-> FunPtr (GLuint -> GLuint -> GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLuint -> GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glBlendFunciEXT")

{-# NOINLINE glBlendFunciEXTFunPtr #-}

-- | Usage: @'glColorMaskiEXT' index r g b a@
--
-- The parameter @r@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The parameter @g@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The parameter @b@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- The parameter @a@ is a @Boolean@, one of: 'Graphics.GL.Internal.Shared.GL_FALSE', 'Graphics.GL.Internal.Shared.GL_TRUE'.
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glColorMaski'.


glColorMaskiEXT :: MonadIO m => GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
glColorMaskiEXT :: GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
glColorMaskiEXT = FunPtr
  (GLuint
   -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
-> GLuint
-> GLboolean
-> GLboolean
-> GLboolean
-> GLboolean
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLuint
   -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
-> GLuint
-> GLboolean
-> GLboolean
-> GLboolean
-> GLboolean
-> m ()
ffiuintbooleanbooleanbooleanbooleanIOV FunPtr
  (GLuint
   -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
glColorMaskiEXTFunPtr

glColorMaskiEXTFunPtr :: FunPtr (GLuint -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
glColorMaskiEXTFunPtr :: FunPtr
  (GLuint
   -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
glColorMaskiEXTFunPtr = IO
  (FunPtr
     (GLuint
      -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ()))
-> FunPtr
     (GLuint
      -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLuint
         -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glColorMaskiEXT")

{-# NOINLINE glColorMaskiEXTFunPtr #-}

-- | Usage: @'glDisableiEXT' target index@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glDisablei'.


glDisableiEXT :: MonadIO m => GLenum -> GLuint -> m ()
glDisableiEXT :: GLuint -> GLuint -> m ()
glDisableiEXT = FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> m ()
ffienumuintIOV FunPtr (GLuint -> GLuint -> IO ())
glDisableiEXTFunPtr

glDisableiEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glDisableiEXTFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glDisableiEXTFunPtr = IO (FunPtr (GLuint -> GLuint -> IO ()))
-> FunPtr (GLuint -> GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glDisableiEXT")

{-# NOINLINE glDisableiEXTFunPtr #-}

-- | Usage: @'glEnableiEXT' target index@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glEnablei'.


glEnableiEXT :: MonadIO m => GLenum -> GLuint -> m ()
glEnableiEXT :: GLuint -> GLuint -> m ()
glEnableiEXT = FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> IO ()) -> GLuint -> GLuint -> m ()
ffienumuintIOV FunPtr (GLuint -> GLuint -> IO ())
glEnableiEXTFunPtr

glEnableiEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO ())
glEnableiEXTFunPtr :: FunPtr (GLuint -> GLuint -> IO ())
glEnableiEXTFunPtr = IO (FunPtr (GLuint -> GLuint -> IO ()))
-> FunPtr (GLuint -> GLuint -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLuint -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glEnableiEXT")

{-# NOINLINE glEnableiEXTFunPtr #-}

-- | Usage: @'glIsEnablediEXT' target index@
--
-- This command is an alias for 'Graphics.GL.Internal.Shared.glIsEnabledi'.


glIsEnablediEXT :: MonadIO m => GLenum -> GLuint -> m GLboolean
glIsEnablediEXT :: GLuint -> GLuint -> m GLboolean
glIsEnablediEXT = FunPtr (GLuint -> GLuint -> IO GLboolean)
-> GLuint -> GLuint -> m GLboolean
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLuint -> GLuint -> IO GLboolean)
-> GLuint -> GLuint -> m GLboolean
ffienumuintIOboolean FunPtr (GLuint -> GLuint -> IO GLboolean)
glIsEnablediEXTFunPtr

glIsEnablediEXTFunPtr :: FunPtr (GLenum -> GLuint -> IO GLboolean)
glIsEnablediEXTFunPtr :: FunPtr (GLuint -> GLuint -> IO GLboolean)
glIsEnablediEXTFunPtr = IO (FunPtr (GLuint -> GLuint -> IO GLboolean))
-> FunPtr (GLuint -> GLuint -> IO GLboolean)
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLuint -> GLuint -> IO GLboolean))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glIsEnablediEXT")

{-# NOINLINE glIsEnablediEXTFunPtr #-}