5 # Copyright (C) 2005 David J. Goehrig <dgoehrig@cpan.org>
7 # ------------------------------------------------------------------------------
9 # This library is free software; you can redistribute it and/or
10 # modify it under the terms of the GNU Lesser General Public
11 # License as published by the Free Software Foundation; either
12 # version 2.1 of the License, or (at your option) any later version.
14 # This library is distributed in the hope that it will be useful,
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 # Lesser General Public License for more details.
19 # You should have received a copy of the GNU Lesser General Public
20 # License along with this library; if not, write to the Free Software
21 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23 # ------------------------------------------------------------------------------
25 # Please feel free to send questions, suggestions or improvements to:
37 use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
46 @ISA = qw(Exporter DynaLoader);
47 @EXPORT = qw( in verify &NULL );
50 # Give our caller SDL::Constant's stuff as well as ours.
54 $self->export_to_level(1, @_);
55 SDL::Constants->export_to_level(1);
58 $VERSION = '2.2.2.15';
60 print "$VERSION" if (defined($ARGV[0]) && ($ARGV[0] eq '--SDLperl'));
70 return 0 unless defined $k;
71 my $r = ((scalar grep { defined $_ && $_ eq $k } @t) <=> 0);
78 my ($options,@valid_options) = @_;
79 for (keys %$options) {
80 croak "Invalid option $_\n" unless in ($_, @valid_options);
90 SDL_perl - Simple DirectMedia Layer for Perl
98 SDL_perl is a package of perl modules that provides both functional and object orient
99 interfaces to the Simple DirectMedia Layer for Perl 5. This package does take some
100 liberties with the SDL API, and attempts to adhere to the spirit of both the SDL
101 and Perl. This document describes the low-level functional SDL_perl API. For the
102 object oriented programming interface please see the documentation provided on a
107 As with the C language API, SDL_perl initializes the SDL environment through
108 the C<SDL::Init> subroutine. This routine takes a mode flag constructed through
109 the bitwise OR product of the following functions:
136 C<SDL::Init> returns 0 on success, or -1 on error.
140 The last error message set by the SDL library can be retrieved using the subroutine
141 C<SDL::GetError>, which returns a scalar containing the text of the message if any.
145 This subroutine allows an application to delay further operations for atleast a
146 number of milliseconds provided as the argument. The actual delay may be longer
147 than the specified depending on the underlying OS.
151 An application may retrieve the number of milliseconds expired since the initilization
152 of the application through this subroutine. This value resets rougly ever 49 days.
154 =head2 AddTimer(interval,callback,param)
156 C<AddTimer> will register a SDL_NewTimerCallback function to be executed after
157 C<interval> milliseconds, with parameter C<param>. SDL_NewTimerCallback objects
158 can be constructed with the C<NewTimer> subroutine. C<SDL::PerlTimerCallback>
159 will return a valid callback for executing a perl subroutine or closure.
160 This subroutine returns a SDL_TimerID for the newly registered callback, or NULL
163 =head2 NewTimer(interval,subroutine)
165 The C<NewTimer> takes an interval in milliseconds and a reference to a subroutine
166 to call at that interval. The subroutine will be invoked in a void context
167 and accepts no parameters. The callback used is that returned by C<SDL::PerlTimerCallback>.
168 C<NewTimer> returns the SDL_TimerID for the new timer or NULL on error.
170 =head2 RemoveTimer(id)
172 This subroutine taks a SDL_TimerID and removes it from the list of active callbacks.
173 RemoveTimer returns false on failure.
177 This subroutine is depreciated, please use C<NewTimer> or C<AddTimer> instead.
181 C<SDL::CDNumDrives> returns the number of available CD-ROM drives in the system.
185 The subroutine C<SDL::CDName> returns the system specific human readable device name
186 for the given CD-ROM drive.
190 This subroutine opens a CD-ROM drive for access, returning NULL if the drive is busy
191 or otherwise unavailable. On success this subroutine returns a handle to the CD-ROM
194 =head2 CDTrackListing(cd)
196 C<SDL::CDTrackListing> returns a human readable description of a CD-ROM. For each
197 track one line will be produced with the following format:
199 Track index: %d, id %d, %2d.%2d
201 This is provided to ease the creation of human readable descriptions and debugging.
203 =head2 CDTrackId(track)
205 C<CDTrackId> returns the id field of the given SDL_CDtrack structure.
207 =head2 CDTrackType(track)
209 C<CDTrackType> returns the type field of the given SDL_CDtrack structure.
211 =head2 CDTrackLength(track)
213 C<CDTrackLength> returns the length field of the given SDL_CDtrack structure.
215 =head2 CDTrackOffset(track)
217 C<CDTrackOffset> returns the offset field of the given SDL_CDtrack structure.
221 The function C<CDStatus> returns the current status of the given SDL_CDrom.
222 C<CDStatus>'s return values are:
243 =head2 CDPlayTracks(cd,track,tracks,frame,frames)
245 To start playing from an arbitrary portion of a CD, one can provide
246 C<SDL::CDPlayTracks> with a CD, a starting track, the number of tracks,
247 a starting frame, and the number of frames to be played.
249 =head2 CDPlay(cd,track,length)
251 C<SDL::CDPlay> plays the next C<length> tracks starting from C<track>
255 This function will pause CD playback until resume is called.
259 This function will resume CD playback if paused.
263 C<SDL::CDStop> will stop CD playback if playing.
267 This function will eject the CD
271 This function will release an opened CD.
307 =head2 MOUSEBUTTONDOWN
317 =head2 ActiveEventGain
319 =head2 ActiveEventState
329 =head2 SDLK_BACKSPACE
351 =head2 SDLK_AMPERSAND
355 =head2 SDLK_LEFTPAREN
357 =head2 SDLK_RIGHTPAREN
393 =head2 SDLK_SEMICOLON
405 =head2 SDLK_LEFTBRACKET
407 =head2 SDLK_BACKSLASH
409 =head2 SDLK_RIGHTBRACKET
413 =head2 SDLK_UNDERSCORE
415 =head2 SDLK_BACKQUOTE
491 =head2 SDLK_KP_PERIOD
493 =head2 SDLK_KP_DIVIDE
495 =head2 SDLK_KP_MULTIPLY
503 =head2 SDLK_KP_EQUALS
557 =head2 SDLK_SCROLLOCK
623 =head2 KeyEventUnicode
625 =head2 KeyEventScanCode
627 =head2 MouseMotionState
633 =head2 MouseMotionXrel
635 =head2 MouseMotionYrel
637 =head2 MouseButtonState
649 =head2 EnableKeyRepeat
657 =head2 CreateRGBSurface
659 =head2 CreateRGBSurfaceFrom
665 =head2 SurfacePalette
667 =head2 SurfaceBitsPerPixel
669 =head2 SurfaceBytesPerPixel
687 =head2 SurfaceColorKey
707 =head2 GetVideoSurface
735 =head2 PaletteNColors
767 =head2 MapRGB (surface,r,g,b)
769 C<SDL::MapRGB> translates the composite red (r), green (g), blue (b)
770 colors according to the given surface to a interger color value. This
771 integer can be used in functions like C<SDL::FillRect>, and is not
772 the same as the format independent Color object returned by C<SDL::NewColor>.
774 =head2 MapRGBA (surface,r,g,b,a)
776 C<SDL::MapRGBA> works as C<SDL::MapRGB> but takes an additional alpha (a)
777 component for semi-transperant colors.
799 =head2 FillRect(surface,rect,color)
801 C<SDL::FillRect> draws a solid rectangle of color on the given surface.
802 If the rectangle is NULL, the entire surface will be painted.
842 =head2 ConvertAudioData
858 =head2 MIX_MAX_VOLUME
860 =head2 MIX_DEFAULT_FREQUENCY
862 =head2 MIX_DEFAULT_FORMAT
864 =head2 MIX_DEFAULT_CHANNELS
868 =head2 MIX_FADING_OUT
874 =head2 MixAllocateChannels
882 =head2 MixQuickLoadWAV
888 =head2 MixSetPostMixCallback
890 =head2 MixSetMusicHook
892 =head2 MixSetMusicFinishedHook
894 =head2 MixGetMusicHookData
896 =head2 MixReverseChannels
898 =head2 MixGroupChannel
900 =head2 MixGroupChannels
902 =head2 MixGroupAvailable
906 =head2 MixGroupOldest
910 =head2 MixPlayChannel
912 =head2 MixPlayChannelTimed
916 =head2 MixFadeInChannel
918 =head2 MixFadeInChannelTimed
920 =head2 MixFadeInMusic
924 =head2 MixVolumeChunk
926 =head2 MixVolumeMusic
928 =head2 MixHaltChannel
934 =head2 MixExpireChannel
936 =head2 MixFadeOutChannel
938 =head2 MixFadeOutGroup
940 =head2 MixFadeOutMusic
942 =head2 MixFadingMusic
944 =head2 MixFadingChannel
954 =head2 MixResumeMusic
956 =head2 MixRewindMusic
958 =head2 MixPausedMusic
962 =head2 MixPlayingMusic
982 =head2 GL_ACCUM_RED_SIZE
984 =head2 GL_ACCUM_GREEN_SIZE
986 =head2 GL_ACCUM_BLUE_SIZE
988 =head2 GL_ACCUM_ALPHA_SIZE
990 =head2 GL_BUFFER_SIZE
994 =head2 GL_STENCIL_SIZE
996 =head2 GL_DOUBLEBUFFER
998 =head2 GL_SetAttribute
1000 =head2 GL_GetAttribute
1002 =head2 GL_SwapBuffers
1012 =head2 JoystickOpened
1014 =head2 JoystickIndex
1016 =head2 JoystickNumAxes
1018 =head2 JoystickNumBalls
1020 =head2 JoystickNumHats
1022 =head2 JoystickNumButtons
1024 =head2 JoystickUpdate
1026 =head2 JoystickGetAxis
1028 =head2 JoystickGetHat
1030 =head2 JoystickGetButton
1032 =head2 JoystickGetBall
1034 =head2 JoystickClose
1038 David J. Goehrig 2.1.3
1039 Kartik Thakore 2.2.0 +
1043 David J. Goehrig, Wayne Keenan, Guillaume Cottenceau, Kartik Thakore
1047 perl(1) SDL::App(3) SDL::Surface(3) SDL::Event(3) SDL::Rect(3)
1048 SDL::Palette(3) SDL::Mixer(3) SDL::Cdrom(3)