</div>
<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="DESCRIPTION_CONTENT">
-<p><a href="SDL-App">SDL::App</a> controls the root window of the of your SDL based application.
-It extends the <a href="SDL-Surface">SDL::Surface</a> class, and provides an interface to the window
+<p><a href="SDL-App.html">SDL::App</a> controls the root window of the of your SDL based application.
+It extends the <a href="SDL-Surface.html">SDL::Surface</a> class, and provides an interface to the window
manager oriented functions.</p>
</div>
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Surface">SDL::Surface</a> <a href="SDL-Event">SDL::Event</a> <a href="SDL-OpenGL">SDL::OpenGL</a></p>
+<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Surface.html">SDL::Surface</a> <a href="SDL-Event.html">SDL::Event</a> <a href="SDL-OpenGL.html">SDL::OpenGL</a></p>
</div>
</div>
\ No newline at end of file
</pre>
</dd>
- <dt>The desired audio format. See <a href="SDL-AudioSpec">SDL::AudioSpec</a></dt>
+ <dt>The desired audio format. See <a href="SDL-AudioSpec.html">SDL::AudioSpec</a></dt>
<dd>
<pre> $desired->format
</dd>
</dl>
<p>SDL::Audio::open reads these fields from the desired SDL::AudioSpec structure passed to the function and attempts to find an audio configuration matching your desired. As mentioned above, if the obtained parameter is NULL then SDL with convert from your desired audio settings to the hardware settings as it plays.</p>
-<p>If obtained is NULL then the desired SDL::AudioSpec is your working specification, otherwise the obtained SDL::AudioSpec becomes the working specification and the desired specification can be deleted. The data in the working specification is used when building <a href="SDL-AudioCVT">SDL::AudioCVT</a>'s for converting loaded data to the hardware format.</p>
+<p>If obtained is NULL then the desired SDL::AudioSpec is your working specification, otherwise the obtained SDL::AudioSpec becomes the working specification and the desired specification can be deleted. The data in the working specification is used when building <a href="SDL-AudioCVT.html">SDL::AudioCVT</a>'s for converting loaded data to the hardware format.</p>
<p>SDL::Audio::open calculates the size and silence fields for both the $desired and $obtained specifications. The size field stores the total size of the audio buffer in bytes, while the silence stores the value used to represent silence in the audio buffer</p>
<p>The audio device starts out playing silence when it's opened, and should be enabled for playing by calling SDL::Audio::pause(0) when you are ready for your audio callback function to be called. Since the audio driver may modify the requested size of the audio buffer, you should allocate any local mixing buffers after you open the audio device. </p>
<pre> my $track = $CD->track($number);
</pre>
-<p>Retrives track description of track $number in CD. See <a href="SDL-Track">SDL::CDTrack</a>.</p>
+<p>Retrives track description of track $number in CD. See <a href="SDL-CDTrack.html">SDL::CDTrack</a>.</p>
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="SDL-M">SDL::CDROM</a>, <a href="SDL-Track">SDL::CDTrack</a></p>
+<p><a href="SDL-CDROM.html">SDL::CDROM</a>, <a href="SDL-CDTrack.html">SDL::CDTrack</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="See_Also">See Also</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="See_Also_CONTENT">
-<p><a href="SDL-D">SDL::CD</a>, <a href="SDL-Track">SDL::CDTrack</a></p>
+<p><a href="SDL-CD.html">SDL::CD</a>, <a href="SDL-CDTrack.html">SDL::CDTrack</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="SDL-M">SDL::CDROM</a>, <a href="SDL-D">SDL::CD</a></p>
+<p><a href="SDL-CDROM.html">SDL::CDROM</a>, <a href="SDL-CD.html">SDL::CD</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="SDL-Surface">SDL::Surface</a></p>
+<p><a href="SDL-Surface.html">SDL::Surface</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Mouse">SDL::Mouse</a></p>
+<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Mouse.html">SDL::Mouse</a></p>
</div>
</div>
\ No newline at end of file
<ul><li><a href="#RETURN-4">RETURN</a></li>
</ul>
</li>
-<li><a href="#set_event_filter">set_event_filter</a></li>
+<li><a href="#set_event_filter">set_event_filter</a>
+<ul><li><a href="#PARAMETER">PARAMETER</a></li>
+</ul>
+</li>
<li><a href="#get_key_state">get_key_state</a></li>
-<li><a href="#get_mod_state">get_mod_state</a></li>
+<li><a href="#get_mod_state">get_mod_state</a>
+<ul><li><a href="#MOD_VALUES">MOD VALUES</a></li>
+</ul>
+</li>
<li><a href="#set_mod_state">set_mod_state</a></li>
-<li><a href="#event_state">event_state </a></li>
+<li><a href="#event_state">event_state </a>
+<ul><li><a href="#STATES">STATES</a></li>
+</ul>
+</li>
<li><a href="#get_key_name">get_key_name</a></li>
<li><a href="#enable_unicode">enable_unicode </a></li>
<li><a href="#enable_key_repeat">enable_key_repeat </a></li>
</div>
<h1 id="SYNOPSIS">SYNOPSIS</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SYNOPSIS_CONTENT">
-<p>Most likely you just want to know how to get events for you app.
- use SDL;
+<p>Most likely you just want to know how to get events for you app.</p>
+<pre> use SDL;
use SDL::Event;
- use SDL::Events;</p>
-<pre> SDL::init(SDL_INIT_VIDEO); # Event can only be grabbed in the same thread as this
+ use SDL::Events;
+
+ SDL::init(SDL_INIT_VIDEO); # Event can only be grabbed in the same thread as this
...
<h2 id="poll_event_event">poll_event($event)</h2>
<div id="poll_event_event_CONTENT">
<p>Polls for currently pending events. </p>
-<p>If $event is not NULL, the next event is removed from the queue and stored in the <a href="SDL-Event">SDL::Event</a> structure pointed to by $event.</p>
+<p>If $event is not NULL, the next event is removed from the queue and stored in the <a href="SDL-Event.html">SDL::Event</a> structure pointed to by $event.</p>
<p>As this function implicitly calls pump_events, you can only call this function in the thread that set the video mode with <a href="/SDL-Video.html#set_video_mode">SDL::Video::set_video_mode</a>. </p>
</div>
</div>
<h2 id="set_event_filter">set_event_filter</h2>
<div id="set_event_filter_CONTENT">
+<p>Sets up a filter to process all events </p>
+<pre> my $filter = sub { if($_[0]->type == SDL_ACTIVEEVENT){ return 0} else{ return 1; }};
+
+ SDL::Events::set_event_filter($filter);
+
+</pre>
+
+</div>
+<h3 id="PARAMETER">PARAMETER</h3>
+<div id="PARAMETER_CONTENT">
+<p>set_event_filter takes a coderef that it checks all events again. The callback gets a event in the stack</p>
+<pre> sub { my $event_to_test = shift; ...}
+
+</pre>
+<p>to filter the event return a 0, to pass the filter return a 1. </p>
+<p>One <strong>Caveat</strong> is if you are filterign SDL_QUITEVENT the event will be filtered if it is non-intterupt call ( Window closes normally ). If it is a interrupt SDL_QUITEVENT it will be process on the next event poll. </p>
+<p>Events pushed onto to the queue with <a href="/SDL-Events.html#push_events">SDL::Events::push_events</a> or <a href="/SDL-Events.html#peep_events">SDL::Events::peep_events</a> do not get filtered.</p>
+<p>This callback may run in a different thread. </p>
</div>
<h2 id="get_key_state">get_key_state</h2>
<div id="get_key_state_CONTENT">
+<p>Get a snapshot of the current keyboard state</p>
+<pre> my $keys_ref = SDL::Events::get_key_state();
+
+ print $keys_ref->[SDLK_RETURN]; # 1 if pressed , 0 if not pressed
+
+</pre>
+<p>Use <a href="/SDL-Events.html#pump_events">SDL::Events::pump_events</a> to update the state array.</p>
+<p>This function gives you the current state after all events have been processed, so if a key or button has been pressed and released before you process events, then the pressed state will never show up in the get_key_state call.</p>
+<p>This function doesn't take into account whether shift has been pressed or not.</p>
</div>
<h2 id="get_mod_state">get_mod_state</h2>
<div id="get_mod_state_CONTENT">
+<p>Get the state of the modifier keys</p>
+<p>Returns the current state of modifier keys</p>
+<p>Return value is an OR'd combination of KMOD_*</p>
+<pre> SDL::Events::pump_events; #get latest mod_state in buffers
+
+ my $mod_state = SDL::Events::get_mod_state();
+
+ # Check which ones are pressed with
+
+ # no mod pressed?
+
+ print 'no_mod' if ( $mod_state & KMOD_NONE );
+
+ # CTRL or ALT
+
+ print 'ctrl alt' if ($mod_state & KMOD_CTRL || $mod_state & KMOD_ALT );
+
+</pre>
+
+</div>
+<h3 id="MOD_VALUES">MOD VALUES</h3>
+<div id="MOD_VALUES_CONTENT">
+<dl>
+ <dt>KMOD_NONE</dt>
+ <dt>KMOD_LSHIFT</dt>
+ <dt>KMOD_RSHIFT</dt>
+ <dt>KMOD_LCTRL</dt>
+ <dt>KMOD_RCTRL</dt>
+ <dt>KMOD_LALT</dt>
+ <dt>KMOD_RALT</dt>
+ <dt>KMOD_LMETA</dt>
+ <dt>KMOD_RMETA</dt>
+ <dt>KMOD_NUM</dt>
+ <dt>KMOD_CAPS</dt>
+ <dt>KMOD_MODE</dt>
+ <dt>KMOD_CTRL </dt>
+ <dd>
+ <p>same as KMOD_LCTRL|KMOD_RCTRL</p>
+ </dd>
+ <dt>KMOD_SHIFT</dt>
+ <dd>
+ <p>same as KMOD_LSHIFT|KMOD_RSHIFT</p>
+ </dd>
+ <dt>KMOD_ALT</dt>
+ <dd>
+ <p>same as KMOD_LALT|KMOD_RALT</p>
+ </dd>
+ <dt>KMOD_META</dt>
+ <dd>
+ <p>same as KMOD_LMETA|KMOD_RMETA</p>
+ </dd>
+</dl>
</div>
<h2 id="set_mod_state">set_mod_state</h2>
<div id="set_mod_state_CONTENT">
+<p>Get the state of the modifier keys</p>
+<p>The inverse of <a href="/SDL-Events.html#get_mod_state">SDL::Events::get_mod_state</a> allows you to impose modifier key states on your application.</p>
+<p>Simply pass your desired modifier states into $modstate. This value can be a OR'd combination of any KMOD* constant.</p>
+<pre> my $modstate = KMOD_LMETA | KMOD_LSHIFT;
+
+</pre>
+<p>Any KMOD_* constant see <a href="/SDL-Events.html#get_mod_state">SDL::Events::get_mod_state</a> for constants.
+ SDL::Events::set_mod_state( $modstate );</p>
</div>
<h2 id="event_state">event_state </h2>
<div id="event_state_CONTENT">
+<p>Allows you to set the state of processing certain events</p>
+<pre> SDL::Events::event_state( $type, $state );
+
+</pre>
+<p>A list of $type(s) can be found in <a href="SDL-Event.html">SDL::Event</a></p>
+
+</div>
+<h3 id="STATES">STATES</h3>
+<div id="STATES_CONTENT">
+<dl>
+ <dt>SDL_IGNORE</dt>
+ <dd>
+ <p>The event of $type will be automatically dropper from the event queue and will not be filtered.</p>
+ </dd>
+ <dt>SDL_ENABLE</dt>
+ <dd>
+ <p>The event of $type will be processed normally. This is default.</p>
+ </dd>
+ <dt>SDL_QUERY</dt>
+ <dd>
+ <p>The current processing state of the $type will be returned</p>
+ </dd>
+</dl>
</div>
<h2 id="get_key_name">get_key_name</h2>
<div id="get_key_name_CONTENT">
+<p>Gets the name of the a SDL virtual keysym</p>
+<pre> my $event = SDL::Event->new();
+
+ while( SDL::Events::poll_event($event) )
+ {
+ my $key = $event->key_sym;
+ $key_str = SDL::Events::get_key_name($key);
+ }
+
+</pre>
+<p>Returns a string with the name of the key sym.</p>
</div>
<h2 id="enable_unicode">enable_unicode </h2>
<div id="enable_unicode_CONTENT">
+<p>Enable/Disable UNICODE translation</p>
+<pre> my $previous_translation_mode = SDL::Events::enable_unicode( 1 ); #enable
+ $previous_translation_mode = SDL::Events::enable_unicode( 0 ); #disables
+
+</pre>
+<p>To obtain the character codes corresponding to received keyboard events, Unicode translation must first be turned on using this function. The translation incurs a slight overhead for each keyboard event and is therefore disabled by default. For each subsequently recieved key down event, the unicode member of the <a href="/SDL-Event.html#key_sym">SDL::Event::key_sym</a> provided structure will be then contain the corresponding character code, or otherwise zero.</p>
+<p>A value of 1 for enabling, 0 for disabling and -1 for unchanged. -1 is usefull for querying the current translation mode.</p>
+<p>Only key press events will be translated not release events.</p>
+<p>Returns the previous translation mode as (1,0).</p>
</div>
<h2 id="enable_key_repeat">enable_key_repeat </h2>
<div id="enable_key_repeat_CONTENT">
+<p>Sets keyboard repeat rate</p>
+<pre> my $success = SDL::Events::enable_key_repeat( $delay, $interval );
+
+</pre>
+<p>Enables or disables the keyboard repeat rate. $delay specifies how long the key must be pressed before it begins repeating, it then repleats at the speed specified by $interval. Both $delay and $interval are expressed in milliseconds.</p>
+<p>Setting $delay to 0 disables key repeating completely. Good default values are SDL_DEFAULT_REPEAT_DELAY and SDL_DEFAULT_REPEAT_INTERVAL.</p>
+<p>Return 0 on success and -1 on fail.</p>
</div>
<h2 id="get_mouse_state">get_mouse_state </h2>
<div id="get_mouse_state_CONTENT">
+<p>Retrives the current state of the mouse</p>
+<pre> my ($mask,$x,$y) = @{ SDL::Events::get_mouse_state( ) };
+
+ print 'Button Left pressed' if ($mask & SDL_BUTTON_LMASK);
+
+ print 'Button Right pressed' if ($mask & SDL_BUTTON_RMASK);
+
+ print 'Button Middle pressed' if ($mask & SDL_BUTTON_MMASK);
+
+ print $x.','.$y;
+
+</pre>
+<p>The current button state is returned as a button $bitmask, which can be tested using the the above constants </p>
</div>
<h2 id="get_relative_mouse_state">get_relative_mouse_state </h2>
<div id="get_relative_mouse_state_CONTENT">
+<p>Retrives the current relative state of the mouse</p>
+<pre> my ($mask,$x,$y) = @{ SDL::Events::get_mouse_state( ) };
+
+ print 'Button Left pressed' if ($mask & SDL_BUTTON_LMASK);
+
+ print 'Button Right pressed' if ($mask & SDL_BUTTON_RMASK);
+
+ print 'Button Middle pressed' if ($mask & SDL_BUTTON_MMASK);
+
+ print $x.','.$y; # this is relative to the last postion of the mouse
+
+</pre>
+<p>The current button state is returned as a button $bitmask, which can be tested using the the above constants </p>
+
+
+
+
</div>
<h2 id="get_app_state">get_app_state </h2>
<div id="get_app_state_CONTENT">
+<p>Gets the state of the application</p>
+<pre> my $app_state = SDL::Events::get_app_state();
+
+</pre>
+<p>The $app_state is a bitwise combination of:</p>
+<dl>
+ <dt>SDL_APPMOUSEFOCUS</dt>
+ <dd>
+ <p>Application has mouse focus</p>
+<pre> warn 'mouse focus' if $app_state & SDL_APPMOUSEFOCUS
+
+</pre>
+ </dd>
+ <dt>SDL_APPINPUTFOCUS</dt>
+ <dd>
+ <p>Application has keyboard focus</p>
+<pre> warn 'keyboard focus' if $app_state & SDL_APPINPUTFOCUS
+
+
+
+
+</pre>
+ </dd>
+ <dt>SDL_APPACTIVE</dt>
+ <dd>
+ <p>Application is visible</p>
+<pre> warn 'Application Visible' if $app_state & SDL_APPACTIVE
-</div>
-<h2 id="joystick_event_state">joystick_event_state </h2>
-<div id="joystick_event_state_CONTENT">
+</pre>
+
+</div>
+<h2 id="joystick_event_state">joystick_event_state </h2>
+<div id="joystick_event_state_CONTENT">
+ <p>Enable/disable joystick event polling</p>
+<pre> my $status = SDL::Events::joystick_event_state( $state );
+</pre>
+ <p>This function is used to enable or disable joystick event processing. With joystick event processing disabled you will have to update joystick states with SDL_JoystickUpdate and read the joystick information manually. $state can be:</p>
+ </dd>
+ <dt>SDL_QUERY</dt>
+ <dt>SDL_ENABLE </dt>
+ <dt>SDL_IGNORE</dt>
+ <dd>
+ <p>Joystick event handling is default. Even if joystick event processing is enabled, individual joysticks must be opened before they generate events</p>
+ </dd>
+</dl>
+<p><strong>Warning:</strong> Calling this function may delete all events currently in SDL's event queue.</p>
+<p>If $state is SDL_QUERY then the current state is returned, otherwise the new processing state is returned.</p>
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="SDL-Event">SDL::Event</a>, <a href="SDL-Video">SDL::Video</a>
+<p><a href="SDL-Event.html">SDL::Event</a>, <a href="SDL-Video.html">SDL::Video</a>
</p>
</div>
</div>
<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="DESCRIPTION_CONTENT">
-<p><a href="SDL-Font">SDL::Font</a> provides an interface to loading and using SFont style
-fonts with <a href="SDL-Surface">SDL::Surface</a> objects. </p>
+<p><a href="SDL-Font.html">SDL::Font</a> provides an interface to loading and using SFont style
+fonts with <a href="SDL-Surface.html">SDL::Surface</a> objects. </p>
</div>
<h1 id="METHOD">METHOD</h1><p><a href="#TOP" class="toplink">Top</a></p>
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Surface">SDL::Surface</a></p>
+<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Surface.html">SDL::Surface</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="DESCRIPTION_CONTENT">
-<p><a href="SDL-Palette">SDL::Palette</a> provides an interface to the SDL_Palette structures,
+<p><a href="SDL-Palette.html">SDL::Palette</a> provides an interface to the SDL_Palette structures,
and can be used to set the color values of an existing palette's indexes.</p>
</div>
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Color">SDL::Color</a> <a href="SDL-Surface">SDL::Surface</a></p>
+<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Color.html">SDL::Color</a> <a href="SDL-Surface.html">SDL::Surface</a></p>
</div>
</div>
\ No newline at end of file
</pre>
<p>$file Image file name to load a surface from. </p>
-<p>Load file for use as an image in a new <a href="SDL-Surface">SDL::Surface</a>. This actually calls <code>IMG_LoadTyped_RW</code> the binded function to <a href="/SDL-Image.html#load_typed_rw">SDL::Image::load_typed_rw</a>, with the file extension used as the type string. This can load all supported image files, including TGA as long as the filename ends with ".tga". It is best to call this outside of event loops, and rather keep the loaded images around until you are really done with them, as disk speed and image conversion to a surface is not that speedy.
+<p>Load file for use as an image in a new <a href="SDL-Surface.html">SDL::Surface</a>. This actually calls <code>IMG_LoadTyped_RW</code> the binded function to <a href="/SDL-Image.html#load_typed_rw">SDL::Image::load_typed_rw</a>, with the file extension used as the type string. This can load all supported image files, including TGA as long as the filename ends with ".tga". It is best to call this outside of event loops, and rather keep the loaded images around until you are really done with them, as disk speed and image conversion to a surface is not that speedy.
Note: If the image format loader requires initialization, it will attempt to do that the first time it is needed if you have not already called <a href="/SDL-Image.html#init">SDL::Image::init</a> to load support for your image format.
-Note: If the image format supports a transparent pixel, <a href="SDL-Image">SDL::Image</a> will set the colorkey for the surface. You can enable RLE acceleration on the surface afterwards by calling:
+Note: If the image format supports a transparent pixel, <a href="SDL-Image.html">SDL::Image</a> will set the colorkey for the surface. You can enable RLE acceleration on the surface afterwards by calling:
<a href="/SDL-Video.html#set_color_key">SDL::Video::set_color_key</a></p>
<pre> my $image = SDL::Image::load( $some_png_file );
SDL::Video::set_color_key($image, SDL_RLEACCEL, $image->format->colorkey);
</div>
<h3 id="Return">Return</h3>
<div id="Return_CONTENT">
-<p>An image as a <a href="SDL-Surface">SDL::Surface</a>. NULL is returned on errors, such as no support built for the image, or a file reading error. Use <a href="/SDL.html#get_error">SDL::get_error</a> to get cause of error.</p>
+<p>An image as a <a href="SDL-Surface.html">SDL::Surface</a>. NULL is returned on errors, such as no support built for the image, or a file reading error. Use <a href="/SDL.html#get_error">SDL::get_error</a> to get cause of error.</p>
</div>
<h2 id="load_typed_rw">load_typed_rw</h2>
<dl>
<dt>src</dt>
<dd>
- <p>The source <a href="SDL-Wops">SDL::RWops</a> as a pointer. The image is loaded from this. </p>
+ <p>The source <a href="SDL-RWops.html">SDL::RWops</a> as a pointer. The image is loaded from this. </p>
</dd>
<dt>freesrc</dt>
<dd>
</dl>
<p>Load src for use as a surface. This can load all supported image formats. This method does not guarantee that the format specified by type is the format of the loaded image, except in the case when TGA format is specified (or any other non-magicable format in the future). Using SDL_RWops is not covered here, but they enable you to load from almost any source.
Note: If the image format loader requires initialization, it will attempt to do that the first time it is needed if you have not already called <a href="/SDL-Image.html#init">SDL::Image::init</a> to load support for your image format.
-Note: If the image format supports a transparent pixel, <a href="SDL-Image">SDL::Image</a> will set the colorkey for the surface. You can enable RLE acceleration on the surface afterwards by calling:
+Note: If the image format supports a transparent pixel, <a href="SDL-Image.html">SDL::Image</a> will set the colorkey for the surface. You can enable RLE acceleration on the surface afterwards by calling:
<a href="/SDL-Video.html#set_color_key">SDL::Video::set_color_key</a></p>
</div>
</div>
<h3 id="Return-2">Return </h3>
<div id="Return_CONTENT-2">
-<p>The image as a new <a href="SDL-Surface">SDL::Surface</a>. NULL is returned on errors. </p>
+<p>The image as a new <a href="SDL-Surface.html">SDL::Surface</a>. NULL is returned on errors. </p>
</div>
<h2 id="is_TYPE">is_[TYPE]</h2>
<dt>is_XPM</dt>
<dt>is_XV</dt>
</dl>
-<p>These functions take a <a href="SDL-Ops">SDL::RWOps</a> as a parameter.</p>
+<p>These functions take a <a href="SDL-RWOps.html">SDL::RWOps</a> as a parameter.</p>
</div>
<h3 id="Return-3">Return</h3>
<dt>load_XPM_rw</dt>
<dt>load_XV_rw</dt>
</dl>
-<p>These functions take a <a href="SDL-Wop">SDL::RWop</a> as a parameter</p>
+<p>These functions take a <a href="SDL-RWop.html">SDL::RWop</a> as a parameter</p>
</div>
<h3 id="Return-4">Return</h3>
<div id="Return_CONTENT-4">
-<p>The image as a new <a href="SDL-Surface">SDL::Surface</a>. NULL is returned on errors, like if the [TYPE] is not supported, or a read error.</p>
+<p>The image as a new <a href="SDL-Surface.html">SDL::Surface</a>. NULL is returned on errors, like if the [TYPE] is not supported, or a read error.</p>
</div>
<h3 id="Example-2">Example</h3>
</div>
<h3 id="Return-5">Return</h3>
<div id="Return_CONTENT-5">
-<p>The image as a new <a href="SDL-Surface">SDL::Surface</a>. NULL is returned on errors, like if XPM is not supported, or a read error. </p>
+<p>The image as a new <a href="SDL-Surface.html">SDL::Surface</a>. NULL is returned on errors, like if XPM is not supported, or a read error. </p>
</div>
<h3 id="Example-3">Example</h3>
</div>
<h3 id="Return-6">Return</h3>
<div id="Return_CONTENT-6">
-<p>Returns a <a href="SDL-Version">SDL::Version</a> object</p>
+<p>Returns a <a href="SDL-Version.html">SDL::Version</a> object</p>
</div>
<h3 id="Example-4">Example</h3>
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="SDL">SDL</a>, <a href="SDL-Surface">SDL::Surface</a>, <a href="SDL-Video">SDL::Video</a>, <a href="SDL-Ops">SDL::RWOps</a></p>
+<p><a href="SDL.html">SDL</a>, <a href="SDL-Surface.html">SDL::Surface</a>, <a href="SDL-Video.html">SDL::Video</a>, <a href="SDL-RWOps.html">SDL::RWOps</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="http://search.cpan.org/perldoc?perl">perl</a>, <a href="SDL-Mixer-Channels">SDL::Mixer::Channels</a>, <a href="SDL-Mixer-Effects">SDL::Mixer::Effects</a>, <a href="SDL-Mixer-Groups">SDL::Mixer::Groups</a>, <a href="SDL-Mixer-Music">SDL::Mixer::Music</a>.</p>
+<p><a href="http://search.cpan.org/perldoc?perl">perl</a>, <a href="SDL-Mixer-Channels.html">SDL::Mixer::Channels</a>, <a href="SDL-Mixer-Effects.html">SDL::Mixer::Effects</a>, <a href="SDL-Mixer-Groups.html">SDL::Mixer::Groups</a>, <a href="SDL-Mixer-Music.html">SDL::Mixer::Music</a>.</p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="DESCRIPTION_CONTENT">
-<p><a href="SDL-Music">SDL::Music</a> is used to load music files for use with <a href="SDL-Mixer">SDL::Mixer</a>.
+<p><a href="SDL-Music.html">SDL::Music</a> is used to load music files for use with <a href="SDL-Mixer.html">SDL::Mixer</a>.
To load a music file one simply creates a new object passing the filename
to the constructor:</p>
<pre> my $music = new SDL::Music 'my_song.ogg';
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Mixer">SDL::Mixer</a></p>
+<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Mixer.html">SDL::Mixer</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="DESCRIPTION_CONTENT">
-<p><a href="SDL-OpenGL">SDL::OpenGL</a> is a perl module which when used by your application
+<p><a href="SDL-OpenGL.html">SDL::OpenGL</a> is a perl module which when used by your application
exports the gl* and glu* functions into your application's primary namespace.
Most of the functions described in the OpenGL 1.3 specification are currently
supported in this fashion. As the implementation of the OpenGL bindings that
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-App">SDL::App</a></p>
+<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-App.html">SDL::App</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="SDL-Color">SDL::Color</a> <a href="SDL-Surface">SDL::Surface</a></p>
+<p><a href="SDL-Color.html">SDL::Color</a> <a href="SDL-Surface.html">SDL::Surface</a></p>
</div>
</div>
\ No newline at end of file
<pre> $surface->format->palette;
</pre>
-<p>Returns the <code>SDL_Palette</code> and <a href="SDL-Palette">SDL::Palette</a> of the format of the surface.</p>
+<p>Returns the <code>SDL_Palette</code> and <a href="SDL-Palette.html">SDL::Palette</a> of the format of the surface.</p>
</div>
<h2 id="BitsPerPixel">BitsPerPixel </h2>
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="SDL-Surface">SDL::Surface</a></p>
+<p><a href="SDL-Surface.html">SDL::Surface</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="SDL-Surface">SDL::Surface</a></p>
+<p><a href="SDL-Surface.html">SDL::Surface</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-App">SDL::App</a></p>
+<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-App.html">SDL::App</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="DESCRIPTION_CONTENT">
-<p><a href="SDL-Sound">SDL::Sound</a> is a module for loading WAV files for sound effects.
-The file can be loaded by creating a new <a href="SDL-Sound">SDL::Sound</a> object by
+<p><a href="SDL-Sound.html">SDL::Sound</a> is a module for loading WAV files for sound effects.
+The file can be loaded by creating a new <a href="SDL-Sound.html">SDL::Sound</a> object by
passing the filename to the constructor;</p>
<pre> my $sound = new SDL::Sound 'my_sfx.wav';
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Mixer">SDL::Mixer</a></p>
+<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Mixer.html">SDL::Mixer</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h2 id="format">format</h2>
<div id="format_CONTENT">
-<p>The format of the pixels stored in the surface. See <a href="SDL-PixelFormat">SDL::PixelFormat</a></p>
+<p>The format of the pixels stored in the surface. See <a href="SDL-PixelFormat.html">SDL::PixelFormat</a></p>
<pre> my $format = $surface->format;
</pre>
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="SDL">SDL</a>, <a href="SDL-PixelFormat">SDL::PixelFormat</a>, <a href="SDL-Video">SDL::Video</a>, <a href="SDL-Rect">SDL::Rect</a></p>
+<p><a href="SDL.html">SDL</a>, <a href="SDL-PixelFormat.html">SDL::PixelFormat</a>, <a href="SDL-Video.html">SDL::Video</a>, <a href="SDL-Rect.html">SDL::Rect</a></p>
</div>
</div>
\ No newline at end of file
<div class="pod">
<!-- INDEX START -->
<h3 id="TOP">Index</h3>
-<hr />
+
+<ul><li><a href="#NAME">NAME</a></li>
+<li><a href="#CATEGORY">CATEGORY</a></li>
+<li><a href="#METHODS">METHODS</a>
+<ul><li><a href="#General_methods">General methods</a>
+<ul><li><a href="#linked_version">linked_version</a></li>
+<li><a href="#compile_time_version">compile_time_version</a></li>
+<li><a href="#init">init</a></li>
+<li><a href="#was_init">was_init</a></li>
+<li><a href="#quit">quit</a></li>
+</ul>
+</li>
+<li><a href="#Management_functions">Management functions</a>
+<ul><li><a href="#open_font">open_font</a></li>
+<li><a href="#open_font_index">open_font_index</a></li>
+<li><a href="#open_font_RW">open_font_RW</a></li>
+<li><a href="#open_font_index_RW">open_font_index_RW</a></li>
+</ul>
+</li>
+<li><a href="#Attributes">Attributes</a>
+<ul><li><a href="#Global_attributes">Global attributes</a>
+<ul><li><a href="#byte_swapped_unicode">byte_swapped_unicode</a></li>
+</ul>
+</li>
+<li><a href="#Font_style">Font style</a>
+<ul><li><a href="#get_font_style">get_font_style</a></li>
+<li><a href="#set_font_style">set_font_style</a></li>
+</ul>
+</li>
+<li><a href="#Font_settings">Font settings</a>
+<ul><li><a href="#get_font_hinting">get_font_hinting</a></li>
+<li><a href="#set_font_hinting">set_font_hinting</a></li>
+<li><a href="#get_font_kerning">get_font_kerning</a></li>
+<li><a href="#set_font_kerning">set_font_kerning</a></li>
+</ul>
+</li>
+<li><a href="#Font_metrics">Font metrics</a>
+<ul><li><a href="#font_height">font_height</a></li>
+<li><a href="#font_ascent">font_ascent</a></li>
+<li><a href="#font_descent">font_descent</a></li>
+<li><a href="#font_line_skip">font_line_skip</a></li>
+</ul>
+</li>
+<li><a href="#Face_attributes">Face attributes</a>
+<ul><li><a href="#font_faces">font_faces</a></li>
+<li><a href="#font_face_is_fixed_width">font_face_is_fixed_width</a></li>
+<li><a href="#font_face_family_name">font_face_family_name</a></li>
+<li><a href="#font_face_style_name">font_face_style_name</a></li>
+</ul>
+</li>
+<li><a href="#Glyphs">Glyphs</a>
+<ul><li><a href="#glyph_is_provided">glyph_is_provided</a></li>
+<li><a href="#glyph_metrics">glyph_metrics</a></li>
+</ul>
+</li>
+<li><a href="#Text_metrics">Text metrics</a>
+<ul><li><a href="#size_text">size_text</a></li>
+<li><a href="#size_utf8">size_utf8</a></li>
+<li><a href="#size_unicode">size_unicode</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#Font_Rendering">Font Rendering</a>
+<ul><li><a href="#render_glyph_solid">render_glyph_solid</a></li>
+<li><a href="#render_glyph_shaded">render_glyph_shaded</a></li>
+<li><a href="#render_glyph_blended">render_glyph_blended</a></li>
+<li><a href="#render_text_solid">render_text_solid</a></li>
+<li><a href="#render_text_shaded">render_text_shaded</a></li>
+<li><a href="#render_text_blended">render_text_blended</a></li>
+<li><a href="#render_utf8_solid">render_utf8_solid</a></li>
+<li><a href="#render_utf8_shaded">render_utf8_shaded</a></li>
+<li><a href="#render_utf8_blended">render_utf8_blended</a></li>
+<li><a href="#render_unicode_solid">render_unicode_solid</a></li>
+<li><a href="#render_unicode_shaded">render_unicode_shaded</a></li>
+<li><a href="#render_unicode_blended">render_unicode_blended</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a href="#AUTHOR">AUTHOR</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::TTF - True Type Font functions (libfreetype)</p>
+
+</div>
+<h1 id="CATEGORY">CATEGORY</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="CATEGORY_CONTENT">
+<p>TODO, TTF</p>
+
+</div>
+<h1 id="METHODS">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="METHODS_CONTENT">
+
+</div>
+<h2 id="General_methods">General methods</h2>
+<div id="General_methods_CONTENT">
+
+</div>
+<h3 id="linked_version">linked_version</h3>
+<div id="linked_version_CONTENT">
+<pre> my $version = SDL::TTF::linked_version();
+
+</pre>
+<p>This gives you the SDL::Version object which SDL_ttf lib is used on the system.
+No prior initialization needs to be done before these function is called. </p>
+<p>Example:</p>
+<pre> use SDL::TTF;
+ use SDL::Version;
+
+ my $version = SDL::TTF::linked_version();
+
+ printf("got version: %d.%d.%d\n", $version->major, $version->minor, $version->patch);
+
+</pre>
+
+</div>
+<h3 id="compile_time_version">compile_time_version</h3>
+<div id="compile_time_version_CONTENT">
+<pre> my $version = SDL::TTF::compile_time_version();
+
+</pre>
+<p>This gives you the SDL::Version object which SDL_ttf was present at compile time.</p>
+
+</div>
+<h3 id="init">init</h3>
+<div id="init_CONTENT">
+<pre> my $success = SDL::TTF::init();
+
+</pre>
+<p>Initialize the truetype font API.
+This must be called before using other functions in this library, except <a href="/SDL-TTF.html#was_init">SDL::TTF::was_init</a> and <a href="/SDL-TTF.html#linked_version">SDL::TTF::linked_version</a>.
+SDL does not have to be initialized before this call.</p>
+<p>Returns: <code>0</code> on success, <code>-1</code> on any error.</p>
+
+</div>
+<h3 id="was_init">was_init</h3>
+<div id="was_init_CONTENT">
+<pre> my $was_init = SDL::TTF::was_init();
+
+</pre>
+<p>Query the initilization status of the truetype font API.
+You may, of course, use this before <a href="/SDL-TTF.html#init">SDL::TTF::init</a> to avoid initializing twice in a row. Or use this to determine if you need to call
+<a href="/SDL-TTF.html#quit">SDL::TTF::quit</a>.</p>
+
+</div>
+<h3 id="quit">quit</h3>
+<div id="quit_CONTENT">
+<pre> SDL::TTF::quit();
+
+</pre>
+<p>Shutdown and cleanup the truetype font API.
+After calling this the SDL::TTF functions should not be used, excepting <a href="/SDL-TTF.html#was_init">SDL::TTF::was_init</a>. You may, of course, use <a href="/SDL-TTF.html#init">SDL::TTF::init</a> to
+use the functionality again</p>
+
+</div>
+<h2 id="Management_functions">Management functions</h2>
+<div id="Management_functions_CONTENT">
+
+</div>
+<h3 id="open_font">open_font</h3>
+<div id="open_font_CONTENT">
+<pre> my $font = SDL::TTF::open_font($font_file, $point_size);
+
+</pre>
+<p>Load file for use as a font, at the given size. This is actually <code>SDL::TTF::open_font_index(..., ..., $index = 0)</code>. This can load TTF and FON files.</p>
+<p>Returns: a <a href="SDL-TTF-Font.html">SDL::TTF::Font</a> object. <code>undef</code> is returned on errors.</p>
+<p>Example:</p>
+<pre> use SDL::TTF;
+ use SDL::TTF::Font;
+
+ my $font = SDL::TTF::open_font('arial.ttf', '24);
+
+</pre>
+
+</div>
+<h3 id="open_font_index">open_font_index</h3>
+<div id="open_font_index_CONTENT">
+<pre> my $font = SDL::TTF::open_font($font_file, $point_size, $face_index);
+
+</pre>
+<p>This is the same as <a href="/SDL-TTF.html#open_font">SDL::TTF::open_font</a>, except you can specify the face index of a font file containing multiple faces.
+This can load TTF and FON files. </p>
+
+</div>
+<h3 id="open_font_RW">open_font_RW</h3>
+<div id="open_font_RW_CONTENT">
+<pre> my $font = SDL::TTF::open_font_RW($rwops_object, $free, $point_size);
+
+</pre>
+<p>This is the same as <a href="/SDL-TTF.html#open_font">SDL::TTF::open_font</a>, except you can pass an <a href="SDL-RWOps.html">SDL::RWOps</a>-object. If you pass true as <code>$free</code>, the <a href="SDL-RWOps.html">SDL::RWOps</a>-object
+will be freed by SDL_ttf library. Don't do this, perl will free this object for you.</p>
+<p>Example:</p>
+<pre> my $font = SDL::TTF::open_font_RW(SDL::RWOps->new_file($font_file, 'r'), 0, 24);
+
+</pre>
+
+</div>
+<h3 id="open_font_index_RW">open_font_index_RW</h3>
+<div id="open_font_index_RW_CONTENT">
+<pre> my $font = SDL::TTF::open_font_index_RW($rwops_object, $free, $point_size, $face_index);
+
+</pre>
+<p>This is the same as <a href="/SDL-TTF.html#open_font_index">SDL::TTF::open_font_index</a>, except you can pass an <a href="SDL-RWOps.html">SDL::RWOps</a>-object. If you pass true as <code>$free</code>, the
+<a href="SDL-RWOps.html">SDL::RWOps</a>-object will be freed by SDL_ttf library. Don't do this, perl will free this object for you.</p>
+
+</div>
+<h2 id="Attributes">Attributes</h2>
+<div id="Attributes_CONTENT">
+
+</div>
+<h3 id="Global_attributes">Global attributes</h3>
+<div id="Global_attributes_CONTENT">
+
+</div>
+<h4 id="byte_swapped_unicode">byte_swapped_unicode</h4>
+<div id="byte_swapped_unicode_CONTENT">
+<pre> SDL::TTF::byte_swapped_unicode( $bool );
+
+</pre>
+<p>This function tells SDL_ttf whether UNICODE (2 bytes per character) text is generally byteswapped. A <code>UNICODE_BOM_NATIVE</code> or
+<code>UNICODE_BOM_SWAPPED</code> character in a string will temporarily override this setting for the remainder of that string, however this setting
+will be restored for the next one. The default mode is non-swapped, native endianness of the CPU.</p>
+
+</div>
+<h3 id="Font_style">Font style</h3>
+<div id="Font_style_CONTENT">
+
+</div>
+<h4 id="get_font_style">get_font_style</h4>
+<div id="get_font_style_CONTENT">
+<pre> SDL::TTF::get_font_style($font);
+
+</pre>
+<p>Returns: The style as a bitmask composed of the following masks:</p>
+<ul>
+ <li>TTF_STYLE_NORMAL </li>
+ <li>TTF_STYLE_BOLD </li>
+ <li>TTF_STYLE_ITALIC </li>
+ <li>TTF_STYLE_UNDERLINE </li>
+ <li>TTF_STYLE_STRIKETHROUGH (since SDL_ttf 2.0.10)</li>
+</ul>
+
+<p>Example:</p>
+<pre> my $style = SDL::TTF::get_font_style($font);
+
+ print("normal\n") if $style == TTF_STYLE_NORMAL;
+ print("bold\n") if $style & TTF_STYLE_BOLD;
+ print("italic\n") if $style & TTF_STYLE_ITALIC;
+ print("underline\n") if $style & TTF_STYLE_UNDERLINE;
+ print("strikethrough\n") if $style & TTF_STYLE_STRIKETHROUGH;
+
+</pre>
+
+</div>
+<h4 id="set_font_style">set_font_style</h4>
+<div id="set_font_style_CONTENT">
+<pre> SDL::TTF::set_font_style($font, $style);
+
+</pre>
+<p>Set the rendering style of the loaded font.</p>
+<p><strong>Note</strong>: <code>TTF_STYLE_UNDERLINE</code> may cause surfaces created by <code>SDL::TTF::render_glyph_*</code> functions to be extended vertically, downward only,
+to encompass the underline if the original glyph metrics didn't allow for the underline to be drawn below. This does not change the math used
+to place a glyph using glyph metrics.
+On the other hand <code>TTF_STYLE_STRIKETHROUGH</code> doesn't extend the glyph, since this would invalidate the metrics used to position the glyph when
+blitting, because they would likely be extended vertically upward. There is perhaps a workaround, but it would require programs to be smarter
+about glyph blitting math than they are currently designed for.
+Still, sometimes the underline or strikethrough may be outside of the generated surface, and thus not visible when blitted to the screen. In
+this case, you should probably turn off these styles and draw your own strikethroughs and underlines. </p>
+
+</div>
+<h3 id="Font_settings">Font settings</h3>
+<div id="Font_settings_CONTENT">
+
+</div>
+<h4 id="get_font_hinting">get_font_hinting</h4>
+<div id="get_font_hinting_CONTENT">
+<pre> my $hinting = SDL::TTF::get_font_hinting($font);
+
+</pre>
+<p>Get the current hinting setting of the loaded font.</p>
+<p><strong>Note</strong>: at least SDL_ttf 2.0.10 needed</p>
+<p>Returns the hinting type matching one of the following defined values:</p>
+<ul>
+ <li>TTF_HINTING_NORMAL </li>
+ <li>TTF_HINTING_LIGHT </li>
+ <li>TTF_HINTING_MONO </li>
+ <li>TTF_HINTING_NONE</li>
+</ul>
+
+
+</div>
+<h4 id="set_font_hinting">set_font_hinting</h4>
+<div id="set_font_hinting_CONTENT">
+<pre> SDL::TTF::set_font_hinting($font, $hinting);
+
+</pre>
+<p>Set the hinting of the loaded font. You should experiment with this setting if you know which font you are using beforehand, especially when
+using smaller sized fonts. If the user is selecting a font, you may wish to let them select the hinting mode for that font as well.</p>
+<p><strong>Note</strong>: at least SDL_ttf 2.0.10 needed</p>
+<p>Example:</p>
+<pre> SDL::TTF::set_font_hinting($font, TTF_HINTING_LIGHT);
+
+</pre>
+
+</div>
+<h4 id="get_font_kerning">get_font_kerning</h4>
+<div id="get_font_kerning_CONTENT">
+<pre> my $kerning_enabled = SDL::TTF::get_font_kerning($font);
+
+</pre>
+<p>Get the current kerning setting of the loaded font.</p>
+<p>Returns: <code>0</code>(zero) if kerning is disabled. A non-zero value is returned when enabled. The default for a newly loaded font is enabled(<code>1</code>). </p>
+<p><strong>Note</strong>: at least SDL_ttf 2.0.10 needed</p>
+
+</div>
+<h4 id="set_font_kerning">set_font_kerning</h4>
+<div id="set_font_kerning_CONTENT">
+<pre> SDL::TTF::set_font_kerning($font, $kerning_enabled);
+
+</pre>
+<p>Set whether to use kerning when rendering the loaded font. This has no effect on individual glyphs, but rather when rendering whole strings of
+characters, at least a word at a time. Perhaps the only time to disable this is when kerning is not working for a specific font, resulting in
+overlapping glyphs or abnormal spacing within words.</p>
+<p>Pass <code>0</code> to disable kerning, 1 to enable.</p>
+<p><strong>Note</strong>: at least SDL_ttf 2.0.10 needed</p>
+
+</div>
+<h3 id="Font_metrics">Font metrics</h3>
+<div id="Font_metrics_CONTENT">
+
+</div>
+<h4 id="font_height">font_height</h4>
+<div id="font_height_CONTENT">
+<pre> my $font_height = SDL::TTF::font_height($font);
+
+</pre>
+
+</div>
+<h4 id="font_ascent">font_ascent</h4>
+<div id="font_ascent_CONTENT">
+<pre> my $font_ascent = SDL::TTF::font_ascent($font);
+ like( $font_ascent, '/^[-]?\d+$/', "[font_ascent] offset from the baseline to the top of the font is $font_ascent" );
+
+</pre>
+
+</div>
+<h4 id="font_descent">font_descent</h4>
+<div id="font_descent_CONTENT">
+<pre> my $font_descent = SDL::TTF::font_descent($font);
+ like( $font_descent, '/^[-]?\d+$/', "[font_descent] offset from the baseline to the bottom of the font is $font_descent" );
+
+</pre>
+
+</div>
+<h4 id="font_line_skip">font_line_skip</h4>
+<div id="font_line_skip_CONTENT">
+<pre> my $font_line_skip = SDL::TTF::font_line_skip($font);
+ like( $font_line_skip, '/^[-]?\d+$/', "[font_line_skip] recommended spacing between lines of text is $font_line_skip" );
+
+</pre>
+
+</div>
+<h3 id="Face_attributes">Face attributes</h3>
+<div id="Face_attributes_CONTENT">
+
+</div>
+<h4 id="font_faces">font_faces</h4>
+<div id="font_faces_CONTENT">
+<p>my $font_faces = SDL::TTF::font_faces($font);
+ok( $font_faces, "[font_faces] font has $font_faces faces" );</p>
+
+</div>
+<h4 id="font_face_is_fixed_width">font_face_is_fixed_width</h4>
+<div id="font_face_is_fixed_width_CONTENT">
+<p>my $font_face_is_fixed_width = SDL::TTF::font_face_is_fixed_width($font);
+like( $font_face_is_fixed_width, '/^[01]$/', "[font_face_is_fixed_width] is $font_face_is_fixed_width" );</p>
+
+</div>
+<h4 id="font_face_family_name">font_face_family_name</h4>
+<div id="font_face_family_name_CONTENT">
+<p>my $font_face_family_name = SDL::TTF::font_face_family_name($font);
+ok( $font_face_family_name, "[font_face_family_name] is $font_face_family_name" );</p>
+
+</div>
+<h4 id="font_face_style_name">font_face_style_name</h4>
+<div id="font_face_style_name_CONTENT">
+<p>my $font_face_style_name = SDL::TTF::font_face_style_name($font);
+ok( $font_face_style_name, "[font_face_style_name] is $font_face_style_name" );</p>
+
+</div>
+<h3 id="Glyphs">Glyphs</h3>
+<div id="Glyphs_CONTENT">
+
+</div>
+<h4 id="glyph_is_provided">glyph_is_provided</h4>
+<div id="glyph_is_provided_CONTENT">
+
+</div>
+<h4 id="glyph_metrics">glyph_metrics</h4>
+<div id="glyph_metrics_CONTENT">
+<pre> my @glyph_metrics = @{ SDL::TTF::glyph_metrics($font, 'M') };
+is( scalar @glyph_metrics, 5, "[glyph_metrics] (minx, maxx, miny, maxy, advance) = (" . join(', ', @glyph_metrics) . ")" );
+
+</pre>
+
+</div>
+<h3 id="Text_metrics">Text metrics</h3>
+<div id="Text_metrics_CONTENT">
+
+</div>
+<h4 id="size_text">size_text</h4>
+<div id="size_text_CONTENT">
+<pre> my ($width, $height) = @{ SDL::TTF::size_text($font, 'Hallo World!') };
+
+</pre>
+
+</div>
+<h4 id="size_utf8">size_utf8</h4>
+<div id="size_utf8_CONTENT">
+<pre> my ($width, $height) = @{ SDL::TTF::size_utf8($font, 'Hallo World!') };
+
+</pre>
+
+</div>
+<h4 id="size_unicode">size_unicode</h4>
+<div id="size_unicode_CONTENT">
+<pre> my ($width, $height) = @{ SDL::TTF::size_unicode($font, 'Hallo World!') };
+
+</pre>
+
+</div>
+<h2 id="Font_Rendering">Font Rendering</h2>
+<div id="Font_Rendering_CONTENT">
+
+</div>
+<h3 id="render_glyph_solid">render_glyph_solid</h3>
+<div id="render_glyph_solid_CONTENT">
+
+</div>
+<h3 id="render_glyph_shaded">render_glyph_shaded</h3>
+<div id="render_glyph_shaded_CONTENT">
+
+</div>
+<h3 id="render_glyph_blended">render_glyph_blended</h3>
+<div id="render_glyph_blended_CONTENT">
+
+</div>
+<h3 id="render_text_solid">render_text_solid</h3>
+<div id="render_text_solid_CONTENT">
+<p><strong>Note</strong>: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=374062</p>
+
+</div>
+<h3 id="render_text_shaded">render_text_shaded</h3>
+<div id="render_text_shaded_CONTENT">
+
+</div>
+<h3 id="render_text_blended">render_text_blended</h3>
+<div id="render_text_blended_CONTENT">
+
+</div>
+<h3 id="render_utf8_solid">render_utf8_solid</h3>
+<div id="render_utf8_solid_CONTENT">
+
+</div>
+<h3 id="render_utf8_shaded">render_utf8_shaded</h3>
+<div id="render_utf8_shaded_CONTENT">
+
+</div>
+<h3 id="render_utf8_blended">render_utf8_blended</h3>
+<div id="render_utf8_blended_CONTENT">
+
+</div>
+<h3 id="render_unicode_solid">render_unicode_solid</h3>
+<div id="render_unicode_solid_CONTENT">
+
+</div>
+<h3 id="render_unicode_shaded">render_unicode_shaded</h3>
+<div id="render_unicode_shaded_CONTENT">
+
+</div>
+<h3 id="render_unicode_blended">render_unicode_blended</h3>
+<div id="render_unicode_blended_CONTENT">
+
+</div>
+<h1 id="AUTHOR">AUTHOR</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="AUTHOR_CONTENT">
+<p>Tobias Leich [FROGGS]</p>
+</div>
+<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
+<div id="SEE_ALSO_CONTENT">
+<p><a href="SDL-TTF-Font.html">SDL::TTF::Font</a>, <a href="http://search.cpan.org/perldoc?Unicode::String">Unicode::String</a>, <a href="SDL-Video.html">SDL::Video</a>, <a href="SDL-Surface.html">SDL::Surface</a></p>
+</div>
</div>
\ No newline at end of file
</div>
<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="DESCRIPTION_CONTENT">
-<p><a href="SDL-Font">SDL::TTFont</a> is a module for applying true type fonts to <a href="SDL-Surface">SDL::Surface</a>.</p>
+<p><a href="SDL-TTFont.html">SDL::TTFont</a> is a module for applying true type fonts to <a href="SDL-Surface.html">SDL::Surface</a>.</p>
</div>
<h1 id="METHODS">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
</div>
<h2 id="print_surface_top_left_text">print ($surface, $top, $left, @text)</h2>
<div id="print_surface_top_left_text_CONTENT">
-<p>Directly draws text to an existing surface. Receives the target <a href="SDL-Surface">SDL::Surface</a>
+<p>Directly draws text to an existing surface. Receives the target <a href="SDL-Surface.html">SDL::Surface</a>
object and the relative top (y) and left (x) coordinates to put the text in.
The last parameter may be a string or an array or strings with the text to be
written.</p>
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="http://search.cpan.org/perldoc?perl">perl</a>, <a href="SDL">SDL</a>, <a href="SDL-Surface">SDL::Surface</a>
+<p><a href="http://search.cpan.org/perldoc?perl">perl</a>, <a href="SDL.html">SDL</a>, <a href="SDL-Surface.html">SDL::Surface</a>
</p>
</div>
</div>
<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="DESCRIPTION_CONTENT">
-<p><a href="SDL-Tool-Font">SDL::Tool::Font</a> provides a unified interface for applying
+<p><a href="SDL-Tool-Font.html">SDL::Tool::Font</a> provides a unified interface for applying
True Type and SFont fonts to various surfaces.</p>
</div>
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Font">SDL::Font</a> <a href="SDL-Font">SDL::TTFont</a> <a href="SDL-Surface">SDL::Surface</a></p>
+<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Font.html">SDL::Font</a> <a href="SDL-TTFont.html">SDL::TTFont</a> <a href="SDL-Surface.html">SDL::Surface</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="DESCRIPTION_CONTENT">
-<p><a href="SDL-Tool-Graphic">SDL::Tool::Graphic</a> is a module for zooming and rotating <a href="SDL-Surface">SDL::Surface</a> objects.</p>
+<p><a href="SDL-Tool-Graphic.html">SDL::Tool::Graphic</a> is a module for zooming and rotating <a href="SDL-Surface.html">SDL::Surface</a> objects.</p>
</div>
<h1 id="METHODS">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
</div>
<h2 id="zoom_surface_xzoom_yzoom_smooth">zoom ( surface, xzoom, yzoom, smooth )</h2>
<div id="zoom_surface_xzoom_yzoom_smooth_CONT">
-<p><code>SDL::Tool::Graphic::zoom</code> scales a <a href="SDL-Surface">SDL::Surface</a> along the two axis independently.</p>
+<p><code>SDL::Tool::Graphic::zoom</code> scales a <a href="SDL-Surface.html">SDL::Surface</a> along the two axis independently.</p>
</div>
<h2 id="rotoZoom_surface_angle_zoom_smooth">rotoZoom ( surface, angle, zoom, smooth )</h2>
<div id="rotoZoom_surface_angle_zoom_smooth_C">
-<p><code>SDL::Tool::Graphic::rotoZoom</code> rotates and fixed axis zooms a <a href="SDL-Surface">SDL::Surface</a>.</p>
+<p><code>SDL::Tool::Graphic::rotoZoom</code> rotates and fixed axis zooms a <a href="SDL-Surface.html">SDL::Surface</a>.</p>
</div>
<h2 id="grayScale_surface">grayScale ( surface )</h2>
<div id="grayScale_surface_CONTENT">
-<p><code>SDL::Tool::Graphic::grayScale</code> rotates and fixed axis zooms a <a href="SDL-Surface">SDL::Surface</a>.</p>
+<p><code>SDL::Tool::Graphic::grayScale</code> rotates and fixed axis zooms a <a href="SDL-Surface.html">SDL::Surface</a>.</p>
</div>
<h2 id="invertColor_surface">invertColor ( surface )</h2>
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Surface">SDL::Surface</a></p>
+<p><a href="http://search.cpan.org/perldoc?perl">perl</a> <a href="SDL-Surface.html">SDL::Surface</a></p>
</div>
</div>
\ No newline at end of file
<div id="Redrawing_the_Screen_CONTENT">
<p>Since you have to draw the screen in the right order once to start with it's
pretty easy to make this into a loop and redraw things in the right order for
-every frame. Given a <a href="SDL-App">SDL::App</a> object <code>$app</code>, a <a href="SDL-Rect">SDL::Rect</a> <code>$rect</code>, and
-a <a href="SDL-Color">SDL::Color</a> <code>$color</code>, you only have to create a new SDL::Rect <code>$bg</code>,
+every frame. Given a <a href="SDL-App.html">SDL::App</a> object <code>$app</code>, a <a href="SDL-Rect.html">SDL::Rect</a> <code>$rect</code>, and
+a <a href="SDL-Color.html">SDL::Color</a> <code>$color</code>, you only have to create a new SDL::Rect <code>$bg</code>,
representing the whole of the background surface and a new SDL::Color
<code>$bg_color</code>, representing the background color. You can write a
<code>draw_frame()</code> function as follows:</p>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
<dl>
- <dt><a href="SDL-Tutorial-Drawing">SDL::Tutorial::Drawing</a></dt>
+ <dt><a href="SDL-Tutorial-Drawing.html">SDL::Tutorial::Drawing</a></dt>
<dd>
<p>basic drawing with SDL Perl</p>
</dd>
- <dt><a href="SDL-Tutorial-Images">SDL::Tutorial::Images</a></dt>
+ <dt><a href="SDL-Tutorial-Images.html">SDL::Tutorial::Images</a></dt>
<dd>
<p>animating images</p>
</dd>
</div>
<h2 id="Loading_Images">Loading Images</h2>
<div id="Loading_Images_CONTENT">
-<p>As usual, start with an <a href="SDL-App">SDL::App</a> object representing the image window. Then
+<p>As usual, start with an <a href="SDL-App.html">SDL::App</a> object representing the image window. Then
preload the image file. This is easy; just pass the <code>name</code> parameter to the
-<a href="SDL-Surface">SDL::Surface</a> constructor:</p>
+<a href="SDL-Surface.html">SDL::Surface</a> constructor:</p>
<p> </p>
<pre> use SDL::Surface;
</pre>
<p> </p>
-<p>Here we have two <a href="SDL-Rect">SDL::Rect</a> objects which represent rectangular regions of a
+<p>Here we have two <a href="SDL-Rect.html">SDL::Rect</a> objects which represent rectangular regions of a
Surface. <code>$frame_rect</code> represents the entire area of <code>$frame</code>, while
<code>$dest_rect</code> represents the area of the main window in which to blit the
frame. This may be clearer with more descriptive variable names:</p>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
<dl>
- <dt><a href="SDL-Tutorial">SDL::Tutorial</a></dt>
+ <dt><a href="SDL-Tutorial.html">SDL::Tutorial</a></dt>
<dd>
<p>basic SDL tutorial</p>
</dd>
- <dt><a href="SDL-Tutorial-Animation">SDL::Tutorial::Animation</a></dt>
+ <dt><a href="SDL-Tutorial-Animation.html">SDL::Tutorial::Animation</a></dt>
<dd>
<p>non-image animation</p>
</dd>
</pre>
<p> </p>
-<p>That creates a new <a href="SDL-Game-Rect">SDL::Game::Rect</a> object, a rectangle, with the given width/height dimensions and in the given top/left position of the screen.</p>
+<p>That creates a new <a href="SDL-Game-Rect.html">SDL::Game::Rect</a> object, a rectangle, with the given width/height dimensions and in the given top/left position of the screen.</p>
<p>Wait. Did I say... <i><screen</i>>?</p>
</div>
<div id="Part_2_Our_first_event_tracking_user-2">
<p># TODO</p>
<p>Now let's query some events!</p>
-<p>First, we need to use the <a href="SDL-Event">SDL::Event</a> module. Add this to the beginning of our code:</p>
+<p>First, we need to use the <a href="SDL-Event.html">SDL::Event</a> module. Add this to the beginning of our code:</p>
<p> </p>
<pre> use SDL::Event;
my $event = SDL::Event->new;
<h2 id="Surfaces">Surfaces</h2>
<div id="Surfaces_CONTENT">
<p>All graphics in SDL live on a surface. You'll need at least one. That's what
-<a href="SDL-App">SDL::App</a> provides.</p>
+<a href="SDL-App.html">SDL::App</a> provides.</p>
<p>Of course, before you can get a surface, you need to initialize your video
mode. SDL gives you several options, including whether to run in a window or
take over the full screen, the size of the window, the bit depth of your
<h2 id="Working_With_The_App">Working With The App</h2>
<div id="Working_With_The_App_CONTENT">
<p>Since <code>$app</code> from the code above is just an SDL surface with some extra sugar,
-it behaves much like <a href="SDL-Surface">SDL::Surface</a>. In particular, the all-important <code>blit</code>
-and <code>update</code> methods work. You'll need to create <a href="SDL-Rect">SDL::Rect</a> objects
+it behaves much like <a href="SDL-Surface.html">SDL::Surface</a>. In particular, the all-important <code>blit</code>
+and <code>update</code> methods work. You'll need to create <a href="SDL-Rect.html">SDL::Rect</a> objects
representing sources of graphics to draw onto the <code>$app</code>'s surface, <code>blit</code>
them there, then <code>update</code> the <code>$app</code>.</p>
<p><strong>Note:</strong> "blitting" is copying a chunk of memory from one place to another.</p>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
<dl>
- <dt><a href="SDL-Tutorial-Drawing">SDL::Tutorial::Drawing</a></dt>
+ <dt><a href="SDL-Tutorial-Drawing.html">SDL::Tutorial::Drawing</a></dt>
<dd>
<p>basic drawing with rectangles</p>
</dd>
- <dt><a href="SDL-Tutorial-Animation">SDL::Tutorial::Animation</a></dt>
+ <dt><a href="SDL-Tutorial-Animation.html">SDL::Tutorial::Animation</a></dt>
<dd>
<p>basic rectangle animation</p>
</dd>
- <dt><a href="SDL-Tutorial-Images">SDL::Tutorial::Images</a></dt>
+ <dt><a href="SDL-Tutorial-Images.html">SDL::Tutorial::Images</a></dt>
<dd>
<p>image loading and animation</p>
</dd>
<pre> my $surface = SDL::Video::get_video_surface();
</pre>
-<p>This function returns the current display <a href="SDL-Surface">SDL::Surface</a>. If SDL is doing format conversion on the display surface, this
+<p>This function returns the current display <a href="SDL-Surface.html">SDL::Surface</a>. If SDL is doing format conversion on the display surface, this
function returns the publicly visible surface, not the real video surface.</p>
<p>Example:</p>
<pre> # somewhere after you set the video mode
<pre> my $video_info = SDL::Video::get_video_info();
</pre>
-<p>This function returns a read-only <a href="SDL-VideoInfo">SDL::VideoInfo</a> containing information about the video hardware. If it is called before
+<p>This function returns a read-only <a href="SDL-VideoInfo.html">SDL::VideoInfo</a> containing information about the video hardware. If it is called before
<a href="#set_video_mode">SDL::Video::set_video_mode</a>, the <code>vfmt</code> member of the returned structure will contain the pixel
format of the <strong>best</strong> video mode. </p>
<p>Example:</p>
</pre>
<p>Sets up a video mode with the specified width, height, bits-per-pixel and flags.
-<code>set_video_mode</code> returns a <a href="SDL-Surface">SDL::Surface</a> on success otherwise it returns undef on error, the error message is retrieved
+<code>set_video_mode</code> returns a <a href="SDL-Surface.html">SDL::Surface</a> on success otherwise it returns undef on error, the error message is retrieved
using <code>SDL::get_error</code>.</p>
</div>
<pre> $converted_surface = SDL::Video::convert_surface( $surface, $format, $flags );
</pre>
-<p>Creates a new SDL::surface of the specified <a href="SDL-PixelFormat">SDL::PixelFormat</a>, and then copies and maps the given surface to it.
+<p>Creates a new SDL::surface of the specified <a href="SDL-PixelFormat.html">SDL::PixelFormat</a>, and then copies and maps the given surface to it.
It is also useful for making a copy of a surface.</p>
-<p>The flags parameter is passed to <a href="SDL-Surface">SDL::Surface</a><code>->new</code> and has those semantics.
+<p>The flags parameter is passed to <a href="SDL-Surface.html">SDL::Surface</a><code>->new</code> and has those semantics.
This function is used internally by <a href="#display_format">SDL::Video::display_format</a>.
This function can only be called after <code>SDL::init</code>. </p>
-<p>it returns a <a href="SDL-Surface">SDL::Surface</a> on success or <code>undef</code> on error.</p>
+<p>it returns a <a href="SDL-Surface.html">SDL::Surface</a> on success or <code>undef</code> on error.</p>
</div>
<h2 id="display_format">display_format</h2>
<pre> $surface = SDL::Video::load_BMP( $filename );
</pre>
-<p>Loads a <a href="SDL-Surface">SDL::Surface</a> from a named Windows BMP file.
-<code>SDL::Video::load_BMP</code> returns a <a href="SDL-Surface">SDL::Surface</a> on success or <code>undef</code> on error.</p>
+<p>Loads a <a href="SDL-Surface.html">SDL::Surface</a> from a named Windows BMP file.
+<code>SDL::Video::load_BMP</code> returns a <a href="SDL-Surface.html">SDL::Surface</a> on success or <code>undef</code> on error.</p>
<p><strong>Note</strong>: When loading a 24-bit Windows BMP file, pixel data points are loaded as blue, green, red, and NOT red, green, blue (as one might expect). </p>
<pre> use SDL;
use SDL::Video;
<pre> $saved_BMP = SDL::Video::save_BMP( $surface, $filename );
</pre>
-<p>Saves the given <a href="SDL-Surface">SDL::Surface</a> as a Windows BMP file named filename.
+<p>Saves the given <a href="SDL-Surface.html">SDL::Surface</a> as a Windows BMP file named filename.
it returns 0 on success or -1 on error.</p>
</div>
<pre> $fill_rect = SDL::Video::fill_rect( $dest, $dest_rect, $pixel );
</pre>
-<p>This function performs a fast fill of the given <a href="SDL-Rect">SDL::Rect</a> with the given <a href="SDL-PixelFormat">SDL::PixelFormat</a>. If dest_rect is NULL, the whole surface
+<p>This function performs a fast fill of the given <a href="SDL-Rect.html">SDL::Rect</a> with the given <a href="SDL-PixelFormat.html">SDL::PixelFormat</a>. If dest_rect is NULL, the whole surface
will be filled with color.</p>
<p>The color should be a pixel of the format used by the surface, and can be generated by the <a href="#map_RGB">SDL::Video::map_RGB</a> or
<code>SDL::Video::map_RGBA|/map_RGBA</code> functions. If the color value contains an alpha value then the destination is simply "filled" with that
<pre> int SDL::Video::lock_surface( $surface );
</pre>
-<p><code>SDL::Video::lock_surface</code> sets up the given <a href="SDL-Surface">SDL::Surface</a> for directly accessing the pixels.
+<p><code>SDL::Video::lock_surface</code> sets up the given <a href="SDL-Surface.html">SDL::Surface</a> for directly accessing the pixels.
Between calls to SDL::lock_surface and SDL::unlock_surface, you can write to ( <code>surface-</code>set_pixels>) and read from ( <code>surface-</code>get_pixels> ),
using the pixel format stored in <code>surface-</code>format>.
Once you are done accessing the surface, you should use <a href="#unlock_surface">SDL::Video::unlock_surface</a> to release the lock.</p>
<pre> SDL::Video::set_clip_rect( $surface, $rect );
</pre>
-<p>Sets the clipping rectangle for the given <a href="SDL-Surface">SDL::Surface</a>. When this surface is the destination of a blit, only the area within the clip
+<p>Sets the clipping rectangle for the given <a href="SDL-Surface.html">SDL::Surface</a>. When this surface is the destination of a blit, only the area within the clip
rectangle will be drawn into.
The rectangle pointed to by rect will be clipped to the edges of the surface so that the clip rectangle for a surface can never fall
outside the edges of the surface.
<pre> SDL::Video::get_clip_rect( $surface, $rect );
</pre>
-<p>Gets the clipping rectangle for the given <a href="SDL-Surface">SDL::Surface</a>. When this surface is the destination of a blit, only the area within the clip
+<p>Gets the clipping rectangle for the given <a href="SDL-Surface.html">SDL::Surface</a>. When this surface is the destination of a blit, only the area within the clip
rectangle is drawn into.
The rectangle pointed to by rect will be filled with the clipping rectangle of the surface.
<code>SDL::Video::get_clip_rect</code> doesn't returns anything;</p>
<pre> SDL::Video::blit_surface( $src_surface, $src_rect, $dest_surface, $dest_rect );
</pre>
-<p>This performs a fast blit from the given source <a href="SDL-Surface">SDL::Surface</a> to the given destination <a href="SDL-Surface">SDL::Surface</a>.
+<p>This performs a fast blit from the given source <a href="SDL-Surface.html">SDL::Surface</a> to the given destination <a href="SDL-Surface.html">SDL::Surface</a>.
The width and height in <code>src_surface</code> determine the size of the copied rectangle. Only the position is used in the <code>dst_rect</code>
(the width and height are ignored). Blits with negative <code>dst_rect</code> coordinates will be clipped properly.
If <code>src_rect</code> is NULL, the entire surface is copied. If <code>dst_rect</code> is NULL, then the destination position (upper left corner) is (0, 0).
<p>When surface is the surface associated with the current display, the display colormap will be updated with the requested colors.
If <code>SDL_HWPALETTE</code> was set in <a href="#set_video_mode">SDL::Video::set_video_mode</a> flags, <code>SDL::Video::set_colors</code> will always return 1, and the
palette is guaranteed to be set the way you desire, even if the window colormap has to be warped or run under emulation.
-The color components of a <a href="SDL-Color">SDL::Color</a> structure are 8-bits in size, giving you a total of 2563 = 16777216 colors.
+The color components of a <a href="SDL-Color.html">SDL::Color</a> structure are 8-bits in size, giving you a total of 2563 = 16777216 colors.
Palettized (8-bit) screen surfaces with the <code>SDL_HWPALETTE</code> flag have two palettes, a logical palette that is used for mapping blits to/from
the surface and a physical palette (that determines how the hardware will map the colors to the display).
<code>SDL::Video::set_colors</code> modifies both palettes (if present), and is equivalent to calling <a href="#set_palette">SDL::Video::set_palette</a> with the
<pre> $pixel = SDL::Video::map_RGB( $pixel_format, $r, $g, $b );
</pre>
-<p>Maps the RGB color value to the specified <a href="SDL-PixelFormat">SDL::PixelFormat</a> and returns the pixel value as a 32-bit int.
+<p>Maps the RGB color value to the specified <a href="SDL-PixelFormat.html">SDL::PixelFormat</a> and returns the pixel value as a 32-bit int.
If the format has a palette (8-bit) the index of the closest matching color in the palette will be returned.
If the specified pixel format has an alpha component it will be returned as all 1 bits (fully opaque). </p>
<p><code>SDL::Video::map_RGB</code> returns a pixel value best approximating the given RGB color value for a given pixel format.
-If the <a href="SDL-PixelFormat">SDL::PixelFormat</a>'s bpp (color depth) is less than 32-bpp then the unused upper bits of the return value can safely be ignored
+If the <a href="SDL-PixelFormat.html">SDL::PixelFormat</a>'s bpp (color depth) is less than 32-bpp then the unused upper bits of the return value can safely be ignored
(e.g., with a 16-bpp format the return value can be assigned to a Uint16, and similarly a Uint8 for an 8-bpp format).</p>
<pre> use SDL;
use SDL::Video;
<pre> $pixel = SDL::Video::map_RGB( $pixel_format, $r, $g, $b, $a );
</pre>
-<p>Maps the RGBA color value to the specified <a href="SDL-PixelFormat">SDL::PixelFormat</a> and returns the pixel value as a 32-bit int.
+<p>Maps the RGBA color value to the specified <a href="SDL-PixelFormat.html">SDL::PixelFormat</a> and returns the pixel value as a 32-bit int.
If the format has a palette (8-bit) the index of the closest matching color in the palette will be returned.
If the specified pixel format has no alpha component the alpha value will be ignored (as it will be in formats with a palette). </p>
<p>A pixel value best approximating the given RGBA color value for a given pixel format.
</div>
<h1 id="Video_Overlay_Functions">Video Overlay Functions</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="Video_Overlay_Functions_CONTENT">
-<p>see <a href="SDL-Overlay">SDL::Overlay</a> </p>
+<p>see <a href="SDL-Overlay.html">SDL::Overlay</a> </p>
</div>
<h2 id="lock_YUV_overlay">lock_YUV_overlay</h2>
<pre> $display_overlay = SDL::Video::display_YUV_overlay( $overlay, $dstrect );
</pre>
-<p>Blit the overlay to the display surface specified when the overlay was created. The <a href="SDL-Rect">SDL::Rect</a> structure, <code>dstrect</code>, specifies a rectangle
+<p>Blit the overlay to the display surface specified when the overlay was created. The <a href="SDL-Rect.html">SDL::Rect</a> structure, <code>dstrect</code>, specifies a rectangle
on the display where the overlay is drawn. The <code>x</code> and <code>y</code> fields of <code>dstrect</code> specify the upper left location in display coordinates.
The overlay is scaled (independently in x and y dimensions) to the size specified by dstrect, and is <code>optimized</code> for 2x scaling</p>
<p>It returns <code>0</code> on success or <code>-1</code> on error.</p>
</pre>
<p>Sets the icon for the display window. Win32 icons must be 32x32.</p>
-<p>This function must be called before the first call to <a href="#set_video_mode">SDL::Video::set_video_mode</a>. Note that this means <a href="SDL-Image">SDL::Image</a>
+<p>This function must be called before the first call to <a href="#set_video_mode">SDL::Video::set_video_mode</a>. Note that this means <a href="SDL-Image.html">SDL::Image</a>
cannot be used.</p>
<p>The shape is determined by the colorkey or alpha channel of the icon, if any. If neither of those are present, the icon is made opaque
(no transparency).</p>
</pre>
<p>If the application is running in a window managed environment SDL attempts to iconify/minimise it. If <code>wm_iconify_window</code> is successful,
-the application will receive a <code>SDL_APPACTIVE</code> loss event (see Application visibility events at <a href="SDL-Event">SDL::Event</a>).</p>
+the application will receive a <code>SDL_APPACTIVE</code> loss event (see Application visibility events at <a href="SDL-Event.html">SDL::Event</a>).</p>
<p>Returns non-zero on success or 0 if iconification is not supported or was refused by the window manager. </p>
<p>Example:</p>
<pre> use SDL;
</div>
<h2 id="Category_Objects">Category Objects</h2>
<div id="Category_Objects_CONTENT">
-<p><a href="SDL-Surface">SDL::Surface</a>, <a href="SDL-Overlay">SDL::Overlay</a>, <a href="SDL-Color">SDL::Color</a>,
-<a href="SDL-Rect">SDL::Rect</a>, <a href="SDL-Palette">SDL::Palette</a>, <a href="SDL-PixelFormat">SDL::PixelFormat</a>,
-<a href="SDL-VideoInfo">SDL::VideoInfo</a></p>
+<p><a href="SDL-Surface.html">SDL::Surface</a>, <a href="SDL-Overlay.html">SDL::Overlay</a>, <a href="SDL-Color.html">SDL::Color</a>,
+<a href="SDL-Rect.html">SDL::Rect</a>, <a href="SDL-Palette.html">SDL::Palette</a>, <a href="SDL-PixelFormat.html">SDL::PixelFormat</a>,
+<a href="SDL-VideoInfo.html">SDL::VideoInfo</a></p>
</div>
</div>
\ No newline at end of file
</div>
<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
<div id="SEE_ALSO_CONTENT">
-<p><a href="SDL-Video">SDL::Video</a>, <a href="SDL-PixelFormat">SDL::PixelFormat</a></p>
+<p><a href="SDL-Video.html">SDL::Video</a>, <a href="SDL-PixelFormat.html">SDL::PixelFormat</a></p>
</div>
</div>
\ No newline at end of file
<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><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Time.html">SDL::Time</a></td><td>- a SDL perl extension for managing timers.</td></tr></table><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Audio</strong></td></tr><tr><td><img src="assets/bubble-2-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: 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-AudioCVT.html">SDL::AudioCVT</a></td><td>- Audio Conversion Structure</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: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">CDROM</strong></td></tr><tr><td><img src="assets/bubble-5-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: 60px; 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-3-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: 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-4-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-3-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">Mouse</strong></td></tr><tr><td><img src="assets/bubble-1-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-Cursor.html">SDL::Cursor</a></td><td>- Mouse cursor structure</td></tr></table><table style="margin-left: 30px; 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-Version.html">SDL::Version</a></td><td>- SDL Bindings for structure SDL_Version</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/Video_thumb.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-7-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-4-mini.png" alt="thumb" /></td><td><a href="SDL-Palette.html">SDL::Palette</a></td><td>- Color palette for 8-bit pixel formats </td></tr><tr><td><img src="assets/bubble-1-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-6-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-2-mini.png" alt="thumb" /></td><td><a href="SDL-Surface.html">SDL::Surface</a></td><td>- Graphic surface structure.</td></tr><tr><td><img src="assets/bubble-3-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-7-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-5-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">GFX</strong></td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-GFX-Framerate.html">SDL::GFX::Framerate</a></td><td>- framerate calculating functions</td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-GFX-Primitives.html">SDL::GFX::Primitives</a></td><td>- basic drawing functions</td></tr></table><table style="margin-left: 30px; 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-GFX-FPSManager.html">SDL::GFX::FPSManager</a></td><td>- data structure used by SDL::GFX::Framerate</td></tr></table><br /><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Image</strong></td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-Image.html">SDL::Image</a></td><td>- Bindings for the SDL_Image library</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-7-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer.html">SDL::Mixer</a></td><td>- Sound and music functions</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-Channels.html">SDL::Mixer::Channels</a></td><td>- SDL::Mixer channel functions and bindings</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-Effects.html">SDL::Mixer::Effects</a></td><td>- sound effect functions</td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-Groups.html">SDL::Mixer::Groups</a></td><td>- Audio channel group functions</td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-Music.html">SDL::Mixer::Music</a></td><td>- functions for music</td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-Samples.html">SDL::Mixer::Samples</a></td><td>- functions for loading sound samples</td></tr></table><table style="margin-left: 30px; 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-Mixer-MixChunk.html">SDL::Mixer::MixChunk</a></td><td>- SDL Bindings for structure SDL_MixChunk</td></tr><tr><td><img src="assets/bubble-4-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 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">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: 60px; 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-RWOps.html">SDL::RWOps</a></td><td>- SDL Bindings to SDL_RWOPs</td></tr></table><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">GFX</strong></td></tr><tr><td><img src="assets/bubble-2-mini.png" alt="thumb" /></td><td><a href="SDL-GFX-BlitFunc.html">SDL::GFX::BlitFunc</a></td><td>- blitting functions</td></tr><tr><td><img src="assets/bubble-2-mini.png" alt="thumb" /></td><td><a href="SDL-GFX-ImageFilter.html">SDL::GFX::ImageFilter</a></td><td>- image filtering functions</td></tr><tr><td><img src="assets/bubble-2-mini.png" alt="thumb" /></td><td><a href="SDL-GFX-Rotozoom.html">SDL::GFX::Rotozoom</a></td><td>- rotation and zooming functions for surfaces</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-6-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-6-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-3-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-6-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial-Pong.html">SDL::Tutorial::Pong</a></td><td>- Get started pong</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>- Let's Make Tetris</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-7-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-3-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-7-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-1-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-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-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-TTF.html">SDL::TTF</a></td><td></td></tr><tr><td><img src="assets/bubble-3-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-3-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></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><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-Time.html">SDL::Time</a></td><td>- a SDL perl extension for managing timers.</td></tr></table><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Audio</strong></td></tr><tr><td><img src="assets/bubble-4-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: 60px; 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-AudioCVT.html">SDL::AudioCVT</a></td><td>- Audio Conversion Structure</td></tr><tr><td><img src="assets/bubble-2-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: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">CDROM</strong></td></tr><tr><td><img src="assets/bubble-3-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: 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-CD.html">SDL::CD</a></td><td>- SDL Bindings for structure SDL_CD</td></tr><tr><td><img src="assets/bubble-1-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: 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-4-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">Mouse</strong></td></tr><tr><td><img src="assets/bubble-4-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-Cursor.html">SDL::Cursor</a></td><td>- Mouse cursor structure</td></tr></table><table style="margin-left: 30px; 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-Version.html">SDL::Version</a></td><td>- SDL Bindings for structure SDL_Version</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/Video_thumb.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-2-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-1-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-2-mini.png" alt="thumb" /></td><td><a href="SDL-Palette.html">SDL::Palette</a></td><td>- Color palette for 8-bit pixel formats </td></tr><tr><td><img src="assets/bubble-1-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-4-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>- Graphic surface structure.</td></tr><tr><td><img src="assets/bubble-1-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-4-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-3-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">GFX</strong></td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-GFX-Framerate.html">SDL::GFX::Framerate</a></td><td>- framerate calculating functions</td></tr><tr><td><img src="assets/bubble-2-mini.png" alt="thumb" /></td><td><a href="SDL-GFX-Primitives.html">SDL::GFX::Primitives</a></td><td>- basic drawing functions</td></tr></table><table style="margin-left: 30px; 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-GFX-FPSManager.html">SDL::GFX::FPSManager</a></td><td>- data structure used by SDL::GFX::Framerate</td></tr></table><br /><table style="margin-left: 0px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">Image</strong></td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-Image.html">SDL::Image</a></td><td>- Bindings for the SDL_Image library</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>- Sound and music functions</td></tr><tr><td><img src="assets/bubble-7-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-Channels.html">SDL::Mixer::Channels</a></td><td>- SDL::Mixer channel functions and bindings</td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-Effects.html">SDL::Mixer::Effects</a></td><td>- sound effect functions</td></tr><tr><td><img src="assets/bubble-6-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-Groups.html">SDL::Mixer::Groups</a></td><td>- Audio channel group functions</td></tr><tr><td><img src="assets/bubble-4-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-Music.html">SDL::Mixer::Music</a></td><td>- functions for music</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-Mixer-Samples.html">SDL::Mixer::Samples</a></td><td>- functions for loading sound samples</td></tr></table><table style="margin-left: 30px; 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 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">MultiThread</strong></td></tr><tr><td><img src="assets/bubble-5-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: 60px; 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-RWOps.html">SDL::RWOps</a></td><td>- SDL Bindings to SDL_RWOPs</td></tr></table><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">GFX</strong></td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-GFX-BlitFunc.html">SDL::GFX::BlitFunc</a></td><td>- blitting functions</td></tr><tr><td><img src="assets/bubble-3-mini.png" alt="thumb" /></td><td><a href="SDL-GFX-ImageFilter.html">SDL::GFX::ImageFilter</a></td><td>- image filtering functions</td></tr><tr><td><img src="assets/bubble-1-mini.png" alt="thumb" /></td><td><a href="SDL-GFX-Rotozoom.html">SDL::GFX::Rotozoom</a></td><td>- rotation and zooming functions for surfaces</td></tr></table><table style="margin-left: 30px; margin-top: 5px"><tr><td colspan="3"><strong style="font-size: 14px">TTF</strong></td></tr><tr><td><img src="assets/bubble-5-mini.png" alt="thumb" /></td><td><a href="SDL-TTF.html">SDL::TTF</a></td><td>- True Type Font functions (libfreetype)</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-6-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-7-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-2-mini.png" alt="thumb" /></td><td><a href="SDL-Tutorial-Pong.html">SDL::Tutorial::Pong</a></td><td>- Get started pong</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>- Let's Make Tetris</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-7-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-1-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-7-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-5-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-5-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-1-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-1-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-6-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-7-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-7-mini.png" alt="thumb" /></td><td><a href="SDL-Tool-Graphic.html">SDL::Tool::Graphic</a></td><td></td></tr></table></div>
if($page =~ /^SDL\b/)
{
- $page =~ s/::([A-Z])+/-$1/g;
+ $page =~ s/::([A-Z]+)/-$1/g;
$page =~ s/(.*)::(.*)/\/$1.html#$2/;
+ $page .= '.html' unless $page =~ /\.html/;
return $page;
}