AL_API ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues) { ALCcontext *Context; Context = alcGetCurrentContext(); SuspendContext(Context); if (effect && alIsEffect(effect)) { ALeffect *ALEffect = (ALeffect*)ALTHUNK_LOOKUPENTRY(effect); if(ALEffect->type == AL_EFFECT_REVERB) { switch(param) { case AL_REVERB_DENSITY: case AL_REVERB_DIFFUSION: case AL_REVERB_GAIN: case AL_REVERB_GAINHF: case AL_REVERB_DECAY_TIME: case AL_REVERB_DECAY_HFRATIO: case AL_REVERB_REFLECTIONS_GAIN: case AL_REVERB_REFLECTIONS_DELAY: case AL_REVERB_LATE_REVERB_GAIN: case AL_REVERB_LATE_REVERB_DELAY: case AL_REVERB_AIR_ABSORPTION_GAINHF: case AL_REVERB_ROOM_ROLLOFF_FACTOR: alGetEffectf(effect, param, pflValues); break; default: alSetError(AL_INVALID_ENUM); break; } } else alSetError(AL_INVALID_ENUM); } else alSetError(AL_INVALID_NAME); ProcessContext(Context); }
ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues) { ALCcontext *Context; Context = alcGetCurrentContext(); SuspendContext(Context); if (effect && alIsEffect(effect)) { ALeffect *ALEffect = (ALeffect*)ALTHUNK_LOOKUPENTRY(effect); if(ALEffect->type == AL_EFFECT_EAXREVERB) { switch(param) { case AL_EAXREVERB_DENSITY: case AL_EAXREVERB_DIFFUSION: case AL_EAXREVERB_GAIN: case AL_EAXREVERB_GAINHF: case AL_EAXREVERB_GAINLF: case AL_EAXREVERB_DECAY_TIME: case AL_EAXREVERB_DECAY_HFRATIO: case AL_EAXREVERB_DECAY_LFRATIO: case AL_EAXREVERB_REFLECTIONS_GAIN: case AL_EAXREVERB_REFLECTIONS_DELAY: case AL_EAXREVERB_LATE_REVERB_GAIN: case AL_EAXREVERB_LATE_REVERB_DELAY: case AL_EAXREVERB_AIR_ABSORPTION_GAINHF: case AL_EAXREVERB_ECHO_TIME: case AL_EAXREVERB_ECHO_DEPTH: case AL_EAXREVERB_MODULATION_TIME: case AL_EAXREVERB_MODULATION_DEPTH: case AL_EAXREVERB_HFREFERENCE: case AL_EAXREVERB_LFREFERENCE: case AL_EAXREVERB_ROOM_ROLLOFF_FACTOR: alGetEffectf(effect, param, pflValues); break; case AL_EAXREVERB_REFLECTIONS_PAN: pflValues[0] = ALEffect->Reverb.ReflectionsPan[0]; pflValues[1] = ALEffect->Reverb.ReflectionsPan[1]; pflValues[2] = ALEffect->Reverb.ReflectionsPan[2]; break; case AL_EAXREVERB_LATE_REVERB_PAN: pflValues[0] = ALEffect->Reverb.LateReverbPan[0]; pflValues[1] = ALEffect->Reverb.LateReverbPan[1]; pflValues[2] = ALEffect->Reverb.LateReverbPan[2]; break; default: alSetError(AL_INVALID_ENUM); break; } } else if(ALEffect->type == AL_EFFECT_REVERB) { switch(param) { case AL_REVERB_DENSITY: case AL_REVERB_DIFFUSION: case AL_REVERB_GAIN: case AL_REVERB_GAINHF: case AL_REVERB_DECAY_TIME: case AL_REVERB_DECAY_HFRATIO: case AL_REVERB_REFLECTIONS_GAIN: case AL_REVERB_REFLECTIONS_DELAY: case AL_REVERB_LATE_REVERB_GAIN: case AL_REVERB_LATE_REVERB_DELAY: case AL_REVERB_AIR_ABSORPTION_GAINHF: case AL_REVERB_ROOM_ROLLOFF_FACTOR: alGetEffectf(effect, param, pflValues); break; default: alSetError(AL_INVALID_ENUM); break; } } else if(ALEffect->type == AL_EFFECT_ECHO) { switch(param) { case AL_ECHO_DELAY: case AL_ECHO_LRDELAY: case AL_ECHO_DAMPING: case AL_ECHO_FEEDBACK: case AL_ECHO_SPREAD: alGetEffectf(effect, param, pflValues); break; default: alSetError(AL_INVALID_ENUM); break; } } else alSetError(AL_INVALID_ENUM); } else alSetError(AL_INVALID_NAME); ProcessContext(Context); }
static ALvoid CDECL wine_alGetEffectf(ALuint eid, ALenum param, ALfloat* value) { alGetEffectf(eid, param, value); }
AL_API ALvoid AL_APIENTRY alGetEffectfv(ALuint effect, ALenum param, ALfloat *pflValues) { ALCcontext *Context; ALCdevice *Device; ALeffect *ALEffect; Context = GetContextSuspended(); if(!Context) return; Device = Context->Device; if((ALEffect=LookupEffect(Device->EffectMap, effect)) != NULL) { if(ALEffect->type == AL_EFFECT_EAXREVERB) { switch(param) { case AL_EAXREVERB_DENSITY: case AL_EAXREVERB_DIFFUSION: case AL_EAXREVERB_GAIN: case AL_EAXREVERB_GAINHF: case AL_EAXREVERB_GAINLF: case AL_EAXREVERB_DECAY_TIME: case AL_EAXREVERB_DECAY_HFRATIO: case AL_EAXREVERB_DECAY_LFRATIO: case AL_EAXREVERB_REFLECTIONS_GAIN: case AL_EAXREVERB_REFLECTIONS_DELAY: case AL_EAXREVERB_LATE_REVERB_GAIN: case AL_EAXREVERB_LATE_REVERB_DELAY: case AL_EAXREVERB_AIR_ABSORPTION_GAINHF: case AL_EAXREVERB_ECHO_TIME: case AL_EAXREVERB_ECHO_DEPTH: case AL_EAXREVERB_MODULATION_TIME: case AL_EAXREVERB_MODULATION_DEPTH: case AL_EAXREVERB_HFREFERENCE: case AL_EAXREVERB_LFREFERENCE: case AL_EAXREVERB_ROOM_ROLLOFF_FACTOR: alGetEffectf(effect, param, pflValues); break; case AL_EAXREVERB_REFLECTIONS_PAN: pflValues[0] = ALEffect->Reverb.ReflectionsPan[0]; pflValues[1] = ALEffect->Reverb.ReflectionsPan[1]; pflValues[2] = ALEffect->Reverb.ReflectionsPan[2]; break; case AL_EAXREVERB_LATE_REVERB_PAN: pflValues[0] = ALEffect->Reverb.LateReverbPan[0]; pflValues[1] = ALEffect->Reverb.LateReverbPan[1]; pflValues[2] = ALEffect->Reverb.LateReverbPan[2]; break; default: alSetError(Context, AL_INVALID_ENUM); break; } } else if(ALEffect->type == AL_EFFECT_REVERB) { switch(param) { case AL_REVERB_DENSITY: case AL_REVERB_DIFFUSION: case AL_REVERB_GAIN: case AL_REVERB_GAINHF: case AL_REVERB_DECAY_TIME: case AL_REVERB_DECAY_HFRATIO: case AL_REVERB_REFLECTIONS_GAIN: case AL_REVERB_REFLECTIONS_DELAY: case AL_REVERB_LATE_REVERB_GAIN: case AL_REVERB_LATE_REVERB_DELAY: case AL_REVERB_AIR_ABSORPTION_GAINHF: case AL_REVERB_ROOM_ROLLOFF_FACTOR: alGetEffectf(effect, param, pflValues); break; default: alSetError(Context, AL_INVALID_ENUM); break; } } else if(ALEffect->type == AL_EFFECT_ECHO) { switch(param) { case AL_ECHO_DELAY: case AL_ECHO_LRDELAY: case AL_ECHO_DAMPING: case AL_ECHO_FEEDBACK: case AL_ECHO_SPREAD: alGetEffectf(effect, param, pflValues); break; default: alSetError(Context, AL_INVALID_ENUM); break; } } else if(ALEffect->type == AL_EFFECT_RING_MODULATOR) { switch(param) { case AL_RING_MODULATOR_FREQUENCY: case AL_RING_MODULATOR_HIGHPASS_CUTOFF: alGetEffectf(effect, param, pflValues); break; default: alSetError(Context, AL_INVALID_ENUM); break; } } else alSetError(Context, AL_INVALID_ENUM); } else alSetError(Context, AL_INVALID_NAME); ProcessContext(Context); }