{-# OPTIONS_HADDOCK hide #-}
module Graphics.Rendering.OpenGL.GL.ControlPoint (
ControlPoint(..)
) where
import Foreign.Ptr
import Foreign.Storable
import Graphics.Rendering.OpenGL.GL.Tensor
import Graphics.Rendering.OpenGL.GL.Capability
import Graphics.Rendering.OpenGL.GL.Domain
import Graphics.Rendering.OpenGL.GL.VertexArrays
import Graphics.Rendering.OpenGL.GL.VertexSpec
import Graphics.GL
class ControlPoint c where
map1Target :: Domain d => c d -> GLenum
map2Target :: Domain d => c d -> GLenum
enableCap1 :: Domain d => c d -> EnableCap
enableCap2 :: Domain d => c d -> EnableCap
numComponents :: Domain d => c d -> Stride
peekControlPoint :: Domain d => Ptr (c d) -> IO (c d)
pokeControlPoint :: Domain d => Ptr (c d) -> (c d) -> IO ()
instance ControlPoint Vertex3 where
map1Target :: forall d. Domain d => Vertex3 d -> GLenum
map1Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (Vertex3 d -> MapTarget) -> Vertex3 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> Vertex3 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map1Vertex3
map2Target :: forall d. Domain d => Vertex3 d -> GLenum
map2Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (Vertex3 d -> MapTarget) -> Vertex3 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> Vertex3 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map2Vertex3
enableCap1 :: forall d. Domain d => Vertex3 d -> EnableCap
enableCap1 = EnableCap -> Vertex3 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap1Vertex3
enableCap2 :: forall d. Domain d => Vertex3 d -> EnableCap
enableCap2 = EnableCap -> Vertex3 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap2Vertex3
numComponents :: forall d. Domain d => Vertex3 d -> Stride
numComponents = Stride -> Vertex3 d -> Stride
forall a b. a -> b -> a
const Stride
3
peekControlPoint :: forall d. Domain d => Ptr (Vertex3 d) -> IO (Vertex3 d)
peekControlPoint = Ptr (Vertex3 d) -> IO (Vertex3 d)
forall a. Storable a => Ptr a -> IO a
peek
pokeControlPoint :: forall d. Domain d => Ptr (Vertex3 d) -> Vertex3 d -> IO ()
pokeControlPoint = Ptr (Vertex3 d) -> Vertex3 d -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke
instance ControlPoint Vertex4 where
map1Target :: forall d. Domain d => Vertex4 d -> GLenum
map1Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (Vertex4 d -> MapTarget) -> Vertex4 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> Vertex4 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map1Vertex4
map2Target :: forall d. Domain d => Vertex4 d -> GLenum
map2Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (Vertex4 d -> MapTarget) -> Vertex4 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> Vertex4 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map2Vertex4
enableCap1 :: forall d. Domain d => Vertex4 d -> EnableCap
enableCap1 = EnableCap -> Vertex4 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap1Vertex4
enableCap2 :: forall d. Domain d => Vertex4 d -> EnableCap
enableCap2 = EnableCap -> Vertex4 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap2Vertex4
numComponents :: forall d. Domain d => Vertex4 d -> Stride
numComponents = Stride -> Vertex4 d -> Stride
forall a b. a -> b -> a
const Stride
4
peekControlPoint :: forall d. Domain d => Ptr (Vertex4 d) -> IO (Vertex4 d)
peekControlPoint = Ptr (Vertex4 d) -> IO (Vertex4 d)
forall a. Storable a => Ptr a -> IO a
peek
pokeControlPoint :: forall d. Domain d => Ptr (Vertex4 d) -> Vertex4 d -> IO ()
pokeControlPoint = Ptr (Vertex4 d) -> Vertex4 d -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke
instance ControlPoint Index1 where
map1Target :: forall d. Domain d => Index1 d -> GLenum
map1Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (Index1 d -> MapTarget) -> Index1 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> Index1 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map1Index
map2Target :: forall d. Domain d => Index1 d -> GLenum
map2Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (Index1 d -> MapTarget) -> Index1 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> Index1 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map2Index
enableCap1 :: forall d. Domain d => Index1 d -> EnableCap
enableCap1 = EnableCap -> Index1 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap1Index
enableCap2 :: forall d. Domain d => Index1 d -> EnableCap
enableCap2 = EnableCap -> Index1 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap2Index
numComponents :: forall d. Domain d => Index1 d -> Stride
numComponents = Stride -> Index1 d -> Stride
forall a b. a -> b -> a
const Stride
1
peekControlPoint :: forall d. Domain d => Ptr (Index1 d) -> IO (Index1 d)
peekControlPoint = Ptr (Index1 d) -> IO (Index1 d)
forall a. Storable a => Ptr a -> IO a
peek
pokeControlPoint :: forall d. Domain d => Ptr (Index1 d) -> Index1 d -> IO ()
pokeControlPoint = Ptr (Index1 d) -> Index1 d -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke
instance ControlPoint Color4 where
map1Target :: forall d. Domain d => Color4 d -> GLenum
map1Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (Color4 d -> MapTarget) -> Color4 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> Color4 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map1Color4
map2Target :: forall d. Domain d => Color4 d -> GLenum
map2Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (Color4 d -> MapTarget) -> Color4 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> Color4 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map2Color4
enableCap1 :: forall d. Domain d => Color4 d -> EnableCap
enableCap1 = EnableCap -> Color4 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap1Color4
enableCap2 :: forall d. Domain d => Color4 d -> EnableCap
enableCap2 = EnableCap -> Color4 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap2Color4
numComponents :: forall d. Domain d => Color4 d -> Stride
numComponents = Stride -> Color4 d -> Stride
forall a b. a -> b -> a
const Stride
4
peekControlPoint :: forall d. Domain d => Ptr (Color4 d) -> IO (Color4 d)
peekControlPoint = Ptr (Color4 d) -> IO (Color4 d)
forall a. Storable a => Ptr a -> IO a
peek
pokeControlPoint :: forall d. Domain d => Ptr (Color4 d) -> Color4 d -> IO ()
pokeControlPoint = Ptr (Color4 d) -> Color4 d -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke
instance ControlPoint Normal3 where
map1Target :: forall d. Domain d => Normal3 d -> GLenum
map1Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (Normal3 d -> MapTarget) -> Normal3 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> Normal3 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map1Normal
map2Target :: forall d. Domain d => Normal3 d -> GLenum
map2Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (Normal3 d -> MapTarget) -> Normal3 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> Normal3 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map2Normal
enableCap1 :: forall d. Domain d => Normal3 d -> EnableCap
enableCap1 = EnableCap -> Normal3 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap1Normal
enableCap2 :: forall d. Domain d => Normal3 d -> EnableCap
enableCap2 = EnableCap -> Normal3 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap2Normal
numComponents :: forall d. Domain d => Normal3 d -> Stride
numComponents = Stride -> Normal3 d -> Stride
forall a b. a -> b -> a
const Stride
3
peekControlPoint :: forall d. Domain d => Ptr (Normal3 d) -> IO (Normal3 d)
peekControlPoint = Ptr (Normal3 d) -> IO (Normal3 d)
forall a. Storable a => Ptr a -> IO a
peek
pokeControlPoint :: forall d. Domain d => Ptr (Normal3 d) -> Normal3 d -> IO ()
pokeControlPoint = Ptr (Normal3 d) -> Normal3 d -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke
instance ControlPoint TexCoord1 where
map1Target :: forall d. Domain d => TexCoord1 d -> GLenum
map1Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (TexCoord1 d -> MapTarget) -> TexCoord1 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> TexCoord1 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map1TextureCoord1
map2Target :: forall d. Domain d => TexCoord1 d -> GLenum
map2Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (TexCoord1 d -> MapTarget) -> TexCoord1 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> TexCoord1 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map2TextureCoord1
enableCap1 :: forall d. Domain d => TexCoord1 d -> EnableCap
enableCap1 = EnableCap -> TexCoord1 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap1TextureCoord1
enableCap2 :: forall d. Domain d => TexCoord1 d -> EnableCap
enableCap2 = EnableCap -> TexCoord1 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap2TextureCoord1
numComponents :: forall d. Domain d => TexCoord1 d -> Stride
numComponents = Stride -> TexCoord1 d -> Stride
forall a b. a -> b -> a
const Stride
1
peekControlPoint :: forall d. Domain d => Ptr (TexCoord1 d) -> IO (TexCoord1 d)
peekControlPoint = Ptr (TexCoord1 d) -> IO (TexCoord1 d)
forall a. Storable a => Ptr a -> IO a
peek
pokeControlPoint :: forall d. Domain d => Ptr (TexCoord1 d) -> TexCoord1 d -> IO ()
pokeControlPoint = Ptr (TexCoord1 d) -> TexCoord1 d -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke
instance ControlPoint TexCoord2 where
map1Target :: forall d. Domain d => TexCoord2 d -> GLenum
map1Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (TexCoord2 d -> MapTarget) -> TexCoord2 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> TexCoord2 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map1TextureCoord2
map2Target :: forall d. Domain d => TexCoord2 d -> GLenum
map2Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (TexCoord2 d -> MapTarget) -> TexCoord2 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> TexCoord2 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map2TextureCoord2
enableCap1 :: forall d. Domain d => TexCoord2 d -> EnableCap
enableCap1 = EnableCap -> TexCoord2 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap1TextureCoord2
enableCap2 :: forall d. Domain d => TexCoord2 d -> EnableCap
enableCap2 = EnableCap -> TexCoord2 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap2TextureCoord2
numComponents :: forall d. Domain d => TexCoord2 d -> Stride
numComponents = Stride -> TexCoord2 d -> Stride
forall a b. a -> b -> a
const Stride
2
peekControlPoint :: forall d. Domain d => Ptr (TexCoord2 d) -> IO (TexCoord2 d)
peekControlPoint = Ptr (TexCoord2 d) -> IO (TexCoord2 d)
forall a. Storable a => Ptr a -> IO a
peek
pokeControlPoint :: forall d. Domain d => Ptr (TexCoord2 d) -> TexCoord2 d -> IO ()
pokeControlPoint = Ptr (TexCoord2 d) -> TexCoord2 d -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke
instance ControlPoint TexCoord3 where
map1Target :: forall d. Domain d => TexCoord3 d -> GLenum
map1Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (TexCoord3 d -> MapTarget) -> TexCoord3 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> TexCoord3 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map1TextureCoord3
map2Target :: forall d. Domain d => TexCoord3 d -> GLenum
map2Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (TexCoord3 d -> MapTarget) -> TexCoord3 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> TexCoord3 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map2TextureCoord3
enableCap1 :: forall d. Domain d => TexCoord3 d -> EnableCap
enableCap1 = EnableCap -> TexCoord3 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap1TextureCoord3
enableCap2 :: forall d. Domain d => TexCoord3 d -> EnableCap
enableCap2 = EnableCap -> TexCoord3 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap2TextureCoord3
numComponents :: forall d. Domain d => TexCoord3 d -> Stride
numComponents = Stride -> TexCoord3 d -> Stride
forall a b. a -> b -> a
const Stride
3
peekControlPoint :: forall d. Domain d => Ptr (TexCoord3 d) -> IO (TexCoord3 d)
peekControlPoint = Ptr (TexCoord3 d) -> IO (TexCoord3 d)
forall a. Storable a => Ptr a -> IO a
peek
pokeControlPoint :: forall d. Domain d => Ptr (TexCoord3 d) -> TexCoord3 d -> IO ()
pokeControlPoint = Ptr (TexCoord3 d) -> TexCoord3 d -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke
instance ControlPoint TexCoord4 where
map1Target :: forall d. Domain d => TexCoord4 d -> GLenum
map1Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (TexCoord4 d -> MapTarget) -> TexCoord4 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> TexCoord4 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map1TextureCoord4
map2Target :: forall d. Domain d => TexCoord4 d -> GLenum
map2Target = MapTarget -> GLenum
marshalMapTarget (MapTarget -> GLenum)
-> (TexCoord4 d -> MapTarget) -> TexCoord4 d -> GLenum
forall b c a. (b -> c) -> (a -> b) -> a -> c
. MapTarget -> TexCoord4 d -> MapTarget
forall a b. a -> b -> a
const MapTarget
Map2TextureCoord4
enableCap1 :: forall d. Domain d => TexCoord4 d -> EnableCap
enableCap1 = EnableCap -> TexCoord4 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap1TextureCoord4
enableCap2 :: forall d. Domain d => TexCoord4 d -> EnableCap
enableCap2 = EnableCap -> TexCoord4 d -> EnableCap
forall a b. a -> b -> a
const EnableCap
CapMap2TextureCoord4
numComponents :: forall d. Domain d => TexCoord4 d -> Stride
numComponents = Stride -> TexCoord4 d -> Stride
forall a b. a -> b -> a
const Stride
4
peekControlPoint :: forall d. Domain d => Ptr (TexCoord4 d) -> IO (TexCoord4 d)
peekControlPoint = Ptr (TexCoord4 d) -> IO (TexCoord4 d)
forall a. Storable a => Ptr a -> IO a
peek
pokeControlPoint :: forall d. Domain d => Ptr (TexCoord4 d) -> TexCoord4 d -> IO ()
pokeControlPoint = Ptr (TexCoord4 d) -> TexCoord4 d -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke
data MapTarget =
Map1Color4
| Map1Index
| Map1Normal
| Map1TextureCoord1
| Map1TextureCoord2
| Map1TextureCoord3
| Map1TextureCoord4
| Map1Vertex3
| Map1Vertex4
| Map2Color4
| Map2Index
| Map2Normal
| Map2TextureCoord1
| Map2TextureCoord2
| Map2TextureCoord3
| Map2TextureCoord4
| Map2Vertex3
| Map2Vertex4
marshalMapTarget :: MapTarget -> GLenum
marshalMapTarget :: MapTarget -> GLenum
marshalMapTarget MapTarget
x = case MapTarget
x of
MapTarget
Map1Color4 -> GLenum
GL_MAP1_COLOR_4
MapTarget
Map1Index -> GLenum
GL_MAP1_INDEX
MapTarget
Map1Normal -> GLenum
GL_MAP1_NORMAL
MapTarget
Map1TextureCoord1 -> GLenum
GL_MAP1_TEXTURE_COORD_1
MapTarget
Map1TextureCoord2 -> GLenum
GL_MAP1_TEXTURE_COORD_2
MapTarget
Map1TextureCoord3 -> GLenum
GL_MAP1_TEXTURE_COORD_3
MapTarget
Map1TextureCoord4 -> GLenum
GL_MAP1_TEXTURE_COORD_4
MapTarget
Map1Vertex3 -> GLenum
GL_MAP1_VERTEX_3
MapTarget
Map1Vertex4 -> GLenum
GL_MAP1_VERTEX_4
MapTarget
Map2Color4 -> GLenum
GL_MAP2_COLOR_4
MapTarget
Map2Index -> GLenum
GL_MAP2_INDEX
MapTarget
Map2Normal -> GLenum
GL_MAP2_NORMAL
MapTarget
Map2TextureCoord1 -> GLenum
GL_MAP2_TEXTURE_COORD_1
MapTarget
Map2TextureCoord2 -> GLenum
GL_MAP2_TEXTURE_COORD_2
MapTarget
Map2TextureCoord3 -> GLenum
GL_MAP2_TEXTURE_COORD_3
MapTarget
Map2TextureCoord4 -> GLenum
GL_MAP2_TEXTURE_COORD_4
MapTarget
Map2Vertex3 -> GLenum
GL_MAP2_VERTEX_3
MapTarget
Map2Vertex4 -> GLenum
GL_MAP2_VERTEX_4