module Graphics.Rendering.OpenGL.GL.Texturing.Queries (
TextureQuery, textureInternalFormat, textureSize1D, textureSize2D,
textureSize3D, textureBorder, textureRGBASizes, textureSharedSize,
textureIntensitySize, textureLuminanceSize, textureIndexSize,
textureDepthBits, textureCompressedImageSize, textureProxyOK,
DataRepresentation(..), textureRGBATypes, textureIntensityType,
textureLuminanceType, textureDepthType
) where
import Control.Monad
import Data.StateVar
import Foreign.Marshal.Utils
import Graphics.Rendering.OpenGL.GL.DataType
import Graphics.Rendering.OpenGL.GL.GLboolean
import Graphics.Rendering.OpenGL.GL.PeekPoke
import Graphics.Rendering.OpenGL.GL.PixelRectangles
import Graphics.Rendering.OpenGL.GL.Texturing.PixelInternalFormat
import Graphics.Rendering.OpenGL.GL.Texturing.Specification
import Graphics.Rendering.OpenGL.GL.Texturing.TextureTarget
import Graphics.Rendering.OpenGL.GL.VertexSpec
import Graphics.GL
data TexLevelParameter =
TextureInternalFormat
| TextureWidth
| TextureHeight
| TextureDepth
| TextureBorder
| TextureRedSize
| TextureGreenSize
| TextureBlueSize
| TextureAlphaSize
| TextureIntensitySize
| TextureLuminanceSize
| TextureIndexSize
| DepthBits
| TextureCompressedImageSize
| TextureCompressed
| TextureSharedSize
| TextureRedType
| TextureGreenType
| TextureBlueType
| TextureAlphaType
| TextureLuminanceType
| TextureIntensityType
| TextureDepthType
marshalTexLevelParameter :: TexLevelParameter -> GLenum
marshalTexLevelParameter :: TexLevelParameter -> GLenum
marshalTexLevelParameter TexLevelParameter
x = case TexLevelParameter
x of
TexLevelParameter
TextureInternalFormat -> GLenum
GL_TEXTURE_INTERNAL_FORMAT
TexLevelParameter
TextureWidth -> GLenum
GL_TEXTURE_WIDTH
TexLevelParameter
TextureHeight -> GLenum
GL_TEXTURE_HEIGHT
TexLevelParameter
TextureDepth -> GLenum
GL_TEXTURE_DEPTH
TexLevelParameter
TextureBorder -> GLenum
GL_TEXTURE_BORDER
TexLevelParameter
TextureRedSize -> GLenum
GL_TEXTURE_RED_SIZE
TexLevelParameter
TextureGreenSize -> GLenum
GL_TEXTURE_GREEN_SIZE
TexLevelParameter
TextureBlueSize -> GLenum
GL_TEXTURE_BLUE_SIZE
TexLevelParameter
TextureAlphaSize -> GLenum
GL_TEXTURE_ALPHA_SIZE
TexLevelParameter
TextureIntensitySize -> GLenum
GL_TEXTURE_INTENSITY_SIZE
TexLevelParameter
TextureLuminanceSize -> GLenum
GL_TEXTURE_LUMINANCE_SIZE
TexLevelParameter
TextureIndexSize -> GLenum
GL_TEXTURE_INDEX_SIZE_EXT
TexLevelParameter
DepthBits -> GLenum
GL_DEPTH_BITS
TexLevelParameter
TextureCompressedImageSize -> GLenum
GL_TEXTURE_COMPRESSED_IMAGE_SIZE
TexLevelParameter
TextureCompressed -> GLenum
GL_TEXTURE_COMPRESSED
TexLevelParameter
TextureSharedSize -> GLenum
GL_TEXTURE_SHARED_SIZE
TexLevelParameter
TextureRedType -> GLenum
GL_TEXTURE_RED_TYPE_ARB
TexLevelParameter
TextureGreenType -> GLenum
GL_TEXTURE_GREEN_TYPE_ARB
TexLevelParameter
TextureBlueType -> GLenum
GL_TEXTURE_BLUE_TYPE_ARB
TexLevelParameter
TextureAlphaType -> GLenum
GL_TEXTURE_ALPHA_TYPE_ARB
TexLevelParameter
TextureLuminanceType -> GLenum
GL_TEXTURE_LUMINANCE_TYPE_ARB
TexLevelParameter
TextureIntensityType -> GLenum
GL_TEXTURE_INTENSITY_TYPE_ARB
TexLevelParameter
TextureDepthType -> GLenum
GL_TEXTURE_DEPTH_TYPE_ARB
type TextureQuery t a = t -> Level -> GettableStateVar a
textureInternalFormat :: QueryableTextureTarget t => TextureQuery t PixelInternalFormat
textureInternalFormat :: TextureQuery t PixelInternalFormat
textureInternalFormat t
t Level
level =
IO PixelInternalFormat -> IO PixelInternalFormat
forall a. IO a -> IO a
makeGettableStateVar (IO PixelInternalFormat -> IO PixelInternalFormat)
-> IO PixelInternalFormat -> IO PixelInternalFormat
forall a b. (a -> b) -> a -> b
$
(Level -> PixelInternalFormat)
-> t -> Level -> TexLevelParameter -> IO PixelInternalFormat
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> PixelInternalFormat
unmarshalPixelInternalFormat t
t Level
level TexLevelParameter
TextureInternalFormat
textureSize1D :: TextureQuery TextureTarget1D TextureSize1D
textureSize1D :: TextureQuery TextureTarget1D TextureSize1D
textureSize1D TextureTarget1D
t Level
level =
IO TextureSize1D -> IO TextureSize1D
forall a. IO a -> IO a
makeGettableStateVar (IO TextureSize1D -> IO TextureSize1D)
-> IO TextureSize1D -> IO TextureSize1D
forall a b. (a -> b) -> a -> b
$
(Level -> TextureSize1D) -> IO Level -> IO TextureSize1D
forall (m :: * -> *) a1 r. Monad m => (a1 -> r) -> m a1 -> m r
liftM Level -> TextureSize1D
TextureSize1D
((Level -> Level)
-> TextureTarget1D -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral TextureTarget1D
t Level
level TexLevelParameter
TextureWidth)
textureSize2D :: TextureQuery TextureTarget2D TextureSize2D
textureSize2D :: TextureQuery TextureTarget2D TextureSize2D
textureSize2D TextureTarget2D
t Level
level =
IO TextureSize2D -> IO TextureSize2D
forall a. IO a -> IO a
makeGettableStateVar (IO TextureSize2D -> IO TextureSize2D)
-> IO TextureSize2D -> IO TextureSize2D
forall a b. (a -> b) -> a -> b
$
(Level -> Level -> TextureSize2D)
-> IO Level -> IO Level -> IO TextureSize2D
forall (m :: * -> *) a1 a2 r.
Monad m =>
(a1 -> a2 -> r) -> m a1 -> m a2 -> m r
liftM2 Level -> Level -> TextureSize2D
TextureSize2D
((Level -> Level)
-> TextureTarget2D -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral TextureTarget2D
t Level
level TexLevelParameter
TextureWidth )
((Level -> Level)
-> TextureTarget2D -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral TextureTarget2D
t Level
level TexLevelParameter
TextureHeight)
textureSize3D :: TextureQuery TextureTarget3D TextureSize3D
textureSize3D :: TextureQuery TextureTarget3D TextureSize3D
textureSize3D TextureTarget3D
t Level
level =
IO TextureSize3D -> IO TextureSize3D
forall a. IO a -> IO a
makeGettableStateVar (IO TextureSize3D -> IO TextureSize3D)
-> IO TextureSize3D -> IO TextureSize3D
forall a b. (a -> b) -> a -> b
$
(Level -> Level -> Level -> TextureSize3D)
-> IO Level -> IO Level -> IO Level -> IO TextureSize3D
forall (m :: * -> *) a1 a2 a3 r.
Monad m =>
(a1 -> a2 -> a3 -> r) -> m a1 -> m a2 -> m a3 -> m r
liftM3 Level -> Level -> Level -> TextureSize3D
TextureSize3D
((Level -> Level)
-> TextureTarget3D -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral TextureTarget3D
t Level
level TexLevelParameter
TextureWidth )
((Level -> Level)
-> TextureTarget3D -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral TextureTarget3D
t Level
level TexLevelParameter
TextureHeight)
((Level -> Level)
-> TextureTarget3D -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral TextureTarget3D
t Level
level TexLevelParameter
TextureDepth )
textureBorder :: QueryableTextureTarget t => TextureQuery t Border
textureBorder :: TextureQuery t Level
textureBorder t
t Level
level =
IO Level -> IO Level
forall a. IO a -> IO a
makeGettableStateVar (IO Level -> IO Level) -> IO Level -> IO Level
forall a b. (a -> b) -> a -> b
$
(Level -> Level) -> t -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral t
t Level
level TexLevelParameter
TextureBorder
textureRGBASizes :: QueryableTextureTarget t => TextureQuery t (Color4 GLsizei)
textureRGBASizes :: TextureQuery t (Color4 Level)
textureRGBASizes t
t Level
level =
IO (Color4 Level) -> IO (Color4 Level)
forall a. IO a -> IO a
makeGettableStateVar (IO (Color4 Level) -> IO (Color4 Level))
-> IO (Color4 Level) -> IO (Color4 Level)
forall a b. (a -> b) -> a -> b
$
(Level -> Level -> Level -> Level -> Color4 Level)
-> IO Level
-> IO Level
-> IO Level
-> IO Level
-> IO (Color4 Level)
forall (m :: * -> *) a1 a2 a3 a4 r.
Monad m =>
(a1 -> a2 -> a3 -> a4 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m r
liftM4 Level -> Level -> Level -> Level -> Color4 Level
forall a. a -> a -> a -> a -> Color4 a
Color4
((Level -> Level) -> t -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral t
t Level
level TexLevelParameter
TextureRedSize )
((Level -> Level) -> t -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral t
t Level
level TexLevelParameter
TextureGreenSize)
((Level -> Level) -> t -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral t
t Level
level TexLevelParameter
TextureBlueSize )
((Level -> Level) -> t -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral t
t Level
level TexLevelParameter
TextureAlphaSize)
textureSharedSize :: QueryableTextureTarget t => TextureQuery t GLsizei
textureSharedSize :: TextureQuery t Level
textureSharedSize t
t Level
level =
IO Level -> IO Level
forall a. IO a -> IO a
makeGettableStateVar (IO Level -> IO Level) -> IO Level -> IO Level
forall a b. (a -> b) -> a -> b
$
(Level -> Level) -> t -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral t
t Level
level TexLevelParameter
TextureSharedSize
textureIntensitySize :: QueryableTextureTarget t => TextureQuery t GLsizei
textureIntensitySize :: TextureQuery t Level
textureIntensitySize t
t Level
level =
IO Level -> IO Level
forall a. IO a -> IO a
makeGettableStateVar (IO Level -> IO Level) -> IO Level -> IO Level
forall a b. (a -> b) -> a -> b
$
(Level -> Level) -> t -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral t
t Level
level TexLevelParameter
TextureIntensitySize
textureLuminanceSize :: QueryableTextureTarget t => TextureQuery t GLsizei
textureLuminanceSize :: TextureQuery t Level
textureLuminanceSize t
t Level
level =
IO Level -> IO Level
forall a. IO a -> IO a
makeGettableStateVar (IO Level -> IO Level) -> IO Level -> IO Level
forall a b. (a -> b) -> a -> b
$
(Level -> Level) -> t -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral t
t Level
level TexLevelParameter
TextureLuminanceSize
textureIndexSize :: QueryableTextureTarget t => TextureQuery t GLsizei
textureIndexSize :: TextureQuery t Level
textureIndexSize t
t Level
level =
IO Level -> IO Level
forall a. IO a -> IO a
makeGettableStateVar (IO Level -> IO Level) -> IO Level -> IO Level
forall a b. (a -> b) -> a -> b
$
(Level -> Level) -> t -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral t
t Level
level TexLevelParameter
TextureIndexSize
textureDepthBits :: QueryableTextureTarget t => TextureQuery t GLsizei
textureDepthBits :: TextureQuery t Level
textureDepthBits t
t Level
level =
IO Level -> IO Level
forall a. IO a -> IO a
makeGettableStateVar (IO Level -> IO Level) -> IO Level -> IO Level
forall a b. (a -> b) -> a -> b
$
(Level -> Level) -> t -> Level -> TexLevelParameter -> IO Level
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral t
t Level
level TexLevelParameter
DepthBits
textureCompressedImageSize :: QueryableTextureTarget t => TextureQuery t (Maybe GLsizei)
textureCompressedImageSize :: TextureQuery t (Maybe Level)
textureCompressedImageSize t
t Level
level =
IO (Maybe Level) -> IO (Maybe Level)
forall a. IO a -> IO a
makeGettableStateVar (IO (Maybe Level) -> IO (Maybe Level))
-> IO (Maybe Level) -> IO (Maybe Level)
forall a b. (a -> b) -> a -> b
$ do
Bool
isCompressed <- (Level -> Bool) -> t -> Level -> TexLevelParameter -> IO Bool
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> Bool
forall a. (Eq a, Num a) => a -> Bool
unmarshalGLboolean t
t Level
level TexLevelParameter
TextureCompressed
if Bool
isCompressed
then (Level -> Maybe Level)
-> t -> Level -> TexLevelParameter -> IO (Maybe Level)
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy (Level -> Maybe Level
forall a. a -> Maybe a
Just (Level -> Maybe Level) -> (Level -> Level) -> Level -> Maybe Level
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Level -> Level
forall a b. (Integral a, Num b) => a -> b
fromIntegral) t
t Level
level TexLevelParameter
TextureCompressedImageSize
else Maybe Level -> IO (Maybe Level)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Level
forall a. Maybe a
Nothing
textureProxyOK :: ParameterizedTextureTarget t => TextureQuery t Bool
textureProxyOK :: TextureQuery t Bool
textureProxyOK t
t Level
level =
IO Bool -> IO Bool
forall a. IO a -> IO a
makeGettableStateVar (IO Bool -> IO Bool) -> IO Bool -> IO Bool
forall a b. (a -> b) -> a -> b
$
(Level -> Bool) -> GLenum -> Level -> TexLevelParameter -> IO Bool
forall a.
(Level -> a) -> GLenum -> Level -> TexLevelParameter -> IO a
getTexLevelParameteri Level -> Bool
forall a. (Eq a, Num a) => a -> Bool
unmarshalGLboolean (t -> GLenum
forall t. ParameterizedTextureTarget t => t -> GLenum
marshalParameterizedTextureTargetProxy t
t) Level
level TexLevelParameter
TextureWidth
textureRGBATypes :: QueryableTextureTarget t => TextureQuery t (Color4 (Maybe DataRepresentation))
textureRGBATypes :: TextureQuery t (Color4 (Maybe DataRepresentation))
textureRGBATypes t
t Level
level =
IO (Color4 (Maybe DataRepresentation))
-> IO (Color4 (Maybe DataRepresentation))
forall a. IO a -> IO a
makeGettableStateVar (IO (Color4 (Maybe DataRepresentation))
-> IO (Color4 (Maybe DataRepresentation)))
-> IO (Color4 (Maybe DataRepresentation))
-> IO (Color4 (Maybe DataRepresentation))
forall a b. (a -> b) -> a -> b
$
(Maybe DataRepresentation
-> Maybe DataRepresentation
-> Maybe DataRepresentation
-> Maybe DataRepresentation
-> Color4 (Maybe DataRepresentation))
-> IO (Maybe DataRepresentation)
-> IO (Maybe DataRepresentation)
-> IO (Maybe DataRepresentation)
-> IO (Maybe DataRepresentation)
-> IO (Color4 (Maybe DataRepresentation))
forall (m :: * -> *) a1 a2 a3 a4 r.
Monad m =>
(a1 -> a2 -> a3 -> a4 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m r
liftM4 Maybe DataRepresentation
-> Maybe DataRepresentation
-> Maybe DataRepresentation
-> Maybe DataRepresentation
-> Color4 (Maybe DataRepresentation)
forall a. a -> a -> a -> a -> Color4 a
Color4
(t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
forall t.
QueryableTextureTarget t =>
t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
getDataRepr t
t Level
level TexLevelParameter
TextureRedType )
(t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
forall t.
QueryableTextureTarget t =>
t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
getDataRepr t
t Level
level TexLevelParameter
TextureGreenType)
(t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
forall t.
QueryableTextureTarget t =>
t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
getDataRepr t
t Level
level TexLevelParameter
TextureBlueType )
(t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
forall t.
QueryableTextureTarget t =>
t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
getDataRepr t
t Level
level TexLevelParameter
TextureAlphaType)
getDataRepr :: QueryableTextureTarget t => t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
getDataRepr :: t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
getDataRepr = (Level -> Maybe DataRepresentation)
-> t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
forall t a.
QueryableTextureTarget t =>
(Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy (GLenum -> Maybe DataRepresentation
unmarshalDataRepresentation (GLenum -> Maybe DataRepresentation)
-> (Level -> GLenum) -> Level -> Maybe DataRepresentation
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Level -> GLenum
forall a b. (Integral a, Num b) => a -> b
fromIntegral)
textureIntensityType :: QueryableTextureTarget t => TextureQuery t (Maybe DataRepresentation)
textureIntensityType :: TextureQuery t (Maybe DataRepresentation)
textureIntensityType t
t Level
level = IO (Maybe DataRepresentation) -> IO (Maybe DataRepresentation)
forall a. IO a -> IO a
makeGettableStateVar (IO (Maybe DataRepresentation) -> IO (Maybe DataRepresentation))
-> IO (Maybe DataRepresentation) -> IO (Maybe DataRepresentation)
forall a b. (a -> b) -> a -> b
$ t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
forall t.
QueryableTextureTarget t =>
t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
getDataRepr t
t Level
level TexLevelParameter
TextureIntensityType
textureLuminanceType :: QueryableTextureTarget t => TextureQuery t (Maybe DataRepresentation)
textureLuminanceType :: TextureQuery t (Maybe DataRepresentation)
textureLuminanceType t
t Level
level = IO (Maybe DataRepresentation) -> IO (Maybe DataRepresentation)
forall a. IO a -> IO a
makeGettableStateVar (IO (Maybe DataRepresentation) -> IO (Maybe DataRepresentation))
-> IO (Maybe DataRepresentation) -> IO (Maybe DataRepresentation)
forall a b. (a -> b) -> a -> b
$ t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
forall t.
QueryableTextureTarget t =>
t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
getDataRepr t
t Level
level TexLevelParameter
TextureLuminanceType
textureDepthType :: QueryableTextureTarget t => TextureQuery t (Maybe DataRepresentation)
textureDepthType :: TextureQuery t (Maybe DataRepresentation)
textureDepthType t
t Level
level = IO (Maybe DataRepresentation) -> IO (Maybe DataRepresentation)
forall a. IO a -> IO a
makeGettableStateVar (IO (Maybe DataRepresentation) -> IO (Maybe DataRepresentation))
-> IO (Maybe DataRepresentation) -> IO (Maybe DataRepresentation)
forall a b. (a -> b) -> a -> b
$ t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
forall t.
QueryableTextureTarget t =>
t -> Level -> TexLevelParameter -> IO (Maybe DataRepresentation)
getDataRepr t
t Level
level TexLevelParameter
TextureDepthType
getTexLevelParameteriNoProxy :: QueryableTextureTarget t => (GLint -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy :: (Level -> a) -> t -> Level -> TexLevelParameter -> IO a
getTexLevelParameteriNoProxy Level -> a
f = (Level -> a) -> GLenum -> Level -> TexLevelParameter -> IO a
forall a.
(Level -> a) -> GLenum -> Level -> TexLevelParameter -> IO a
getTexLevelParameteri Level -> a
f (GLenum -> Level -> TexLevelParameter -> IO a)
-> (t -> GLenum) -> t -> Level -> TexLevelParameter -> IO a
forall b c a. (b -> c) -> (a -> b) -> a -> c
. t -> GLenum
forall t. QueryableTextureTarget t => t -> GLenum
marshalQueryableTextureTarget
getTexLevelParameteri :: (GLint -> a) -> GLenum -> Level -> TexLevelParameter -> IO a
getTexLevelParameteri :: (Level -> a) -> GLenum -> Level -> TexLevelParameter -> IO a
getTexLevelParameteri Level -> a
f GLenum
t Level
level TexLevelParameter
p =
Level -> (Ptr Level -> IO a) -> IO a
forall a b. Storable a => a -> (Ptr a -> IO b) -> IO b
with Level
0 ((Ptr Level -> IO a) -> IO a) -> (Ptr Level -> IO a) -> IO a
forall a b. (a -> b) -> a -> b
$ \Ptr Level
buf -> do
GLenum -> Level -> GLenum -> Ptr Level -> IO ()
forall (m :: * -> *).
MonadIO m =>
GLenum -> Level -> GLenum -> Ptr Level -> m ()
glGetTexLevelParameteriv GLenum
t Level
level (TexLevelParameter -> GLenum
marshalTexLevelParameter TexLevelParameter
p) Ptr Level
buf
(Level -> a) -> Ptr Level -> IO a
forall a b. Storable a => (a -> b) -> Ptr a -> IO b
peek1 Level -> a
f Ptr Level
buf