-- This file was automatically generated.
{-# LANGUAGE ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Raw.Extension.EXT.Histogram (
  -- * Extension Support
    gl_EXT_histogram

  -- * GL_EXT_histogram
  , glGetHistogramEXT
  , glGetHistogramParameterfvEXT
  , glGetHistogramParameterivEXT
  , glGetMinmaxEXT
  , glGetMinmaxParameterfvEXT
  , glGetMinmaxParameterivEXT
  , glHistogramEXT
  , glMinmaxEXT
  , glResetHistogramEXT
  , glResetMinmaxEXT
  , pattern GL_HISTOGRAM_ALPHA_SIZE_EXT
  , pattern GL_HISTOGRAM_BLUE_SIZE_EXT
  , pattern GL_HISTOGRAM_EXT
  , pattern GL_HISTOGRAM_FORMAT_EXT
  , pattern GL_HISTOGRAM_GREEN_SIZE_EXT
  , pattern GL_HISTOGRAM_LUMINANCE_SIZE_EXT
  , pattern GL_HISTOGRAM_RED_SIZE_EXT
  , pattern GL_HISTOGRAM_SINK_EXT
  , pattern GL_HISTOGRAM_WIDTH_EXT
  , pattern GL_MINMAX_EXT
  , pattern GL_MINMAX_FORMAT_EXT
  , pattern GL_MINMAX_SINK_EXT
  , pattern GL_PROXY_HISTOGRAM_EXT
  , pattern GL_TABLE_TOO_LARGE_EXT
) 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_EXT_histogram :: Bool
gl_EXT_histogram = member "GL_EXT_histogram" extensions

glGetHistogramEXT :: MonadIO m => GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> m ()
glGetHistogramEXT = ffienumbooleanenumenumPtrVIOV glGetHistogramEXTFunPtr

glGetHistogramEXTFunPtr :: FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> IO ())
glGetHistogramEXTFunPtr = unsafePerformIO (getProcAddress "glGetHistogramEXT")

{-# NOINLINE glGetHistogramEXTFunPtr #-}

glGetHistogramParameterfvEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetHistogramParameterfvEXT = ffienumenumPtrfloatIOV glGetHistogramParameterfvEXTFunPtr

glGetHistogramParameterfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetHistogramParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetHistogramParameterfvEXT")

{-# NOINLINE glGetHistogramParameterfvEXTFunPtr #-}

glGetHistogramParameterivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetHistogramParameterivEXT = ffienumenumPtrintIOV glGetHistogramParameterivEXTFunPtr

glGetHistogramParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetHistogramParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetHistogramParameterivEXT")

{-# NOINLINE glGetHistogramParameterivEXTFunPtr #-}

glGetMinmaxEXT :: MonadIO m => GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> m ()
glGetMinmaxEXT = ffienumbooleanenumenumPtrVIOV glGetMinmaxEXTFunPtr

glGetMinmaxEXTFunPtr :: FunPtr (GLenum -> GLboolean -> GLenum -> GLenum -> Ptr () -> IO ())
glGetMinmaxEXTFunPtr = unsafePerformIO (getProcAddress "glGetMinmaxEXT")

{-# NOINLINE glGetMinmaxEXTFunPtr #-}

glGetMinmaxParameterfvEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLfloat -> m ()
glGetMinmaxParameterfvEXT = ffienumenumPtrfloatIOV glGetMinmaxParameterfvEXTFunPtr

glGetMinmaxParameterfvEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLfloat -> IO ())
glGetMinmaxParameterfvEXTFunPtr = unsafePerformIO (getProcAddress "glGetMinmaxParameterfvEXT")

{-# NOINLINE glGetMinmaxParameterfvEXTFunPtr #-}

glGetMinmaxParameterivEXT :: MonadIO m => GLenum -> GLenum -> Ptr GLint -> m ()
glGetMinmaxParameterivEXT = ffienumenumPtrintIOV glGetMinmaxParameterivEXTFunPtr

glGetMinmaxParameterivEXTFunPtr :: FunPtr (GLenum -> GLenum -> Ptr GLint -> IO ())
glGetMinmaxParameterivEXTFunPtr = unsafePerformIO (getProcAddress "glGetMinmaxParameterivEXT")

{-# NOINLINE glGetMinmaxParameterivEXTFunPtr #-}

glHistogramEXT :: MonadIO m => GLenum -> GLsizei -> GLenum -> GLboolean -> m ()
glHistogramEXT = ffienumsizeienumbooleanIOV glHistogramEXTFunPtr

glHistogramEXTFunPtr :: FunPtr (GLenum -> GLsizei -> GLenum -> GLboolean -> IO ())
glHistogramEXTFunPtr = unsafePerformIO (getProcAddress "glHistogramEXT")

{-# NOINLINE glHistogramEXTFunPtr #-}

glMinmaxEXT :: MonadIO m => GLenum -> GLenum -> GLboolean -> m ()
glMinmaxEXT = ffienumenumbooleanIOV glMinmaxEXTFunPtr

glMinmaxEXTFunPtr :: FunPtr (GLenum -> GLenum -> GLboolean -> IO ())
glMinmaxEXTFunPtr = unsafePerformIO (getProcAddress "glMinmaxEXT")

{-# NOINLINE glMinmaxEXTFunPtr #-}

glResetHistogramEXT :: MonadIO m => GLenum -> m ()
glResetHistogramEXT = ffienumIOV glResetHistogramEXTFunPtr

glResetHistogramEXTFunPtr :: FunPtr (GLenum -> IO ())
glResetHistogramEXTFunPtr = unsafePerformIO (getProcAddress "glResetHistogramEXT")

{-# NOINLINE glResetHistogramEXTFunPtr #-}

glResetMinmaxEXT :: MonadIO m => GLenum -> m ()
glResetMinmaxEXT = ffienumIOV glResetMinmaxEXTFunPtr

glResetMinmaxEXTFunPtr :: FunPtr (GLenum -> IO ())
glResetMinmaxEXTFunPtr = unsafePerformIO (getProcAddress "glResetMinmaxEXT")

{-# NOINLINE glResetMinmaxEXTFunPtr #-}

pattern GL_HISTOGRAM_ALPHA_SIZE_EXT = 0x802B :: GLenum

pattern GL_HISTOGRAM_BLUE_SIZE_EXT = 0x802A :: GLenum

pattern GL_HISTOGRAM_EXT = 0x8024 :: GLenum

pattern GL_HISTOGRAM_FORMAT_EXT = 0x8027 :: GLenum

pattern GL_HISTOGRAM_GREEN_SIZE_EXT = 0x8029 :: GLenum

pattern GL_HISTOGRAM_LUMINANCE_SIZE_EXT = 0x802C :: GLenum

pattern GL_HISTOGRAM_RED_SIZE_EXT = 0x8028 :: GLenum

pattern GL_HISTOGRAM_SINK_EXT = 0x802D :: GLenum

pattern GL_HISTOGRAM_WIDTH_EXT = 0x8026 :: GLenum

pattern GL_MINMAX_EXT = 0x802E :: GLenum

pattern GL_MINMAX_FORMAT_EXT = 0x802F :: GLenum

pattern GL_MINMAX_SINK_EXT = 0x8030 :: GLenum

pattern GL_PROXY_HISTOGRAM_EXT = 0x8025 :: GLenum

pattern GL_TABLE_TOO_LARGE_EXT = 0x8031 :: GLenum