/usr/lib/perl5/SDL/Mixer.pm is in libsdl-perl 2.2.5-1build2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 | #!/usr/bin/env perl
#
# Mixer.pm
#
# Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
#
# ------------------------------------------------------------------------------
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
# ------------------------------------------------------------------------------
#
# Please feel free to send questions, suggestions or improvements to:
#
# David J. Goehrig
# dgoehrig@cpan.org
#
package SDL::Mixer;
use strict;
use warnings;
use Carp;
use SDL;
use SDL::Sound;
use SDL::Music;
BEGIN {
}
$SDL::Mixer::initialized = 0;
sub new {
my $proto = shift;
my $class = ref($proto) || $proto;
my $self = {};
my %options = @_;
my $frequency = $options{-frequency} || $options{-rate} || SDL::MIX_DEFAULT_FREQUENCY();
my $format = $options{-format} || SDL::MIX_DEFAULT_FORMAT();
my $channels = $options{-channels} || SDL::MIX_DEFAULT_CHANNELS();
my $size = $options{-size} || 4096;
unless ( $SDL::Mixer::initialized ) {
SDL::MixOpenAudio($frequency,$format,$channels,$size ) &&
croak SDL::GetError();
$SDL::Mixer::initialized = 1;
} else {
++$SDL::Mixer::initialized;
}
bless $self,$class;
return $self;
}
sub DESTROY {
my $self = shift;
--$SDL::Mixer::initialized;
unless ($SDL::Mixer::initialized) {
SDL::MixCloseAudio();
}
}
sub query_spec () {
my ($status,$freq,$format,$channels) = SDL::MixQuerySpec();
my %hash = ( -status => $status, -frequency => $freq,
-format => $format, -channels => $channels );
return \%hash;
}
sub reserve_channels ($$) {
my ($self,$channels) = @_;
return SDL::MixReserveChannels($channels);
}
sub allocate_channels ($$) {
my ($self,$channels) = @_;
return SDL::MixAllocateChannels($channels);
}
sub group_channel ($$$) {
my ($self,$channel,$group) = @_;
return SDL::MixGroupChannel($channel, $group);
}
sub group_channels ($$$$) {
my ($self,$from,$to,$group) = @_;
return SDL::MixGroupChannels($from,$to,$group);
}
sub group_available ($$) {
my ($self,$group) = @_;
return SDL::MixGroupAvailable($group);
}
sub group_count ($$) {
my ($self,$group) = @_;
return SDL::MixGroupCount($group);
}
sub group_oldest ($$) {
my ($self,$group) = @_;
return SDL::MixGroupOldest($group);
}
sub group_newer ($$) {
my ($self,$group) = @_;
return SDL::MixGroupNewer($group);
}
sub play_channel ($$$$;$) {
my ($self,$channel,$chunk,$loops,$ticks) = @_;
$ticks ||= -1;
return SDL::MixPlayChannelTimed($channel,$$chunk,$loops,$ticks);
}
sub play_music ($$$) {
my ($self,$music,$loops) = @_;
return SDL::MixPlayMusic($$music,$loops);
}
sub fade_in_channel ($$$$$;$) {
my ($self,$channel,$chunk,$loops,$ms,$ticks) = @_;
$ticks ||= -1;
return SDL::MixFadeInChannelTimed($channel,$$chunk,$loops,$ms,$ticks);
}
sub fade_in_music ($$$$) {
my ($self,$music,$loops,$ms) = @_;
return SDL::MixFadeInMusic($$music,$loops,$ms);
}
sub channel_volume ($$$) {
my ($self,$channel,$volume) = @_;
return SDL::MixVolume($channel,$volume);
}
sub music_volume ($$) {
my ($self,$volume) = @_;
return SDL::MixVolumeMusic($volume);
}
sub halt_channel ($$) {
my ($self,$channel) = @_;
return SDL::MixHaltChannel($channel);
}
sub halt_group ($$) {
my ($self,$group) = @_;
return SDL::MixHaltGroup($group);
}
sub halt_music (){
return SDL::MixHaltMusic();
}
sub channel_expire ($$$) {
my ($self,$channel,$ticks) = @_;
return SDL::MixExpireChannel($channel,$ticks);
}
sub fade_out_channel ($$$) {
my ($self,$channel,$ms) = @_;
return SDL::MixFadeOutChannel($channel,$ms);
}
sub fade_out_group ($$$) {
my ($self,$group,$ms) = @_;
return SDL::MixFadeOutGroup($group,$ms);
}
sub fade_out_music ($$) {
my ($self,$ms) = @_;
return SDL::MixFadeOutMusic($ms);
}
sub fading_music () {
return SDL::MixFadingMusic();
}
sub fading_channel ($$) {
my ($self,$channel) = @_;
return SDL::MixFadingChannel($channel);
}
sub pause ($$) {
my ($self,$channel) = @_;
SDL::MixPause($channel);
}
sub resume ($$) {
my ($self,$channel) = @_;
SDL::MixResume($channel);
}
sub paused ($$) {
my ($self,$channel) = @_;
return SDL::MixPaused($channel);
}
sub pause_music () {
SDL::MixPauseMusic();
}
sub resume_music () {
SDL::MixResumeMusic();
}
sub rewind_music (){
SDL::MixRewindMusic();
}
sub music_paused (){
return SDL::MixPausedMusic();
}
sub playing ($$) {
my ($self,$channel) = @_;
return SDL::MixPlaying($channel);
}
sub playing_music () {
return SDL::MixPlayingMusic();
}
1;
__END__;
=pod
=head1 NAME
SDL::Mixer - a SDL perl extension
=head1 SYNOPSIS
$mixer = new SDL::Mixer -frequency => MIX_DEFAULT_FREQUENCY,
-format => MIX_DEFAULT_FORMAT,
-channels => MIX_DEFAULT_CHANNELS,
-size => 4096;
=head1 DESCRIPTION
SDL::Mixer allows you access to the SDL mixer library, enablig sound and
music volume setting, playing, pausing and resuming, as well as fading
the sound and music in and out.
=head1 METHODS
=head2 new()
$mixer = SDL::Mixer->new( -frequency => MIX_DEFAULT_FREQUENCY,
-format => MIX_DEFAULT_FORMAT,
-channels => MIX_DEFAULT_CHANNELS,
-size => 4096);
Creates a new SDL::Mixer object. C<$size> is the buffer size in bytes.
=head2 query_spec()
my $specs = SDL::Mixer::query_spec();
Returns a hash reference, containing the following keys and their respective
values:
-status
-frequency
-channels
-format
=head2 reserve_channels
$mixer->reserve_channels(4);
Reserve so many channels.
=head2 allocate_channels()
$mixer->reserve_channels(2);
Allocate so many channels.
=head2 group_channel(channel,group)
Group the channel number C<$channel> into group C<$group>.
=head2 group_channels(from,to,group)
Groups a range of channels
=head2 group_available(group)
Return true when the group is available.
=head2 group_count(group)
Returns the number of channels in the group
=head2 group_oldest()
=head2 group_newer()
=head2 play_channel()
=head2 play_music()
Play C<$music> C<$loop> times.
=head2 fade_in_channel(channel,chunk,loops,ms,ticks)
Fades a channel in
=head2 fade_in_music(music,loops,ms)
Fades the music in over a number of ms, looping as it does
=head2 channel_volume(channel,volume)
Sets the volume for a single channel
=head2 mucis_volume(volume)
Set the volume for the music.
=head2 halt_channel(channel)
Stops a specific channel
=head2 halt_group(group)
Stops a group of channels
=head2 halt_music()
Stops the music
=head2 channel_expire(channel,ticks)
Ignores the channel after C<ticks> has expired
=head2 fade_out_channel(channel,ms)
Fade the channel number C<$channel> in C<$ms> ms out.
=head2 fade_out_group(group,ms)
Fade the channel group C<$group> in C<$ms> ms out.
=head2 fade_out_music(ms)
Fade the music in C<$ms> ms out.
=head2 fading_music()
Return true when the music is currently fading in or out.
=head2 fading_channel()
Return true when the channel number C<$channel> is currently fading in or out.
=head2 pause( channel )
Pause the channel C<$channel>.
=head2 resume(channel)
Resume the channel C<$channel>.
=head2 paused()
Return true when the channel is currently paused.
=head2 pause_music()
Pause the music play.
=head2 resume_music()
Resume the music play.
=head2 rewind_music()
Resets the music file to the beginning
=head2 music_paused()
Return true when the music is currently paused.
=head2 playing()
Return true when the channel is currently playing.
=head2 playing_music ()
Return true when the music is currently playing.
=head1 AUTHORS
David J. Goehrig, basic doc added by Tels <http://bloodgate.com>.
=head1 SEE ALSO
L<perl>, L<SDL::Music> and L<SDL::Sound>.
=cut
|