Class: SDL2::Mixer::Channels::Group

Inherits:
Object
  • Object
show all
Defined in:
ext/sdl2_ext/mixer.c,
ext/sdl2_ext/mixer.c

Overview

This class represents a channel group. A channel group is a set of channels and you can stop playing and fade out playing channels of an group at the same time.

Each channel group is identified by an integer called tag.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(tag) ⇒ Object

Initialize the channel with given *tag*.

Groups with a common tag are identified.



542
543
544
545
546
# File 'ext/sdl2_ext/mixer.c', line 542

static VALUE Group_initialize(VALUE self, VALUE tag)
{
    rb_iv_set(self, "@tag", tag);
    return Qnil;
}

Instance Attribute Details

#tagInteger (readonly)

Returns tag id.

Returns:

  • (Integer)

    tag id

Class Method Details

.defaultSDL2::Mixer::Channels::Group

Get the default channel group.

The default channel group refers all channels in the mixer system.



555
556
557
558
559
# File 'ext/sdl2_ext/mixer.c', line 555

static VALUE Group_s_default(VALUE self)
{
    VALUE tag = INT2FIX(-1);
    return rb_class_new_instance(1, &tag, self);
}

Instance Method Details

#==(other) ⇒ Boolean

Return true if *self* and *other* are same.

*self* and *other* are considered to be same if they have the same tag.

Parameters:

  • other (SDL2::Mixer::Channel::Group)

    a compared object

Returns:

  • (Boolean)


581
582
583
584
585
# File 'ext/sdl2_ext/mixer.c', line 581

static VALUE Group_eq(VALUE self, VALUE other)
{
    return INT2BOOL(rb_obj_is_instance_of(other, cGroup) &&
                    Group_tag(self) == Group_tag(other));
}

#add(which) ⇒ nil

Add a channel to the group.

Parameters:

  • which (Integer)

    a channel id

Returns:

  • (nil)


594
595
596
597
598
599
600
601
# File 'ext/sdl2_ext/mixer.c', line 594

static VALUE Group_add(VALUE self, VALUE which)
{
    if (!Mix_GroupChannel(NUM2INT(which), Group_tag(self))) {
        SDL_SetError("Cannot add channel %d", NUM2INT(which));
        SDL_ERROR();
    }
    return Qnil;
}

#availableInteger

Return the first available channel in the group.

Return -1 if no channel is available.

Returns:

  • (Integer)


620
621
622
623
# File 'ext/sdl2_ext/mixer.c', line 620

static VALUE Group_available(VALUE self)
{
    return INT2NUM(Mix_GroupAvailable(Group_tag(self)));
}

#countInteger

Get the number of channels belong to the group.

Returns:

  • (Integer)


608
609
610
611
# File 'ext/sdl2_ext/mixer.c', line 608

static VALUE Group_count(VALUE self)
{
    return INT2NUM(Mix_GroupCount(Group_tag(self)));
}

#fade_out(ms) ⇒ Integer

Halt playing of all channels in the group with fade-out effect.

Parameters:

  • ms (Integer)

    milliseconds of fade-out effect

Returns:

  • (Integer)

    the number of channels affected by this method

See Also:



658
659
660
661
# File 'ext/sdl2_ext/mixer.c', line 658

static VALUE Group_fade_out(VALUE self, VALUE ms)
{
    return INT2NUM(Mix_FadeOutGroup(Group_tag(self), NUM2INT(ms)));
}

#haltnil

Halt playing of all channels in the group.



670
671
672
673
674
# File 'ext/sdl2_ext/mixer.c', line 670

static VALUE Group_halt(VALUE self)
{
    Mix_HaltGroup(Group_tag(self));
    return Qnil;
}

#newerInteger

Return the newer cahnnel in the group.

Return -1 if no channel is available.

Returns:

  • (Integer)


644
645
646
647
# File 'ext/sdl2_ext/mixer.c', line 644

static VALUE Group_newer(VALUE self)
{
    return INT2NUM(Mix_GroupNewer(Group_tag(self)));
}

#oldestInteger

Return the oldest cahnnel in the group.

Return -1 if no channel is available.

Returns:

  • (Integer)


632
633
634
635
# File 'ext/sdl2_ext/mixer.c', line 632

static VALUE Group_oldest(VALUE self)
{
    return INT2NUM(Mix_GroupOldest(Group_tag(self)));
}