/* * 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 ); }