update for SDL::Event
[sdlgit/SDL-Site.git] / pages / SDLx-App.html-inc
CommitLineData
162a0989 1<div class="pod">
2<!-- INDEX START -->
3<h3 id="TOP">Index</h3>
4
5<ul><li><a href="#NAME">NAME</a></li>
bfdd9c2e 6<li><a href="#CATEGORY">CATEGORY</a></li>
162a0989 7<li><a href="#SYNOPSIS">SYNOPSIS</a></li>
a3de8488 8<li><a href="#DESCRIPTION">DESCRIPTION</a></li>
162a0989 9<li><a href="#METHODS">METHODS</a>
10<ul><li><a href="#new">new</a></li>
e1ec9f6e 11</ul>
12</li>
13<li><a href="#METHODS-2">METHODS</a>
14<ul><li><a href="#title">title()</a></li>
285d0cd2 15<li><a href="#title_new_title">title( $new_title )</a></li>
16<li><a href="#title_window_title_icon_title">title( $window_title, $icon_title )</a></li>
17<li><a href="#delay_ms">delay( $ms )</a></li>
162a0989 18<li><a href="#ticks">ticks</a></li>
19<li><a href="#error">error</a></li>
285d0cd2 20<li><a href="#resize_width_height">resize( $width, $height )</a></li>
162a0989 21<li><a href="#fullscreen">fullscreen</a></li>
22<li><a href="#iconify">iconify</a></li>
285d0cd2 23<li><a href="#grab_input_CONSTANT">grab_input( $CONSTANT )</a></li>
162a0989 24<li><a href="#sync">sync</a></li>
285d0cd2 25<li><a href="#attribute_attr">attribute( $attr )</a></li>
26<li><a href="#attribute_attr_value">attribute( $attr, $value )</a></li>
162a0989 27</ul>
28</li>
e1ec9f6e 29<li><a href="#CALLBACKS">CALLBACKS</a></li>
c7e8d3c6 30<li><a href="#AUTHORS">AUTHORS</a></li>
162a0989 31<li><a href="#SEE_ALSO">SEE ALSO</a>
32</li>
33</ul><hr />
34<!-- INDEX END -->
35
36<h1 id="NAME">NAME</h1><p><a href="#TOP" class="toplink">Top</a></p>
37<div id="NAME_CONTENT">
ca0a3441 38<p>SDLx::App - a SDL perl extension</p>
162a0989 39
40</div>
bfdd9c2e 41<h1 id="CATEGORY">CATEGORY</h1><p><a href="#TOP" class="toplink">Top</a></p>
42<div id="CATEGORY_CONTENT">
43<p>Extension</p>
44
45</div>
162a0989 46<h1 id="SYNOPSIS">SYNOPSIS</h1><p><a href="#TOP" class="toplink">Top</a></p>
47<div id="SYNOPSIS_CONTENT">
f373167e 48<pre> use SDL;
ca0a3441 49 use SDLx::App;
f373167e 50 use SDL::Event;
51 use SDL::Events;
52
ca0a3441 53 my $app = SDLx::App-&gt;new(
505f308d 54 title =&gt; 'Application Title',
55 width =&gt; 640,
56 height =&gt; 480,
57 depth =&gt; 32
f373167e 58 );
162a0989 59
60</pre>
285d0cd2 61<p>This is the manual way of doing things</p>
f373167e 62<pre> my $event = SDL::Event-&gt;new; # create a new event
162a0989 63
f373167e 64 SDL::Events::pump_events();
162a0989 65
f373167e 66 while ( SDL::Events::poll_event($event) ) {
67 my $type = $event-&gt;type(); # get event type
68 print $type;
69 exit if $type == SDL_QUIT;
70 }
162a0989 71
72</pre>
a3de8488 73<p>An alternative to the manual Event processing is through the <a href="http://search.cpan.org/perldoc?SDLx::Controller">SDLx::Controller</a> module. <a href="http://search.cpan.org/perldoc?SDLx::App">SDLx::App</a> is a Controller so see the CALLBACKS section below.</p>
74
75</div>
76<h1 id="DESCRIPTION">DESCRIPTION</h1><p><a href="#TOP" class="toplink">Top</a></p>
77<div id="DESCRIPTION_CONTENT">
ca0a3441 78<p><a href="http://search.cpan.org/perldoc?SDLx::App">SDLx::App</a> controls the root window of the of your SDL based application.
55bbf7a2 79It extends the <a href="SDL-Surface.html">SDL::Surface</a> class, and provides an interface to the window
162a0989 80manager oriented functions.</p>
81
82</div>
83<h1 id="METHODS">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
84<div id="METHODS_CONTENT">
85
86</div>
87<h2 id="new">new</h2>
88<div id="new_CONTENT">
ca0a3441 89<p><code>SDLx::App::new</code> initializes the SDL, creates a new screen,
162a0989 90and initializes some of the window manager properties.
ca0a3441 91<code>SDLx::App::new</code> takes a series of named parameters:</p>
285d0cd2 92<dl>
c7e8d3c6 93 <dt>* title
94the window title. Defaults to the file name. Shorter alias: 't'</dt>
95 <dt>* icon_title
96the icon title. Defaults to file name. Shortcut: 'it'</dt>
97 <dt>* icon
98the icon itself. Defaults to none. Shortcut: 'i'</dt>
99 <dt>* width
100Window width, in pixels. Defaults to 800. Shortcut: 'w'</dt>
101 <dt>* height
102Window height, in pixels. Defaults to 600. Shortcut: 'h'</dt>
103 <dt>* depth
104Screen depth. Defaults to 16. Shortcut: 'd'.</dt>
105 <dt>* flags
106Any flags you want to pass to <a href="SDL-Video.html">SDL::Video</a> upon initialization. Defaults to SDL_ANYFORMAT. Flags should be <i>or'ed</i> together if you're passing more than one (flags =&gt; FOO|BAR). Shortcut: 'f'.</dt>
107 <dt>* resizeable
108Set this to a true value to make the window resizeable by the user. Default is off.</dt>
285d0cd2 109</dl>
110
e1ec9f6e 111</div>
112<h1 id="METHODS-2">METHODS</h1><p><a href="#TOP" class="toplink">Top</a></p>
113<div id="METHODS_CONTENT-2">
162a0989 114
115</div>
285d0cd2 116<h2 id="title">title()</h2>
162a0989 117<div id="title_CONTENT">
162a0989 118
119</div>
285d0cd2 120<h2 id="title_new_title">title( $new_title )</h2>
121<div id="title_new_title_CONTENT">
122
123</div>
124<h2 id="title_window_title_icon_title">title( $window_title, $icon_title )</h2>
125<div id="title_window_title_icon_title_CONTEN">
126<p><code>SDLx::App::title</code> takes 0, 1, or 2 arguments. If no parameter is given,
127it returns the current application window title. If one parameter is
128passed, both the window title and icon title will be set to its value.
129If two parameters are passed the window title will be set to the first,
130and the icon title to the second.</p>
131
132</div>
133<h2 id="delay_ms">delay( $ms )</h2>
134<div id="delay_ms_CONTENT">
ca0a3441 135<p><code>SDLx::App::delay</code> takes 1 argument, and will sleep the application for
162a0989 136that many ms.</p>
137
138</div>
139<h2 id="ticks">ticks</h2>
140<div id="ticks_CONTENT">
ca0a3441 141<p><code>SDLx::App::ticks</code> returns the number of ms since the application began.</p>
162a0989 142
143</div>
144<h2 id="error">error</h2>
145<div id="error_CONTENT">
ca0a3441 146<p><code>SDLx::App::error</code> returns the last error message set by the SDL.</p>
162a0989 147
148</div>
285d0cd2 149<h2 id="resize_width_height">resize( $width, $height )</h2>
150<div id="resize_width_height_CONTENT">
151<p><code>SDLx::App::resize</code> takes a new width and height of the application. Only
152works if the application was originally created with the resizable option.</p>
162a0989 153
154</div>
155<h2 id="fullscreen">fullscreen</h2>
156<div id="fullscreen_CONTENT">
ca0a3441 157<p><code>SDLx::App::fullscreen</code> toggles the application in and out of fullscreen mode.</p>
162a0989 158
159</div>
160<h2 id="iconify">iconify</h2>
161<div id="iconify_CONTENT">
285d0cd2 162<p><code>SDLx::App::iconify</code> iconifies the application window.</p>
162a0989 163
164</div>
285d0cd2 165<h2 id="grab_input_CONSTANT">grab_input( $CONSTANT )</h2>
166<div id="grab_input_CONSTANT_CONTENT">
ca0a3441 167<p><code>SDLx::App::grab_input</code> can be used to change the input focus behavior of
285d0cd2 168the application. It takes one argument, which should be one of the following:</p>
162a0989 169<dl>
285d0cd2 170 <dt>* SDL_GRAB_QUERY</dt>
171 <dt>* SDL_GRAB_ON</dt>
172 <dt>* SDL_GRAB_OFF</dt>
162a0989 173</dl>
174
175</div>
162a0989 176<h2 id="sync">sync</h2>
177<div id="sync_CONTENT">
ca0a3441 178<p><code>SDLx::App::sync</code> encapsulates the various methods of syncronizing the screen with the
285d0cd2 179current video buffer. <code>SDLx::App::sync</code> will do a fullscreen update, using the double buffer
180or OpenGL buffer if applicable. This is prefered to calling flip on the application window.</p>
181
182</div>
183<h2 id="attribute_attr">attribute( $attr )</h2>
184<div id="attribute_attr_CONTENT">
162a0989 185
186</div>
285d0cd2 187<h2 id="attribute_attr_value">attribute( $attr, $value )</h2>
162a0989 188<div id="attribute_attr_value_CONTENT">
285d0cd2 189<p><code>SDLx::App::attribute</code> allows one to get and set GL attributes. By passing a value
190in addition to the attribute selector, the value will be set. <code>SDL:::App::attribute</code>
3afd3fb0 191always returns the current value of the given attribute, or Carp::confesss on failure.</p>
162a0989 192
193</div>
e1ec9f6e 194<h1 id="CALLBACKS">CALLBACKS</h1><p><a href="#TOP" class="toplink">Top</a></p>
195<div id="CALLBACKS_CONTENT">
196<p><code>SDLx::App</code> is a <code>SDLx::Controller</code>. Use the event, show and handlers to run the app.</p>
197<pre> use SDL;
198 use SDLx::App;
199
200 use SDL::Event; #Where ever the event call back is processed
201
202 my $app = SDLx::App-&gt;new( width =&gt; 200, height =&gt; 200);
203
204 $app-&gt;add_event_handler( sub{ return 0 if $_[0]-&gt;type == SDL_QUIT; return 1});
205
206 $app-&gt;add_show_handler( sub{ $app-&gt;update() } );
207
208 $app-&gt;add_move_handler(
209 sub{
210 #calc your physics here
211 } );
212
213 $app-&gt;run();
214
215</pre>
216<p>see <a href="http://search.cpan.org/perldoc?SDLx::Controller">SDLx::Controller</a> for more details.</p>
217
218</div>
c7e8d3c6 219<h1 id="AUTHORS">AUTHORS</h1><p><a href="#TOP" class="toplink">Top</a></p>
220<div id="AUTHORS_CONTENT">
221<p>See <b>AUTHORS</b> in <cite>SDL</cite>.</p>
162a0989 222
223</div>
224<h1 id="SEE_ALSO">SEE ALSO</h1><p><a href="#TOP" class="toplink">Top</a></p>
225<div id="SEE_ALSO_CONTENT">
55bbf7a2 226<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>
162a0989 227
228</div>
229</div>