{-# LANGUAGE CPP #-}
{-# OPTIONS_HADDOCK hide #-}
module Sound.OpenAL.AL.QueryUtils (
GetPName(..), marshalGetPName,
StringName(..), getString
) where
#if __GLASGOW_HASKELL__ >= 704
import Foreign.C.Types
#endif
import Foreign.Ptr ( Ptr )
import Sound.OpenAL.AL.BasicTypes
import Sound.OpenAL.AL.String
import Sound.OpenAL.Constants
data GetPName =
GetDistanceModel
| GetDopplerFactor
| GetSpeedOfSound
| GetPosition
| GetVelocity
| GetGain
| GetOrientation
| GetSourceRelative
| GetSourceType
| GetLooping
| GetBuffer
| GetBuffersQueued
| GetBuffersProcessed
| GetMinGain
| GetMaxGain
| GetReferenceDistance
| GetRolloffFactor
| GetMaxDistance
| GetPitch
| GetDirection
| GetConeInnerAngle
| GetConeOuterAngle
| GetConeOuterGain
| GetSecOffset
| GetSampleOffset
| GetByteOffset
| GetSourceState
marshalGetPName :: GetPName -> ALenum
marshalGetPName x = case x of
GetDistanceModel -> al_DISTANCE_MODEL
GetDopplerFactor -> al_DOPPLER_FACTOR
GetSpeedOfSound -> al_SPEED_OF_SOUND
GetPosition -> al_POSITION
GetVelocity -> al_VELOCITY
GetGain -> al_GAIN
GetOrientation -> al_ORIENTATION
GetSourceRelative -> al_SOURCE_RELATIVE
GetSourceType -> al_SOURCE_TYPE
GetLooping -> al_LOOPING
GetBuffer -> al_BUFFER
GetBuffersQueued -> al_BUFFERS_QUEUED
GetBuffersProcessed -> al_BUFFERS_PROCESSED
GetMinGain -> al_MIN_GAIN
GetMaxGain -> al_MAX_GAIN
GetReferenceDistance -> al_REFERENCE_DISTANCE
GetRolloffFactor -> al_ROLLOFF_FACTOR
GetMaxDistance -> al_MAX_DISTANCE
GetPitch -> al_PITCH
GetDirection -> al_DIRECTION
GetConeInnerAngle -> al_CONE_INNER_ANGLE
GetConeOuterAngle -> al_CONE_OUTER_ANGLE
GetConeOuterGain -> al_CONE_OUTER_GAIN
GetSecOffset -> al_SEC_OFFSET
GetSampleOffset -> al_SAMPLE_OFFSET
GetByteOffset -> al_BYTE_OFFSET
GetSourceState -> al_SOURCE_STATE
data StringName =
Vendor
| Renderer
| Version
| Extensions
| ALErrorCategory ALenum
marshalStringName :: StringName -> ALenum
marshalStringName x = case x of
Vendor -> al_VENDOR
Renderer -> al_RENDERER
Version -> al_VERSION
Extensions -> al_EXTENSIONS
ALErrorCategory e -> e
getString :: StringName -> IO String
getString n = alGetString (marshalStringName n) >>= peekALString
foreign import ccall unsafe "alGetString"
alGetString :: ALenum -> IO (Ptr ALchar)