<h3 id="TOP">Index</h3>
<ul><li><a href="#NAME">NAME</a></li>
-<li><a href="#CATEGORY">CATEGORY</a>
+<li><a href="#SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#EXPORTS">EXPORTS</a></li>
+<li><a href="#DESCRIPTION">DESCRIPTION</a></li>
+<li><a href="#METHODS">METHODS</a>
+<ul><li><a href="#cd_num_drives">cd_num_drives()</a></li>
+<li><a href="#name_cd">name(cd)</a></li>
+<li><a href="#status_cd">status(cd)</a></li>
+<li><a href="#play_cd_start_length_fs_fl">play(cd,start,length,fs,fl) </a></li>
+<li><a href="#pause_cd">pause(cd)</a></li>
+<li><a href="#resume_cd">resume(cd)</a></li>
+<li><a href="#stop_cd">stop(cd)</a></li>
+<li><a href="#eject_cd">eject(cd)</a></li>
+<li><a href="#id_cd">id(cd)</a></li>
+<li><a href="#num_tracks_cd">num_tracks(cd)</a></li>
+<li><a href="#track_cd_number">track(cd,number)</a></li>
+<li><a href="#current_cd">current(cd)</a></li>
+<li><a href="#current_frame_cd">current_frame(cd)</a></li>
+</ul>
+</li>
+<li><a href="#AUTHORS">AUTHORS</a></li>
+<li><a href="#SEE_ALSO">SEE ALSO</a>
</li>
</ul><hr />
<!-- INDEX END -->
<h1 id="NAME">NAME</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="NAME_CONTENT">
-<p>SDL::CDROM -- SDL Bindings for the CDROM device</p>
+<p>SDL::Cdrom - a SDL perl extension for managing CD-ROM drives</p>
+
+</div>
+<h1 id="SYNOPSIS">SYNOPSIS</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="SYNOPSIS_CONTENT">
+<pre> use SDL::Cdrom;
+ $cdrom = SDL::Cdrom->new(0);
+ $cdrom->play();
+
+</pre>
+
+</div>
+<h1 id="EXPORTS">EXPORTS</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="EXPORTS_CONTENT">
+<ul>
+ <li><code>cd_num_drives</code>.</li>
+</ul>
+
+
+</div>
+<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="DESCRIPTION_CONTENT">
+<p>Create a new SDL::Cdrom object. The passed $id is the number of the drive,
+whereas 0 is the first drive etc.</p>
+<pre> use SDL::Cdrom;
+ my $drive => SDL::Cdrom->new($id);
+
+</pre>
+
+</div>
+<h1 id="METHODS">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="METHODS_CONTENT">
+
+</div>
+<h2 id="cd_num_drives">cd_num_drives()</h2>
+<div id="cd_num_drives_CONTENT">
+<p>Returns the number of CD-ROM drives present.</p>
+
+</div>
+<h2 id="name_cd">name(cd)</h2>
+<div id="name_cd_CONTENT">
+<p>Returns the system dependent name of the CD-ROM device.
+It takes a SDL::Cdrom as first parameter.</p>
+
+</div>
+<h2 id="status_cd">status(cd)</h2>
+<div id="status_cd_CONTENT">
+<p>Return the status of the drive.
+It takes a SDL::Cdrom as first parameter.</p>
+
+</div>
+<h2 id="play_cd_start_length_fs_fl">play(cd,start,length,fs,fl) </h2>
+<div id="play_cd_start_length_fs_fl_CONTENT">
+<p>Play a track from the SDL::Cdrom given as first parameter, second parameter is the frame to start, the third is the lenght to play.
+It returns 1 on succés 0 on error.</p>
+
+</div>
+<h2 id="pause_cd">pause(cd)</h2>
+<div id="pause_cd_CONTENT">
+<p>Pause the playing of the SDL::Cdrom given as first parameter.
+It returns 1 on succés 0 on error.</p>
+
+</div>
+<h2 id="resume_cd">resume(cd)</h2>
+<div id="resume_cd_CONTENT">
+<p>Resume the playing of the SDL::Cdrom given as first parameter.
+It returns 1 on succés 0 on error.</p>
+
+</div>
+<h2 id="stop_cd">stop(cd)</h2>
+<div id="stop_cd_CONTENT">
+<p>Stop the playing of the SDL::Cdrom given as first parameter.
+It returns 1 on succés 0 on error.</p>
+
+</div>
+<h2 id="eject_cd">eject(cd)</h2>
+<div id="eject_cd_CONTENT">
+<p>Eject the medium in the SDL::Cdrom given as first parameter.
+It returns 1 on succés 0 on error.</p>
+
+</div>
+<h2 id="id_cd">id(cd)</h2>
+<div id="id_cd_CONTENT">
+<p>Return the ID of the drive given as first parameter.</p>
+
+</div>
+<h2 id="num_tracks_cd">num_tracks(cd)</h2>
+<div id="num_tracks_cd_CONTENT">
+<p>Return the number of tracks on the SDL::Cdrom given as first parameter.</p>
+
+</div>
+<h2 id="track_cd_number">track(cd,number)</h2>
+<div id="track_cd_number_CONTENT">
+<p>Returns the track description of the track given as second parameter.
+the first parameter is a SDL:Cdrom.</p>
+
+</div>
+<h2 id="current_cd">current(cd)</h2>
+<div id="current_cd_CONTENT">
+<p>Return the current played track number given as first parameter.</p>
+
+</div>
+<h2 id="current_frame_cd">current_frame(cd)</h2>
+<div id="current_frame_cd_CONTENT">
+<p>Return the current frame given as first parameter.</p>
+
+</div>
+<h1 id="AUTHORS">AUTHORS</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="AUTHORS_CONTENT">
+<p>David J. Goehrig
+Documentation by Tels <http://bloodgate.com/>.</p>
</div>
-<h1 id="CATEGORY">CATEGORY</h1><p><a href="#TOP" class="toplink">Top</a></p>
-<div id="CATEGORY_CONTENT">
-<p>TODO, Core, CDROM</p>
+<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="SEE_ALSO_CONTENT">
+<p><cite>perl</cite> <cite>SDL::Mixer</cite> <cite>SDL::App</cite>.</p>
</div>
</div>
\ No newline at end of file
<h3 id="TOP">Index</h3>
<ul><li><a href="#NAME">NAME</a></li>
-<li><a href="#CATEGORY">CATEGORY</a>
+<li><a href="#CATEGORY">CATEGORY</a></li>
+<li><a href="#SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#METHODS">METHODS</a>
+<ul><li><a href="#num_joysticks">num_joysticks</a></li>
+<li><a href="#name">name</a></li>
+<li><a href="#open">open</a></li>
+<li><a href="#opened">opened</a></li>
+<li><a href="#index">index</a></li>
+<li><a href="#num_axes">num_axes</a></li>
+<li><a href="#num_balls">num_balls</a></li>
+<li><a href="#num_hats">num_hats</a></li>
+<li><a href="#num_buttons">num_buttons</a></li>
+<li><a href="#update">update</a></li>
+<li><a href="#get_axis">get_axis</a></li>
+<li><a href="#get_hat">get_hat</a></li>
+<li><a href="#get_button">get_button</a></li>
+<li><a href="#get_ball">get_ball</a></li>
+<li><a href="#close">close</a>
+</li>
+</ul>
</li>
</ul><hr />
<!-- INDEX END -->
</div>
<h1 id="CATEGORY">CATEGORY</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="CATEGORY_CONTENT">
-<p>TODO, Core, Joystick</p>
+<p>Core, Joystick</p>
+
+</div>
+<h1 id="SYNOPSIS">SYNOPSIS</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="SYNOPSIS_CONTENT">
+<pre> use SDL;
+ use SDL::Joystick;
+
+ SDL::init_sub_system(SDL_INIT_JOYSTICK);
+
+ die('no joystick found') unless(SDL::Joystick::num_joysticks());
+
+ my $joystick = SDL::Joystick->new(0);
+
+</pre>
+
+</div>
+<h1 id="METHODS">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="METHODS_CONTENT">
+
+</div>
+<h2 id="num_joysticks">num_joysticks</h2>
+<div id="num_joysticks_CONTENT">
+<pre> int SDL::Joystick::num_joysticks( void );
+
+</pre>
+<p>Counts and returns available joysticks.</p>
+
+</div>
+<h2 id="name">name</h2>
+<div id="name_CONTENT">
+<pre> string SDL::Joystick::name( index );
+
+</pre>
+<p>Get the implementation dependent name of joystick. The <code>index</code> parameter refers to the N'th joystick on the system. </p>
+<pre> my $num_joysticks = SDL::Joystick::num_joysticks();
+
+ printf("%d joysticks found\n", $num_joysticks);
+
+ for($i = 0; i < $num_joysticks; $i++)
+ {
+ printf("%s\n", SDL::Joystick::name($i));
+ }
+
+</pre>
+
+</div>
+<h2 id="open">open</h2>
+<div id="open_CONTENT">
+<pre> object SDL::Joystick::open( index );
+
+</pre>
+<p>Opens a joystick for use within SDL. The <code>index</code> refers to the N'th joystick in the system.
+A joystick must be opened before it can be used.</p>
+<pre> # Initialize the joystick subsystem
+ SDL::init_sub_system(SDL_INIT_JOYSTICK);
+
+ # Check for joystick
+ if(SDL::Joystick::num_joysticks() > 0)
+ {
+ # Open joystick
+ my $joystick = SDL::Joystick::open(0);
+
+ if($joystick)
+ {
+ printf("Opened Joystick 0\n");
+ printf("Name: %s\n", SDL::Joystick::name(0));
+ printf("Number of Axes: %d\n", SDL::Joystick::num_axes($joystick));
+ printf("Number of Buttons: %d\n", SDL::Joystick::num_buttons($joystick));
+ printf("Number of Balls: %d\n", SDL::Joystick::num_balls($joystick));
+ }
+ else
+ {
+ printf("Couldn't open Joystick 0\n");
+ }
+
+ # Close if opened
+ SDL::Joystick::close($joystick) if SDL::Joystick::opened(0);
+ }
+
+</pre>
+
+</div>
+<h2 id="opened">opened</h2>
+<div id="opened_CONTENT">
+<pre> int SDL::Joystick::opened( index );
+
+</pre>
+<p>Determines whether a joystick has already been opened within the application. <code>index</code> refers to the N'th joystick on the system.</p>
+<p>Returns 1 if the joystick has been opened, or 0 if it has not.</p>
+
+</div>
+<h2 id="index">index</h2>
+<div id="index_CONTENT">
+<pre> int SDL::Joystick::index( object );
+
+</pre>
+<p>Returns the <code>index</code> of a given <code>SDL_Joystick</code> structure. See <a href="#open">SDL::Joystick::open</a></p>
+
+</div>
+<h2 id="num_axes">num_axes</h2>
+<div id="num_axes_CONTENT">
+<pre> int SDL::Joystick::num_axes( object );
+
+</pre>
+<p>Return the number of axes available from a previously opened joystick. See <a href="#open">SDL::Joystick::open</a></p>
+
+</div>
+<h2 id="num_balls">num_balls</h2>
+<div id="num_balls_CONTENT">
+<pre> int SDL::Joystick::num_balls( object );
+
+</pre>
+<p>Return the number of trackballs available from a previously opened joystick. See <a href="#open">SDL::Joystick::open</a></p>
+
+</div>
+<h2 id="num_hats">num_hats</h2>
+<div id="num_hats_CONTENT">
+<pre> int SDL::Joystick::num_hats( object );
+
+</pre>
+<p>Gets the number of joystick hats from a previously opened joystick. See <a href="#open">SDL::Joystick::open</a></p>
+
+</div>
+<h2 id="num_buttons">num_buttons</h2>
+<div id="num_buttons_CONTENT">
+<pre> int SDL::Joystick::num_buttons( object );
+
+</pre>
+<p>Gets the number of joystick buttons from a previously opened joystick. See <cite>SDL::Joystick::open</cite></p>
+
+</div>
+<h2 id="update">update</h2>
+<div id="update_CONTENT">
+<pre> void SDL::Joystick::update();
+
+</pre>
+<p>Updates the state(position, buttons, etc.) of all open joysticks. If joystick events have been enabled
+with <code>SDL::Joystick::event_state</code> then this is called automatically in the event loop. </p>
+
+</div>
+<h2 id="get_axis">get_axis</h2>
+<div id="get_axis_CONTENT">
+<p><code>get_axis</code> returns the current state of the given axis on the given joystick.</p>
+<p>On most modern joysticks the X axis is usually represented by axis 0 and the Y axis by axis 1.
+The value returned by <code>get_axis</code> is a signed integer (-32768 to 32767) representing the current position of the axis,
+it may be necessary to impose certain tolerances on these values to account for jitter.</p>
+<p><strong>Note</strong>: Some joysticks use axes 2 and 3 for extra buttons. </p>
+<p>Returns a 16-bit signed integer representing the current position of the axis.</p>
+<pre> my $joystick = SDL::Joystick::open(0);
+
+ my $x_move = SDL::Joystick::get_axis($joystick, 0);
+ my $y_move = SDL::Joystick::get_axis($joystick, 1);
+
+</pre>
+
+</div>
+<h2 id="get_hat">get_hat</h2>
+<div id="get_hat_CONTENT">
+<pre> int SDL::Joystick::get_hat( object, int );
+
+</pre>
+<p><code>get_hat</code> returns the current state of the given <code>hat</code> on the given <code>joystick</code>. </p>
+<p>The current state is returned which is an OR'd combination of one or more of the following:</p>
+<ul>
+ <li><code>SDL_HAT_CENTERED</code> </li>
+ <li><code>SDL_HAT_UP</code> </li>
+ <li><code>SDL_HAT_RIGHT</code> </li>
+ <li><code>SDL_HAT_DOWN</code> </li>
+ <li><code>SDL_HAT_LEFT</code> </li>
+ <li><code>SDL_HAT_RIGHTUP</code> </li>
+ <li><code>SDL_HAT_RIGHTDOWN</code> </li>
+ <li><code>SDL_HAT_LEFTUP</code> </li>
+ <li><code>SDL_HAT_LEFTDOWN</code></li>
+</ul>
+
+<pre> my $joystick = SDL::Joystick::open(0);
+
+ my $position = SDL::Joystick::get_hat($joystick, 0);
+
+ print("hat is in position UP\n") if $position & SDL_HAT_UP;
+
+</pre>
+
+</div>
+<h2 id="get_button">get_button</h2>
+<div id="get_button_CONTENT">
+<pre> int SDL::Joystick::get_button( object, int );
+
+</pre>
+<p><code>get_button</code> returns the current state of the given button on the given joystick.</p>
+<p>Returns 1 if the button is pressed. Otherwise, 0. </p>
+<pre> my $joystick = SDL::Joystick::open(0);
+
+ my $num_buttons = SDL::Joystick::num_buttons($joystick);
+
+ for(my $i = 0; $i < $num_buttons; $i++)
+ {
+ printf("button %d is %s\n", $i, SDL::Joystick::get_button($joystick, $i) ? 'pressed' : 'not pressed');
+ }
+
+ SDL::Joystick::close($joystick) if SDL::Joystick::opened(0);
+
+</pre>
+
+</div>
+<h2 id="get_ball">get_ball</h2>
+<div id="get_ball_CONTENT">
+<pre> int SDL::Joystick::get_ball(SDL_Joystick $joystick, int $ball, int $dx, int $dy);
+
+</pre>
+<p>Get the ball axis change.</p>
+<p>Trackballs can only return relative motion since the last call to SDL::Joystick::get_ball, these motion deltas are placed into <code>dx</code> and <code>dy</code>.</p>
+<p>Returns 0 on success or -1 on failure</p>
+<pre> my $delta_x = 0;
+ my $delta_y = 0;
+ my $joystick = SDL::Joystick::open(0);
+
+ SDL::Joystick::update();
+
+ printf("TrackBall Read Error!\n") if(SDL::JoystickGetBall($joystick, 0, $delta_x, $delta_y) == -1);
+ printf("Trackball Delta- X:%d, Y:%d\n", delta_x, delta_y);
+
+</pre>
+
+</div>
+<h2 id="close">close</h2>
+<div id="close_CONTENT">
+<pre> void SDL::Joystick::close( object );
+
+</pre>
+<p>Closes a previously opened joystick. See <a href="#open">SDL::Joystick::open</a></p>
+<pre> SDL::Joystick::close($joystick) if SDL::Joystick::opened(0);
+
+</pre>
</div>
</div>
\ No newline at end of file
--- /dev/null
+<div class="pod">
+<!-- INDEX START -->
+<h3 id="TOP">Index</h3>
+
+<ul><li><a href="#NAME">NAME</a></li>
+<li><a href="#CATEGORY">CATEGORY</a></li>
+<li><a href="#SYNOPSIS">SYNOPSIS</a></li>
+<li><a href="#METHODS">METHODS</a>
+<ul><li><a href="#rw_from_file_file_mode">rw_from_file(file,mode) </a></li>
+<li><a href="#rw_from_fp_fp_autoclose">rw_from_fp(fp,autoclose)</a></li>
+<li><a href="#rw_from_mem_mem_size">rw_from_mem(mem,size)</a></li>
+<li><a href="#rw_from_const_mem_mem_size">rw_from_const_mem(mem,size)</a></li>
+<li><a href="#alloc_rw">alloc_rw()</a></li>
+<li><a href="#free_rw_context">free_rw(context)</a></li>
+<li><a href="#rw_seek_ctx_offset_whence">rw_seek(ctx,offset,whence)</a></li>
+<li><a href="#rw_tell_ctx">rw_tell(ctx)</a></li>
+<li><a href="#rw_read_ctx_ptr_size_n">rw_read(ctx,ptr,size,n)</a></li>
+<li><a href="#rw_write_ctx_ptr_size_n">rw_write(ctx,ptr,size,n)</a></li>
+<li><a href="#rw_close_ctx">rw_close(ctx)</a>
+</li>
+</ul>
+</li>
+</ul><hr />
+<!-- INDEX END -->
+
+<h1 id="NAME">NAME</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="NAME_CONTENT">
+<p>SDL::RWOps -- SDL Bindings to SDL_RWOPs</p>
+
+</div>
+<h1 id="CATEGORY">CATEGORY</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="CATEGORY_CONTENT">
+<p>TODO, Core, Structure</p>
+
+
+
+
+
+</div>
+<h1 id="SYNOPSIS">SYNOPSIS</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="SYNOPSIS_CONTENT">
+<p>use SDL::RW;</p>
+
+
+
+
+<p>SDL::RWOps is an "undocumented" feature of SDL, allowing you to use pointers to memory instead of files (though it can handle files too) for things such as images or samples. The primary advantage of this feature is that many libraries load files from the filesystem themselves, leaving you a bit stuck if you want to implement your own special file access, such as an archive format. Fortunately many libraries, such as SDL_image, provide additional methods designed to read from an SDL_RWops, so that you can provide the data in whatever way you like.</p>
+<p>An example usage would be to put a bunch of resources in a zip file and use Zziplib to access them easily.</p>
+
+
+
+
+
+</div>
+<h1 id="METHODS">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="METHODS_CONTENT">
+
+
+
+
+
+</div>
+<h2 id="rw_from_file_file_mode">rw_from_file(file,mode) </h2>
+<div id="rw_from_file_file_mode_CONTENT">
+<p>rw_from_file creates a new SDL::RWops structure for reading from and/or writing to a named file.
+The mode string is treated the same as in a call to the C library's fopen().
+SDL::rw_from_file() returns a SDL::RWops structure on succés or undef on failure. </p>
+<pre> Mode Strings:
+
+ "r" Open a file for reading. The file must exist.
+
+ "w" Create an empty file for writing. If a file with the same name already exists its content is erased and the file is treated as a new empty file.
+
+ "a" Append to a file. Writing operations append data at the end of the file. The file is created if it does not exist.
+
+ "r+" Open a file for update both reading and writing. The file must exist.
+
+ "w+" Create an empty file for both reading and writing.
+ If a file with the same name already exists its content is erased and the file is treated as a new empty file.
+
+ "a+" Open a file for reading and appending. All writing operations are performed at the end of the file, protecting the previous content to be overwritten.
+ You can reposition (fseek, rewind) the internal pointer to anywhere in the file for reading, but writing operations will move it back to the end of file. The file is created if it does not exist.
+
+
+
+
+</pre>
+<p>NOTE: In order to open a file as a binary file, a "b" character has to be included in the mode string.
+This additional "b" character can either be appended at the end of the string (thus making the following compound modes: "rb", "wb", "ab", "r+b", "w+b", "a+b") or be inserted between the letter and the "+" sign for the mixed modes ("rb+", "wb+", "ab+"). Additional characters may follow the sequence, although they should have no effect. For example, "t" is sometimes appended to make explicit the file is a text file.</p>
+
+
+
+
+
+
+
+
+</div>
+<h2 id="rw_from_fp_fp_autoclose">rw_from_fp(fp,autoclose)</h2>
+<div id="rw_from_fp_fp_autoclose_CONTENT">
+<p>SDL::rw_from_fp creates a new SDL::RWops structure from a file pointer, opened with stdio. If autoclose is nonzero, the file will be automatically closed when the SDL::RWops structure is closed.
+It returns a SDL::RWops on succés or undef on error.</p>
+<p>Note: This is not available under Win32, since files opened in an application on that platform cannot be used by a dynamically linked library. </p>
+
+
+
+
+
+</div>
+<h2 id="rw_from_mem_mem_size">rw_from_mem(mem,size)</h2>
+<div id="rw_from_mem_mem_size_CONTENT">
+<p>SDL::rw_from_mem sets up a SDL::RWops struct based on a chunk of memory of a certain size.
+It returns a SDL::Rwops on succés or undef on error. </p>
+<p>Note: If the memory is not writable, use SDL::rw_from_const_mem instead. </p>
+
+
+
+
+
+</div>
+<h2 id="rw_from_const_mem_mem_size">rw_from_const_mem(mem,size)</h2>
+<div id="rw_from_const_mem_mem_size_CONTENT">
+<p>rw_from_const_mem sets up a SDL::RWops struct based on a memory area of a certain size. It assumes the memory area is not writable.
+It returns a SDL::RWops on succés on undef on error.</p>
+
+</div>
+<h2 id="alloc_rw">alloc_rw()</h2>
+<div id="alloc_rw_CONTENT">
+<p>alloc_rw allocates an empty, unpopulated SDL::RWops structure. You must fill out the fields yourself.
+It returns a SDL::RWops structure on succés or undef on error. </p>
+<p>Note: You must free any memory allocated with SDL::alloc_rw with SDL::free_rw.</p>
+
+
+
+
+
+</div>
+<h2 id="free_rw_context">free_rw(context)</h2>
+<div id="free_rw_context_CONTENT">
+<p>SDL::free_rw frees an SDL::RWops structure previously allocated by SDL::alloc_rw. Only use it on memory allocated by SDL::alloc_rw.
+It doesn't returns anything.</p>
+
+
+
+
+
+</div>
+<h2 id="rw_seek_ctx_offset_whence">rw_seek(ctx,offset,whence)</h2>
+<div id="rw_seek_ctx_offset_whence_CONTENT">
+<p>SDL::rw_seek calls the seek function pointer in an SDL::RWOps structure. It takes the same 3 parameters as the function pointer:</p>
+<pre> 1. A pointer to an SDL::rwops structure
+ 2. An offset in bytes. This can be a negative value.
+ 3.SEEK_SET, SEEK_CUR, or SEEK_END. SEEK_SET seeks from the beginning of the file, SEEK_CUR from the current position, and SEEK_END from the end of the file.
+
+</pre>
+<p>SDL::rw_seek returns the final offset in the data source.</p>
+
+</div>
+<h2 id="rw_tell_ctx">rw_tell(ctx)</h2>
+<div id="rw_tell_ctx_CONTENT">
+<p>SDL::rw_tell performs a do-nothing seek to get the current offset in an SDL::RWOps stream ctx. It takes one parameter, a pointer to an SDL::RWOps structure.
+It returns the offset in the stream. </p>
+
+</div>
+<h2 id="rw_read_ctx_ptr_size_n">rw_read(ctx,ptr,size,n)</h2>
+<div id="rw_read_ctx_ptr_size_n_CONTENT">
+<p>SDL_RWread calls the function pointed to by an SDL::RWOps structure's read member. It takes the same 4 parameters as the function pointer:</p>
+<pre> 1. A pointer to an SDL::RWOps structure
+ 2. A pointer to an area of memory to read data into
+ 3. The size of each block of memory to read
+ 4. The maxinum number of memory blocks to read(it may read less)
+
+</pre>
+<p>It returns the number of memory blocks read, or -1 if the read failed. </p>
+
+
+
+
+
+</div>
+<h2 id="rw_write_ctx_ptr_size_n">rw_write(ctx,ptr,size,n)</h2>
+<div id="rw_write_ctx_ptr_size_n_CONTENT">
+<p>SDL_RWwrite calls the write function in an SDL::RWOps structure. It takes the same parameters as the write function given in the SDL::RWOps structure:</p>
+<pre> 1. A pointer to an SDL::RWOps structure
+ 2. A pointer to an area in memory to read data from
+ 3. The size of the memory blocks to write
+ 4. The exact number of memory blocks to write
+
+</pre>
+<p>0n success, it returns the number of memory blocks you told it to write.
+If it couldn't write that exact number of blocks, or the write didn't work at all, it returns -1.</p>
+
+
+
+
+
+</div>
+<h2 id="rw_close_ctx">rw_close(ctx)</h2>
+<div id="rw_close_ctx_CONTENT">
+<p>SDL::rw_close calls the close function in an SDL::RWOps structure. It only takes one parameter, an SDL::RWOps structure.
+Returns 0 on success, -1 on error. </p>
+
+
+
+
+
+
+
+
+</div>
+</div>
\ No newline at end of file
<ul><li><a href="#NAME">NAME</a></li>
<li><a href="#SYNOPSIS">SYNOPSIS</a></li>
-<li><a href="#DESCRIPTION">DESCRIPTION</a></li>
-<li><a href="#AUTHOR">AUTHOR</a></li>
-<li><a href="#SEE_ALSO">SEE ALSO</a>
+<li><a href="#METHODS">METHODS</a>
+<ul><li><a href="#get_ticks">get_ticks()</a></li>
+<li><a href="#delay_ms">delay(ms)</a></li>
+<li><a href="#add_timer_interval_callback_param">add_timer(interval,callback,param)</a>
+<ul>
+<li>
+<ul><li><a href="#Parameters">Parameters</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#remove_timer_id">remove_timer( id )</a></li>
+<li><a href="#set_timer_interval_callback">set_timer( interval,callback )</a>
+</li>
+</ul>
</li>
</ul><hr />
<!-- INDEX END -->
+<h1 id="NAME">NAME</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="NAME_CONTENT">
+<p>SDL::Time - a SDL perl extension for managing timers.</p>
-<h1 id="NAME">NAME</h1><p><a href="#TOP" class="toplink">Top</a></p>
-<div id="NAME_CONTENT">
-<p>SDL::Timer - a SDL perl extension to handle timers</p>
</div>
<h1 id="SYNOPSIS">SYNOPSIS</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SYNOPSIS_CONTENT">
-<pre> $timer = new SDL::Timer { print "tick"; 4000; } -delay => 4000;
-</pre>
+
+
+
+
+
+
+
+
+
+
+</div>
+<h1 id="METHODS">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="METHODS_CONTENT">
+
+
+
+
+
+</div>
+<h2 id="get_ticks">get_ticks()</h2>
+<div id="get_ticks_CONTENT">
+<p>Returns the number of milliseconds since SDL library initialization. This value wraps around if the program runs for more than 49.7 days</p>
+
+
+
+
+
+</div>
+<h2 id="delay_ms">delay(ms)</h2>
+<div id="delay_ms_CONTENT">
+<p>This function waits a specified number of milliseconds before returning. It waits at least the specified time, but possible longer due to OS scheduling. The delay granularity is at least 10 ms. Some platforms have shorter clock ticks but this is the most common.
+SDL::delay doesn't returns anything.</p>
+
+</div>
+<h2 id="add_timer_interval_callback_param">add_timer(interval,callback,param)</h2>
+<div id="add_timer_interval_callback_param_CO">
+<p>Adds a callback function to be run after the specified number of milliseconds has elapsed.
+The callback function is passed the current timer interval and the user supplied parameter from the SDL::add_timer call and returns the next timer interval.
+If the returned value from the callback is the same as the one passed in, the timer continues at the same rate.
+If the returned value from the callback is 0, the timer is cancelled.</p>
+<p>Another way to cancel a currently-running timer is by calling SDL::remove_timer with the timer's ID (which was returned from SDL::add_timer).</p>
+<p>The timer callback function may run in a different thread than your main program, and so shouldn't call any functions from within itself.
+However, you may always call SDL::push_event.</p>
+<p>SDL::add_timer returns the identifier value of the generated timer or undef on error. </p>
+<p>Note : If you use this function, you need to pass SDL_INIT_TIMER to SDL::init. </p>
</div>
-<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
-<div id="DESCRIPTION_CONTENT">
-<p><code>SDL::Timer</code> provides an abstract interface to the SDL::Timer
-callback code. SDL::Timer::new requires a subroutine and a delay
-at which is the initial interval between the creation of the
-timer until the first call to the subroutine. The subroutine
-must return a value which is the delay until the it is called again.</p>
+<h4 id="Parameters">Parameters</h4>
+<div id="Parameters_CONTENT">
+<pre> interval [in] The desired interval of the timer, in milliseconds.
+ The granularity of the timer is platform-dependent, but you should count on it being at least 10 ms as this is the most common number.
+ This means that if you request a 16 ms timer, your callback will run approximately 20 ms later on an unloaded system.
+ If you wanted to set a flag signaling a frame update at 30 frames per second (every 33 ms), you might set a timer for 30 ms (see example below).
+
+ callback [in] The SDL timer callback function which is called when the specified interval elapses.
+
+ param [in] The user parameter which is passed to the callback function
+
+
+
+
+</pre>
</div>
-<h1 id="AUTHOR">AUTHOR</h1><p><a href="#TOP" class="toplink">Top</a></p>
-<div id="AUTHOR_CONTENT">
-<p>David J. Goehrig</p>
+<h2 id="remove_timer_id">remove_timer( id )</h2>
+<div id="remove_timer_id_CONTENT">
+<p>Removes a timer callback previously added with SDL::add_timer.
+It returns 0 on succés or -1 on error.</p>
</div>
-<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
-<div id="SEE_ALSO_CONTENT">
-<p><cite>perl</cite> <cite>SDL</cite></p>
+<h2 id="set_timer_interval_callback">set_timer( interval,callback )</h2>
+<div id="set_timer_interval_callback_CONTENT">
+<p>Set a callback to run after the specified number of milliseconds has elapsed.
+The callback function is passed the current timer interval and returns the next timer interval.
+If the returned value is the same as the one passed in, the periodic alarm continues, otherwise a new alarm is scheduled.</p>
+<p>To cancel a currently running timer, call SDL::set_timer(0, NULL);</p>
+<p>The timer callback function may run in a different thread than your main constant, and so shouldn't call any functions from within itself.</p>
+<p>The maximum resolution of this timer is 10 ms, which means that if you request a 16 ms timer, your callback will run approximately 20 ms later on an unloaded system. If you wanted to set a flag signaling a frame update at 30 frames per second (every 33 ms), you might set a timer for 30 ms (see example below).</p>
+<p>If you use this function, you need to pass SDL_INIT_TIMER to SDL::init().
+Note: This function is kept for compatibility but has been superseded by the new timer functions SDL::add_timer and SDL::remove_timer which support multiple timers.</p>
+
+
+
+
</div>
</div>
\ No newline at end of file
SDL::Events need to be completed
SDL::Cdrom need some examples.
SDL::MultiThread to be created( once implemented ).
- SDL::Time to be completed.
+ SDL::Timer need examples.
SDL::RW to be created.
SDL::Mouse need to be created.
SDL::Joystick need to be created.
<div class="pod">
-<h1>Documentation (latest development branch)</h1><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Core</strong></td></tr><tr><td><img src="assets/SDL_thumb.png" alt="thumb" /></td><td><a href="SDL.html">SDL</a></td><td> Simple DirectMedia Layer for Perl</td></tr></table><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Events</strong></td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Events.html">SDL::Events</a></td><td> Bindings to the Events Category in SDL API</td></tr></table><table style="margin-left: 60px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Structure</strong></td></tr><tr><td><img src="assets/bubble-2-mini.png" alt="thumb" /></td><td><a href="SDL-Event.html">SDL::Event</a></td><td> General event structure</td></tr></table><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">MultiThread</strong></td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-MultiThread.html">SDL::MultiThread</a></td><td> Bindings to the MultiThread category in SDL API</td></tr></table><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Video</strong></td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Video.html">SDL::Video</a></td><td> Bindings to the video category in SDL API</td></tr></table><table style="margin-left: 60px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Structure</strong></td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-Color.html">SDL::Color</a></td><td> Format independent color description</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Overlay.html">SDL::Overlay</a></td><td> YUV Video overlay</td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-PixelFormat.html">SDL::PixelFormat</a></td><td> Stores surface format information</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Rect.html">SDL::Rect</a></td><td> Defines a rectangular area</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Surface.html">SDL::Surface</a></td><td></td></tr><tr><td><img src="assets/bubble-2-mini.png" alt="thumb" /></td><td><a href="SDL-VideoInfo.html">SDL::VideoInfo</a></td><td> Video Target Information </td></tr></table><br /><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Cookbook</strong></td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-Cookbook.html">SDL::Cookbook</a></td><td></td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-Cookbook-PDL.html">SDL::Cookbook::PDL</a></td><td></td></tr></table><br /><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Extension</strong></td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-App.html">SDL::App</a></td><td> a SDL perl extension</td></tr></table><br /><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Mixer</strong></td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer.html">SDL::Mixer</a></td><td> a SDL perl extension</td></tr><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">TODO</strong></td></tr><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Core</strong></td></tr></table><table style="margin-left: 60px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Audio</strong></td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-Audio.html">SDL::Audio</a></td><td>- SDL Bindings for Audio</td></tr></table><table style="margin-left: 90px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Structure</strong></td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-AudioSpec.html">SDL::AudioSpec</a></td><td>- SDL Bindings for structure SDL_AudioSpec</td></tr></table><table style="margin-left: 60px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">CDROM</strong></td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-CDROM.html">SDL::CDROM</a></td><td>- SDL Bindings for the CDROM device</td></tr></table><table style="margin-left: 90px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Structure</strong></td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-CD.html">SDL::CD</a></td><td>- SDL Bindings for structure SDL_CD</td></tr><tr><td><img src="assets/bubble-2-mini.png" alt="thumb" /></td><td><a href="SDL-CDTrack.html">SDL::CDTrack</a></td><td>- SDL Bindings for structure SDL_CDTrack</td></tr></table><table style="margin-left: 60px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Joystick</strong></td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-Joystick.html">SDL::Joystick</a></td><td>- SDL Bindings for the Joystick device</td></tr></table><table style="margin-left: 90px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Structure</strong></td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-MixChunk.html">SDL::Mixer::MixChunk</a></td><td>- SDL Bindings for structure SDL_MixChunk</td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-MixMusic.html">SDL::Mixer::MixMusic</a></td><td>- SDL Bindings for structure SDL_MixMusic</td></tr></table><table style="margin-left: 60px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Mouse</strong></td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Mouse.html">SDL::Mouse</a></td><td>- SDL Bindings for the Mouse device</td></tr></table><table style="margin-left: 60px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Structure</strong></td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Version.html">SDL::Version</a></td><td>- SDL Bindings for structure SDL_Version</td></tr></table><br /><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Tutorials</strong></td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial.html">SDL::Tutorial</a></td><td> introduction to Perl SDL</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial-Animation.html">SDL::Tutorial::Animation</a></td><td></td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial-Images.html">SDL::Tutorial::Images</a></td><td></td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial-LunarLander.html">SDL::Tutorial::LunarLander</a></td><td> a small tutorial on Perl SDL</td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial-Pong.html">SDL::Tutorial::Pong</a></td><td></td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial-Tetris.html">SDL::Tutorial::Tetris</a></td><td></td></tr></table><br /><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">UNCATEGORIZED</strong></td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Cursor.html">SDL::Cursor</a></td><td> a SDL perl extension</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Font.html">SDL::Font</a></td><td> a SDL perl extension</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Game-Palette.html">SDL::Game::Palette</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-MPEG.html">SDL::MPEG</a></td><td> a SDL perl extension</td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-Music.html">SDL::Music</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-OpenGL.html">SDL::OpenGL</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-Palette.html">SDL::Palette</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-2-mini.png" alt="thumb" /></td><td><a href="SDL-SFont.html">SDL::SFont</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-SMPEG.html">SDL::SMPEG</a></td><td> a SDL perl extension</td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Sound.html">SDL::Sound</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-TTFont.html">SDL::TTFont</a></td><td> a SDL perl extension</td></tr><tr><td><img src="assets/bubble-2-mini.png" alt="thumb" /></td><td><a href="SDL-Timer.html">SDL::Timer</a></td><td> a SDL perl extension to handle timers</td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-Tool-Font.html">SDL::Tool::Font</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Tool-Graphic.html">SDL::Tool::Graphic</a></td><td></td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="Time.html">Time</a></td><td> a SDL perl extension for managing timers.</td></tr></table></div>
+<h1>Documentation (latest development branch)</h1><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Core</strong></td></tr><tr><td><img src="assets/SDL_thumb.png" alt="thumb" /></td><td><a href="SDL.html">SDL</a></td><td> Simple DirectMedia Layer for Perl</td></tr></table><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Events</strong></td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-Events.html">SDL::Events</a></td><td> Bindings to the Events Category in SDL API</td></tr></table><table style="margin-left: 60px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Structure</strong></td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-Event.html">SDL::Event</a></td><td> General event structure</td></tr></table><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Joystick</strong></td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-Joystick.html">SDL::Joystick</a></td><td>- SDL Bindings for the Joystick device</td></tr></table><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">MultiThread</strong></td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-MultiThread.html">SDL::MultiThread</a></td><td> Bindings to the MultiThread category in SDL API</td></tr></table><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Video</strong></td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-Video.html">SDL::Video</a></td><td> Bindings to the video category in SDL API</td></tr></table><table style="margin-left: 60px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Structure</strong></td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-Color.html">SDL::Color</a></td><td> Format independent color description</td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Overlay.html">SDL::Overlay</a></td><td> YUV Video overlay</td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-PixelFormat.html">SDL::PixelFormat</a></td><td> Stores surface format information</td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-Rect.html">SDL::Rect</a></td><td> Defines a rectangular area</td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-Surface.html">SDL::Surface</a></td><td></td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-VideoInfo.html">SDL::VideoInfo</a></td><td> Video Target Information </td></tr></table><br /><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Cookbook</strong></td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-Cookbook.html">SDL::Cookbook</a></td><td></td></tr><tr><td><img src="assets/bubble-2-mini.png" alt="thumb" /></td><td><a href="SDL-Cookbook-PDL.html">SDL::Cookbook::PDL</a></td><td></td></tr></table><br /><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Extension</strong></td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-App.html">SDL::App</a></td><td> a SDL perl extension</td></tr></table><br /><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Mixer</strong></td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer.html">SDL::Mixer</a></td><td> a SDL perl extension</td></tr><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">TODO</strong></td></tr><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Core</strong></td></tr></table><table style="margin-left: 60px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Audio</strong></td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Audio.html">SDL::Audio</a></td><td>- SDL Bindings for Audio</td></tr></table><table style="margin-left: 90px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Structure</strong></td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-AudioSpec.html">SDL::AudioSpec</a></td><td>- SDL Bindings for structure SDL_AudioSpec</td></tr></table><table style="margin-left: 90px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Structure</strong></td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-CD.html">SDL::CD</a></td><td>- SDL Bindings for structure SDL_CD</td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-CDTrack.html">SDL::CDTrack</a></td><td>- SDL Bindings for structure SDL_CDTrack</td></tr></table><table style="margin-left: 90px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Structure</strong></td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-MixChunk.html">SDL::Mixer::MixChunk</a></td><td>- SDL Bindings for structure SDL_MixChunk</td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-MixMusic.html">SDL::Mixer::MixMusic</a></td><td>- SDL Bindings for structure SDL_MixMusic</td></tr></table><table style="margin-left: 60px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Mouse</strong></td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Mouse.html">SDL::Mouse</a></td><td>- SDL Bindings for the Mouse device</td></tr></table><table style="margin-left: 60px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Structure</strong></td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-RWOps.html">SDL::RWOps</a></td><td>- SDL Bindings to SDL_RWOPs</td></tr><tr><td><img src="assets/bubble-2-mini.png" alt="thumb" /></td><td><a href="SDL-Version.html">SDL::Version</a></td><td>- SDL Bindings for structure SDL_Version</td></tr></table><br /><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Tutorials</strong></td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial.html">SDL::Tutorial</a></td><td> introduction to Perl SDL</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial-Animation.html">SDL::Tutorial::Animation</a></td><td></td></tr><tr><td><img src="assets/bubble-2-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial-Images.html">SDL::Tutorial::Images</a></td><td></td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial-LunarLander.html">SDL::Tutorial::LunarLander</a></td><td> a small tutorial on Perl SDL</td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial-Pong.html">SDL::Tutorial::Pong</a></td><td></td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial-Tetris.html">SDL::Tutorial::Tetris</a></td><td></td></tr></table><br /><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">UNCATEGORIZED</strong></td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-Cdrom.html">SDL::Cdrom</a></td><td> a SDL perl extension for managing CD-ROM drives</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Cursor.html">SDL::Cursor</a></td><td> a SDL perl extension</td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Font.html">SDL::Font</a></td><td> a SDL perl extension</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Game-Palette.html">SDL::Game::Palette</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-MPEG.html">SDL::MPEG</a></td><td> a SDL perl extension</td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-Music.html">SDL::Music</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-OpenGL.html">SDL::OpenGL</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-Palette.html">SDL::Palette</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-SFont.html">SDL::SFont</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-2-mini.png" alt="thumb" /></td><td><a href="SDL-SMPEG.html">SDL::SMPEG</a></td><td> a SDL perl extension</td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-Sound.html">SDL::Sound</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-TTFont.html">SDL::TTFont</a></td><td> a SDL perl extension</td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Timer.html">SDL::Timer</a></td><td> a SDL perl extension for managing timers.</td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-Tool-Font.html">SDL::Tool::Font</a></td><td> a perl extension</td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-Tool-Graphic.html">SDL::Tool::Graphic</a></td><td></td></tr></table></div>