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