-- This file was automatically generated.
{-# LANGUAGE CPP, ScopedTypeVariables, PatternSynonyms #-}
module Graphics.GL.Ext.SGIX.PolynomialFfd (
  -- * Extension Support
    gl_SGIX_polynomial_ffd

  -- * GL_SGIX_polynomial_ffd
  , glDeformSGIX
  , glDeformationMap3dSGIX
  , glDeformationMap3fSGIX
  , glLoadIdentityDeformationMapSGIX
  , pattern GL_DEFORMATIONS_MASK_SGIX
  , pattern GL_GEOMETRY_DEFORMATION_BIT_SGIX
  , pattern GL_GEOMETRY_DEFORMATION_SGIX
  , pattern GL_MAX_DEFORMATION_ORDER_SGIX
  , pattern GL_TEXTURE_DEFORMATION_BIT_SGIX
  , pattern GL_TEXTURE_DEFORMATION_SGIX
) 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 GL_SGIX_polynomial_ffd extension is available.

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

-- | Usage: @'glDeformSGIX' mask@
--
-- The parameter @mask@ is a @FfdMaskSGIX@, one of: .


glDeformSGIX :: MonadIO m => GLbitfield -> m ()
glDeformSGIX :: GLbitfield -> m ()
glDeformSGIX = FunPtr (GLbitfield -> IO ()) -> GLbitfield -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLbitfield -> IO ()) -> GLbitfield -> m ()
ffibitfieldIOV FunPtr (GLbitfield -> IO ())
glDeformSGIXFunPtr

glDeformSGIXFunPtr :: FunPtr (GLbitfield -> IO ())
glDeformSGIXFunPtr :: FunPtr (GLbitfield -> IO ())
glDeformSGIXFunPtr = IO (FunPtr (GLbitfield -> IO ())) -> FunPtr (GLbitfield -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLbitfield -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glDeformSGIX")

{-# NOINLINE glDeformSGIXFunPtr #-}

-- | Usage: @'glDeformationMap3dSGIX' target u1 u2 ustride uorder v1 v2 vstride vorder w1 w2 wstride worder points@
--
-- The parameter @target@ is a @FfdTargetSGIX@, one of: 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_GEOMETRY_DEFORMATION_SGIX', 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_TEXTURE_DEFORMATION_SGIX'.
--
-- The parameter @u1@ is a @CoordD@.
--
-- The parameter @u2@ is a @CoordD@.
--
-- The parameter @uorder@ is a @CheckedInt32@.
--
-- The parameter @v1@ is a @CoordD@.
--
-- The parameter @v2@ is a @CoordD@.
--
-- The parameter @vorder@ is a @CheckedInt32@.
--
-- The parameter @w1@ is a @CoordD@.
--
-- The parameter @w2@ is a @CoordD@.
--
-- The parameter @worder@ is a @CheckedInt32@.
--
-- The parameter @points@ is a @CoordD@.
--
-- The length of @points@ should be @COMPSIZE(target,ustride,uorder,vstride,vorder,wstride,worder)@.


glDeformationMap3dSGIX :: MonadIO m => GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> m ()
glDeformationMap3dSGIX :: GLbitfield
-> GLdouble
-> GLdouble
-> GLint
-> GLint
-> GLdouble
-> GLdouble
-> GLint
-> GLint
-> GLdouble
-> GLdouble
-> GLint
-> GLint
-> Ptr GLdouble
-> m ()
glDeformationMap3dSGIX = FunPtr
  (GLbitfield
   -> GLdouble
   -> GLdouble
   -> GLint
   -> GLint
   -> GLdouble
   -> GLdouble
   -> GLint
   -> GLint
   -> GLdouble
   -> GLdouble
   -> GLint
   -> GLint
   -> Ptr GLdouble
   -> IO ())
-> GLbitfield
-> GLdouble
-> GLdouble
-> GLint
-> GLint
-> GLdouble
-> GLdouble
-> GLint
-> GLint
-> GLdouble
-> GLdouble
-> GLint
-> GLint
-> Ptr GLdouble
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLbitfield
   -> GLdouble
   -> GLdouble
   -> GLint
   -> GLint
   -> GLdouble
   -> GLdouble
   -> GLint
   -> GLint
   -> GLdouble
   -> GLdouble
   -> GLint
   -> GLint
   -> Ptr GLdouble
   -> IO ())
-> GLbitfield
-> GLdouble
-> GLdouble
-> GLint
-> GLint
-> GLdouble
-> GLdouble
-> GLint
-> GLint
-> GLdouble
-> GLdouble
-> GLint
-> GLint
-> Ptr GLdouble
-> m ()
ffienumdoubledoubleintintdoubledoubleintintdoubledoubleintintPtrdoubleIOV FunPtr
  (GLbitfield
   -> GLdouble
   -> GLdouble
   -> GLint
   -> GLint
   -> GLdouble
   -> GLdouble
   -> GLint
   -> GLint
   -> GLdouble
   -> GLdouble
   -> GLint
   -> GLint
   -> Ptr GLdouble
   -> IO ())
glDeformationMap3dSGIXFunPtr

glDeformationMap3dSGIXFunPtr :: FunPtr (GLenum -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> GLdouble -> GLdouble -> GLint -> GLint -> Ptr GLdouble -> IO ())
glDeformationMap3dSGIXFunPtr :: FunPtr
  (GLbitfield
   -> GLdouble
   -> GLdouble
   -> GLint
   -> GLint
   -> GLdouble
   -> GLdouble
   -> GLint
   -> GLint
   -> GLdouble
   -> GLdouble
   -> GLint
   -> GLint
   -> Ptr GLdouble
   -> IO ())
glDeformationMap3dSGIXFunPtr = IO
  (FunPtr
     (GLbitfield
      -> GLdouble
      -> GLdouble
      -> GLint
      -> GLint
      -> GLdouble
      -> GLdouble
      -> GLint
      -> GLint
      -> GLdouble
      -> GLdouble
      -> GLint
      -> GLint
      -> Ptr GLdouble
      -> IO ()))
-> FunPtr
     (GLbitfield
      -> GLdouble
      -> GLdouble
      -> GLint
      -> GLint
      -> GLdouble
      -> GLdouble
      -> GLint
      -> GLint
      -> GLdouble
      -> GLdouble
      -> GLint
      -> GLint
      -> Ptr GLdouble
      -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLbitfield
         -> GLdouble
         -> GLdouble
         -> GLint
         -> GLint
         -> GLdouble
         -> GLdouble
         -> GLint
         -> GLint
         -> GLdouble
         -> GLdouble
         -> GLint
         -> GLint
         -> Ptr GLdouble
         -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glDeformationMap3dSGIX")

{-# NOINLINE glDeformationMap3dSGIXFunPtr #-}

-- | Usage: @'glDeformationMap3fSGIX' target u1 u2 ustride uorder v1 v2 vstride vorder w1 w2 wstride worder points@
--
-- The parameter @target@ is a @FfdTargetSGIX@, one of: 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_GEOMETRY_DEFORMATION_SGIX', 'Graphics.GL.Ext.SGIX.PolynomialFfd.GL_TEXTURE_DEFORMATION_SGIX'.
--
-- The parameter @u1@ is a @CoordF@.
--
-- The parameter @u2@ is a @CoordF@.
--
-- The parameter @uorder@ is a @CheckedInt32@.
--
-- The parameter @v1@ is a @CoordF@.
--
-- The parameter @v2@ is a @CoordF@.
--
-- The parameter @vorder@ is a @CheckedInt32@.
--
-- The parameter @w1@ is a @CoordF@.
--
-- The parameter @w2@ is a @CoordF@.
--
-- The parameter @worder@ is a @CheckedInt32@.
--
-- The parameter @points@ is a @CoordF@.
--
-- The length of @points@ should be @COMPSIZE(target,ustride,uorder,vstride,vorder,wstride,worder)@.


glDeformationMap3fSGIX :: MonadIO m => GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> m ()
glDeformationMap3fSGIX :: GLbitfield
-> GLfloat
-> GLfloat
-> GLint
-> GLint
-> GLfloat
-> GLfloat
-> GLint
-> GLint
-> GLfloat
-> GLfloat
-> GLint
-> GLint
-> Ptr GLfloat
-> m ()
glDeformationMap3fSGIX = FunPtr
  (GLbitfield
   -> GLfloat
   -> GLfloat
   -> GLint
   -> GLint
   -> GLfloat
   -> GLfloat
   -> GLint
   -> GLint
   -> GLfloat
   -> GLfloat
   -> GLint
   -> GLint
   -> Ptr GLfloat
   -> IO ())
-> GLbitfield
-> GLfloat
-> GLfloat
-> GLint
-> GLint
-> GLfloat
-> GLfloat
-> GLint
-> GLint
-> GLfloat
-> GLfloat
-> GLint
-> GLint
-> Ptr GLfloat
-> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr
  (GLbitfield
   -> GLfloat
   -> GLfloat
   -> GLint
   -> GLint
   -> GLfloat
   -> GLfloat
   -> GLint
   -> GLint
   -> GLfloat
   -> GLfloat
   -> GLint
   -> GLint
   -> Ptr GLfloat
   -> IO ())
-> GLbitfield
-> GLfloat
-> GLfloat
-> GLint
-> GLint
-> GLfloat
-> GLfloat
-> GLint
-> GLint
-> GLfloat
-> GLfloat
-> GLint
-> GLint
-> Ptr GLfloat
-> m ()
ffienumfloatfloatintintfloatfloatintintfloatfloatintintPtrfloatIOV FunPtr
  (GLbitfield
   -> GLfloat
   -> GLfloat
   -> GLint
   -> GLint
   -> GLfloat
   -> GLfloat
   -> GLint
   -> GLint
   -> GLfloat
   -> GLfloat
   -> GLint
   -> GLint
   -> Ptr GLfloat
   -> IO ())
glDeformationMap3fSGIXFunPtr

glDeformationMap3fSGIXFunPtr :: FunPtr (GLenum -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> GLfloat -> GLint -> GLint -> Ptr GLfloat -> IO ())
glDeformationMap3fSGIXFunPtr :: FunPtr
  (GLbitfield
   -> GLfloat
   -> GLfloat
   -> GLint
   -> GLint
   -> GLfloat
   -> GLfloat
   -> GLint
   -> GLint
   -> GLfloat
   -> GLfloat
   -> GLint
   -> GLint
   -> Ptr GLfloat
   -> IO ())
glDeformationMap3fSGIXFunPtr = IO
  (FunPtr
     (GLbitfield
      -> GLfloat
      -> GLfloat
      -> GLint
      -> GLint
      -> GLfloat
      -> GLfloat
      -> GLint
      -> GLint
      -> GLfloat
      -> GLfloat
      -> GLint
      -> GLint
      -> Ptr GLfloat
      -> IO ()))
-> FunPtr
     (GLbitfield
      -> GLfloat
      -> GLfloat
      -> GLint
      -> GLint
      -> GLfloat
      -> GLfloat
      -> GLint
      -> GLint
      -> GLfloat
      -> GLfloat
      -> GLint
      -> GLint
      -> Ptr GLfloat
      -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char]
-> IO
     (FunPtr
        (GLbitfield
         -> GLfloat
         -> GLfloat
         -> GLint
         -> GLint
         -> GLfloat
         -> GLfloat
         -> GLint
         -> GLint
         -> GLfloat
         -> GLfloat
         -> GLint
         -> GLint
         -> Ptr GLfloat
         -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glDeformationMap3fSGIX")

{-# NOINLINE glDeformationMap3fSGIXFunPtr #-}

-- | Usage: @'glLoadIdentityDeformationMapSGIX' mask@
--
-- The parameter @mask@ is a @FfdMaskSGIX@, one of: .


glLoadIdentityDeformationMapSGIX :: MonadIO m => GLbitfield -> m ()
glLoadIdentityDeformationMapSGIX :: GLbitfield -> m ()
glLoadIdentityDeformationMapSGIX = FunPtr (GLbitfield -> IO ()) -> GLbitfield -> m ()
forall (m :: * -> *).
MonadIO m =>
FunPtr (GLbitfield -> IO ()) -> GLbitfield -> m ()
ffibitfieldIOV FunPtr (GLbitfield -> IO ())
glLoadIdentityDeformationMapSGIXFunPtr

glLoadIdentityDeformationMapSGIXFunPtr :: FunPtr (GLbitfield -> IO ())
glLoadIdentityDeformationMapSGIXFunPtr :: FunPtr (GLbitfield -> IO ())
glLoadIdentityDeformationMapSGIXFunPtr = IO (FunPtr (GLbitfield -> IO ())) -> FunPtr (GLbitfield -> IO ())
forall a. IO a -> a
unsafePerformIO ([Char] -> IO (FunPtr (GLbitfield -> IO ()))
forall a. [Char] -> IO (FunPtr a)
getProcAddress "glLoadIdentityDeformationMapSGIX")

{-# NOINLINE glLoadIdentityDeformationMapSGIXFunPtr #-}

pattern $bGL_DEFORMATIONS_MASK_SGIX :: a
$mGL_DEFORMATIONS_MASK_SGIX :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_DEFORMATIONS_MASK_SGIX = 0x8196

pattern $bGL_GEOMETRY_DEFORMATION_BIT_SGIX :: a
$mGL_GEOMETRY_DEFORMATION_BIT_SGIX :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_GEOMETRY_DEFORMATION_BIT_SGIX = 0x00000002

pattern $bGL_GEOMETRY_DEFORMATION_SGIX :: a
$mGL_GEOMETRY_DEFORMATION_SGIX :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_GEOMETRY_DEFORMATION_SGIX = 0x8194

pattern $bGL_MAX_DEFORMATION_ORDER_SGIX :: a
$mGL_MAX_DEFORMATION_ORDER_SGIX :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_MAX_DEFORMATION_ORDER_SGIX = 0x8197

pattern $bGL_TEXTURE_DEFORMATION_BIT_SGIX :: a
$mGL_TEXTURE_DEFORMATION_BIT_SGIX :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TEXTURE_DEFORMATION_BIT_SGIX = 0x00000001

pattern $bGL_TEXTURE_DEFORMATION_SGIX :: a
$mGL_TEXTURE_DEFORMATION_SGIX :: forall r a. (Eq a, Num a) => a -> (Void# -> r) -> (Void# -> r) -> r
GL_TEXTURE_DEFORMATION_SGIX = 0x8195