/*
* call-seq:
* fading?( direction=:either ) -> true or false
*
* True if the Sound is currently fading in or out.
* See also #play and #fade_out.
*
* direction:: Check if it is fading :in, :out, or :either.
* (Symbol, required)
*
*/
static VALUE rg_sound_fadingp( int argc, VALUE *argv, VALUE self )
{
RG_Sound *sound;
Data_Get_Struct(self, RG_Sound, sound);
VALUE vdirection;
rb_scan_args(argc, argv, "01", &vdirection);
int direction;
int channel = sound->channel;
/* If it's not actually on a channel, return false right away. */
if( !(_rg_sound_channel_check(sound)) )
{
return Qfalse;
}
if( RTEST(vdirection) )
{
if( make_symbol("in") == vdirection )
{
return ( (Mix_FadingChannel(channel) == MIX_FADING_IN) ? Qtrue : Qfalse );
}
else if( make_symbol("out") == vdirection )
{
return ( (Mix_FadingChannel(channel) == MIX_FADING_OUT) ? Qtrue : Qfalse );
}
else if( make_symbol("either") == vdirection )
{
return ( (Mix_FadingChannel(channel) != MIX_NO_FADING) ? Qtrue : Qfalse );
}
}
/* default */
return ( (Mix_FadingChannel(channel) != MIX_NO_FADING) ? Qtrue : Qfalse );
}