1SDL(3) User Contributed Perl Documentation SDL(3)
2
3
4
6 SDL - Simple DirectMedia Layer for Perl
7
9 Core
10
12 use SDL;
13
15 SDL_perl is a package of Perl modules that provide both functional and
16 object oriented interfaces to the Simple DirectMedia Layer for Perl 5.
17 This package takes some liberties with the SDL API, and attempts to
18 adhere to the spirit of both the SDL and Perl. This document describes
19 the low-level functional SDL Perl API. For the object oriented
20 programming interface please see the documentation provided on a per-
21 class basis.
22
24 The constants are not exported by default. You can export them by
25 doing:
26
27 use SDL ':all';
28
29 or access them directly:
30
31 SDL::SDL_INIT_AUDIO;
32
33 or by choosing the export tags below:
34
35 Export tag: ':init'
36
37 SDL_INIT_AUDIO
38 SDL_INIT_VIDEO
39 SDL_INIT_CDROM
40 SDL_INIT_EVERYTHING
41 SDL_INIT_NOPARACHUTE
42 SDL_INIT_JOYSTICK
43 SDL_INIT_TIMER
44
46 init
47 SDL::init( $flags );
48
49 As with the C language API, SDL Perl initializes the SDL environment
50 with the "SDL::init" subroutine. This routine takes a mode flag
51 constructed through the bitwise OR product of the "SDL_INIT_*"
52 constants. The $flags tell "SDL::init" which subsystems to initialize.
53
54 SDL::init(SDL_INIT_AUDIO | SDL_INIT_JOYSTICK);
55
56 "SDL::init" returns 0 on success, or "-1" on error.
57
58 init_sub_system
59 SDL::init_sub_system( $flags );
60
61 After SDL has been initialized with "SDL::init" you may initialize any
62 uninitialized subsystems with "SDL::init_sub_system". The $flags tell
63 "SDL::init_sub_system" which subsystems to initialize, and are taken in
64 the same way as "SDL::init".
65
66 "SDL::init_sub_system" returns 0 on success, or "-1" on error.
67
68 quit_sub_system
69 SDL::quit_sub_system( $flags );
70
71 "SDL::quit_sub_system" allows you to shut down a subsystem that has
72 been previously initialized by "SDL::init" or "SDL::init_sub_system".
73 The $flags tell "SDL::quit_sub_system" which subsystems to shut down,
74 and are taken in the same way as "SDL::init".
75
76 "SDL::quit_sub_system" doesn't return any values.
77
78 quit
79 SDL::quit;
80
81 "SDL::quit" Shuts down all SDL subsystems, unloads the dynamically
82 linked library and frees the allocated resources.
83
84 Note: This will be called automatically when Perl exits. You don't need
85 to call this, except if you want to initialize SDL again after this.
86
87 "SDL::quit" doesn't return any values.
88
89 was_init
90 my $flags = SDL::was_init( $flags );
91
92 "SDL::was_init" allows you to see which SDL subsystems have been
93 initialized. The $flags tell "SDL::was_init" which subsystems to
94 check, and are taken in the same way as "SDL::init".
95
96 "SDL::was_init" returns a mask of the initialized subsystems it checks.
97 If $flags is 0 or "SDL_INIT_EVERYTHING", a mask of all initialized
98 subsystems will be returned (this does not include
99 "SDL_INIT_EVENTTHREAD" or "SDL_INIT_NOPARACHUTE").
100
101 use SDL ':all';
102
103 my $mask = SDL::was_init(SDL_INIT_AUDIO | SDL_INIT_JOYSTICK);
104 if($mask & SDL_INIT_AUDIO and $mask & SDL_INIT_JOYSTICK) {
105 # Both subsystems are initialized!
106 }
107
108 get_error
109 my $error = SDL::get_error;
110
111 Returns a scalar value containing the last error message set by the SDL
112 library (if any).
113
114 set_error_real
115 SDL::set_error_real( $printf_format, @values )
116
117 "SDL::set_error_real" sets the SDL error to a "printf" style formatted
118 string.
119
120 "SDL::set_error_real" doesn't return any values.
121
122 clear_error
123 SDL::clear_error;
124
125 "SDL::clear_error" deletes all information about the last SDL error.
126 This is useful if the error has been handled by the program.
127
128 "SDL::clear_error" doesn't return any values.
129
130 version
131 my $version = SDL::version;
132
133 Returns an "SDL::Version" object of the SDL library at compile-time.
134
135 use SDL;
136 use SDL::Version;
137
138 my $v = SDL::version;
139 printf("got version: %d.%d.%d\n", $v->major, $v->minor, $v->patch);
140
141 linked_version
142 "SDL::linked_version" works in the same way as "SDL::version", but
143 returns an "SDL::Version" object of the SDL library at link-time.
144
145 get_ticks
146 my $ticks = SDL::get_ticks;
147
148 Returns the number of milliseconds since SDL library initialization.
149 This value wraps around if the program runs for more than 49.7 days
150
151 get_handle
152 my $win32_handle = SDL::get_handle;
153
154 A video surface must be inited to get a handle.
155
156 delay
157 SDL::delay( $ms );
158
159 "SDL::delay" waits the specified number of milliseconds before
160 returning. The actual delay may be longer than specified depending on
161 the underlying OS.
162
163 "SDL::delay" doesn't return anything.
164
165 # Delay for half a second
166 SDL::delay(500);
167
169 A new book has been started to provide a complete tutorial for SDL. See
170 <http://bit.ly/hvxc9V>.
171
173 Project Founder
174 David J. Goehrig
175
176 Current Maintainers
177 Kartik Thakore (kthakore)
178
179 Tobias Leich (FROGGS)
180
181 Core Developers and Contributors
182 The following people have dedicated blood sweat and tears to making SDL
183 Perl possible.
184
185 See the impact graph <https://github.com/PerlGameDev/SDL/graphs/impact>
186 on our github repository.
187
188 Andy Bakun <sdlperl@thwartedefforts.org>
189
190 Benedikt Meurer <bmeurer@fwdn.de>
191
192 Blaise Roth (Blaizer) <blaizer@cpan.org>
193
194 Breno G. de Oliveira (garu)
195
196 Brian Cassidy (bricas)
197
198 chromatic <chromatic@wgz.org>
199
200 Daniel Mantovani <daniel.oliveira.mantovani@gmail.com>
201
202 Daniel Ruoso http://daniel.ruoso.com/
203
204 David J. Goehrig <dgoehrig@cpan.org>
205
206 Dustin Mays (dorkfish) <dork.fish.wat.@gmail.com>
207
208 Fedora
209
210 Gabor Szabo (szabgab) <szabgab@gmail.com>
211
212 Guillaue Cottenceau (gc) <gc@mandrakesoft.com>
213
214 Heikki MehtA~nen (hmehta/hejki) <heikki@mehtanen.fi>
215
216 James King
217
218 James Wright <jwright@cpan.org>
219
220 Jeffrey T. Palmer (jtpalmer) <jeffrey.t.palmer@gmail.com>
221
222 Kartik Thakore (kthakore) <thakore.kartik@gmail.com>
223
224 KatrinaTheLamia
225
226 kmx <kmx@cpan.org>
227
228 Luke
229
230 Michael Lamertz <mike@perl-ronin.de>
231
232 morgoth.666
233
234 Peter BARABAS <z0d@artifact.hu>
235
236 Russell Valentine <russ_allegro@yahoo.com>
237
238 Ryan Hanlon
239
240 Stephane Desneux <sdx@desneux.com>
241
242 Tels <http://www.bloodgate.com>
243
244 Thomas Tongue
245
246 Tobias Leich (FROGGS)
247
248 Tony C
249
250 Yuval Kogman (nothingmuch)
251
252 Wayne Keenan <wayne@metaverse.fsnet.co.uk>
253
254 If you would like to contribute to SDL Perl, please post a message on
255 the mailing list:
256
257 sdl-devel@perl.org
258
259 And request access to the github repository. Or drop us a line on #sdl
260 over at irc.perl.org
261
263 Copyright 2002-2010 SDL Authors as listed above, all rights reserved.
264
265 This program is free software; you can redistribute it and/or modify it
266 under the same terms as Perl itself.
267
269 BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
270 FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT
271 WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER
272 PARTIES PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND,
273 EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
274 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
275 ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH
276 YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
277 NECESSARY SERVICING, REPAIR, OR CORRECTION.
278
279 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
280 WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
281 REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENCE, BE LIABLE
282 TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL, OR
283 CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
284 SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
285 RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
286 FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
287 SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
288 DAMAGES.
289
290
291
292perl v5.36.0 2022-07-22 SDL(3)