Applied Magnet's Patch
[sdlgit/SDL_perl.git] / lib / docs / App.pod
diff --git a/lib/docs/App.pod b/lib/docs/App.pod
new file mode 100644 (file)
index 0000000..0b297d3
--- /dev/null
@@ -0,0 +1,177 @@
+=pod
+
+=head1 NAME
+
+SDL::App - a SDL perl extension
+
+=head1 SYNOPSIS
+               
+       use SDL;
+       use SDL::Event; 
+       use SDL::App; 
+        
+       my $app = new SDL::App ( 
+       -title => 'Application Title', 
+       -width => 640, 
+       -height => 480, 
+       -depth => 32 ); 
+
+This is the manual way of doing things 
+
+       my $event = new SDL::Event;             # create a new event 
+
+       $event->pump();
+       $event->poll();
+
+       while ($event->wait()) { 
+         my $type = $event->type();      # get event type 
+         print $type; 
+         exit if $type == SDL_QUIT; 
+         }
+An alternative to the manual Event processing is the L<SDL::App::loop> .
+
+=head1 DESCRIPTION
+
+L<SDL::App> controls the root window of the of your SDL based application.
+It extends the L<SDL::Surface> class, and provides an interface to the window
+manager oriented functions.
+
+=head1 METHODS
+
+=head2 new
+
+C<SDL::App::new> initializes the SDL, creates a new screen,
+and initializes some of the window manager properties.
+C<SDL::App::new> takes a series of named parameters:
+
+=over 4
+
+=item *
+
+-title
+
+=item *
+
+-icon_title
+
+=item *
+
+-icon
+
+=item *
+
+-width
+
+=item *
+
+-height
+
+=item *
+
+-depth
+
+=item *
+
+-flags
+
+=item *
+
+-resizeable
+
+=back
+
+=head2 title
+
+C<SDL::App::title> takes 0, 1, or 2  arguments.  It returns the current
+application window title.  If one parameter is passed, both the window
+title and icon title will be set to its value.  If two parameters are
+passed the window title will be set to the first, and the icon title
+to the second.
+
+=head2 delay
+
+C<SDL::App::delay> takes 1 argument, and will sleep the application for
+that many ms.
+
+=head2 ticks
+
+C<SDL::App::ticks> returns the number of ms since the application began.
+
+=head2 error
+
+C<SDL::App::error> returns the last error message set by the SDL.
+
+=head2 resize
+
+C<SDL::App::resize> takes a new height and width of the application
+if the application was originally created with the -resizable option.
+
+=head2 fullscreen
+
+C<SDL::App::fullscreen> toggles the application in and out of fullscreen mode.
+
+=head2 iconify
+
+C<SDL::App::iconify> iconifies the applicaiton window.
+
+=head2 grab_input
+
+C<SDL::App::grab_input> can be used to change the input focus behavior of
+the application.  It takes one argument, which should be one of the following:
+
+=over 4
+
+=item *
+SDL_GRAB_QUERY
+
+=item *
+SDL_GRAB_ON
+
+=item *
+SDL_GRAB_OFF
+
+=back
+
+=head2 loop
+
+C<SDL::App::loop> is a simple event loop method which takes a reference to a hash
+of event handler subroutines.  The keys of the hash must be SDL event types such
+as SDL_QUIT(), SDL_KEYDOWN(), and the like.  The event method recieves as its parameter 
+the event object used in the loop.
+  Example:
+
+       my $app = new SDL::App  -title => "test.app", 
+                               -width => 800, 
+                               -height => 600, 
+                               -depth => 32;
+       
+       my %actions = (
+               SDL_QUIT() => sub { exit(0); },
+               SDL_KEYDOWN() => sub { print "Key Pressed" },
+       );
+
+       $app->loop(\%actions);
+
+=head2 sync
+
+C<SDL::App::sync> encapsulates the various methods of syncronizing the screen with the
+current video buffer.  C<SDL::App::sync> will do a fullscreen update, using the double buffer
+or OpenGL buffer if applicable.  This is prefered to calling flip on the application window.
+
+=head2 attribute ( attr, [value] )
+
+C<SDL::App::attribute> allows one to set and get GL attributes.  By passing a value
+in addition to the attribute selector, the value will be set.  C<SDL:::App::attribute>
+always returns the current value of the given attribute, or croaks on failure.
+
+=head1 AUTHOR
+
+David J. Goehrig
+Kartik Thakore
+
+=head1 SEE ALSO
+
+L<perl> L<SDL::Surface> L<SDL::Event>  L<SDL::OpenGL>
+
+=cut