diff -ruN SDL_perl-1.20.0/CHANGELOG SDL_perl-1.20.2/CHANGELOG
--- SDL_perl-1.20.0/CHANGELOG	Fri Jan  3 06:35:12 2003
+++ SDL_perl-1.20.2/CHANGELOG	Fri Mar 21 20:45:09 2003
@@ -1,7 +1,58 @@
 Revision history for Perl extension SDL_perl.
 
+* Mar 21 2003	Tels <http://bloodgate.com/perl/sdl/>
+
+  !! This is not an official release, but my private release. Use at your !! 
+  !!  own risk! Send comments to me or the sdlperl mailing list.          !!
+
+  - fixed the testscripts to use the blib/lib and blib/arch directories
+    (otherwise they use the already installed version to run the tests, which
+    fails)
+  - "fixed" the constant exporting back to be v1.20.0 compatible
+  - added more OpenGL constants (all in my /usr/include/GL/GL.h file)
+  - fixed glCallLists() so that it: 
+    + works (did drop last element)
+    + does no longer require the (unused anyway) type parameter. 
+    + Added doc for it in OpenGL.pm
+  - added glCallListsScalar() which is _much_ faster if your data is already
+    byte-packed into a scalar string, plus doc for it
+  - added opengl.t
+  - added patches directory
+  - debug is now by default off. If you wish to use debug, compile
+    with debug flags and also set $SDL::Debug to 1
+
+* Mar 13 2003   David J. Goehrig <dave@sdlperl.org>
+        - cleaned up OpenGL constants exportation
+        - fixed glColor alpha
+        - fixed all tests & the causes of failure
+        - fixed TTFont.pm color bug
+        - fixed SDL::Tool::Graphic
+ 
+* Mar 11 2003	David J. Goehrig <dave@sdlperl.org>
+	- changed USE_THREAD support because perl5.8 usually builds with it
+	- added SDL::Constants & SDL::OpenGL::Constants
+	- removed constant functions from XS code (going easier on the linker)
+	- changed version to SDL_perl-2.0-beta1 Way Too much is Broken release
+	- Moved Opt/* to regular & fixing as found broken
+	- 27% of tests now fail!
+
+* Feb 25 2003	David J. Goehrig <dave@sdlperl.org>
+	- resized the testmenu.pl script
+
+* Jan 6 2003	Wayne Keenan  <tripixuk@yahoo.co.uk>
+	- fixed testjoystick.pl
+
+* Jan 4 2003	David J. Goehrig <dave@sdlperl.org>
+	- Added test suite, Thanks Tels
+	- Added SDL::SurfaceCopy finally
+	- Added SDL::Surface::new -surface && -copy constructors
+	- Changed SDL::Tool::Graphic::* to return a new SDL::Surface object 
+	- Added SDL::Event::resize_w && SDL::Event::resize_h
+
 * Jan 3 2003	David J. Goehrig <dave@sdlperl.org>
 	- SDL_perl-1.20.0 release
+	- fixed default pitch value in SDL::Surface
+	- fixed test/OpenGL/tutorials/*, removed nasty -flags options
 
 * Jan 2 2003	David J. Goehrig <dave@sdlperl.org>
 	- Changed SDL::SurfacePixel to work as documented returns SDL_Color*
diff -ruN SDL_perl-1.20.0/MANIFEST SDL_perl-1.20.2/MANIFEST
--- SDL_perl-1.20.0/MANIFEST	Fri Jan  3 05:47:45 2003
+++ SDL_perl-1.20.2/MANIFEST	Fri Mar 21 20:31:19 2003
@@ -10,7 +10,6 @@
 Makefile.win32
 Makefile.freebsd
 Makefile.netbsd
-SDL.pm
 SDL_perl.pm
 SDL_perl.xs
 SDL_perl.spec
@@ -23,20 +22,20 @@
 setenv.bat
 test.pl
 typemap
+lib/SDL.pm
 lib/SDL/App.pm
 lib/SDL/Cdrom.pm
 lib/SDL/Console.pm
+lib/SDL/Constants.pm
 lib/SDL/Cursor.pm
 lib/SDL/Event.pm
 lib/SDL/Font.pm
 lib/SDL/Mixer.pm
 lib/SDL/Music.pm
 lib/SDL/OpenGL.pm
+lib/SDL/OpenGL/Constants.pm
 lib/SDL/OpenGL/Cube.pm
 lib/SDL/OpenGL/Model.pm
-lib/SDL/Opt/Color.pm
-lib/SDL/Opt/Rect.pm
-lib/SDL/Opt/Surface.pm
 lib/SDL/Palette.pm
 lib/SDL/Rect.pm
 lib/SDL/Shell.pm
@@ -47,6 +46,31 @@
 lib/SDL/Timer.pm
 lib/SDL/Tool/Font.pm
 lib/SDL/Tool/Graphic.pm
+scripts/README
+scripts/gl_const.pl
+scripts/opengl_words.txt
+scripts/sdl_const.pl
+scripts/sdl_words.txt
+t/apppm.t
+t/cdrompm.t
+t/colorpm.t
+t/consolepm.t
+t/cursorpm.t
+t/eventpm.t
+t/fontpm.t
+t/toolfontpm.t
+t/toolgraphicpm.t
+t/mixerpm.t
+t/musicpm.t
+t/opengl.t
+t/palettepm.t
+t/rectpm.t
+t/sdlpm.t
+t/shellpm.t
+t/soundpm.t
+t/surfacepm.t
+t/timerpm.t
+t/ttfontpm.t
 test/README
 test/checkkeys.pl
 test/graywin.pl
@@ -92,3 +116,10 @@
 test/data/sample.wav
 test/data/highlight.png
 test/data/menu.png
+patches/README
+patches/patches.tgz
+patches/pack
+scripts/SDL/Constants.pm
+scripts/OpenGL/Constants.pm
+scripts/const.pl
+SIGNATURE
diff -ruN SDL_perl-1.20.0/Makefile.freebsd SDL_perl-1.20.2/Makefile.freebsd
--- SDL_perl-1.20.0/Makefile.freebsd	Thu May 23 11:35:10 2002
+++ SDL_perl-1.20.2/Makefile.freebsd	Wed Mar 12 01:38:56 2003
@@ -81,6 +81,14 @@
 	system ("rm detect");
 }
 
+#
+# Test For thread support
+#
+
+if ( $Config{usethreads} ) {
+	push @defs, "-DUSE_THREADS";
+}
+
 
 #
 # Specify Makefile options
diff -ruN SDL_perl-1.20.0/Makefile.linux SDL_perl-1.20.2/Makefile.linux
--- SDL_perl-1.20.0/Makefile.linux	Tue Oct 15 05:30:18 2002
+++ SDL_perl-1.20.2/Makefile.linux	Fri Mar 21 20:46:10 2003
@@ -3,6 +3,7 @@
 use strict;
 use ExtUtils::MakeMaker;
 use Getopt::Long;
+use Config;
 
 #
 # Configure SDL proper
@@ -36,7 +37,9 @@
 	'/usr/include/gl', 
 );
 
-$inc_flags = "-ggdb " . $ENV{DEBUG};
+# Tels: debug off for normal builds:
+# $inc_flags = "-ggdb " . $ENV{DEBUG};
+$inc_flags = $ENV{DEBUG};
 
 #
 # Registed extensions
@@ -101,6 +104,13 @@
 	system ("rm detect");
 }
 
+#
+# Test For thread support
+#
+
+if ( $Config{usethreads} ) {
+	push @defs, "-DUSE_THREADS";
+}
 
 #
 # Specify Makefile options
@@ -108,7 +118,7 @@
 
 my %options = (
     'NAME'	=> 'SDL_perl',
-    'VERSION_FROM' => 'SDL.pm', 
+    'VERSION_FROM' => 'lib/SDL.pm', 
     'LIBS'	=> [ join( " ",	"$sdl_libs", 
 			map { $ext{$_}{exists} ? "-l$_" : '' } (sort keys %ext),
 			)
diff -ruN SDL_perl-1.20.0/Makefile.netbsd SDL_perl-1.20.2/Makefile.netbsd
--- SDL_perl-1.20.0/Makefile.netbsd	Wed Aug 28 03:28:10 2002
+++ SDL_perl-1.20.2/Makefile.netbsd	Wed Mar 12 01:39:27 2003
@@ -81,6 +81,13 @@
 	system ("rm detect");
 }
 
+#
+# Test For thread support
+#
+
+if ( $Config{usethreads} ) {
+	push @defs, "-DUSE_THREADS";
+}
 
 #
 # Specify Makefile options
diff -ruN SDL_perl-1.20.0/Makefile.win32 SDL_perl-1.20.2/Makefile.win32
--- SDL_perl-1.20.0/Makefile.win32	Tue Jun 11 04:28:56 2002
+++ SDL_perl-1.20.2/Makefile.win32	Wed Mar 12 01:38:08 2003
@@ -90,6 +90,15 @@
 found_mod ("SDL_gfx",$gfx);
 found_mod ("SDL_sound",$sound);
 
+#
+# Test For thread support
+#
+
+if ( $Config{usethreads} ) {
+	push @defs, "-DUSE_THREADS";
+}
+
+
 
 #
 # Specify Makefile options
diff -ruN SDL_perl-1.20.0/OpenGL.xs SDL_perl-1.20.2/OpenGL.xs
--- SDL_perl-1.20.0/OpenGL.xs	Tue Oct 15 05:38:43 2002
+++ SDL_perl-1.20.2/OpenGL.xs	Fri Mar 21 13:09:11 2003
@@ -676,7 +676,7 @@
 	CODE:
 		if ( items == 4 ) {
 			double a;
-			a = SvIV(ST(3));
+			a = SvNV(ST(3));
 			glColor4d(r,g,b,a);
 		} else {
 			glColor3d(r,g,b);	
@@ -835,22 +835,31 @@
 		glListBase(base);
 
 void
-CallLists ( type, ... )
-	GLenum type
+CallLists ( ... )
 	CODE:
 		int *i, j;	
-		if ( items > 1 ) {
-			i = (int*)safemalloc(sizeof(int)* (items - 1 ));
-			for ( j = 0; j < items - 1; j++ ) {
+		if ( items > 0 ) {
+			i = (int*)safemalloc(sizeof(int)* (items));
+			for ( j = 0; j < items; j++ ) {
 				i[j] = SvIV(ST(j));
 			} 
 		} else {
-			Perl_croak(aTHX_ "usage: SDL::OpenGL::CallLists(type,...)");
+			Perl_croak(aTHX_ "usage: SDL::OpenGL::CallLists(...)");
 		}
-		glCallLists(items-1, type, i);
+		glCallLists(items, GL_INT, i);
 		safefree(i);
 		
 void
+CallListsScalar ( string )
+	SV*     string
+	CODE:
+		char * str;
+		STRLEN len;
+
+		str = SvPV(string,len);
+		glCallLists(len, GL_BYTE, str);
+
+void
 RasterPos ( x, y, z, ... )
 	double x
 	double y
@@ -2213,2964 +2222,3 @@
 	
 #endif
 
-#ifdef HAVE_GL
-
-GLbitfield
-GL_COLOR_BUFFER_BIT ()
-	CODE:
-		RETVAL = GL_COLOR_BUFFER_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_DEPTH_BUFFER_BIT ()
-	CODE:
-		RETVAL = GL_DEPTH_BUFFER_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_ACCUM_BUFFER_BIT ()
-	CODE:
-		RETVAL = GL_ACCUM_BUFFER_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_STENCIL_BUFFER_BIT ()
-	CODE:
-		RETVAL = GL_STENCIL_BUFFER_BIT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_POINTS ()
-	CODE:
-		RETVAL = GL_POINTS;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LINES ()
-        CODE:
-                RETVAL = GL_LINES;
-        OUTPUT:
-                RETVAL
-
-GLenum
-GL_LINE_STRIP ()
-        CODE:
-                RETVAL = GL_LINE_STRIP;
-        OUTPUT:
-                RETVAL
-
-GLenum
-GL_LINE_LOOP ()
-        CODE:
-                RETVAL = GL_LINE_LOOP;
-        OUTPUT:
-                RETVAL
-
-GLenum
-GL_TRIANGLES ()
-	CODE:
-		RETVAL = GL_TRIANGLES;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TRIANGLE_STRIP ()
-        CODE:
-                RETVAL = GL_TRIANGLE_STRIP;
-        OUTPUT:
-                RETVAL
-
-GLenum
-GL_TRIANGLE_FAN ()
-        CODE:
-                RETVAL = GL_TRIANGLE_FAN;
-        OUTPUT:
-                RETVAL
-
-GLenum
-GL_QUADS ()
-	CODE:
-		RETVAL = GL_QUADS;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_QUAD_STRIP ()
-	CODE:
-		RETVAL = GL_QUAD_STRIP;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_POLYGON ()
-	CODE:
-		RETVAL = GL_POLYGON;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LINE_STIPPLE ()
-	CODE:
-		RETVAL = GL_LINE_STIPPLE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FRONT ()
-	CODE:
-		RETVAL = GL_FRONT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_BACK ()
-	CODE:
-		RETVAL = GL_BACK;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_POINT ()
-	CODE:
-		RETVAL = GL_POINT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LINE ()
-	CODE:
-		RETVAL = GL_LINE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FILL ()
-	CODE:
-		RETVAL = GL_FILL;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_CCW ()
-	CODE:
-		RETVAL = GL_CCW;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_CW ()
-	CODE:
-		RETVAL = GL_CW;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FRONT_AND_BACK ()
-	CODE:
-		RETVAL = GL_FRONT_AND_BACK;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_CULL_FACE ()
-	CODE:
-		RETVAL = GL_CULL_FACE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_POLYGON_STIPPLE ()
-	CODE:
-		RETVAL = GL_POLYGON_STIPPLE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_NORMALIZE ()
-	CODE:
-		RETVAL = GL_NORMALIZE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_RESCALE_NORMAL ()
-	CODE:
-		RETVAL = GL_RESCALE_NORMAL;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_VERTEX_ARRAY ()
-	CODE:
-		RETVAL = GL_VERTEX_ARRAY;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_COLOR_ARRAY ()
-	CODE:
-		RETVAL = GL_COLOR_ARRAY;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_INDEX_ARRAY ()
-	CODE:
-		RETVAL = GL_INDEX_ARRAY;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_NORMAL_ARRAY ()
-	CODE:
-		RETVAL = GL_NORMAL_ARRAY;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_COORD_ARRAY ()
-	CODE:
-		RETVAL = GL_TEXTURE_COORD_ARRAY;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_EDGE_FLAG_ARRAY ()
-	CODE:
-		RETVAL = GL_EDGE_FLAG_ARRAY;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_BYTE ()
-	CODE:
-		RETVAL = GL_BYTE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_BYTE ()
-	CODE:
-		RETVAL = GL_UNSIGNED_BYTE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SHORT ()
-	CODE:
-		RETVAL = GL_SHORT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_SHORT ()
-	CODE:
-		RETVAL = GL_UNSIGNED_SHORT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_INT ()
-	CODE:
-		RETVAL = GL_INT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_INT ()
-	CODE:
-		RETVAL = GL_UNSIGNED_INT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FLOAT ()
-	CODE:
-		RETVAL = GL_FLOAT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_DOUBLE ()
-	CODE:
-		RETVAL = GL_DOUBLE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_V2F ()
-	CODE:
-		RETVAL = GL_V2F;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_V3F ()
-	CODE:
-		RETVAL = GL_V3F;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_C4UB_V2F ()
-	CODE:
-		RETVAL = GL_C4UB_V2F;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_C4UB_V3F ()
-	CODE:
-		RETVAL = GL_C4UB_V3F;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_C3F_V3F ()
-	CODE:
-		RETVAL = GL_C3F_V3F;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_N3F_V3F ()
-	CODE:
-		RETVAL = GL_N3F_V3F;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_C4F_N3F_V3F ()
-	CODE:
-		RETVAL = GL_C4F_N3F_V3F;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_T2F_V3F ()
-	CODE:
-		RETVAL = GL_T2F_V3F;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_T4F_V4F ()
-	CODE:
-		RETVAL = GL_T4F_V4F;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_T2F_C4UB_V3F ()
-	CODE:
-		RETVAL = GL_T2F_C4UB_V3F;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_T2F_C3F_V3F ()
-	CODE:
-		RETVAL = GL_T2F_C3F_V3F;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_T2F_N3F_V3F ()
-	CODE:
-		RETVAL = GL_T2F_N3F_V3F;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_T2F_C4F_N3F_V3F ()
-	CODE:
-		RETVAL = GL_T2F_C4F_N3F_V3F;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_T4F_C4F_N3F_V4F ()
-	CODE:
-		RETVAL = GL_T4F_C4F_N3F_V4F;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_ALL_ATTRIB_BITS ()
-	CODE:
-		RETVAL = GL_ALL_ATTRIB_BITS;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_CURRENT_BIT ()
-	CODE:
-		RETVAL = GL_CURRENT_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_ENABLE_BIT ()
-	CODE:
-		RETVAL = GL_ENABLE_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_EVAL_BIT ()
-	CODE:
-		RETVAL = GL_EVAL_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_FOG_BIT ()
-	CODE:
-		RETVAL = GL_FOG_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_HINT_BIT ()
-	CODE:
-		RETVAL = GL_HINT_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_LIGHTING_BIT ()
-	CODE:
-		RETVAL = GL_LIGHTING_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_LINE_BIT ()
-	CODE:
-		RETVAL = GL_LINE_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_LIST_BIT ()
-	CODE:
-		RETVAL = GL_LIST_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_PIXEL_MODE_BIT ()
-	CODE:
-		RETVAL = GL_PIXEL_MODE_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_POINT_BIT ()
-	CODE:
-		RETVAL = GL_POINT_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_POLYGON_BIT ()
-	CODE:
-		RETVAL = GL_POLYGON_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_POLYGON_STIPPLE_BIT ()
-	CODE:
-		RETVAL = GL_POLYGON_STIPPLE_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_SCISSOR_BIT ()
-	CODE:
-		RETVAL = GL_SCISSOR_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_TEXTURE_BIT ()
-	CODE:
-		RETVAL = GL_TEXTURE_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_TRANSFORM_BIT ()
-	CODE:
-		RETVAL = GL_TRANSFORM_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_VIEWPORT_BIT ()
-	CODE:
-		RETVAL = GL_VIEWPORT_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_CLIENT_PIXEL_STORE_BIT ()
-	CODE:
-		RETVAL = GL_CLIENT_PIXEL_STORE_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_CLIENT_VERTEX_ARRAY_BIT ()
-	CODE:
-		RETVAL = GL_CLIENT_VERTEX_ARRAY_BIT;
-	OUTPUT:
-		RETVAL
-
-GLbitfield
-GL_ALL_CLIENT_ATTRIB_BITS ()
-	CODE:
-		RETVAL = GL_ALL_CLIENT_ATTRIB_BITS;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MODELVIEW ()
-	CODE:
-		RETVAL = GL_MODELVIEW;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PROJECTION ()
-	CODE:
-		RETVAL = GL_PROJECTION;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE ()
-	CODE:
-		RETVAL = GL_TEXTURE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SMOOTH ()
-	CODE:
-		RETVAL = GL_SMOOTH;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FLAT ()
-	CODE:
-		RETVAL = GL_FLAT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LIGHT0 ()
-	CODE:
-		RETVAL = GL_LIGHT0;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LIGHT1 ()
-	CODE:
-		RETVAL = GL_LIGHT1;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LIGHT2 ()
-	CODE:
-		RETVAL = GL_LIGHT2;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LIGHT3 ()
-	CODE:
-		RETVAL = GL_LIGHT3;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LIGHT4 ()
-	CODE:
-		RETVAL = GL_LIGHT4;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LIGHT5 ()
-	CODE:
-		RETVAL = GL_LIGHT5;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LIGHT6 ()
-	CODE:
-		RETVAL = GL_LIGHT6;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LIGHT7 ()
-	CODE:
-		RETVAL = GL_LIGHT7;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_AMBIENT ()
-	CODE:
-		RETVAL = GL_AMBIENT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_DIFFUSE ()
-	CODE:
-		RETVAL = GL_DIFFUSE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_AMBIENT_AND_DIFFUSE ()
-	CODE:
-		RETVAL = GL_AMBIENT_AND_DIFFUSE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SPECULAR ()
-	CODE:
-		RETVAL = GL_SPECULAR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SHININESS ()
-	CODE:
-		RETVAL = GL_SHININESS;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_EMISSION ()
-	CODE:
-		RETVAL = GL_EMISSION;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_COLOR_INDEXES ()
-	CODE:
-		RETVAL = GL_COLOR_INDEXES;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_POSITION ()
-	CODE:
-		RETVAL = GL_POSITION;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SPOT_DIRECTION ()
-	CODE:
-		RETVAL = GL_SPOT_DIRECTION;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SPOT_EXPONENT ()
-	CODE:
-		RETVAL = GL_SPOT_EXPONENT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SPOT_CUTOFF ()
-	CODE:
-		RETVAL = GL_SPOT_CUTOFF;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_CONSTANT_ATTENUATION ()
-	CODE:
-		RETVAL = GL_CONSTANT_ATTENUATION;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LINEAR_ATTENUATION ()
-	CODE:
-		RETVAL = GL_LINEAR_ATTENUATION;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_QUADRATIC_ATTENUATION ()
-	CODE:
-		RETVAL = GL_QUADRATIC_ATTENUATION;
-	OUTPUT:
-		RETVAL
-
-
-GLenum
-GL_LIGHT_MODEL_AMBIENT ()
-	CODE:
-		RETVAL = GL_LIGHT_MODEL_AMBIENT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LIGHT_MODEL_LOCAL_VIEWER ()
-	CODE:
-		RETVAL = GL_LIGHT_MODEL_LOCAL_VIEWER;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LIGHT_MODEL_TWO_SIDE ()
-	CODE:
-		RETVAL = GL_LIGHT_MODEL_TWO_SIDE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LIGHT_MODEL_COLOR_CONTROL ()
-	CODE:
-		RETVAL = GL_LIGHT_MODEL_COLOR_CONTROL;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FALSE ()
-	CODE:
-		RETVAL = GL_FALSE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TRUE ()
-	CODE:
-		RETVAL = GL_TRUE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SINGLE_COLOR ()
-	CODE:
-		RETVAL = GL_SINGLE_COLOR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_ZERO ()
-	CODE:
-		RETVAL = GL_ZERO;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_ONE ()
-	CODE:
-		RETVAL = GL_ONE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_DST_COLOR ()
-	CODE:
-		RETVAL = GL_DST_COLOR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SRC_COLOR ()
-	CODE:
-		RETVAL = GL_SRC_COLOR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_ONE_MINUS_DST_COLOR ()
-	CODE:
-		RETVAL = GL_ONE_MINUS_DST_COLOR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_ONE_MINUS_SRC_COLOR ()
-	CODE:
-		RETVAL = GL_ONE_MINUS_SRC_COLOR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SRC_ALPHA ()
-	CODE:
-		RETVAL = GL_SRC_ALPHA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_ONE_MINUS_SRC_ALPHA ()
-	CODE:
-		RETVAL = GL_ONE_MINUS_SRC_ALPHA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SRC_ALPHA_SATURATE ()
-	CODE:
-		RETVAL = GL_SRC_ALPHA_SATURATE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_CONSTANT_COLOR ()
-	CODE:
-		RETVAL = GL_CONSTANT_COLOR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_ONE_MINUS_CONSTANT_COLOR ()
-	CODE:
-		RETVAL = GL_ONE_MINUS_CONSTANT_COLOR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_CONSTANT_ALPHA ()
-	CODE:
-		RETVAL = GL_CONSTANT_ALPHA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_ONE_MINUS_CONSTANT_ALPHA ()
-	CODE:
-		RETVAL = GL_ONE_MINUS_CONSTANT_ALPHA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_POINT_SMOOTH_HINT ()
-	CODE:
-		RETVAL = GL_POINT_SMOOTH_HINT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LINE_SMOOTH_HINT ()
-	CODE:
-		RETVAL = GL_LINE_SMOOTH_HINT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_POLYGON_SMOOTH_HINT ()
-	CODE:
-		RETVAL = GL_POLYGON_SMOOTH_HINT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FOG_HINT ()
-	CODE:
-		RETVAL = GL_FOG_HINT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PERSPECTIVE_CORRECTION_HINT ()
-	CODE:
-		RETVAL = GL_PERSPECTIVE_CORRECTION_HINT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_EXP ()
-	CODE:
-		RETVAL = GL_EXP;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_EXP2 ()
-	CODE:
-		RETVAL = GL_EXP2;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FOG_MODE ()
-	CODE:
-		RETVAL = GL_FOG_MODE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LINEAR ()
-	CODE:
-		RETVAL = GL_LINEAR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FOG_DENSITY ()
-	CODE:
-		RETVAL = GL_FOG_DENSITY;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FOG_START ()
-	CODE:
-		RETVAL = GL_FOG_START;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FOG_END ()
-	CODE:
-		RETVAL = GL_FOG_END;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FOG_COLOR ()
-	CODE:
-		RETVAL = GL_FOG_COLOR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_POLYGON_OFFSET_LINE ()
-	CODE:
-		RETVAL = GL_POLYGON_OFFSET_LINE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_POLYGON_OFFSET_FILL ()
-	CODE:
-		RETVAL = GL_POLYGON_OFFSET_FILL;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_POLYGON_OFFSET_POINT ()
-	CODE:
-		RETVAL = GL_POLYGON_OFFSET_POINT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_COLOR_INDEX ()
-	CODE:
-		RETVAL = GL_COLOR_INDEX;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_RGB ()
-	CODE:
-		RETVAL = GL_RGB;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_RGBA ()
-	CODE:
-		RETVAL = GL_RGBA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_BGR ()
-	CODE:
-		RETVAL = GL_BGR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_BGRA ()
-	CODE:
-		RETVAL = GL_BGRA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_RED ()
-	CODE:
-		RETVAL = GL_RED;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_GREEN ()
-	CODE:
-		RETVAL = GL_GREEN;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_BLUE ()
-	CODE:
-		RETVAL = GL_BLUE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_ALPHA ()
-	CODE:
-		RETVAL = GL_ALPHA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LUMINANCE ()
-	CODE:
-		RETVAL = GL_LUMINANCE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LUMINANCE_ALPHA ()
-	CODE:
-		RETVAL = GL_LUMINANCE_ALPHA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_STENCIL_INDEX ()
-	CODE:
-		RETVAL = GL_STENCIL_INDEX;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_DEPTH_COMPONENT ()
-	CODE:
-		RETVAL = GL_DEPTH_COMPONENT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_BITMAP ()
-	CODE:
-		RETVAL = GL_BITMAP;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_BYTE_3_3_2 ()
-	CODE:
-		RETVAL = GL_UNSIGNED_BYTE_3_3_2;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_BYTE_2_3_3_REV ()
-	CODE:
-		RETVAL = GL_UNSIGNED_BYTE_2_3_3_REV;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_SHORT_5_6_5 ()
-	CODE:
-		RETVAL = GL_UNSIGNED_SHORT_5_6_5;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_SHORT_5_6_5_REV ()
-	CODE:
-		RETVAL = GL_UNSIGNED_SHORT_5_6_5_REV;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_SHORT_4_4_4_4 ()
-	CODE:
-		RETVAL = GL_UNSIGNED_SHORT_4_4_4_4;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_SHORT_4_4_4_4_REV ()
-	CODE:
-		RETVAL = GL_UNSIGNED_SHORT_4_4_4_4_REV;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_SHORT_5_5_5_1 ()
-	CODE:
-		RETVAL = GL_UNSIGNED_SHORT_5_5_5_1;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_SHORT_1_5_5_5_REV ()
-	CODE:
-		RETVAL = GL_UNSIGNED_SHORT_1_5_5_5_REV;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_INT_8_8_8_8 ()
-	CODE:
-		RETVAL = GL_UNSIGNED_INT_8_8_8_8;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_INT_8_8_8_8_REV ()
-	CODE:
-		RETVAL = GL_UNSIGNED_INT_8_8_8_8_REV;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_INT_10_10_10_2 ()
-	CODE:
-		RETVAL = GL_UNSIGNED_INT_10_10_10_2;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_UNSIGNED_INT_2_10_10_10_REV ()
-	CODE:
-		RETVAL = GL_UNSIGNED_INT_2_10_10_10_REV;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_UNPACK_SWAP_BYTES ()
-	CODE:
-		RETVAL = GL_UNPACK_SWAP_BYTES;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_PACK_SWAP_BYTES ()
-	CODE:
-		RETVAL = GL_PACK_SWAP_BYTES;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_UNPACK_LSB_FIRST ()
-	CODE:
-		RETVAL = GL_UNPACK_LSB_FIRST;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_PACK_LSB_FIRST ()
-	CODE:
-		RETVAL = GL_PACK_LSB_FIRST;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_UNPACK_ROW_LENGTH ()
-	CODE:
-		RETVAL = GL_UNPACK_ROW_LENGTH;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_PACK_ROW_LENGTH ()
-	CODE:
-		RETVAL = GL_PACK_ROW_LENGTH;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_UNPACK_SKIP_ROWS ()
-	CODE:
-		RETVAL = GL_UNPACK_SKIP_ROWS;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_PACK_SKIP_ROWS ()
-	CODE:
-		RETVAL = GL_PACK_SKIP_ROWS;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_UNPACK_SKIP_PIXELS ()
-	CODE:
-		RETVAL = GL_UNPACK_SKIP_PIXELS;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_PACK_SKIP_PIXELS ()
-	CODE:
-		RETVAL = GL_PACK_SKIP_PIXELS;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_UNPACK_ALIGNMENT ()
-	CODE:
-		RETVAL = GL_UNPACK_ALIGNMENT;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_PACK_ALIGNMENT ()
-	CODE:
-		RETVAL = GL_PACK_ALIGNMENT;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_UNPACK_IMAGE_HEIGHT ()
-	CODE:
-		RETVAL = GL_UNPACK_IMAGE_HEIGHT;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_PACK_IMAGE_HEIGHT ()
-	CODE:
-		RETVAL = GL_PACK_IMAGE_HEIGHT;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_UNPACK_SKIP_IMAGES ()
-	CODE:
-		RETVAL = GL_UNPACK_SKIP_IMAGES;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_PACK_SKIP_IMAGES ()
-	CODE:
-		RETVAL = GL_PACK_SKIP_IMAGES;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_MAP_COLOR ()
-	CODE:
-		RETVAL = GL_MAP_COLOR;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_MAP_STENCIL ()
-	CODE:
-		RETVAL = GL_MAP_STENCIL;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_INDEX_SHIFT ()
-	CODE:
-		RETVAL = GL_INDEX_SHIFT;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_INDEX_OFFSET ()
-	CODE:
-		RETVAL = GL_INDEX_OFFSET;
-	OUTPUT:
-		RETVAL
-
-		
-double
-GL_RED_SCALE ()
-	CODE:
-		RETVAL = GL_RED_SCALE;
-	OUTPUT:
-		RETVAL
-
-double
-GL_GREEN_SCALE ()
-	CODE:
-		RETVAL = GL_GREEN_SCALE;
-	OUTPUT:
-		RETVAL
-
-double
-GL_BLUE_SCALE ()
-	CODE:
-		RETVAL = GL_BLUE_SCALE;
-	OUTPUT:
-		RETVAL
-
-double
-GL_ALPHA_SCALE ()
-	CODE:
-		RETVAL = GL_ALPHA_SCALE;
-	OUTPUT:
-		RETVAL
-
-double
-GL_DEPTH_SCALE ()
-	CODE:
-		RETVAL = GL_DEPTH_SCALE;
-	OUTPUT:
-		RETVAL
-
-double
-GL_RED_BIAS ()
-	CODE:
-		RETVAL = GL_RED_BIAS;
-	OUTPUT:
-		RETVAL
-
-double
-GL_GREEN_BIAS ()
-	CODE:
-		RETVAL = GL_GREEN_BIAS;
-	OUTPUT:
-		RETVAL
-
-double
-GL_BLUE_BIAS ()
-	CODE:
-		RETVAL = GL_BLUE_BIAS;
-	OUTPUT:
-		RETVAL
-
-double
-GL_ALPHA_BIAS ()
-	CODE:
-		RETVAL = GL_ALPHA_BIAS;
-	OUTPUT:
-		RETVAL
-
-double
-GL_DEPTH_BIAS ()
-	CODE:
-		RETVAL = GL_DEPTH_BIAS;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_CONVOLUTION_RED_SCALE ()
-	CODE:
-		RETVAL = GL_POST_CONVOLUTION_RED_SCALE;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_CONVOLUTION_GREEN_SCALE ()
-	CODE:
-		RETVAL = GL_POST_CONVOLUTION_GREEN_SCALE;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_CONVOLUTION_BLUE_SCALE ()
-	CODE:
-		RETVAL = GL_POST_CONVOLUTION_BLUE_SCALE;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_CONVOLUTION_ALPHA_SCALE ()
-	CODE:
-		RETVAL = GL_POST_CONVOLUTION_ALPHA_SCALE;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_CONVOLUTION_RED_BIAS ()
-	CODE:
-		RETVAL = GL_POST_CONVOLUTION_RED_BIAS;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_CONVOLUTION_GREEN_BIAS ()
-	CODE:
-		RETVAL = GL_POST_CONVOLUTION_GREEN_BIAS;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_CONVOLUTION_BLUE_BIAS ()
-	CODE:
-		RETVAL = GL_POST_CONVOLUTION_BLUE_BIAS;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_CONVOLUTION_ALPHA_BIAS ()
-	CODE:
-		RETVAL = GL_POST_CONVOLUTION_ALPHA_BIAS;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_COLOR_MATRIX_RED_SCALE ()
-	CODE:
-		RETVAL = GL_POST_COLOR_MATRIX_RED_SCALE;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_COLOR_MATRIX_GREEN_SCALE ()
-	CODE:
-		RETVAL = GL_POST_COLOR_MATRIX_GREEN_SCALE;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_COLOR_MATRIX_BLUE_SCALE ()
-	CODE:
-		RETVAL = GL_POST_COLOR_MATRIX_BLUE_SCALE;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_COLOR_MATRIX_ALPHA_SCALE ()
-	CODE:
-		RETVAL = GL_POST_COLOR_MATRIX_ALPHA_SCALE;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_COLOR_MATRIX_RED_BIAS ()
-	CODE:
-		RETVAL = GL_POST_COLOR_MATRIX_RED_BIAS;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_COLOR_MATRIX_GREEN_BIAS ()
-	CODE:
-		RETVAL = GL_POST_COLOR_MATRIX_GREEN_BIAS;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_COLOR_MATRIX_BLUE_BIAS ()
-	CODE:
-		RETVAL = GL_POST_COLOR_MATRIX_BLUE_BIAS;
-	OUTPUT:
-		RETVAL
-
-double
-GL_POST_COLOR_MATRIX_ALPHA_BIAS ()
-	CODE:
-		RETVAL = GL_POST_COLOR_MATRIX_ALPHA_BIAS;
-	OUTPUT:
-		RETVAL
-
-
-GLenum
-GL_PIXEL_MAP_I_TO_I ()
-	CODE:
-		RETVAL = GL_PIXEL_MAP_I_TO_I;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PIXEL_MAP_S_TO_S ()
-	CODE:
-		RETVAL = GL_PIXEL_MAP_S_TO_S;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PIXEL_MAP_I_TO_R ()
-	CODE:
-		RETVAL = GL_PIXEL_MAP_I_TO_R;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PIXEL_MAP_I_TO_G ()
-	CODE:
-		RETVAL = GL_PIXEL_MAP_I_TO_G;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PIXEL_MAP_I_TO_B ()
-	CODE:
-		RETVAL = GL_PIXEL_MAP_I_TO_B;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PIXEL_MAP_I_TO_A ()
-	CODE:
-		RETVAL = GL_PIXEL_MAP_I_TO_A;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PIXEL_MAP_R_TO_R ()
-	CODE:
-		RETVAL = GL_PIXEL_MAP_R_TO_R;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PIXEL_MAP_G_TO_G ()
-	CODE:
-		RETVAL = GL_PIXEL_MAP_G_TO_G;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PIXEL_MAP_B_TO_B ()
-	CODE:
-		RETVAL = GL_PIXEL_MAP_B_TO_B;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PIXEL_MAP_A_TO_A ()
-	CODE:
-		RETVAL = GL_PIXEL_MAP_A_TO_A;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_1D ()
-	CODE:
-		RETVAL = GL_TEXTURE_1D;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_2D ()
-	CODE:
-		RETVAL = GL_TEXTURE_2D;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_3D ()
-	CODE:
-		RETVAL = GL_TEXTURE_3D;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PROXY_TEXTURE_2D ()
-	CODE:
-		RETVAL = GL_PROXY_TEXTURE_2D;
-	OUTPUT:
-		RETVAL
-
-
-Sint32
-GL_ALPHA4 ()
-	CODE:
-		RETVAL = GL_ALPHA4;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_ALPHA8 ()
-	CODE:
-		RETVAL = GL_ALPHA8;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_ALPHA12 ()
-	CODE:
-		RETVAL = GL_ALPHA12;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_ALPHA16 ()
-	CODE:
-		RETVAL = GL_ALPHA16;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_LUMINANCE4 ()
-	CODE:
-		RETVAL = GL_LUMINANCE4;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_LUMINANCE8 ()
-	CODE:
-		RETVAL = GL_LUMINANCE8;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_LUMINANCE12 ()
-	CODE:
-		RETVAL = GL_LUMINANCE12;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_LUMINANCE16 ()
-	CODE:
-		RETVAL = GL_LUMINANCE16;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_LUMINANCE4_ALPHA4 ()
-	CODE:
-		RETVAL = GL_LUMINANCE4_ALPHA4;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_LUMINANCE6_ALPHA2 ()
-	CODE:
-		RETVAL = GL_LUMINANCE6_ALPHA2;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_LUMINANCE8_ALPHA8 ()
-	CODE:
-		RETVAL = GL_LUMINANCE8_ALPHA8;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_LUMINANCE12_ALPHA4 ()
-	CODE:
-		RETVAL = GL_LUMINANCE12_ALPHA4;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_LUMINANCE12_ALPHA12 ()
-	CODE:
-		RETVAL = GL_LUMINANCE12_ALPHA12;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_LUMINANCE16_ALPHA16 ()
-	CODE:
-		RETVAL = GL_LUMINANCE16_ALPHA16;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_INTENSITY ()
-	CODE:
-		RETVAL = GL_INTENSITY;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_INTENSITY4 ()
-	CODE:
-		RETVAL = GL_INTENSITY4;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_INTENSITY8 ()
-	CODE:
-		RETVAL = GL_INTENSITY8;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_INTENSITY12 ()
-	CODE:
-		RETVAL = GL_INTENSITY12;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_INTENSITY16 ()
-	CODE:
-		RETVAL = GL_INTENSITY16;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_R3_G3_B2 ()
-	CODE:
-		RETVAL = GL_R3_G3_B2;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_RGB4 ()
-	CODE:
-		RETVAL = GL_RGB4;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_RGB5 ()
-	CODE:
-		RETVAL = GL_RGB5;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_RGB8 ()
-	CODE:
-		RETVAL = GL_RGB8;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_RGB10 ()
-	CODE:
-		RETVAL = GL_RGB10;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_RGB12 ()
-	CODE:
-		RETVAL = GL_RGB12;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_RGB16 ()
-	CODE:
-		RETVAL = GL_RGB16;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_RGBA2 ()
-	CODE:
-		RETVAL = GL_RGBA2;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_RGBA4 ()
-	CODE:
-		RETVAL = GL_RGBA4;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_RGB5_A1 ()
-	CODE:
-		RETVAL = GL_RGB5_A1;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_RGBA8 ()
-	CODE:
-		RETVAL = GL_RGBA8;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_RGB10_A2 ()
-	CODE:
-		RETVAL = GL_RGB10_A2;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_RGBA12 ()
-	CODE:
-		RETVAL = GL_RGBA12;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_RGBA16 ()
-	CODE:
-		RETVAL = GL_RGBA16;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAX_TEXTURE_SIZE ()
-	CODE:
-		RETVAL = GL_MAX_TEXTURE_SIZE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_BASE_LEVEL ()
-	CODE:
-		RETVAL = GL_TEXTURE_BASE_LEVEL;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_MAX_LEVEL ()
-	CODE:
-		RETVAL = GL_TEXTURE_MAX_LEVEL;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_MAX_LOD ()
-	CODE:
-		RETVAL = GL_TEXTURE_MAX_LOD;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_MIN_LOD ()
-	CODE:
-		RETVAL = GL_TEXTURE_MIN_LOD;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_ENV_MODE ()
-	CODE:
-		RETVAL = GL_TEXTURE_ENV_MODE;
-	OUTPUT:
-		RETVAL
-	
-GLenum
-GL_TEXTURE_ENV_COLOR ()
-	CODE:
-		RETVAL = GL_TEXTURE_ENV_COLOR;
-	OUTPUT:
-		RETVAL
-	
-Sint32
-GL_DECAL()
-	CODE:
-		RETVAL = GL_DECAL;
-	OUTPUT:
-		RETVAL
-	
-Sint32
-GL_REPLACE()
-	CODE:
-		RETVAL = GL_REPLACE;
-	OUTPUT:
-		RETVAL
-	
-Sint32
-GL_MODULATE()
-	CODE:
-		RETVAL = GL_MODULATE;
-	OUTPUT:
-		RETVAL
-	
-Sint32
-GL_BLEND()
-	CODE:
-		RETVAL = GL_BLEND;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_WRAP_S ()
-	CODE:
-		RETVAL = GL_TEXTURE_WRAP_S;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_WRAP_T ()
-	CODE:
-		RETVAL = GL_TEXTURE_WRAP_T;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_WRAP_R ()
-	CODE:
-		RETVAL = GL_TEXTURE_WRAP_R;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_MAG_FILTER ()
-	CODE:
-		RETVAL = GL_TEXTURE_MAG_FILTER;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_MIN_FILTER ()
-	CODE:
-		RETVAL = GL_TEXTURE_MIN_FILTER;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_BORDER_COLOR ()
-	CODE:
-		RETVAL = GL_TEXTURE_BORDER_COLOR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_PRIORITY ()
-	CODE:
-		RETVAL = GL_TEXTURE_PRIORITY;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_CLAMP ()
-	CODE:
-		RETVAL = GL_CLAMP;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_CLAMP_TO_EDGE ()
-	CODE:
-		RETVAL = GL_CLAMP_TO_EDGE;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_REPEAT ()
-	CODE:
-		RETVAL = GL_REPEAT;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_NEAREST ()
-	CODE:
-		RETVAL = GL_NEAREST;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_NEAREST_MIPMAP_NEAREST ()
-	CODE:
-		RETVAL = GL_NEAREST_MIPMAP_NEAREST;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_NEAREST_MIPMAP_LINEAR ()
-	CODE:
-		RETVAL = GL_NEAREST_MIPMAP_LINEAR;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_LINEAR_MIPMAP_NEAREST ()
-	CODE:
-		RETVAL = GL_LINEAR_MIPMAP_NEAREST;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_LINEAR_MIPMAP_LINEAR ()
-	CODE:
-		RETVAL = GL_LINEAR_MIPMAP_LINEAR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_S ()
-	CODE:
-		RETVAL = GL_S;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_T ()
-	CODE:
-		RETVAL = GL_T;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_R ()
-	CODE:
-		RETVAL = GL_R;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_Q ()
-	CODE:
-		RETVAL = GL_Q;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_TEXTURE_GEN_MODE ()
-	CODE:
-		RETVAL = GL_TEXTURE_GEN_MODE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_OBJECT_PLANE ()
-	CODE:
-		RETVAL = GL_OBJECT_PLANE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_EYE_PLANE ()
-	CODE:
-		RETVAL = GL_EYE_PLANE;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_EYE_LINEAR ()
-	CODE:
-		RETVAL = GL_EYE_LINEAR;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_OBJECT_LINEAR ()
-	CODE:
-		RETVAL = GL_OBJECT_LINEAR;
-	OUTPUT:
-		RETVAL
-
-Sint32
-GL_SPHERE_MAP ()
-	CODE:
-		RETVAL = GL_SPHERE_MAP;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LEFT ()
-	CODE:
-		RETVAL = GL_LEFT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_RIGHT ()
-	CODE:
-		RETVAL = GL_RIGHT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FRONT_LEFT ()
-	CODE:
-		RETVAL = GL_FRONT_LEFT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FRONT_RIGHT ()
-	CODE:
-		RETVAL = GL_FRONT_RIGHT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_BACK_LEFT ()
-	CODE:
-		RETVAL = GL_BACK_LEFT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_BACK_RIGHT ()
-	CODE:
-		RETVAL = GL_BACK_RIGHT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_NONE ()
-	CODE:
-		RETVAL = GL_NONE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SCISSOR_TEST ()
-	CODE:
-		RETVAL = GL_SCISSOR_TEST;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_NEVER ()
-	CODE:
-		RETVAL = GL_NEVER;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_ALWAYS ()
-	CODE:
-		RETVAL = GL_ALWAYS;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LESS ()
-	CODE:
-		RETVAL = GL_LESS;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LEQUAL ()
-	CODE:
-		RETVAL = GL_LEQUAL;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_EQUAL ()
-	CODE:
-		RETVAL = GL_EQUAL;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_GEQUAL ()
-	CODE:
-		RETVAL = GL_GEQUAL;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_GREATER ()
-	CODE:
-		RETVAL = GL_GREATER;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_NOTEQUAL ()
-	CODE:
-		RETVAL = GL_NOTEQUAL;
-	OUTPUT:
-		RETVAL
-
-
-GLenum
-GL_KEEP ()
-	CODE:
-		RETVAL = GL_KEEP;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_INCR ()
-	CODE:
-		RETVAL = GL_INCR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_DECR ()
-	CODE:
-		RETVAL = GL_DECR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_INVERT ()
-	CODE:
-		RETVAL = GL_INVERT;
-	OUTPUT:
-		RETVAL
-
-
-GLenum
-GL_CLEAR ()
-	CODE:
-		RETVAL = GL_CLEAR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_COPY ()
-	CODE:
-		RETVAL = GL_COPY;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_NOOP ()
-	CODE:
-		RETVAL = GL_NOOP;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SET ()
-	CODE:
-		RETVAL = GL_SET;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_COPY_INVERTED ()
-	CODE:
-		RETVAL = GL_COPY_INVERTED;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_AND_REVERSE ()
-	CODE:
-		RETVAL = GL_AND_REVERSE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_OR_REVERSE ()
-	CODE:
-		RETVAL = GL_OR_REVERSE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_AND ()
-	CODE:
-		RETVAL = GL_AND;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_OR ()
-	CODE:
-		RETVAL = GL_OR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_NAND ()
-	CODE:
-		RETVAL = GL_NAND;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_NOR ()
-	CODE:
-		RETVAL = GL_NOR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_XOR ()
-	CODE:
-		RETVAL = GL_XOR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_EQUIV ()
-	CODE:
-		RETVAL = GL_EQUIV;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_AND_INVERTED ()
-	CODE:
-		RETVAL = GL_AND_INVERTED;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_OR_INVERTED ()
-	CODE:
-		RETVAL = GL_OR_INVERTED;
-	OUTPUT:
-		RETVAL
-
-
-GLenum
-GL_LOAD ()
-	CODE:
-		RETVAL = GL_LOAD;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_RETURN ()
-	CODE:
-		RETVAL = GL_RETURN;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_ADD ()
-	CODE:
-		RETVAL = GL_ADD;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MULT ()
-	CODE:
-		RETVAL = GL_MULT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_ACCUM ()
-	CODE:
-		RETVAL = GL_ACCUM;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP1_VERTEX_3 ()
-	CODE:
-		RETVAL = GL_MAP1_VERTEX_3;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP1_VERTEX_4 ()
-	CODE:
-		RETVAL = GL_MAP1_VERTEX_4;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP1_INDEX ()
-	CODE:
-		RETVAL = GL_MAP1_INDEX;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP1_COLOR_4 ()
-	CODE:
-		RETVAL = GL_MAP1_COLOR_4;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP1_NORMAL ()
-	CODE:
-		RETVAL = GL_MAP1_NORMAL;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP1_TEXTURE_COORD_1 ()
-	CODE:
-		RETVAL = GL_MAP1_TEXTURE_COORD_1;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP1_TEXTURE_COORD_2 ()
-	CODE:
-		RETVAL = GL_MAP1_TEXTURE_COORD_2;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP1_TEXTURE_COORD_3 ()
-	CODE:
-		RETVAL = GL_MAP1_TEXTURE_COORD_3;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP1_TEXTURE_COORD_4 ()
-	CODE:
-		RETVAL = GL_MAP1_TEXTURE_COORD_4;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP2_VERTEX_3 ()
-	CODE:
-		RETVAL = GL_MAP2_VERTEX_3;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP2_VERTEX_4 ()
-	CODE:
-		RETVAL = GL_MAP2_VERTEX_4;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP2_INDEX ()
-	CODE:
-		RETVAL = GL_MAP2_INDEX;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP2_COLOR_4 ()
-	CODE:
-		RETVAL = GL_MAP2_COLOR_4;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP2_NORMAL ()
-	CODE:
-		RETVAL = GL_MAP2_NORMAL;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP2_TEXTURE_COORD_1 ()
-	CODE:
-		RETVAL = GL_MAP2_TEXTURE_COORD_1;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP2_TEXTURE_COORD_2 ()
-	CODE:
-		RETVAL = GL_MAP2_TEXTURE_COORD_2;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP2_TEXTURE_COORD_3 ()
-	CODE:
-		RETVAL = GL_MAP2_TEXTURE_COORD_3;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAP2_TEXTURE_COORD_4 ()
-	CODE:
-		RETVAL = GL_MAP2_TEXTURE_COORD_4;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_AUTO_NORMAL ()
-	CODE:
-		RETVAL = GL_AUTO_NORMAL;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_LIGHTING ()
-	CODE:
-		RETVAL = GL_LIGHTING;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_DEPTH_TEST ()
-	CODE:
-		RETVAL = GL_DEPTH_TEST;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_COLOR_TABLE ()
-	CODE:
-		RETVAL = GL_COLOR_TABLE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_POST_CONVOLUTION_COLOR_TABLE ()
-	CODE:
-		RETVAL = GL_POST_CONVOLUTION_COLOR_TABLE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_POST_COLOR_MATRIX_COLOR_TABLE ()
-	CODE:
-		RETVAL = GL_POST_COLOR_MATRIX_COLOR_TABLE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PROXY_COLOR_TABLE ()
-	CODE:
-		RETVAL = GL_PROXY_COLOR_TABLE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PROXY_POST_CONVOLUTION_COLOR_TABLE ()
-	CODE:
-		RETVAL = GL_PROXY_POST_CONVOLUTION_COLOR_TABLE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE ()
-	CODE:
-		RETVAL = GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_CONVOLUTION_1D ()
-	CODE:
-		RETVAL = GL_CONVOLUTION_1D;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_CONVOLUTION_2D ()
-	CODE:
-		RETVAL = GL_CONVOLUTION_2D;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_SEPARABLE_2D ()
-	CODE:
-		RETVAL = GL_SEPARABLE_2D;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_CONVOLUTION_BORDER_MODE ()
-	CODE:
-		RETVAL = GL_CONVOLUTION_BORDER_MODE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_CONVOLUTION_FILTER_SCALE ()
-	CODE:
-		RETVAL = GL_CONVOLUTION_FILTER_SCALE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_CONVOLUTION_FILTER_BIAS ()
-	CODE:
-		RETVAL = GL_CONVOLUTION_FILTER_BIAS;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_REDUCE ()
-	CODE:
-		RETVAL = GL_REDUCE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_CONSTANT_BORDER ()
-	CODE:
-		RETVAL = GL_CONSTANT_BORDER;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_REPLICATE_BORDER ()
-	CODE:
-		RETVAL = GL_REPLICATE_BORDER;
-	OUTPUT:
-		RETVAL
-
-GLenum 
-GL_HISTOGRAM ()
-	CODE:
-		RETVAL = GL_HISTOGRAM;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_PROXY_HISTOGRAM ()
-	CODE:
-		RETVAL = GL_PROXY_HISTOGRAM;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MINMAX ()
-	CODE:
-		RETVAL = GL_MINMAX;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MIN ()
-	CODE:
-		RETVAL = GL_MIN;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_MAX ()
-	CODE:
-		RETVAL = GL_MAX;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FUNC_ADD ()
-	CODE:
-		RETVAL = GL_FUNC_ADD;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FUNC_SUBTRACT ()
-	CODE:
-		RETVAL = GL_FUNC_SUBTRACT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_FUNC_REVERSE_SUBTRACT ()
-	CODE:
-		RETVAL = GL_FUNC_REVERSE_SUBTRACT;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_COLOR_TABLE_SCALE ()
-	CODE:
-		RETVAL = GL_COLOR_TABLE_SCALE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_COLOR_TABLE_BAIS ()
-	CODE:
-		RETVAL = GL_COLOR_TABLE_BIAS;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GL_READ_BUFFER ()
-	CODE:
-		RETVAL = GL_READ_BUFFER;
-	OUTPUT:
-		RETVAL
-
-#endif
-
-#ifdef HAVE_GLU
-
-GLenum
-GLU_DISPLAY_MODE ()
-	CODE:
-		RETVAL = GLU_DISPLAY_MODE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_MODE ()
-	CODE:
-		RETVAL = GLU_NURBS_MODE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_CULLING ()
-	CODE:
-		RETVAL = GLU_CULLING;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_SAMPLING_METHOD ()
-	CODE:
-		RETVAL = GLU_SAMPLING_METHOD;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_SAMPLING_TOLERANCE ()
-	CODE:
-		RETVAL = GLU_SAMPLING_TOLERANCE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_PARAMETRIC_TOLERANCE ()
-	CODE:
-		RETVAL = GLU_PARAMETRIC_TOLERANCE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_U_STEP ()
-	CODE:
-		RETVAL = GLU_U_STEP;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_V_STEP ()
-	CODE:
-		RETVAL = GLU_V_STEP;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_AUTO_LOAD_MATRIX ()
-	CODE:
-		RETVAL = GLU_AUTO_LOAD_MATRIX;
-	OUTPUT:
-		RETVAL
-
-double
-GLU_FILL ()
-	CODE:
-		RETVAL = GLU_FILL;
-	OUTPUT:
-		RETVAL
-
-double
-GLU_OUTLINE_POLYGON ()
-	CODE:
-		RETVAL = GLU_OUTLINE_POLYGON;
-	OUTPUT:
-		RETVAL
-
-double
-GLU_OUTLINE_PATCH ()
-	CODE:
-		RETVAL = GLU_OUTLINE_PATCH;
-	OUTPUT:
-		RETVAL
-
-double
-GLU_NURBS_RENDERER ()
-	CODE:
-		RETVAL = GLU_NURBS_RENDERER;
-	OUTPUT:
-		RETVAL
-
-double
-GLU_NURBS_TESSELLATOR ()
-	CODE:
-		RETVAL = GLU_NURBS_TESSELLATOR;
-	OUTPUT:
-		RETVAL
-
-double
-GLU_PATH_LENGTH ()
-	CODE:
-		RETVAL = GLU_PATH_LENGTH;
-	OUTPUT:
-		RETVAL
-
-double
-GLU_DOMAIN_DISTANCE ()
-	CODE:
-		RETVAL = GLU_DOMAIN_DISTANCE;
-	OUTPUT:
-		RETVAL
-
-double
-GLU_OBJECT_PATH_LENGTH ()
-	CODE:
-		RETVAL = GLU_OBJECT_PATH_LENGTH;
-	OUTPUT:
-		RETVAL
-
-double
-GLU_OBJECT_PARAMETRIC_ERROR ()
-	CODE:
-		RETVAL = GLU_OBJECT_PARAMETRIC_ERROR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_ERROR ()
-	CODE:
-		RETVAL = GLU_NURBS_ERROR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_BEGIN ()
-	CODE:
-		RETVAL = GLU_NURBS_BEGIN;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_BEGIN_DATA ()
-	CODE:
-		RETVAL = GLU_NURBS_BEGIN_DATA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_TEXTURE_COORD ()
-	CODE:
-		RETVAL = GLU_NURBS_TEXTURE_COORD;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_TEXTURE_COORD_DATA ()
-	CODE:
-		RETVAL = GLU_NURBS_TEXTURE_COORD_DATA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_COLOR ()
-	CODE:
-		RETVAL = GLU_NURBS_COLOR;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_COLOR_DATA ()
-	CODE:
-		RETVAL = GLU_NURBS_COLOR_DATA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_NORMAL ()
-	CODE:
-		RETVAL = GLU_NURBS_NORMAL;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_NORMAL_DATA ()
-	CODE:
-		RETVAL = GLU_NURBS_NORMAL_DATA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_VERTEX ()
-	CODE:
-		RETVAL = GLU_NURBS_VERTEX;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_VERTEX_DATA ()
-	CODE:
-		RETVAL = GLU_NURBS_VERTEX_DATA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_END ()
-	CODE:
-		RETVAL = GLU_NURBS_END;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_NURBS_END_DATA ()
-	CODE:
-		RETVAL = GLU_NURBS_END_DATA;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_MAP1_TRIM_2 ()
-	CODE:
-		RETVAL = GLU_MAP1_TRIM_2;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_MAP1_TRIM_3 ()
-	CODE:
-		RETVAL = GLU_MAP1_TRIM_3;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_TESS_BOUNDARY_ONLY ()
-	CODE:
-		RETVAL = GLU_TESS_BOUNDARY_ONLY;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_TESS_TOLERANCE ()
-	CODE:
-		RETVAL = GLU_TESS_TOLERANCE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_TESS_WINDING_RULE ()
-	CODE:
-		RETVAL = GLU_TESS_WINDING_RULE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_TESS_WINDING_ODD ()
-	CODE:
-		RETVAL = GLU_TESS_WINDING_ODD;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_TESS_WINDING_NONZERO ()
-	CODE:
-		RETVAL = GLU_TESS_WINDING_NONZERO;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_TESS_WINDING_POSITIVE ()
-	CODE:
-		RETVAL = GLU_TESS_WINDING_POSITIVE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_TESS_WINDING_NEGATIVE ()
-	CODE:
-		RETVAL = GLU_TESS_WINDING_NEGATIVE;
-	OUTPUT:
-		RETVAL
-
-GLenum
-GLU_TESS_WINDING_ABS_GEQ_TWO ()
-	CODE:
-		RETVAL = GLU_TESS_WINDING_ABS_GEQ_TWO;
-	OUTPUT:
-		RETVAL
-
-#endif
diff -ruN SDL_perl-1.20.0/README SDL_perl-1.20.2/README
--- SDL_perl-1.20.0/README	Thu Jan  2 05:47:56 2003
+++ SDL_perl-1.20.2/README	Fri Mar 21 20:53:20 2003
@@ -1,4 +1,27 @@
-README for SDL_perl-1.20
+README for SDL_perl-1.20.2
+
+This is not the official version, but a forked version made by Tels. See
+
+	http://bloodgate.com/perl/sdl/sdl_perl.html
+
+for details.
+
+Thi package is digitally signed with my key (http://bloodgate.com/tels.asc),
+install Module::Signature and check the signature before you do anything with
+tihs package! If the signature is not valid, do not configure, make or install
+this package nor run any scripts from it - your system might get compromised!
+
+In the case of a mismatch in the SIGNATURE, please notify me immidiately.
+
+Any feedback or comments are certainly welcome. Please email them to me
+directly or to the sdlperl mailinglist.
+
+Have fun!
+
+Tels, 2003-03-21
+
+******************************************************************************
+Original README text follows:
 
 Installation:
 
diff -ruN SDL_perl-1.20.0/SDL.pm SDL_perl-1.20.2/SDL.pm
--- SDL_perl-1.20.0/SDL.pm	Fri Jan  3 06:36:12 2003
+++ SDL_perl-1.20.2/SDL.pm	Thu Jan  1 01:00:00 1970
@@ -1,1000 +0,0 @@
-package SDL;
-
-use strict;
-use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
-
-require Exporter;
-require DynaLoader;
-use AutoLoader 'AUTOLOAD';
-use SDL_perl;
-
-@ISA = qw(Exporter DynaLoader);
-@EXPORT = qw( in verify &NULL );
-
-$VERSION = '1.20.0';
-
-print "$VERSION" if (defined($ARGV[0]) && ($ARGV[0] eq '--SDLperl'));
-
-$SDL::DEBUG=1;
-
-sub NULL {
-	return 0;
-}
-
-sub in {
-	my ($k,@t) = @_;
-	(scalar grep { defined $_ && $_ eq $k } @t) <=> 0;
-} 
-
-sub verify (\%@) {
-	my ($options,@valid_options) = @_;
-	for (keys %$options) {
-		die "Invalid option $_\n" unless in ($_, @valid_options);
-	}
-}
-
-1;
-__END__
-
-=head1 NAME
-
-SDL_perl - Simple DirectMedia Layer Perl
-
-=head1 SYNOPSIS
-
-  use SDL;
-
-=head1 DESCRIPTION
-
-SDL_perl is a package of perl modules that provides both functional and object orient
-interfaces to the Simple DirectMedia Layer for Perl 5.  This package does take some
-liberties with the SDL API, and attempts to adhere to the spirit of both the SDL
-and Perl.  This document describes the low-level functional SDL_perl API.  For the
-object oriented programming interface please see the documentation provided on a
-per class basis.
-
-=head2 Init(flags) 
-
-As with the C language API, SDL_perl initializes the SDL environment through
-the C<SDL::Init> subroutine.  This routine takes a mode flag constructed through
-the bitwise OR product of the following functions:  
-
-=over 4
-=item *
-INIT_AUDIO()
-
-=item *
-INIT_VIDEO()
-
-=item *
-INIT_CDROM()
-
-=item *
-INIT_EVERYTHING()
-
-=item *
-INIT_NOPARACHUTE() 
-
-=item *
-INIT_JOYSTICK()
-
-=item *
-INIT_TIMER()
-
-=back
-
-C<SDL::Init> returns 0 on success, or -1 on error.
-
-=head2 GetError()
-
-The last error message set by the SDL library can be retrieved using the subroutine
-C<SDL::GetError>, which returns a scalar containing the text of the message if any.
-
-=head2 Delay(ms)
-
-This subroutine allows an application to delay further operations for atleast a
-number of milliseconds provided as the argument.  The actual delay may be longer
-than the specified depending on the underlying OS.
-
-=head2 GetTicks() 
-
-An application may retrieve the number of milliseconds expired since the initilization
-of the application through this subroutine.  This value resets rougly ever 49 days.
-
-=head2 AddTimer(interval,callback,param)
-
-C<AddTimer> will register a SDL_NewTimerCallback function to be executed after
-C<interval> milliseconds, with parameter C<param>.  SDL_NewTimerCallback objects
-can be constructed with the C<NewTimer> subroutine.   C<SDL::PerlTimerCallback>
-will return a valid callback for executing a perl subroutine or closure.
-This subroutine returns a SDL_TimerID for the newly registered callback, or NULL 
-on error.
-
-=head2 NewTimer(interval,subroutine)
-
-The C<NewTimer> takes an interval in milliseconds and a reference to a subroutine
-to call at that interval.  The subroutine will be invoked in a void context
-and accepts no parameters.  The callback used is that returned by C<SDL::PerlTimerCallback>.
-C<NewTimer> returns the SDL_TimerID for the new timer or NULL on error.
-
-=head2 RemoveTimer(id)
-
-This subroutine taks a SDL_TimerID and removes it from the list of active callbacks.
-RemoveTimer returns false on failure.
-
-=head2 SetTimer 
-
-This subroutine is depreciated, please use C<NewTimer> or C<AddTimer> instead.
-
-=head2 CDNumDrives() 
-
-C<SDL::CDNumDrives> returns the number of available CD-ROM drives in the system.
-
-=head2 CDName(drive)
-
-The subroutine C<SDL::CDName> returns the system specific human readable device name
-for the given CD-ROM drive.
-
-=head2 CDOpen(drive)
-
-This subroutine opens a CD-ROM drive for access, returning NULL if the drive is busy 
-or otherwise unavailable.  On success this subroutine returns a handle to the CD-ROM
-drive.
-
-=head2 CDTrackListing(cd)
-
-C<SDL::CDTrackListing> returns a human readable description of a CD-ROM.  For each
-track one line will be produced with the following format:
-
-	Track index: %d, id %d, %2d.%2d 
-
-This is provided to ease the creation of human readable descriptions and debugging.
-
-=head2 CDTrackId(track) 
-
-C<CDTrackId> returns the id field of the given SDL_CDtrack structure.
-
-=head2 CDTrackType(track)
-
-C<CDTrackType> returns the type field of the given SDL_CDtrack structure.
-
-=head2 CDTrackLength(track)
-
-C<CDTrackLength> returns the length field of the given SDL_CDtrack structure.
-
-=head2 CDTrackOffset(track)
-
-C<CDTrackOffset> returns the offset field of the given SDL_CDtrack structure.
-
-=head2 CDStatus(cd)
-
-The function C<CDStatus> returns the current status of the given SDL_CDrom.
-C<CDStatus>'s return values are:
-
-=over 4
-
-=item *
-CD_TRAYEMPTY 
-
-=item *
-CD_PLAYING 
-
-=item *
-CD_STOPPED
-
-=item *
-CD_PAUSED 
-
-=item *
-CD_ERROR 
-
-=back
-
-=head2 CDPlayTracks(cd,track,tracks,frame,frames)
-
-To start playing from an arbitrary portion of a CD, one can provide
-C<SDL::CDPlayTracks> with a CD, a starting track, the number of tracks,
-a starting frame, and the number of frames to be played. 
-
-=head2 CDPlay(cd,track,length) 
-
-C<SDL::CDPlay> plays the next C<length> tracks starting from C<track>
-
-=head2 CDPause(cd) 
-
-This function will pause CD playback until resume is called.
-
-=head2 CDResume(cd) 
-
-This function will resume CD playback if paused.
-
-=head2 CDStop(cd) 
-
-C<SDL::CDStop> will stop CD playback if playing.
-
-=head2 CDEject(cd) 
-
-This function will eject the CD
-
-=head2 CDClose(cd) 
-
-This function will release an opened CD. 
-
-=head2 CDNumTracks 
-
-=head2 CDCurTrack 
-
-=head2 CDCurFrame 
-
-=head2 CDTrack 
-
-=head2 PumpEvents 
-
-=head2 NewEvent 
-
-=head2 FreeEvent
-
-=head2 PollEvent 
-
-=head2 WaitEvent 
-
-=head2 EventState 
-
-=head2 IGNORE 
-
-=head2 ENABLE 
-
-=head2 QUERY 
-
-=head2 ACTIVEEVENT
-
-=head2 KEYDOWN 
-
-=head2 KEYUP 
-
-=head2 MOUSEMOTION 
-
-=head2 MOUSEBUTTONDOWN 
-
-=head2 MOUSEBUTTONUP 
-
-=head2 QUIT 
-
-=head2 SYSWMEVENT 
-
-=head2 EventType 
-
-=head2 ActiveEventGain 
-
-=head2 ActiveEventState 
-
-=head2 APPMOUSEFOCUS 
-
-=head2 APPINPUTFOCUS 
-
-=head2 APPACTIVE 
-
-=head2 KeyEventState
-
-=head2 SDLK_BACKSPACE 
-
-=head2 SDLK_TAB 
-
-=head2 SDLK_CLEAR 
-
-=head2 SDLK_RETURN 
-
-=head2 SDLK_PAUSE 
-
-=head2 SDLK_ESCAPE 
-
-=head2 SDLK_SPACE 
-
-=head2 SDLK_EXCLAIM 
-
-=head2 SDLK_QUOTEDBL 
-
-=head2 SDLK_HASH 
-
-=head2 SDLK_DOLLAR 
-
-=head2 SDLK_AMPERSAND 
-
-=head2 SDLK_QUOTE 
-
-=head2 SDLK_LEFTPAREN 
-
-=head2 SDLK_RIGHTPAREN 
-
-=head2 SDLK_ASTERISK 
-
-=head2 SDLK_PLUS 
-
-=head2 SDLK_COMMA 
-
-=head2 SDLK_MINUS 
-
-=head2 SDLK_PERIOD 
-
-=head2 SDLK_SLASH 
-
-=head2 SDLK_0 
-
-=head2 SDLK_1 
-
-=head2 SDLK_2 
-
-=head2 SDLK_3 
-
-=head2 SDLK_4 
-
-=head2 SDLK_5 
-
-=head2 SDLK_6 
-
-=head2 SDLK_7 
-
-=head2 SDLK_8 
-
-=head2 SDLK_9 
-
-=head2 SDLK_COLON 
-
-=head2 SDLK_SEMICOLON 
-
-=head2 SDLK_LESS 
-
-=head2 SDLK_EQUALS 
-
-=head2 SDLK_GREATER 
-
-=head2 SDLK_QUESTION 
-
-=head2 SDLK_AT 
-
-=head2 SDLK_LEFTBRACKET 
-
-=head2 SDLK_BACKSLASH 
-
-=head2 SDLK_RIGHTBRACKET 
-
-=head2 SDLK_CARET 
-
-=head2 SDLK_UNDERSCORE 
-
-=head2 SDLK_BACKQUOTE 
-
-=head2 SDLK_a 
-
-=head2 SDLK_b 
-
-=head2 SDLK_c 
-
-=head2 SDLK_d 
-
-=head2 SDLK_e 
-
-=head2 SDLK_f 
-
-=head2 SDLK_g 
-
-=head2 SDLK_h 
-
-=head2 SDLK_i 
-
-=head2 SDLK_j 
-
-=head2 SDLK_k 
-
-=head2 SDLK_l 
-
-=head2 SDLK_m 
-
-=head2 SDLK_n 
-
-=head2 SDLK_o 
-
-=head2 SDLK_p 
-
-=head2 SDLK_q 
-
-=head2 SDLK_r 
-
-=head2 SDLK_s 
-
-=head2 SDLK_t 
-
-=head2 SDLK_u 
-
-=head2 SDLK_v 
-
-=head2 SDLK_w 
-
-=head2 SDLK_x 
-
-=head2 SDLK_y 
-
-=head2 SDLK_z 
-
-=head2 SDLK_DELETE 
-
-=head2 SDLK_KP0 
-
-=head2 SDLK_KP1 
-
-=head2 SDLK_KP2 
-
-=head2 SDLK_KP3 
-
-=head2 SDLK_KP4 
-
-=head2 SDLK_KP5 
-
-=head2 SDLK_KP6 
-
-=head2 SDLK_KP7 
-
-=head2 SDLK_KP8 
-
-=head2 SDLK_KP9 
-
-=head2 SDLK_KP_PERIOD 
-
-=head2 SDLK_KP_DIVIDE 
-
-=head2 SDLK_KP_MULTIPLY 
-
-=head2 SDLK_KP_MINUS 
-
-=head2 SDLK_KP_PLUS 
-
-=head2 SDLK_KP_ENTER 
-
-=head2 SDLK_KP_EQUALS 
-
-=head2 SDLK_UP 
-
-=head2 SDLK_DOWN 
-
-=head2 SDLK_RIGHT 
-
-=head2 SDLK_LEFT 
-
-=head2 SDLK_INSERT 
-
-=head2 SDLK_HOME 
-
-=head2 SDLK_END 
-
-=head2 SDLK_PAGEUP 
-
-=head2 SDLK_PAGEDOWN 
-
-=head2 SDLK_F1 
-
-=head2 SDLK_F2 
-
-=head2 SDLK_F3 
-
-=head2 SDLK_F4 
-
-=head2 SDLK_F5 
-
-=head2 SDLK_F6 
-
-=head2 SDLK_F7 
-
-=head2 SDLK_F8 
-
-=head2 SDLK_F9 
-
-=head2 SDLK_F10 
-
-=head2 SDLK_F11 
-
-=head2 SDLK_F12 
-
-=head2 SDLK_F13 
-
-=head2 SDLK_F14 
-
-=head2 SDLK_F15 
-
-=head2 SDLK_NUMLOCK 
-
-=head2 SDLK_CAPSLOCK 
-
-=head2 SDLK_SCROLLOCK 
-
-=head2 SDLK_RSHIFT 
-
-=head2 SDLK_LSHIFT 
-
-=head2 SDLK_RCTRL 
-
-=head2 SDLK_LCTRL 
-
-=head2 SDLK_RALT 
-
-=head2 SDLK_LALT 
-
-=head2 SDLK_RMETA 
-
-=head2 SDLK_LMETA 
-
-=head2 SDLK_LSUPER 
-
-=head2 SDLK_RSUPER 
-
-=head2 SDLK_MODE 
-
-=head2 SDLK_HELP 
-
-=head2 SDLK_PRINT 
-
-=head2 SDLK_SYSREQ 
-
-=head2 SDLK_BREAK 
-
-=head2 SDLK_MENU 
-
-=head2 SDLK_POWER 
-
-=head2 SDLK_EURO 
-
-=head2 KMOD_NONE 
-
-=head2 KMOD_NUM 
-
-=head2 KMOD_CAPS 
-
-=head2 KMOD_LCTRL 
-
-=head2 KMOD_RCTRL 
-
-=head2 KMOD_RSHIFT 
-
-=head2 KMOD_LSHIFT 
-
-=head2 KMOD_RALT 
-
-=head2 KMOD_LALT 
-
-=head2 KMOD_CTRL 
-
-=head2 KMOD_SHIFT 
-
-=head2 KMOD_ALT 
-
-=head2 KeyEventSym 
-
-=head2 KeyEventMod 
-
-=head2 KeyEventUnicode 
-
-=head2 KeyEventScanCode 
-
-=head2 MouseMotionState 
-
-=head2 MouseMotionX 
-
-=head2 MouseMotionY 
-
-=head2 MouseMotionXrel
-
-=head2 MouseMotionYrel 
-
-=head2 MouseButtonState 
-
-=head2 MouseButton 
-
-=head2 MouseButtonX 
-
-=head2 MouseButtonY 
-
-=head2 SysWMEventMsg 
-
-=head2 EnableUnicode 
-
-=head2 EnableKeyRepeat 
-
-=head2 GetKeyName 
-
-=head2 PRESSED 
-
-=head2 RELEASED 
-
-=head2 CreateRGBSurface 
-
-=head2 CreateRGBSurfaceFrom 
-
-=head2 IMG_Load 
-
-=head2 FreeSurface 
-
-=head2 SurfacePalette 
-
-=head2 SurfaceBitsPerPixel 
-
-=head2 SurfaceBytesPerPixel 
-
-=head2 SurfaceRshift 
-
-=head2 SurfaceGshift 
-
-=head2 SurfaceBshift 
-
-=head2 SurfaceAshift 
-
-=head2 SurfaceRmask
-
-=head2 SurfaceGmask 
-
-=head2 SurfaceBmask 
-
-=head2 SurfaceAmask 
-
-=head2 SurfaceColorKey 
-
-=head2 SurfaceAlpha
-
-=head2 SurfaceW 
-
-=head2 SurfaceH 
-
-=head2 SurfacePitch 
-
-=head2 SurfacePixels 
-
-=head2 SurfacePixel 
-
-=head2 MUSTLOCK 
-
-=head2 SurfaceLock 
-
-=head2 SurfaceUnlock 
-
-=head2 GetVideoSurface 
-
-=head2 VideoInfo 
-
-=head2 NewRect 
-
-=head2 FreeRect 
-
-=head2 RectX 
-
-=head2 RectY 
-
-=head2 RectW 
-
-=head2 RectH 
-
-=head2 NewColor 
-
-=head2 ColorR 
-
-=head2 ColorG 
-
-=head2 CologB 
-
-=head2 FreeColor 
-
-=head2 NewPalette 
-
-=head2 PaletteNColors 
-
-=head2 PaletteColors 
-
-=head2 SWSURFACE 
-
-=head2 HWSURFACE 
-
-=head2 ANYFORMAT 
-
-=head2 HWPALETTE 
-
-=head2 DOUBLEBUF 
-
-=head2 FULLSCREEN 
-
-=head2 ASYNCBLIT 
-
-=head2 OPENGL 
-
-=head2 HWACCEL 
-
-=head2 VideoModeOK 
-
-=head2 SetVideoMode 
-
-=head2 UpdateRects 
-
-=head2 Flip 
-
-=head2 SetColors 
-
-=head2 MapRGB (surface,r,g,b)
-
-C<SDL::MapRGB> translates the composite red (r), green (g), blue (b)
-colors according to the given surface to a interger color value.  This
-integer can be used in functions like C<SDL::FillRect>, and is not
-the same as the format independent Color object returned by C<SDL::NewColor>.
-
-=head2 MapRGBA (surface,r,g,b,a)
-
-C<SDL::MapRGBA> works as C<SDL::MapRGB> but takes an additional alpha (a)
-component for semi-transperant colors.
-
-=head2 GetRGB 
-
-=head2 GetRGBA 
-
-=head2 SaveBMP 
-
-=head2 SetColorKey 
-
-=head2 SRCCOLORKEY 
-
-=head2 RLEACCEL 
-
-=head2 SRCALPHA 
-
-=head2 SetAlpha 
-
-=head2 DisplayFormat 
-
-=head2 BlitSurface 
-
-=head2 FillRect(surface,rect,color)
-	
-C<SDL::FillRect> draws a solid rectangle of color on the given surface.
-If the rectangle is NULL, the entire surface will be painted.
-
-=head2 WMSetCaption 
-
-=head2 WMGetCaption 
-
-=head2 WMSetIcon 
-
-=head2 WarpMouse 
-
-=head2 NewCursor 
-
-=head2 FreeCursor 
-
-=head2 SetCursor 
-
-=head2 GetCursor 
-
-=head2 ShowCursor 
-
-=head2 NewAudioSpec 
-
-=head2 FreeAudioSpec 
-
-=head2 AUDIO_U8 
-
-=head2 AUDIO_S8 
-
-=head2 AUDIO_U16 
-
-=head2 AUDIO_S16 
-
-=head2 AUDIO_U16MSB 
-
-=head2 AUDIO_S16MSB 
-
-=head2 NewAudioCVT 
-
-=head2 FreeAudioCVT 
-
-=head2 ConvertAudioData 
-
-=head2 OpenAudio 
-
-=head2 PauseAudio 
-
-=head2 UnlockAudio 
-
-=head2 CloseAudio 
-
-=head2 FreeWAV 
-
-=head2 LoadWAV 
-
-=head2 MixAudio 
-
-=head2 MIX_MAX_VOLUME 
-
-=head2 MIX_DEFAULT_FREQUENCY 
-
-=head2 MIX_DEFAULT_FORMAT 
-
-=head2 MIX_DEFAULT_CHANNELS 
-
-=head2 MIX_NO_FADING 
-
-=head2 MIX_FADING_OUT 
-
-=head2 MIX_FADING_IN 
-
-=head2 MixOpenAudio 
-
-=head2 MixAllocateChannels 
-
-=head2 MixQuerySpec 
-
-=head2 MixLoadWAV 
-
-=head2 MixLoadMusic 
-
-=head2 MixQuickLoadWAV 
-
-=head2 MixFreeChunk
-
-=head2 MixFreeMusic 
-
-=head2 MixSetPostMixCallback 
-
-=head2 MixSetMusicHook 
-
-=head2 MixSetMusicFinishedHook 
-
-=head2 MixGetMusicHookData 
-
-=head2 MixReverseChannels 
-
-=head2 MixGroupChannel 
-
-=head2 MixGroupChannels 
-
-=head2 MixGroupAvailable 
-
-=head2 MixGroupCount 
-
-=head2 MixGroupOldest 
-
-=head2 MixGroupNewer 
-
-=head2 MixPlayChannel 
-
-=head2 MixPlayChannelTimed 
-
-=head2 MixPlayMusic 
-
-=head2 MixFadeInChannel 
-
-=head2 MixFadeInChannelTimed 
-
-=head2 MixFadeInMusic 
-
-=head2 MixVolume 
-
-=head2 MixVolumeChunk 
-
-=head2 MixVolumeMusic 
-
-=head2 MixHaltChannel 
-
-=head2 MixHaltGroup 
-
-=head2 MixHaltMusic 
-
-=head2 MixExpireChannel 
-
-=head2 MixFadeOutChannel 
-
-=head2 MixFadeOutGroup 
-
-=head2 MixFadeOutMusic 
-
-=head2 MixFadingMusic
-
-=head2 MixFadingChannel
-
-=head2 MixPause 
-
-=head2 MixResume 
-
-=head2 MixPaused 
-
-=head2 MixPauseMusic 
-
-=head2 MixResumeMusic 
-
-=head2 MixRewindMusic 
-
-=head2 MixPausedMusic 
-
-=head2 MixPlaying
-
-=head2 MixPlayingMusic
-
-=head2 MixCloseAudio 
-
-=head2 NewFont 
-
-=head2 UseFont 
-
-=head2 PutString 
-
-=head2 TextWidth 
-
-=head2 GL_RED_SIZE 
-
-=head2 GL_GREEN_SIZE 
-
-=head2 GL_BLUE_SIZE 
-
-=head2 GL_ALPHA_SIZE 
-
-=head2 GL_ACCUM_RED_SIZE 
-
-=head2 GL_ACCUM_GREEN_SIZE 
-
-=head2 GL_ACCUM_BLUE_SIZE 
-
-=head2 GL_ACCUM_ALPHA_SIZE 
-
-=head2 GL_BUFFER_SIZE 
-
-=head2 GL_DEPTH_SIZE 
-
-=head2 GL_STENCIL_SIZE 
-
-=head2 GL_DOUBLEBUFFER 
-
-=head2 GL_SetAttribute 
-
-=head2 GL_GetAttribute 
-
-=head2 GL_SwapBuffers 
-
-=head2 BigEndian 
-
-=head2 NumJoysticks 
-
-=head2 JoystickName 
-
-=head2 JoystickOpen 
-
-=head2 JoystickOpened 
-
-=head2 JoystickIndex 
-
-=head2 JoystickNumAxes 
-
-=head2 JoystickNumBalls 
-
-=head2 JoystickNumHats 
-
-=head2 JoystickNumButtons 
-
-=head2 JoystickUpdate 
-
-=head2 JoystickGetAxis 
-
-=head2 JoystickGetHat 
-
-=head2 JoystickGetButton 
-
-=head2 JoystickGetBall 
-
-=head2 JoystickClose 
-
-=head1 AUTHOR
-
-David J. Goehrig
-
-=head1 CONTRIBUTORS
-
-David J. Goehrig, Wayne Keenan, Guillaume Cottenceau
-
-=head1 SEE ALSO
-
-	perl(1) SDL::App(3) SDL::Surface(3) SDL::Event(3) SDL::Rect(3) 
-	SDL::Palette(3) SDL::Mixer(3) SDL::Cdrom(3)
-
-=cut
-
diff -ruN SDL_perl-1.20.0/SDL_perl.xs SDL_perl-1.20.2/SDL_perl.xs
--- SDL_perl-1.20.0/SDL_perl.xs	Fri Jan  3 06:14:35 2003
+++ SDL_perl-1.20.2/SDL_perl.xs	Wed Mar 12 06:57:45 2003
@@ -71,7 +71,7 @@
 #include "DT_drawtext.h"
 #endif
 
-#ifdef WIN32
+#ifdef USE_THREADS
 #define HAVE_TLS_CONTEXT
 #endif
 
@@ -243,56 +243,6 @@
 	OUTPUT:
 		RETVAL
 
-Uint32
-INIT_AUDIO ()
-	CODE:
-		RETVAL = SDL_INIT_AUDIO;
-	OUTPUT:
-		RETVAL
-
-Uint32
-INIT_VIDEO ()
-	CODE:
-		RETVAL = SDL_INIT_VIDEO;
-	OUTPUT:
-		RETVAL
-
-Uint32
-INIT_CDROM ()
-	CODE:
-		RETVAL = SDL_INIT_CDROM;
-	OUTPUT:
-		RETVAL
-
-Uint32
-INIT_EVERYTHING ()
-	CODE:
-		RETVAL = SDL_INIT_EVERYTHING;
-	OUTPUT:	
-		RETVAL
-
-Uint32
-INIT_NOPARACHUTE () 
-	CODE:
-		RETVAL = SDL_INIT_NOPARACHUTE;
-	OUTPUT:
-		RETVAL
-
-Uint32
-INIT_JOYSTICK ()
-	CODE:
-		RETVAL = SDL_INIT_JOYSTICK;
-	OUTPUT:
-		RETVAL
-
-Uint32
-INIT_TIMER ()
-	CODE:
-		RETVAL = SDL_INIT_TIMER;
-	OUTPUT:
-		RETVAL
-	
-
 int
 Init ( flags )
 	Uint32 flags
@@ -445,41 +395,6 @@
 		RETVAL
 
 Uint32
-CD_TRAYEMPTY ()
-	CODE:
-		RETVAL = CD_TRAYEMPTY;
-	OUTPUT:	
-		RETVAL
-
-Uint32
-CD_PLAYING ()
-	CODE:
-		RETVAL = CD_PLAYING;
-	OUTPUT:	
-		RETVAL
-
-Uint32
-CD_STOPPED()
-	CODE:
-		RETVAL = CD_STOPPED ;
-	OUTPUT:	
-		RETVAL
-
-Uint32
-CD_PAUSED ()
-	CODE:
-		RETVAL = CD_PAUSED;
-	OUTPUT:	
-		RETVAL
-
-Uint32
-CD_ERROR ()
-	CODE:
-		RETVAL = CD_ERROR ;
-	OUTPUT:	
-		RETVAL
-
-Uint32
 CDStatus ( cd )
 	SDL_CD *cd 
 	CODE:
@@ -631,125 +546,6 @@
 	OUTPUT:
 		RETVAL 
 
-int
-IGNORE ()
-	CODE:
-		RETVAL = SDL_IGNORE;
-	OUTPUT:
-		RETVAL
-
-int
-ENABLE ()
-	CODE:
-		RETVAL = SDL_ENABLE;
-	OUTPUT:
-		RETVAL
-
-int
-QUERY ()
-	CODE:	
-		RETVAL = SDL_QUERY;
-	OUTPUT:
-		RETVAL
-
-Uint8
-ACTIVEEVENT()
-	CODE:
-		RETVAL = SDL_ACTIVEEVENT;
-	OUTPUT:
-		RETVAL	
-
-Uint8
-KEYDOWN ()
-	CODE:
-		RETVAL = SDL_KEYDOWN;
-	OUTPUT:
-		RETVAL	
-
-Uint8
-KEYUP ()
-	CODE:
-		RETVAL = SDL_KEYUP;
-	OUTPUT:
-		RETVAL	
-
-Uint8
-MOUSEMOTION ()
-	CODE:
-		RETVAL = SDL_MOUSEMOTION;
-	OUTPUT:
-		RETVAL	
-
-Uint8
-MOUSEBUTTONDOWN ()
-	CODE:
-		RETVAL = SDL_MOUSEBUTTONDOWN;
-	OUTPUT:
-		RETVAL	
-
-Uint8
-MOUSEBUTTONUP ()
-	CODE:
-		RETVAL = SDL_MOUSEBUTTONUP;
-	OUTPUT:
-		RETVAL	
-
-Uint8
-JOYAXISMOTION ()
-        CODE:
-                RETVAL = SDL_JOYAXISMOTION;
-        OUTPUT:
-                RETVAL
-
-Uint8
-JOYHATMOTION ()
-        CODE:
-                RETVAL = SDL_JOYHATMOTION;
-        OUTPUT:
-                RETVAL
-
-Uint8
-JOYBALLMOTION ()
-        CODE:
-                RETVAL = SDL_JOYBALLMOTION;
-        OUTPUT:
-                RETVAL
-
-Uint8
-JOYBUTTONDOWN ()
-        CODE:
-                RETVAL = SDL_JOYBUTTONDOWN;
-        OUTPUT:
-                RETVAL
-
-Uint8
-JOYBUTTONUP ()
-        CODE:
-                RETVAL = SDL_JOYBUTTONUP;
-        OUTPUT:
-                RETVAL
-
-Uint8
-QUIT ()
-	CODE:
-		RETVAL = SDL_QUIT;
-	OUTPUT:
-		RETVAL	
-
-Uint8
-SYSWMEVENT ()
-	CODE:
-		RETVAL = SDL_SYSWMEVENT;
-	OUTPUT:
-		RETVAL	
-
-Uint8
-VIDEORESIZE ()
-	CODE:
-		RETVAL = SDL_VIDEORESIZE;
-	OUTPUT:
-		RETVAL
-
 Uint8
 EventType ( e )
 	SDL_Event *e
@@ -775,27 +571,6 @@
 		RETVAL
 
 Uint8
-APPMOUSEFOCUS ()
-	CODE:
-		RETVAL = SDL_APPMOUSEFOCUS;
-	OUTPUT:
-		RETVAL
-
-Uint8
-APPINPUTFOCUS ()
-	CODE:
-		RETVAL = SDL_APPINPUTFOCUS;
-	OUTPUT:
-		RETVAL
-
-Uint8
-APPACTIVE ()
-	CODE:
-		RETVAL = SDL_APPACTIVE;
-	OUTPUT:
-		RETVAL
-
-Uint8
 KeyEventState( e )
 	SDL_Event *e
 	CODE:
@@ -804,1180 +579,150 @@
 		RETVAL
 
 int
-SDLK_BACKSPACE ()
-	CODE:
-		RETVAL = SDLK_BACKSPACE;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_TAB ()
+KeyEventSym ( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_TAB;
+		RETVAL = e->key.keysym.sym;
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_CLEAR ()
+int 
+KeyEventMod ( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_CLEAR;
+		RETVAL = e->key.keysym.mod;
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_RETURN ()
+Uint16
+KeyEventUnicode ( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_RETURN;
+		RETVAL = e->key.keysym.unicode;
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_PAUSE ()
+Uint8
+KeyEventScanCode ( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_PAUSE;
+		RETVAL = e->key.keysym.scancode;
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_ESCAPE ()
+Uint8
+MouseMotionState ( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_ESCAPE;
-	OUTPUT:
+		RETVAL = e->motion.state;
+	OUTPUT:	
 		RETVAL
 
-int
-SDLK_SPACE ()
+Uint16
+MouseMotionX ( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_SPACE;
+		RETVAL = e->motion.x;
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_EXCLAIM ()
+Uint16
+MouseMotionY ( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_EXCLAIM;
+		RETVAL = e->motion.y;
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_QUOTEDBL ()
+Sint16
+MouseMotionXrel( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_QUOTEDBL;
+		RETVAL = e->motion.xrel;
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_HASH ()
+Sint16
+MouseMotionYrel ( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_HASH;
+		RETVAL = e->motion.yrel;
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_DOLLAR ()
+Uint8
+MouseButtonState ( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_DOLLAR;
+		RETVAL = e->button.state;
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_AMPERSAND ()
+Uint8
+MouseButton ( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_AMPERSAND;
+		RETVAL = e->button.button;
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_QUOTE ()
+Uint16
+MouseButtonX ( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_QUOTE;
+		RETVAL = e->button.x;
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_LEFTPAREN ()
+Uint16
+MouseButtonY ( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_LEFTPAREN;
+		RETVAL = e->button.y;
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_RIGHTPAREN ()
+SDL_SysWMmsg *
+SysWMEventMsg ( e )
+	SDL_Event *e
 	CODE:
-		RETVAL = SDLK_RIGHTPAREN;
+		RETVAL = e->syswm.msg;
 	OUTPUT:
 		RETVAL
 
 int
-SDLK_ASTERISK ()
+EnableUnicode ( enable )
+	int enable
 	CODE:
-		RETVAL = SDLK_ASTERISK;
+		RETVAL = SDL_EnableUNICODE(enable);
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_PLUS ()
+void
+EnableKeyRepeat ( delay, interval )
+	int delay
+	int interval
 	CODE:
-		RETVAL = SDLK_PLUS;
-	OUTPUT:
-		RETVAL
+		SDL_EnableKeyRepeat(delay,interval);
 
-int
-SDLK_COMMA ()
+Uint32
+GetModState ()
 	CODE:
-		RETVAL = SDLK_COMMA;
+		RETVAL = SDL_GetModState();
 	OUTPUT:
 		RETVAL
 
-int
-SDLK_MINUS ()
+void
+SetModState ( state )
+	Uint32 state
 	CODE:
-		RETVAL = SDLK_MINUS;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_PERIOD ()
-	CODE:
-		RETVAL = SDLK_PERIOD;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_SLASH ()
-	CODE:
-		RETVAL = SDLK_SLASH;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_0 ()
-	CODE:
-		RETVAL = SDLK_0;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_1 ()
-	CODE:
-		RETVAL = SDLK_1;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_2 ()
-	CODE:
-		RETVAL = SDLK_2;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_3 ()
-	CODE:
-		RETVAL = SDLK_3;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_4 ()
-	CODE:
-		RETVAL = SDLK_4;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_5 ()
-	CODE:
-		RETVAL = SDLK_5;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_6 ()
-	CODE:
-		RETVAL = SDLK_6;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_7 ()
-	CODE:
-		RETVAL = SDLK_7;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_8 ()
-	CODE:
-		RETVAL = SDLK_8;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_9 ()
-	CODE:
-		RETVAL = SDLK_9;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_COLON ()
-	CODE:
-		RETVAL = SDLK_COLON;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_SEMICOLON ()
-	CODE:
-		RETVAL = SDLK_SEMICOLON;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_LESS ()
-	CODE:
-		RETVAL = SDLK_LESS;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_EQUALS ()
-	CODE:
-		RETVAL = SDLK_EQUALS;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_GREATER ()
-	CODE:
-		RETVAL = SDLK_GREATER;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_QUESTION ()
-	CODE:
-		RETVAL = SDLK_QUESTION;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_AT ()
-	CODE:
-		RETVAL = SDLK_AT;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_LEFTBRACKET ()
-	CODE:
-		RETVAL = SDLK_LEFTBRACKET;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_BACKSLASH ()
-	CODE:
-		RETVAL = SDLK_BACKSLASH;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_RIGHTBRACKET ()
-	CODE:
-		RETVAL = SDLK_RIGHTBRACKET;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_CARET ()
-	CODE:
-		RETVAL = SDLK_CARET;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_UNDERSCORE ()
-	CODE:
-		RETVAL = SDLK_UNDERSCORE;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_BACKQUOTE ()
-	CODE:
-		RETVAL = SDLK_BACKQUOTE;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_a ()
-	CODE:
-		RETVAL = SDLK_a;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_b ()
-	CODE:
-		RETVAL = SDLK_b;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_c ()
-	CODE:
-		RETVAL = SDLK_c;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_d ()
-	CODE:
-		RETVAL = SDLK_d;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_e ()
-	CODE:
-		RETVAL = SDLK_e;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_f ()
-	CODE:
-		RETVAL = SDLK_f;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_g ()
-	CODE:
-		RETVAL = SDLK_g;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_h ()
-	CODE:
-		RETVAL = SDLK_h;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_i ()
-	CODE:
-		RETVAL = SDLK_i;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_j ()
-	CODE:
-		RETVAL = SDLK_j;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_k ()
-	CODE:
-		RETVAL = SDLK_k;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_l ()
-	CODE:
-		RETVAL = SDLK_l;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_m ()
-	CODE:
-		RETVAL = SDLK_m;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_n ()
-	CODE:
-		RETVAL = SDLK_n;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_o ()
-	CODE:
-		RETVAL = SDLK_o;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_p ()
-	CODE:
-		RETVAL = SDLK_p;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_q ()
-	CODE:
-		RETVAL = SDLK_q;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_r ()
-	CODE:
-		RETVAL = SDLK_r;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_s ()
-	CODE:
-		RETVAL = SDLK_s;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_t ()
-	CODE:
-		RETVAL = SDLK_t;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_u ()
-	CODE:
-		RETVAL = SDLK_u;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_v ()
-	CODE:
-		RETVAL = SDLK_v;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_w ()
-	CODE:
-		RETVAL = SDLK_w;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_x ()
-	CODE:
-		RETVAL = SDLK_x;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_y ()
-	CODE:
-		RETVAL = SDLK_y;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_z ()
-	CODE:
-		RETVAL = SDLK_z;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_DELETE ()
-	CODE:
-		RETVAL = SDLK_DELETE;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP0 ()
-	CODE:
-		RETVAL = SDLK_KP0;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP1 ()
-	CODE:
-		RETVAL = SDLK_KP1;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP2 ()
-	CODE:
-		RETVAL = SDLK_KP2;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP3 ()
-	CODE:
-		RETVAL = SDLK_KP3;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP4 ()
-	CODE:
-		RETVAL = SDLK_KP4;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP5 ()
-	CODE:
-		RETVAL = SDLK_KP5;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP6 ()
-	CODE:
-		RETVAL = SDLK_KP6;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP7 ()
-	CODE:
-		RETVAL = SDLK_KP7;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP8 ()
-	CODE:
-		RETVAL = SDLK_KP8;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP9 ()
-	CODE:
-		RETVAL = SDLK_KP9;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP_PERIOD ()
-	CODE:
-		RETVAL = SDLK_KP_PERIOD;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP_DIVIDE ()
-	CODE:
-		RETVAL = SDLK_KP_DIVIDE;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP_MULTIPLY ()
-	CODE:
-		RETVAL = SDLK_KP_MULTIPLY;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP_MINUS ()
-	CODE:
-		RETVAL = SDLK_KP_MINUS;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP_PLUS ()
-	CODE:
-		RETVAL = SDLK_KP_PLUS;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP_ENTER ()
-	CODE:
-		RETVAL = SDLK_KP_ENTER;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_KP_EQUALS ()
-	CODE:
-		RETVAL = SDLK_KP_EQUALS;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_UP ()
-	CODE:
-		RETVAL = SDLK_UP;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_DOWN ()
-	CODE:
-		RETVAL = SDLK_DOWN;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_RIGHT ()
-	CODE:
-		RETVAL = SDLK_RIGHT;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_LEFT ()
-	CODE:
-		RETVAL = SDLK_LEFT;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_INSERT ()
-	CODE:
-		RETVAL = SDLK_INSERT;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_HOME ()
-	CODE:
-		RETVAL = SDLK_HOME;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_END ()
-	CODE:
-		RETVAL = SDLK_END;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_PAGEUP ()
-	CODE:
-		RETVAL = SDLK_PAGEUP;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_PAGEDOWN ()
-	CODE:
-		RETVAL = SDLK_PAGEDOWN;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F1 ()
-	CODE:
-		RETVAL = SDLK_F1;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F2 ()
-	CODE:
-		RETVAL = SDLK_F2;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F3 ()
-	CODE:
-		RETVAL = SDLK_F3;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F4 ()
-	CODE:
-		RETVAL = SDLK_F4;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F5 ()
-	CODE:
-		RETVAL = SDLK_F5;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F6 ()
-	CODE:
-		RETVAL = SDLK_F6;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F7 ()
-	CODE:
-		RETVAL = SDLK_F7;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F8 ()
-	CODE:
-		RETVAL = SDLK_F8;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F9 ()
-	CODE:
-		RETVAL = SDLK_F9;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F10 ()
-	CODE:
-		RETVAL = SDLK_F10;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F11 ()
-	CODE:
-		RETVAL = SDLK_F11;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F12 ()
-	CODE:
-		RETVAL = SDLK_F12;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F13 ()
-	CODE:
-		RETVAL = SDLK_F13;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F14 ()
-	CODE:
-		RETVAL = SDLK_F14;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_F15 ()
-	CODE:
-		RETVAL = SDLK_F15;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_NUMLOCK ()
-	CODE:
-		RETVAL = SDLK_NUMLOCK;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_CAPSLOCK ()
-	CODE:
-		RETVAL = SDLK_CAPSLOCK;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_SCROLLOCK ()
-	CODE:
-		RETVAL = SDLK_SCROLLOCK;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_RSHIFT ()
-	CODE:
-		RETVAL = SDLK_RSHIFT;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_LSHIFT ()
-	CODE:
-		RETVAL = SDLK_LSHIFT;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_RCTRL ()
-	CODE:
-		RETVAL = SDLK_RCTRL;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_LCTRL ()
-	CODE:
-		RETVAL = SDLK_LCTRL;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_RALT ()
-	CODE:
-		RETVAL = SDLK_RALT;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_LALT ()
-	CODE:
-		RETVAL = SDLK_LALT;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_RMETA ()
-	CODE:
-		RETVAL = SDLK_RMETA;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_LMETA ()
-	CODE:
-		RETVAL = SDLK_LMETA;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_LSUPER ()
-	CODE:
-		RETVAL = SDLK_LSUPER;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_RSUPER ()
-	CODE:
-		RETVAL = SDLK_RSUPER;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_MODE ()
-	CODE:
-		RETVAL = SDLK_MODE;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_HELP ()
-	CODE:
-		RETVAL = SDLK_HELP;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_PRINT ()
-	CODE:
-		RETVAL = SDLK_PRINT;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_SYSREQ ()
-	CODE:
-		RETVAL = SDLK_SYSREQ;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_BREAK ()
-	CODE:
-		RETVAL = SDLK_BREAK;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_MENU ()
-	CODE:
-		RETVAL = SDLK_MENU;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_POWER ()
-	CODE:
-		RETVAL = SDLK_POWER;
-	OUTPUT:
-		RETVAL
-
-int
-SDLK_EURO ()
-	CODE:
-		RETVAL = SDLK_EURO;
-	OUTPUT:
-		RETVAL
-
-
-int
-KMOD_NONE ()
-	CODE:
-		RETVAL = KMOD_NONE;
-	OUTPUT:
-		RETVAL
-
-int
-KMOD_NUM ()
-	CODE:
-		RETVAL = KMOD_NUM;
-	OUTPUT:
-		RETVAL
-
-int
-KMOD_CAPS ()
-	CODE:
-		RETVAL = KMOD_CAPS;
-	OUTPUT:
-		RETVAL
-
-int
-KMOD_LCTRL ()
-	CODE:
-		RETVAL = KMOD_LCTRL;
-	OUTPUT:
-		RETVAL
-
-int
-KMOD_RCTRL ()
-	CODE:
-		RETVAL = KMOD_RCTRL;
-	OUTPUT:
-		RETVAL
-
-int
-KMOD_RSHIFT ()
-	CODE:
-		RETVAL = KMOD_RSHIFT;
-	OUTPUT:
-		RETVAL
-
-int
-KMOD_LSHIFT ()
-	CODE:
-		RETVAL = KMOD_LSHIFT;
-	OUTPUT:
-		RETVAL
-
-int
-KMOD_RALT ()
-	CODE:
-		RETVAL = KMOD_RALT;
-	OUTPUT:
-		RETVAL
-
-int
-KMOD_LALT ()
-	CODE:
-		RETVAL = KMOD_LALT;
-	OUTPUT:
-		RETVAL
-
-int
-KMOD_CTRL ()
-	CODE:
-		RETVAL = KMOD_CTRL;
-	OUTPUT:
-		RETVAL
-
-int
-KMOD_SHIFT ()
-	CODE:
-		RETVAL = KMOD_SHIFT;
-	OUTPUT:
-		RETVAL
-
-int
-KMOD_ALT ()
-	CODE:
-		RETVAL = KMOD_ALT;
-	OUTPUT:
-		RETVAL
-
-int
-KeyEventSym ( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->key.keysym.sym;
-	OUTPUT:
-		RETVAL
-
-int 
-KeyEventMod ( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->key.keysym.mod;
-	OUTPUT:
-		RETVAL
-
-Uint16
-KeyEventUnicode ( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->key.keysym.unicode;
-	OUTPUT:
-		RETVAL
-
-Uint8
-KeyEventScanCode ( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->key.keysym.scancode;
-	OUTPUT:
-		RETVAL
-
-Uint8
-MouseMotionState ( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->motion.state;
-	OUTPUT:	
-		RETVAL
-
-Uint16
-MouseMotionX ( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->motion.x;
-	OUTPUT:
-		RETVAL
-
-Uint16
-MouseMotionY ( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->motion.y;
-	OUTPUT:
-		RETVAL
-
-Sint16
-MouseMotionXrel( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->motion.xrel;
-	OUTPUT:
-		RETVAL
-
-Sint16
-MouseMotionYrel ( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->motion.yrel;
-	OUTPUT:
-		RETVAL
-
-Uint8
-MouseButtonState ( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->button.state;
-	OUTPUT:
-		RETVAL
-
-Uint8
-MouseButton ( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->button.button;
-	OUTPUT:
-		RETVAL
-
-Uint16
-MouseButtonX ( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->button.x;
-	OUTPUT:
-		RETVAL
-
-Uint16
-MouseButtonY ( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->button.y;
-	OUTPUT:
-		RETVAL
-
-SDL_SysWMmsg *
-SysWMEventMsg ( e )
-	SDL_Event *e
-	CODE:
-		RETVAL = e->syswm.msg;
-	OUTPUT:
-		RETVAL
-
-int
-EnableUnicode ( enable )
-	int enable
-	CODE:
-		RETVAL = SDL_EnableUNICODE(enable);
-	OUTPUT:
-		RETVAL
-
-void
-EnableKeyRepeat ( delay, interval )
-	int delay
-	int interval
-	CODE:
-		SDL_EnableKeyRepeat(delay,interval);
-
-Uint32
-GetModState ()
-	CODE:
-		RETVAL = SDL_GetModState();
-	OUTPUT:
-		RETVAL
-
-void
-SetModState ( state )
-	Uint32 state
-	CODE:
-		SDL_SetModState(state);
-
-char *
-GetKeyName ( sym )
-	int sym
-	CODE:
-		RETVAL = SDL_GetKeyName(sym);
-	OUTPUT:
-		RETVAL
-
-Uint8
-PRESSED ()
-	CODE:
-		RETVAL = SDL_PRESSED;
-	OUTPUT:
-		RETVAL
+		SDL_SetModState(state);
 
-Uint8
-RELEASED ()
+char *
+GetKeyName ( sym )
+	int sym
 	CODE:
-		RETVAL = SDL_RELEASED;
+		RETVAL = SDL_GetKeyName(sym);
 	OUTPUT:
 		RETVAL
 
@@ -2027,6 +772,22 @@
 
 #endif
 
+SDL_Surface*
+SurfaceCopy ( surface )
+	SDL_Surface *surface
+	CODE:
+		Uint8* pixels;
+		Uint32 size = surface->pitch * surface->format->BytesPerPixel*
+				surface->h;
+		pixels = (Uint8*)safemalloc(size);
+		memcpy(pixels,surface->pixels,size);
+		RETVAL = SDL_CreateRGBSurfaceFrom(pixels,surface->w,surface->h,
+			surface->format->BitsPerPixel, surface->pitch,
+			surface->format->Rmask, surface->format->Gmask,
+			surface->format->Bmask, surface->format->Amask);
+	OUTPUT:
+		RETVAL
+
 void
 FreeSurface ( surface )
 	SDL_Surface *surface
@@ -2461,85 +1222,6 @@
 	OUTPUT:
 		RETVAL
 
-Uint32
-SWSURFACE ()
-	CODE:
-		RETVAL = SDL_SWSURFACE;
-	OUTPUT:
-		RETVAL
-
-Uint32
-HWSURFACE ()
-	CODE:
-		RETVAL = SDL_HWSURFACE;
-	OUTPUT:
-		RETVAL
-
-Uint32
-ANYFORMAT ()
-	CODE:
-		RETVAL = SDL_ANYFORMAT;
-	OUTPUT:
-		RETVAL
-
-Uint32
-HWPALETTE ()
-	CODE:
-		RETVAL = SDL_HWPALETTE;
-	OUTPUT:
-		RETVAL
-
-Uint32
-DOUBLEBUF ()
-	CODE:
-		RETVAL = SDL_DOUBLEBUF;
-	OUTPUT:
-		RETVAL
-
-Uint32
-FULLSCREEN ()
-	CODE:
-		RETVAL = SDL_FULLSCREEN;
-	OUTPUT:
-		RETVAL
-
-
-Uint32
-ASYNCBLIT ()
-	CODE:
-		RETVAL = SDL_ASYNCBLIT;
-	OUTPUT:
-		RETVAL
-
-
-Uint32
-OPENGL ()
-	CODE:
-		RETVAL = SDL_OPENGL;
-	OUTPUT:
-		RETVAL
-
-Uint32
-OPENGLBLIT ()
-	CODE:
-		RETVAL = SDL_OPENGLBLIT;
-	OUTPUT:
-		RETVAL
-
-Uint32
-HWACCEL ()
-	CODE:
-		RETVAL = SDL_HWACCEL;
-	OUTPUT:
-		RETVAL
-
-Uint32
-RESIZABLE ()
-	CODE:
-		RETVAL = SDL_RESIZABLE;
-	OUTPUT:
-		RETVAL
-
 int
 VideoModeOK ( width, height, bpp, flags )
 	int width
@@ -2693,41 +1375,6 @@
 	OUTPUT:
 		RETVAL
 
-Uint32
-SRCCOLORKEY ()
-	CODE:
-		RETVAL = SDL_SRCCOLORKEY;
-	OUTPUT:	
-		RETVAL
-
-Uint32
-RLEACCEL ()
-	CODE:
-		RETVAL = SDL_RLEACCEL;
-	OUTPUT:
-		RETVAL
-
-Uint32
-RLEACCELOK ()
-	CODE:
-		RETVAL = SDL_RLEACCELOK;
-	OUTPUT:
-		RETVAL
-
-Uint32
-SRCALPHA ()
-	CODE:
-		RETVAL = SDL_SRCALPHA;
-	OUTPUT:
-		RETVAL
-
-Uint32
-PREALLOC ()
-	CODE:
-		RETVAL = SDL_PREALLOC;
-	OUTPUT:
-		RETVAL
-
 int
 SetAlpha ( surface, flag, alpha )
 	SDL_Surface *surface
@@ -2919,48 +1566,6 @@
 	CODE:
 		safefree(spec);
 
-Uint16
-AUDIO_U8 ()
-	CODE:
-		RETVAL = AUDIO_U8;
-	OUTPUT: 
-		RETVAL
-
-Uint16
-AUDIO_S8 ()
-	CODE:
-		RETVAL = AUDIO_S8;
-	OUTPUT: 
-		RETVAL
-
-Uint16
-AUDIO_U16 ()
-	CODE:
-		RETVAL = AUDIO_U16;
-	OUTPUT: 
-		RETVAL
-
-Uint16
-AUDIO_S16 ()
-	CODE:
-		RETVAL = AUDIO_S16;
-	OUTPUT: 
-		RETVAL
-
-Uint16
-AUDIO_U16MSB ()
-	CODE:
-		RETVAL = AUDIO_U16MSB;
-	OUTPUT: 
-		RETVAL
-
-Uint16
-AUDIO_S16MSB ()
-	CODE:
-		RETVAL = AUDIO_S16MSB;
-	OUTPUT: 
-		RETVAL
-
 SDL_AudioCVT *
 NewAudioCVT ( src_format, src_channels, src_rate, dst_format, dst_channels, dst_rate)
 	Uint16 src_format
@@ -3014,27 +1619,6 @@
 	OUTPUT:
 		RETVAL
 
-Uint32
-AUDIO_STOPPED ()
-	CODE:
-		RETVAL = SDL_AUDIO_STOPPED;
-	OUTPUT:
-		RETVAL
-
-Uint32
-AUDIO_PAUSED ()
-	CODE:
-		RETVAL = SDL_AUDIO_PAUSED;
-	OUTPUT:
-		RETVAL 
-
-Uint32
-AUDIO_PLAYING ()
-	CODE:
-		RETVAL = SDL_AUDIO_PLAYING;
-	OUTPUT:
-		RETVAL 
-
 void
 PauseAudio ( p_on )
 	int p_on
@@ -3080,6 +1664,8 @@
 error:
 	OUTPUT:
 		RETVAL
+	
+#ifdef HAVE_SDL_MIXER
 
 void
 MixAudio ( dst, src, len, volume )
@@ -3091,64 +1677,6 @@
 		SDL_MixAudio(dst,src,len,volume);
 
 int
-MIX_MAXVOLUME ()
-	CODE:
-		RETVAL = SDL_MIX_MAXVOLUME;
-	OUTPUT:
-		RETVAL
-
-#ifdef HAVE_SDL_MIXER
-	
-int
-MIX_MAX_VOLUME ()
-	CODE:
-		RETVAL = MIX_MAX_VOLUME;
-	OUTPUT:
-		RETVAL
-
-int
-MIX_DEFAULT_FREQUENCY ()
-	CODE:
-		RETVAL = MIX_DEFAULT_FREQUENCY;
-	OUTPUT:
-		RETVAL
-
-Uint16
-MIX_DEFAULT_FORMAT ()
-	CODE:
-		RETVAL = MIX_DEFAULT_FORMAT;
-	OUTPUT:	
-		RETVAL
-
-int
-MIX_DEFAULT_CHANNELS ()
-	CODE:
-		RETVAL = MIX_DEFAULT_CHANNELS;
-	OUTPUT:
-		RETVAL
-
-Mix_Fading
-MIX_NO_FADING ()
-	CODE:
-		RETVAL = MIX_NO_FADING;
-	OUTPUT:	
-		RETVAL
-
-Mix_Fading
-MIX_FADING_OUT ()
-	CODE:
-		RETVAL = MIX_FADING_OUT;
-	OUTPUT:
-		RETVAL
-
-Mix_Fading
-MIX_FADING_IN ()
-	CODE:
-		RETVAL = MIX_FADING_IN;
-	OUTPUT:
-		RETVAL
-
-int
 MixOpenAudio ( frequency, format, channels, chunksize )
 	int frequency
 	Uint16 format
@@ -3574,114 +2102,22 @@
 		
 #endif
 
-int
-GLLoadLibrary ( path )
-	char *path
-	CODE:
-		RETVAL = SDL_GL_LoadLibrary(path);
-	OUTPUT:
-		RETVAL
-
-void*
-GLGetProcAddress ( proc )
-	char *proc
-	CODE:
-		RETVAL = SDL_GL_GetProcAddress(proc);
-	OUTPUT:
-		RETVAL
-
-Uint32
-GL_RED_SIZE ()
-	CODE:
-		RETVAL = SDL_GL_RED_SIZE;
-	OUTPUT:
-		RETVAL
-
-Uint32
-GL_GREEN_SIZE ()
-	CODE:
-		RETVAL = SDL_GL_GREEN_SIZE;
-	OUTPUT:
-		RETVAL
-
-Uint32
-GL_BLUE_SIZE ()
-	CODE:
-		RETVAL = SDL_GL_BLUE_SIZE;
-	OUTPUT:
-		RETVAL
-
-
-Uint32
-GL_ALPHA_SIZE ()
-	CODE:
-		RETVAL = SDL_GL_ALPHA_SIZE;
-	OUTPUT:
-		RETVAL
-
-
-Uint32
-GL_ACCUM_RED_SIZE ()
-	CODE:
-		RETVAL = SDL_GL_ACCUM_RED_SIZE;
-	OUTPUT:
-		RETVAL
-
-
-Uint32
-GL_ACCUM_GREEN_SIZE ()
-	CODE:
-		RETVAL = SDL_GL_ACCUM_GREEN_SIZE;
-	OUTPUT:
-		RETVAL
-
-Uint32
-GL_ACCUM_BLUE_SIZE ()
-	CODE:
-		RETVAL = SDL_GL_ACCUM_BLUE_SIZE;
-	OUTPUT:
-		RETVAL
-
-
-Uint32
-GL_ACCUM_ALPHA_SIZE ()
-	CODE:
-		RETVAL = SDL_GL_ACCUM_ALPHA_SIZE;
-	OUTPUT:
-		RETVAL
-
-
-
-Uint32
-GL_BUFFER_SIZE ()
-	CODE:
-		RETVAL = SDL_GL_BUFFER_SIZE;
-	OUTPUT:
-		RETVAL
-
-Uint32
-GL_DEPTH_SIZE ()
-	CODE:
-		RETVAL = SDL_GL_DEPTH_SIZE;
-	OUTPUT:
-		RETVAL
-
-Uint32
-GL_STENCIL_SIZE ()
+int
+GLLoadLibrary ( path )
+	char *path
 	CODE:
-		RETVAL = SDL_GL_STENCIL_SIZE;
+		RETVAL = SDL_GL_LoadLibrary(path);
 	OUTPUT:
 		RETVAL
 
-
-Uint32
-GL_DOUBLEBUFFER ()
+void*
+GLGetProcAddress ( proc )
+	char *proc
 	CODE:
-		RETVAL = SDL_GL_DOUBLEBUFFER;
+		RETVAL = SDL_GL_GetProcAddress(proc);
 	OUTPUT:
 		RETVAL
 
-
 int
 GLSetAttribute ( attr,  value )
 	int        attr
@@ -3838,7 +2274,7 @@
 	CODE:
 		SDL_JoystickClose(joystick);
 
-Uint8
+Sint16
 JoyAxisEventWhich ( e )
 	SDL_Event *e
 	CODE:
@@ -4006,20 +2442,6 @@
 	CODE:
 		safefree(ip);
 
-Uint32
-INADDR_ANY ()
-	CODE:
-		RETVAL = INADDR_ANY;
-	OUTPUT:
-		RETVAL
-
-Uint32
-INADDR_NONE ()
-	CODE:
-		RETVAL = INADDR_NONE;
-	OUTPUT:
-		RETVAL
-
 char*
 NetResolveIP ( address )
 	IPaddress *address
@@ -4332,34 +2754,6 @@
 		RETVAL
 
 int
-TTF_STYLE_NORMAL ()
-	CODE:
-		RETVAL = TTF_STYLE_NORMAL;
-	OUTPUT:
-		RETVAL
-
-int
-TTF_STYLE_BOLD ()
-	CODE:
-		RETVAL = TTF_STYLE_BOLD;
-	OUTPUT:
-		RETVAL
-
-int
-TTF_STYLE_ITALIC ()
-	CODE:
-		RETVAL = TTF_STYLE_ITALIC;
-	OUTPUT:
-		RETVAL
-
-int
-TTF_STYLE_UNDERLINE ()
-	CODE:
-		RETVAL = TTF_STYLE_UNDERLINE;
-	OUTPUT:
-		RETVAL
-
-int
 TTFGetFontStyle ( font )
 	TTF_Font *font
 	CODE:
@@ -4683,69 +3077,6 @@
 	OUTPUT:
 		RETVAL
 
-int
-TTF_TEXT_SHADED ()
-	CODE:
-		RETVAL = TEXT_SHADED;
-	OUTPUT:
-		RETVAL
-
-int
-TTF_TEXT_SOLID ()
-	CODE:
-		RETVAL = TEXT_SOLID;
-	OUTPUT:
-		RETVAL
-
-int
-TTF_TEXT_BLENDED ()
-	CODE:
-		RETVAL = TEXT_BLENDED;
-	OUTPUT:
-		RETVAL
-
-int
-TTF_UTF8_SHADED ()
-	CODE:
-		RETVAL = UTF8_SHADED;
-	OUTPUT:
-		RETVAL
-
-int
-TTF_UTF8_SOLID ()
-	CODE:
-		RETVAL = UTF8_SOLID;
-	OUTPUT:
-		RETVAL
-
-int
-TTF_UTF8_BLENDED ()
-	CODE:
-		RETVAL = UTF8_BLENDED;
-	OUTPUT:
-		RETVAL
-
-int
-TTF_UNICODE_SHADED ()
-	CODE:
-		RETVAL = UNICODE_SHADED;
-	OUTPUT:
-		RETVAL
-
-int
-TTF_UNICODE_SOLID ()
-	CODE:
-		RETVAL = UNICODE_SOLID;
-	OUTPUT:
-		RETVAL
-
-int
-TTF_UNICODE_BLENDED ()
-	CODE:
-		RETVAL = UNICODE_BLENDED;
-	OUTPUT:
-		RETVAL
-
 #endif
 
 SDL_Overlay*
@@ -4789,41 +3120,6 @@
                 SDL_FreeYUVOverlay ( overlay );
 
 Uint32
-YV12_OVERLAY ()
-	CODE:
-		RETVAL = SDL_YV12_OVERLAY ;
-	OUTPUT:
-		RETVAL
-
-Uint32
-IYUV_OVERLAY  ()
-	CODE:
-		RETVAL = SDL_IYUV_OVERLAY ; 
-	OUTPUT:
-		RETVAL
-
-Uint32
-YUY2_OVERLAY ()
-	CODE:
-		RETVAL = SDL_YUY2_OVERLAY;
-	OUTPUT:
-		RETVAL
-
-Uint32
-UYVY_OVERLAY ()
-	CODE:
-		RETVAL = SDL_UYVY_OVERLAY;
-	OUTPUT:
-		RETVAL
-
-Uint32
-YVYU_OVERLAY () 
-	CODE:
-		RETVAL = SDL_YVYU_OVERLAY; 
-	OUTPUT:
-		RETVAL
-	
-Uint32
 OverlayFormat ( overlay, ... )
 	SDL_Overlay *overlay
 	CODE:
@@ -4903,27 +3199,6 @@
 	OUTPUT:
 		RETVAL
 
-Uint32
-GRAB_QUERY ()
-	CODE:
-		RETVAL = SDL_GRAB_QUERY;
-	OUTPUT:
-		RETVAL
-
-Uint32
-GRAB_ON ()
-	CODE:
-		RETVAL = SDL_GRAB_ON;
-	OUTPUT:
-		RETVAL
-
-Uint32
-GRAB_OFF ()
-        CODE:
-                RETVAL = SDL_GRAB_OFF;
-        OUTPUT:
-                RETVAL
-
 int
 WMIconifyWindow ()
 	CODE:
@@ -4956,69 +3231,6 @@
 		RETVAL
 
 Uint32
-HAT_CENTERED ()
-        CODE:
-                RETVAL = SDL_HAT_CENTERED;
-        OUTPUT:
-                RETVAL
-
-Uint32
-HAT_UP ()
-        CODE:
-                RETVAL = SDL_HAT_UP;
-        OUTPUT:
-                RETVAL
-
-Uint32
-HAT_RIGHT ()
-        CODE:
-                RETVAL = SDL_HAT_RIGHT;
-        OUTPUT:
-                RETVAL
-
-Uint32
-HAT_DOWN ()
-        CODE:
-                RETVAL = SDL_HAT_DOWN;
-        OUTPUT:
-                RETVAL
-
-Uint32
-HAT_LEFT ()
-        CODE:
-                RETVAL = SDL_HAT_LEFT;
-        OUTPUT:
-                RETVAL
-
-Uint32
-HAT_RIGHTUP ()
-        CODE:
-                RETVAL = SDL_HAT_RIGHTUP;
-        OUTPUT:
-                RETVAL
-
-Uint32
-HAT_RIGHTDOWN ()
-        CODE:
-                RETVAL = SDL_HAT_RIGHTDOWN;
-        OUTPUT:
-                RETVAL
-
-Uint32
-HAT_LEFTUP ()
-        CODE:
-                RETVAL = SDL_HAT_LEFTUP;
-        OUTPUT:
-                RETVAL
-
-Uint32
-HAT_LEFTDOWN ()
-        CODE:
-                RETVAL = SDL_HAT_LEFTDOWN;
-        OUTPUT:
-                RETVAL
-
-Uint32
 GetKeyState ( k )
 	SDLKey k
 	CODE:
@@ -5122,27 +3334,6 @@
 	CODE:
 		SMPEG_pause(mpeg);
 
-int
-SMPEG_PLAYING ()
-	CODE:
-		RETVAL = SMPEG_PLAYING;
-	OUTPUT:
-		RETVAL
-
-int
-SMPEG_STOPPED ()
-	CODE:
-		RETVAL = SMPEG_STOPPED;
-	OUTPUT:
-		RETVAL
-
-int
-SMPEG_ERROR ()
-	CODE:
-		RETVAL = SMPEG_ERROR;
-	OUTPUT:
-		RETVAL
-
 #endif
 
 #ifdef HAVE_SDL_GFX
@@ -5829,6 +4020,119 @@
 	ConsoleInformation* console;
 	CODE:
 		 CON_ListCommands(console);
+
+#endif
+
+#ifdef HAVE_SDL_SOUND
+
+Uint16
+SoundAudioInfoFormat ( audioinfo )
+	Sound_AudioInfo* audioinfo
+	CODE:
+		RETVAL = audioinfo->format;
+	OUTPUT:
+		RETVAL
+
+Uint8
+SoundAudioInfoChannels ( audioinfo )
+	Sound_AudioInfo* audioinfo
+	CODE:
+		RETVAL = audioinfo->channels;
+	OUTPUT:
+		RETVAL
+
+Uint32
+SoundAudioInforate ( audioinfo )
+	Sound_AudioInfo* audioinfo
+	CODE:
+		RETVAL = audioinfo->rate;
+	OUTPUT:
+		RETVAL
+
+AV*
+SoundDecoderInfoExtensions ( decoderinfo )
+	Sound_DecoderInfo* decoderinfo
+	CODE:
+		char **ext;
+		for ( ext = decoderinfo->extensions; *ext != NULL; ext++ ){
+			av_push(RETVAL,sv_2mortal(newSVpv(*ext,0)));
+		}
+	OUTPUT:
+		RETVAL
+
+char*
+SoundDecoderInfoDescription ( decoderinfo )
+	Sound_DecoderInfo* decoderinfo
+	CODE:
+		RETVAL = decoderinfo->description;
+	OUTPUT:
+		RETVAL
+
+char*
+SoundDecoderInfoAuthor ( decoderinfo )
+	Sound_DecoderInfo* decoderinfo
+	CODE:
+		RETVAL = decoderinfo->author;
+	OUTPUT:
+		RETVAL
+
+char*
+SoundDecoderInfoUrl ( decoderinfo )
+	Sound_DecoderInfo* decoderinfo
+	CODE:
+		RETVAL = decoderinfo->url;
+	OUTPUT:
+		RETVAL
+
+const Sound_DecoderInfo*
+SoundSampleDecoder ( sample ) 
+	Sound_Sample* sample
+	CODE:
+		RETVAL = sample->decoder;
+	OUTPUT:
+		RETVAL
+
+Sound_AudioInfo* 
+SoundSampleDesired ( sample )
+	Sound_Sample* sample
+	CODE:
+		RETVAL = &sample->desired;
+	OUTPUT:
+		RETVAL
+
+Sound_AudioInfo*
+SoundSampleAcutal ( sample )
+	Sound_Sample* sample
+	CODE:
+		RETVAL = &sample->actual;
+	OUTPUT:
+		RETVAL
+
+char*
+SoundSampleBuffer ( sample )
+	Sound_Sample* sample
+	CODE:
+		RETVAL = sample->buffer;
+	OUTPUT:
+		RETVAL
+
+Uint32
+SoundSampleBufferSize ( sample )
+	Sound_Sample* sample
+	CODE:
+		RETVAL = sample->buffer;
+	OUTPUT:
+		RETVAL
+
+Uint32
+SoundSampleFlags ( sample )
+	Sound_Sample* sample
+	CODE:
+		RETVAL = (Uint32)sample->flags;
+	OUTPUT:
+		RETVAL
+
+
 
 #endif
 
--- SDL_perl-1.20.0/lib/SDL/App.pm	Fri Jan  3 06:14:56 2003
+++ SDL_perl-1.20.2/lib/SDL/App.pm	Fri Mar 21 18:43:17 2003
@@ -5,27 +5,18 @@
 #	Copyright (C) 2000,2002 David J. Goehrig
 
 package SDL::App;
-use strict;
-use vars qw(@ISA);
 
+use strict;
+use Exporter;
 use SDL;
 use SDL::Surface;
 use SDL::Event;
 
-@ISA = qw(SDL::Surface Exporter);
-
+our @ISA = qw(SDL::Surface Exporter);
 
 BEGIN {
-	use Exporter();
-	use vars qw(@EXPORT);
-	@EXPORT = qw(
-		     &SDL_TEXTWIDTH 
-		     &SDL_GRAB_QUERY
-		     &SDL_GRAB_ON 
-		     &SDL_GRAB_OFF 
-		    );
-
-};	
+	our @EXPORT = qw/ &SDL_TEXTWIDTH /;
+};
 
 sub new {
 	my $proto = shift;
@@ -41,17 +32,15 @@
 				-double_buffer -db -buffer_size -bs -stencil_size -st
 		/ ) if ($SDL::DEBUG);
 
-	SDL::Init(SDL::INIT_EVERYTHING());
+	SDL::Init(SDL_INIT_EVERYTHING());
 	
-	my $self = {};
-
 	my $t = $options{-title} 	|| $options{-t} 	|| $0;
 	my $it = $options{-icon_title} 	|| $options{-it} 	|| $t;
 	my $ic = $options{-icon} 	|| $options{-i}		|| "";
 	my $w = $options{-width} 	|| $options{-w}		|| 800;
 	my $h = $options{-height} 	|| $options{-h}		|| 600;
 	my $d = $options{-depth} 	|| $options{-d}		|| 16;
-	my $f = $options{-flags} 	|| $options{-f}		|| SDL::ANYFORMAT();
+	my $f = $options{-flags} 	|| $options{-f}		|| SDL_ANYFORMAT();
 	my $r = $options{-red_size}	|| $options{-r}		|| 5;
 	my $g = $options{-green_size}	|| $options{-g}		|| 5;
 	my $b = $options{-blue_size}	|| $options{-b}		|| 5;
@@ -69,29 +58,29 @@
 	$f |= SDL_RESIZABLE() if ($options{-resizeable});
 
 	if ($f & SDL_OPENGL()) { 
-		$$self{-opengl} = 1; 
-
-		SDL::GLSetAttribute(SDL::GL_RED_SIZE(),$r) if ($r);	
-		SDL::GLSetAttribute(SDL::GL_GREEN_SIZE(),$g) if ($g);	
-		SDL::GLSetAttribute(SDL::GL_BLUE_SIZE(),$b) if ($b);	
-		SDL::GLSetAttribute(SDL::GL_ALPHA_SIZE(),$a) if ($a);	
-
-		SDL::GLSetAttribute(SDL::GL_RED_ACCUM_SIZE(),$ras) if ($ras);	
-		SDL::GLSetAttribute(SDL::GL_GREEN_ACCUM_SIZE(),$gas) if ($gas);	
-		SDL::GLSetAttribute(SDL::GL_BLUE_ACCUM_SIZE(),$bas) if ($bas);	
-		SDL::GLSetAttribute(SDL::GL_ALPHA_ACCUM_SIZE(),$aas) if ($aas);	
+		$SDL::App::USING_OPENGL = 1;
+		SDL::GLSetAttribute(SDL_GL_RED_SIZE(),$r) if ($r);	
+		SDL::GLSetAttribute(SDL_GL_GREEN_SIZE(),$g) if ($g);	
+		SDL::GLSetAttribute(SDL_GL_BLUE_SIZE(),$b) if ($b);	
+		SDL::GLSetAttribute(SDL_GL_ALPHA_SIZE(),$a) if ($a);	
+
+		SDL::GLSetAttribute(SDL_GL_RED_ACCUM_SIZE(),$ras) if ($ras);	
+		SDL::GLSetAttribute(SDL_GL_GREEN_ACCUM_SIZE(),$gas) if ($gas);	
+		SDL::GLSetAttribute(SDL_GL_ALPHA_ACCUM_SIZE(),$aas) if ($aas);	
 		
-		SDL::GLSetAttribute(SDL::GL_DOUBLEBUFFER(),$db) if ($db);
-		SDL::GLSetAttribute(SDL::GL_BUFFER_SIZE(),$bs) if ($bs);
-		SDL::GLSetAttribute(SDL::GL_DEPTH_SIZE(),$d);
+		SDL::GLSetAttribute(SDL_GL_DOUBLEBUFFER(),$db) if ($db);
+		SDL::GLSetAttribute(SDL_GL_BUFFER_SIZE(),$bs) if ($bs);
+		SDL::GLSetAttribute(SDL_GL_DEPTH_SIZE(),$d);
+	} else {
+		$SDL::App::USING_OPENGL = 0;
 	}
 
-	($$self{-surface} = SDL::SetVideoMode($w,$h,$d,$f)) 
+	my $self = \SDL::SetVideoMode($w,$h,$d,$f)
 		or die SDL::GetError();
 	
 	if ($ic and -e $ic) {
 	   my $icon = new SDL::Surface -name => $ic;
-	   SDL::WMSetIcon($$icon{-surface});	   
+	   SDL::WMSetIcon($$icon);	   
 	}
 
 	SDL::WMSetCaption($t,$it);
@@ -102,10 +91,10 @@
 
 sub resize ($$$) {
 	my ($self,$w,$h) = @_;
-	my $flags = SDL::SurfaceFlags($$self{-surface});
+	my $flags = SDL::SurfaceFlags($$self);
 	if ( $flags & SDL_RESIZABLE()) {
-		my $bpp = SDL::SurfaceBitsPerPixel($$self{-surface});
-		$$self{-surface} = SDL::SetVideoMode($w,$h,$bpp,$flags);
+		my $bpp = SDL::SurfaceBitsPerPixel($$self);
+		$self = \SDL::SetVideoMode($w,$h,$bpp,$flags);
 	}
 }
 
@@ -141,7 +130,7 @@
 
 sub fullscreen ($) {
 	my $self = shift;
-	SDL::WMToggleFullScreen($self->{-surface});
+	SDL::WMToggleFullScreen($$self);
 }
 
 sub iconify ($) {
@@ -167,7 +156,7 @@
 
 sub sync ($) {
 	my $self = shift;
-	if ($self->{-opengl}) {
+	if ($SDL::App::USING_OPENGL) {
 		SDL::GLSwapBuffers()
 	} else {
 		$self->flip();
@@ -176,7 +165,7 @@
 
 sub attribute ($$;$) {
 	my ($self,$mode,$value) = @_;
-	return undef unless ($self->{-opengl});
+	return undef unless ($SDL::App::USING_OPENGL);
 	if (defined $value) {
 		SDL::GLSetAttribute($mode,$value);
 	}
@@ -189,17 +178,6 @@
 	return SDL::TextWidth(join('',@_));
 }
 
-sub SDL_GRAB_QUERY {
-	return SDL::GRAB_QUERY;
-}
-
-sub SDL_GRAB_ON {
-	return SDL::GRAB_ON;
-}
-
-sub SDL_GRAB_OFF {
-	return SDL::GRAB_OFF;
-}
 
 1;
 
@@ -228,10 +206,6 @@
 =head1 EXPORTS
 
 	SDL_TEXTWIDTH 
-	SDL_GRAB_QUERY
-	SDL_GRAB_ON 
-	SDL_GRAB_OFF 
-
 
 =head1 METHODS
 
diff -ruN SDL_perl-1.20.0/lib/SDL/Color.pm SDL_perl-1.20.2/lib/SDL/Color.pm
--- SDL_perl-1.20.0/lib/SDL/Color.pm	Wed Jan  1 20:25:19 2003
+++ SDL_perl-1.20.2/lib/SDL/Color.pm	Wed Mar 12 06:58:46 2003
@@ -2,77 +2,72 @@
 #
 #	A package for manipulating SDL_Color *
 #
-#	Copyright (C) 2002 David J. Goehrig
+#	Copyright (C) 2003 David J. Goehrig
 
 package SDL::Color;
 use strict;
 use SDL;
 
-use vars qw/ $white $black $red $green $blue  /;
-
 sub new {
 	my $proto = shift;
 	my $class = ref($proto) || $proto;
-	my $self = {};
+	my $self;
+
 	my (%options) = @_;
 
-	verify (%options, qw/ -color -surface -pixel -r -g -b /) if ($SDL::DEBUG);
+	verify (%options, qw/ -color -surface -pixel -r -g -b /) if $SDL::DEBUG;
 
 	if ($options{-color}) {
-		$self->{-color} = $options{-color};	
-		$self->{-r} = SDL::ColorR($$self{-color});
-		$self->{-g} = SDL::ColorG($$self{-color});
-		$self->{-b} = SDL::ColorB($$self{-color});
+		$self = \$options{-color};	
 	} elsif ($options{-pixel} && $options{-surface}) {
-		$options{-surface} = $options{-surface}{-surface} 
-			if ( ref($options{-surface}) && $options{-surface}->isa("SDL::Surface"));
-		($self->{-r},$self->{-g},$self->{-b}) = SDL::GetRGB($options{-surface},
-								$options{-pixel});
-		$self->{-color} = SDL::NewColor($self->{-r},$self->{-g},$self->{-b});
+		die "SDL::Color::new requires an SDL::Surface"
+			unless !$SDL::DEBUG || $options{-surface}->isa("SDL::Surface");
+		$self = \SDL::NewColor(SDL::GetRGB(${$options{-surface}}, $options{-pixel}));
 	} else {
-		$self->{-r} = $options{-red}	|| $options{-r} || 0;
-		$self->{-g} = $options{-green}	|| $options{-g} || 0;
-		$self->{-b} = $options{-blue}	|| $options{-b} || 0;
-		$self->{-color} = SDL::NewColor($self->{-r},$self->{-g},$self->{-b});
+		my @color;
+		push @color, $options{-red}	|| $options{-r} || 0;
+		push @color, $options{-green}	|| $options{-g} || 0;
+		push @color, $options{-blue}	|| $options{-b} || 0;
+		$self = \SDL::NewColor(@color);
 	} 
 	die "Could not create color, ", SDL::GetError(), "\n"
-		unless ($self->{-color});
+		unless ($$self);
 	bless $self,$class;
 	return $self;
 }
 
 sub DESTROY {
-	my $self = shift;
-	SDL::FreeColor($self->{-color});
+	SDL::FreeColor(${$_[0]});
 }
 
 sub r {
 	my $self = shift;
-	return SDL::ColorR($self->{-color},@_);	
+	SDL::ColorR($$self,@_);	
 }
 
 sub g {
 	my $self = shift;
-	return SDL::ColorG($self->{-color},@_);
+	SDL::ColorG($$self,@_);
 }
 
 sub b {
 	my $self = shift;
-	return SDL::ColorB($self->{-color},@_);
+	SDL::ColorB($$self,@_);
 }
 
 sub pixel {
-	my ($self,$surface) = @_;
-	$surface = $$surface{-surface} if (ref($surface) && $surface->isa("SDL::Surface"));
-	return SDL::MapRGB($surface,$self->{-r},$self->{-g},$self->{-b});
+	die "SDL::Color::pixel requires an SDL::Surface"
+		unless !$SDL::DEBUG || $_[1]->isa("SDL::Surface");
+	SDL::MapRGB(${$_[1]},$_[0]->r(),$_[0]->g(),$_[0]->b());
 }
 
-$white = new SDL::Color -r => 0xff, -g => 0xff, -b => 0xff;
-$black = new SDL::Color -r => 0x0, -g => 0x0, -b => 0x0;
-$red = new SDL::Color -r => 0xff, -g => 0x0, -b => 0x0;
-$green = new SDL::Color -r => 0x0, -g => 0xff, -b => 0x0;
-$blue = new SDL::Color -r => 0x0, -g => 0x0, -b => 0xff;
-
+$SDL::Color::black = new SDL::Color -r => 0, -g => 0, -b => 0;
+$SDL::Color::white = new SDL::Color -r => 255, -g => 255, -b => 255;
+$SDL::Color::red = new SDL::Color -r => 255, -g => 0, -b => 0;
+$SDL::Color::blue = new SDL::Color -r => 0, -g => 0, -b => 255;
+$SDL::Color::green = new SDL::Color -r => 0, -g => 255, -b => 0;
+$SDL::Color::purple = new SDL::Color -r => 255, -g => 0, -b => 255;
+$SDL::Color::yellow = new SDL::Color -r => 255, -g => 255, -b => 0;
 
 1;
 
@@ -93,44 +88,7 @@
 =head1 DESCRIPTION
 
 C<SDL::Color> is a wrapper for display format independent color
-representations. 
-
-=head2 new ( -color =>  )
-
-C<SDL::Color::new> with the C<-color> option allows one to create
-a new color object from a pre-existing SDL_Color*.  This constructor
-will set the internal color state to mirror that of the specified color.
-This object will deallocate the color object upon completion.  This is
-not suitable for color that exist as part of another object.
-
-=head2 new ( -r => 0xff, -g => 0xff, -b => 0xff )
-
-C<SDL::Color::new> with the C<-r,-g,-b> options will populate a new
-color object with the corresponding composite values.
-
-=head2 new ( -surface => , -pixel => )
-
-C<SDL::Color::new> with a SDL::Surface and a Uint32 pixel value can also
-be used to generate SDL::Color objects.  Like as with the C<-color> option
-C<-surface,-pixel> will set the internal state to reflect the color values
-given the SDL::Surface's palette and color format.
-
-=head2 r ( [ red ] )
-
-C<SDL::Color::r> sets and fetches the red component of the color object
-
-=head2 g ( [ green ] )
-
-C<SDL::Color::g> sets and fetches the green component of the color object
-
-=head2 b ( [ blue ] )
-
-C<SDL::Color::b> sets and fetches the blue component of the color object
-
-=head2 pixel ()
-
-C<SDL::Color::pixel> returns the Uint32 color value of the given color
-in the format of the provided surface.
+representations, with the same interface as L<SDL::Color>.  
 
 =head1 AUTHOR
 
diff -ruN SDL_perl-1.20.0/lib/SDL/Constants.pm SDL_perl-1.20.2/lib/SDL/Constants.pm
--- SDL_perl-1.20.0/lib/SDL/Constants.pm	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/lib/SDL/Constants.pm	Fri Mar 21 18:52:47 2003
@@ -0,0 +1,334 @@
+# SDL::Event
+#
+# This is an automatically generated file, don't bother editing
+#
+# Copyright (C) 2003 David J. Goehrig <dave@sdlperl.org>
+#
+
+package SDL::Event;
+
+
+require Exporter;
+use strict;
+use vars qw/$VERSION @ISA @EXPORT/;
+@ISA = qw/Exporter/;
+
+sub import { SDL::Event->export_to_level(1, @_); }
+
+@EXPORT = qw/
+	AUDIO_S16 AUDIO_S16MSB AUDIO_S8 AUDIO_U16 AUDIO_U16MSB AUDIO_U8 
+	CD_ERROR CD_PAUSED CD_PLAYING CD_STOPPED CD_TRAYEMPTY INADDR_ANY 
+	INADDR_NONE KMOD_ALT KMOD_CAPS KMOD_CTRL KMOD_LALT KMOD_LCTRL 
+	KMOD_LSHIFT KMOD_NONE KMOD_NUM KMOD_RALT KMOD_RCTRL KMOD_RSHIFT 
+	KMOD_SHIFT MIX_DEFAULT_CHANNELS MIX_DEFAULT_FORMAT 
+	MIX_DEFAULT_FREQUENCY MIX_FADING_IN MIX_FADING_OUT MIX_MAX_VOLUME 
+	MIX_NO_FADING SDLK_0 SDLK_1 SDLK_2 SDLK_3 SDLK_4 SDLK_5 SDLK_6 SDLK_7 
+	SDLK_8 SDLK_9 SDLK_AMPERSAND SDLK_ASTERISK SDLK_AT SDLK_BACKQUOTE 
+	SDLK_BACKSLASH SDLK_BACKSPACE SDLK_BREAK SDLK_CAPSLOCK SDLK_CARET 
+	SDLK_CLEAR SDLK_COLON SDLK_COMMA SDLK_DELETE SDLK_DOLLAR SDLK_DOWN 
+	SDLK_END SDLK_EQUALS SDLK_ESCAPE SDLK_EURO SDLK_EXCLAIM SDLK_F1 
+	SDLK_F10 SDLK_F11 SDLK_F12 SDLK_F13 SDLK_F14 SDLK_F15 SDLK_F2 SDLK_F3 
+	SDLK_F4 SDLK_F5 SDLK_F6 SDLK_F7 SDLK_F8 SDLK_F9 SDLK_GREATER 
+	SDLK_HASH SDLK_HELP SDLK_HOME SDLK_INSERT SDLK_KP0 SDLK_KP1 SDLK_KP2 
+	SDLK_KP3 SDLK_KP4 SDLK_KP5 SDLK_KP6 SDLK_KP7 SDLK_KP8 SDLK_KP9 
+	SDLK_KP_DIVIDE SDLK_KP_ENTER SDLK_KP_EQUALS SDLK_KP_MINUS 
+	SDLK_KP_MULTIPLY SDLK_KP_PERIOD SDLK_KP_PLUS SDLK_LALT SDLK_LCTRL 
+	SDLK_LEFT SDLK_LEFTBRACKET SDLK_LEFTPAREN SDLK_LESS SDLK_LMETA 
+	SDLK_LSHIFT SDLK_LSUPER SDLK_MENU SDLK_MINUS SDLK_MODE SDLK_NUMLOCK 
+	SDLK_PAGEDOWN SDLK_PAGEUP SDLK_PAUSE SDLK_PERIOD SDLK_PLUS SDLK_POWER 
+	SDLK_PRINT SDLK_QUESTION SDLK_QUOTE SDLK_QUOTEDBL SDLK_RALT 
+	SDLK_RCTRL SDLK_RETURN SDLK_RIGHT SDLK_RIGHTBRACKET SDLK_RIGHTPAREN 
+	SDLK_RMETA SDLK_RSHIFT SDLK_RSUPER SDLK_SCROLLOCK SDLK_SEMICOLON 
+	SDLK_SLASH SDLK_SPACE SDLK_SYSREQ SDLK_TAB SDLK_UNDERSCORE SDLK_UP 
+	SDLK_a SDLK_b SDLK_c SDLK_d SDLK_e SDLK_f SDLK_g SDLK_h SDLK_i SDLK_j 
+	SDLK_k SDLK_l SDLK_m SDLK_n SDLK_o SDLK_p SDLK_q SDLK_r SDLK_s SDLK_t 
+	SDLK_u SDLK_v SDLK_w SDLK_x SDLK_y SDLK_z SDL_ACTIVEEVENT 
+	SDL_ANYFORMAT SDL_APPACTIVE SDL_APPINPUTFOCUS SDL_APPMOUSEFOCUS 
+	SDL_ASYNCBLIT SDL_AUDIO_PAUSED SDL_AUDIO_PLAYING SDL_AUDIO_STOPPED 
+	SDL_DOUBLEBUF SDL_ENABLE SDL_FULLSCREEN SDL_GL_ACCUM_ALPHA_SIZE 
+	SDL_GL_ACCUM_BLUE_SIZE SDL_GL_ACCUM_GREEN_SIZE SDL_GL_ACCUM_RED_SIZE 
+	SDL_GL_ALPHA_SIZE SDL_GL_BLUE_SIZE SDL_GL_BUFFER_SIZE 
+	SDL_GL_DEPTH_SIZE SDL_GL_DOUBLEBUFFER SDL_GL_GREEN_SIZE 
+	SDL_GL_RED_SIZE SDL_GL_STENCIL_SIZE SDL_GRAB_OFF SDL_GRAB_ON 
+	SDL_GRAB_QUERY SDL_HAT_CENTERED SDL_HAT_DOWN SDL_HAT_LEFT 
+	SDL_HAT_LEFTDOWN SDL_HAT_LEFTUP SDL_HAT_RIGHT SDL_HAT_RIGHTDOWN 
+	SDL_HAT_RIGHTUP SDL_HAT_UP SDL_HWACCEL SDL_HWPALETTE SDL_HWSURFACE 
+	SDL_IGNORE SDL_INIT_AUDIO SDL_INIT_CDROM SDL_INIT_EVERYTHING 
+	SDL_INIT_JOYSTICK SDL_INIT_NOPARACHUTE SDL_INIT_TIMER SDL_INIT_VIDEO 
+	SDL_IYUV_OVERLAY SDL_JOYAXISMOTION SDL_JOYBALLMOTION 
+	SDL_JOYBUTTONDOWN SDL_JOYBUTTONUP SDL_JOYHATMOTION SDL_KEYDOWN 
+	SDL_KEYUP SDL_MIX_MAXVOLUME SDL_MOUSEBUTTONDOWN SDL_MOUSEBUTTONUP 
+	SDL_MOUSEMOTION SDL_OPENGL SDL_OPENGLBLIT SDL_PREALLOC SDL_PRESSED 
+	SDL_QUERY SDL_QUIT SDL_RELEASED SDL_RESIZABLE SDL_RLEACCEL 
+	SDL_RLEACCELOK SDL_SRCALPHA SDL_SRCCOLORKEY SDL_SWSURFACE 
+	SDL_SYSWMEVENT SDL_UYVY_OVERLAY SDL_VIDEORESIZE SDL_YUY2_OVERLAY 
+	SDL_YV12_OVERLAY SDL_YVYU_OVERLAY SMPEG_ERROR SMPEG_PLAYING 
+	SMPEG_STOPPED TEXT_BLENDED TEXT_SHADED TEXT_SOLID TTF_STYLE_BOLD 
+	TTF_STYLE_ITALIC TTF_STYLE_NORMAL TTF_STYLE_UNDERLINE UNICODE_BLENDED 
+	UNICODE_SHADED UNICODE_SOLID UTF8_BLENDED UTF8_SHADED  /;
+
+
+
+sub SDLK_INSERT { 277 }
+sub SDL_INIT_VIDEO { 32 }
+sub SDLK_AMPERSAND { 38 }
+sub SDL_AUDIO_PAUSED { 2 }
+sub UNICODE_BLENDED { 256 }
+sub SDLK_COMMA { 44 }
+sub KMOD_LSHIFT { 1 }
+sub SDLK_LSUPER { 311 }
+sub SDLK_EURO { 321 }
+sub SDL_JOYAXISMOTION { 7 }
+sub SDL_PRESSED { 1 }
+sub SDL_DOUBLEBUF { 1073741824 }
+sub SDL_GL_ACCUM_BLUE_SIZE { 10 }
+sub KMOD_SHIFT { 3 }
+sub SDLK_QUOTE { 39 }
+sub SDLK_a { 97 }
+sub SDL_AUDIO_STOPPED { 0 }
+sub SDLK_b { 98 }
+sub SDLK_c { 99 }
+sub SDLK_d { 100 }
+sub SDLK_e { 101 }
+sub SMPEG_PLAYING { 1 }
+sub SDL_GRAB_ON { 1 }
+sub SDLK_f { 102 }
+sub SDLK_g { 103 }
+sub SDLK_h { 104 }
+sub SDL_HAT_RIGHT { 2 }
+sub SDLK_i { 105 }
+sub SDLK_j { 106 }
+sub SDLK_PERIOD { 46 }
+sub SDL_HWPALETTE { 536870912 }
+sub SDLK_k { 107 }
+sub SDLK_l { 108 }
+sub TEXT_SHADED { 2 }
+sub SDLK_m { 109 }
+sub SDLK_n { 110 }
+sub SDLK_o { 111 }
+sub SDLK_p { 112 }
+sub SDLK_q { 113 }
+sub SDLK_r { 114 }
+sub SDL_MOUSEMOTION { 4 }
+sub SDLK_s { 115 }
+sub SDLK_t { 116 }
+sub SDL_RELEASED { 0 }
+sub SDL_GL_BLUE_SIZE { 2 }
+sub SDLK_u { 117 }
+sub SDLK_v { 118 }
+sub SDLK_w { 119 }
+sub SDLK_x { 120 }
+sub SDLK_SYSREQ { 317 }
+sub SDLK_y { 121 }
+sub SDLK_z { 122 }
+sub SDLK_SLASH { 47 }
+sub SDLK_ASTERISK { 42 }
+sub KMOD_NONE { 0 }
+sub SDLK_CARET { 94 }
+sub CD_ERROR { -1 }
+sub SDLK_UNDERSCORE { 95 }
+sub SDL_PREALLOC { 16777216 }
+sub KMOD_CTRL { 192 }
+sub MIX_NO_FADING { 0 }
+sub SDLK_QUESTION { 63 }
+sub SDL_QUERY { -1 }
+sub SDL_IYUV_OVERLAY { 1448433993 }
+sub SDLK_BREAK { 318 }
+sub SDL_APPINPUTFOCUS { 2 }
+sub SDLK_LEFTBRACKET { 91 }
+sub SDL_ACTIVEEVENT { 1 }
+sub TTF_STYLE_ITALIC { 2 }
+sub SMPEG_ERROR { -1 }
+sub SDLK_KP_DIVIDE { 267 }
+sub SDL_FULLSCREEN { -2147483648 }
+sub SDL_HAT_CENTERED { 0 }
+sub SDL_GL_ACCUM_GREEN_SIZE { 9 }
+sub SDL_YVYU_OVERLAY { 1431918169 }
+sub SDL_JOYBUTTONUP { 11 }
+sub SDLK_GREATER { 62 }
+sub AUDIO_U16MSB { 4112 }
+sub AUDIO_U16 { 16 }
+sub SDLK_RETURN { 13 }
+sub SDLK_KP_PERIOD { 266 }
+sub SDLK_BACKSPACE { 8 }
+sub SDL_ANYFORMAT { 268435456 }
+sub SDL_ENABLE { 1 }
+sub SDL_KEYUP { 3 }
+sub SDL_AUDIO_PLAYING { 1 }
+sub SDL_HAT_RIGHTDOWN { 6 }
+sub SDLK_ESCAPE { 27 }
+sub SDL_GL_ALPHA_SIZE { 3 }
+sub SDL_ASYNCBLIT { 4 }
+sub MIX_DEFAULT_FREQUENCY { 22050 }
+sub MIX_DEFAULT_CHANNELS { 2 }
+sub SDLK_LEFTPAREN { 40 }
+sub SDL_GRAB_OFF { 0 }
+sub KMOD_CAPS { 8192 }
+sub UTF8_BLENDED { 32 }
+sub SDL_MOUSEBUTTONUP { 6 }
+sub SDLK_HASH { 35 }
+sub SDL_HAT_RIGHTUP { 3 }
+sub SDL_SWSURFACE { 0 }
+sub AUDIO_S16MSB { 36880 }
+sub SDL_INIT_CDROM { 256 }
+sub SDL_HAT_UP { 1 }
+sub SDL_INIT_EVERYTHING { 65535 }
+sub SDLK_DOLLAR { 36 }
+sub KMOD_RCTRL { 128 }
+sub SDLK_RIGHTBRACKET { 93 }
+sub SDL_YUY2_OVERLAY { 844715353 }
+sub SDL_HWSURFACE { 1 }
+sub SDL_HWACCEL { 256 }
+sub SDLK_AT { 64 }
+sub SDL_GL_STENCIL_SIZE { 7 }
+sub SDLK_KP_PLUS { 270 }
+sub SDLK_LALT { 308 }
+sub SDLK_PAGEDOWN { 281 }
+sub SDL_INIT_TIMER { 1 }
+sub SDLK_RSHIFT { 303 }
+sub CD_STOPPED { 1 }
+sub SDL_KEYDOWN { 2 }
+sub INADDR_ANY { 0 }
+sub SDL_GL_DEPTH_SIZE { 6 }
+sub CD_PAUSED { 3 }
+sub SDL_OPENGLBLIT { 10 }
+sub SDLK_END { 279 }
+sub SDL_INIT_AUDIO { 16 }
+sub SDL_MOUSEBUTTONDOWN { 5 }
+sub SDL_IGNORE { 0 }
+sub KMOD_LALT { 256 }
+sub SDLK_KP_MULTIPLY { 268 }
+sub SDLK_RIGHTPAREN { 41 }
+sub SDL_INIT_NOPARACHUTE { 1048576 }
+sub SDLK_CLEAR { 12 }
+sub SDLK_TAB { 9 }
+sub MIX_FADING_OUT { 1 }
+sub SDL_MIX_MAXVOLUME { 128 }
+sub SDL_SRCCOLORKEY { 4096 }
+sub SDLK_SPACE { 32 }
+sub SDLK_NUMLOCK { 300 }
+sub SDL_OPENGL { 2 }
+sub UNICODE_SHADED { 128 }
+sub SDL_YV12_OVERLAY { 842094169 }
+sub KMOD_LCTRL { 64 }
+sub SDL_UYVY_OVERLAY { 1498831189 }
+sub AUDIO_S8 { 32776 }
+sub SDL_JOYBUTTONDOWN { 10 }
+sub SDLK_RCTRL { 305 }
+sub SDL_QUIT { 12 }
+sub MIX_DEFAULT_FORMAT { 32784 }
+sub SDLK_CAPSLOCK { 301 }
+sub INADDR_NONE { -1 }
+sub SDLK_HOME { 278 }
+sub SDLK_SEMICOLON { 59 }
+sub MIX_FADING_IN { 2 }
+sub CD_TRAYEMPTY { 0 }
+sub SDLK_EQUALS { 61 }
+sub SDLK_RMETA { 309 }
+sub SDLK_HELP { 315 }
+sub SDLK_LESS { 60 }
+sub SDL_GL_ACCUM_RED_SIZE { 8 }
+sub SDL_GL_RED_SIZE { 0 }
+sub SDLK_POWER { 320 }
+sub SDLK_F1 { 282 }
+sub CD_PLAYING { 2 }
+sub SDLK_F2 { 283 }
+sub SDL_GL_ACCUM_ALPHA_SIZE { 11 }
+sub SDLK_F3 { 284 }
+sub SDLK_F4 { 285 }
+sub SDLK_F5 { 286 }
+sub SDLK_PLUS { 43 }
+sub TTF_STYLE_BOLD { 1 }
+sub SDLK_F6 { 287 }
+sub SDL_RLEACCELOK { 8192 }
+sub SDLK_F7 { 288 }
+sub SDLK_F8 { 289 }
+sub SDLK_F9 { 290 }
+sub SDLK_QUOTEDBL { 34 }
+sub KMOD_RSHIFT { 2 }
+sub SDLK_RSUPER { 312 }
+sub SDL_JOYBALLMOTION { 8 }
+sub SDL_APPMOUSEFOCUS { 1 }
+sub SDLK_PRINT { 316 }
+sub SDLK_F10 { 291 }
+sub SDLK_F11 { 292 }
+sub SDLK_MENU { 319 }
+sub SDLK_F12 { 293 }
+sub SDLK_F13 { 294 }
+sub SDLK_F14 { 295 }
+sub SDLK_RALT { 307 }
+sub SDLK_F15 { 296 }
+sub AUDIO_U8 { 8 }
+sub SDLK_UP { 273 }
+sub UTF8_SHADED { 16 }
+sub SDLK_LSHIFT { 304 }
+sub SDLK_KP0 { 256 }
+sub SDLK_BACKQUOTE { 96 }
+sub SDLK_KP1 { 257 }
+sub SDLK_KP2 { 258 }
+sub SDLK_KP3 { 259 }
+sub SDLK_KP4 { 260 }
+sub SDLK_KP5 { 261 }
+sub SDLK_RIGHT { 275 }
+sub SDLK_KP6 { 262 }
+sub SDLK_KP7 { 263 }
+sub SDLK_KP8 { 264 }
+sub SDLK_KP9 { 265 }
+sub SDL_HAT_LEFTDOWN { 12 }
+sub SDL_SYSWMEVENT { 13 }
+sub TEXT_BLENDED { 4 }
+sub SDL_GL_BUFFER_SIZE { 4 }
+sub SDLK_SCROLLOCK { 302 }
+sub SDLK_DOWN { 274 }
+sub SDLK_MINUS { 45 }
+sub SDLK_BACKSLASH { 92 }
+sub SDL_HAT_DOWN { 4 }
+sub SDLK_LEFT { 276 }
+sub SMPEG_STOPPED { 0 }
+sub SDLK_EXCLAIM { 33 }
+sub KMOD_RALT { 512 }
+sub SDL_GL_GREEN_SIZE { 1 }
+sub SDLK_LCTRL { 306 }
+sub SDL_GL_DOUBLEBUFFER { 5 }
+sub SDL_HAT_LEFT { 8 }
+sub SDL_SRCALPHA { 65536 }
+sub SDLK_PAUSE { 19 }
+sub KMOD_ALT { 768 }
+sub MIX_MAX_VOLUME { 128 }
+sub UTF8_SOLID { 8 }
+sub SDL_HAT_LEFTUP { 9 }
+sub SDLK_LMETA { 310 }
+sub SDL_APPACTIVE { 4 }
+sub SDL_RLEACCEL { 16384 }
+sub SDL_RESIZABLE { 16 }
+sub AUDIO_S16 { 32784 }
+sub SDLK_KP_EQUALS { 272 }
+sub SDL_JOYHATMOTION { 9 }
+sub UNICODE_SOLID { 64 }
+sub SDL_GRAB_QUERY { -1 }
+sub SDLK_KP_ENTER { 271 }
+sub SDL_INIT_JOYSTICK { 512 }
+sub TEXT_SOLID { 1 }
+sub SDLK_DELETE { 127 }
+sub TTF_STYLE_UNDERLINE { 4 }
+sub SDL_VIDEORESIZE { 16 }
+sub KMOD_NUM { 4096 }
+sub SDLK_0 { 48 }
+sub SDLK_1 { 49 }
+sub SDLK_2 { 50 }
+sub SDLK_3 { 51 }
+sub SDLK_4 { 52 }
+sub SDLK_5 { 53 }
+sub SDLK_6 { 54 }
+sub SDLK_PAGEUP { 280 }
+sub SDLK_7 { 55 }
+sub SDLK_8 { 56 }
+sub SDLK_9 { 57 }
+sub SDLK_COLON { 58 }
+sub SDLK_KP_MINUS { 269 }
+sub TTF_STYLE_NORMAL { 0 }
+sub SDLK_MODE { 313 }
+
+
+1;
+
diff -ruN SDL_perl-1.20.0/lib/SDL/Event.pm SDL_perl-1.20.2/lib/SDL/Event.pm
--- SDL_perl-1.20.0/lib/SDL/Event.pm	Thu Jan  2 05:30:14 2003
+++ SDL_perl-1.20.2/lib/SDL/Event.pm	Fri Mar 21 18:37:42 2003
@@ -10,86 +10,7 @@
 package SDL::Event;
 use strict;
 use SDL;
-
-BEGIN {
-	use Exporter();
-	use vars qw(@EXPORT @ISA);
-	@ISA = qw(Exporter);
-	@EXPORT = qw(&SDL_IGNORE &SDL_ENABLE &SDL_QUERY
-			&SDL_ACTIVEEVENT &SDL_KEYDOWN &SDL_KEYUP
-			&SDL_MOUSEMOTION &SDL_MOUSEBUTTONDOWN 
-			&SDL_MOUSEBUTTONUP &SDL_QUIT &SDL_SYSWMEVENT
-			&SDL_APPMOUSEFOCUS &SDL_APPINPUTFOCUS 
-			&SDL_APPACTIVE &SDL_PRESSED &SDL_RELEASED
-			&SDL_VIDEORESIZE
-			&SDLK_BACKSPACE &SDLK_TAB &SDLK_CLEAR 
-			&SDLK_RETURN &SDLK_PAUSE &SDLK_ESCAPE 
-			&SDLK_SPACE &SDLK_EXCLAIM &SDLK_QUOTEDBL 
-			&SDLK_HASH &SDLK_DOLLAR &SDLK_AMPERSAND 
-			&SDLK_QUOTE &SDLK_LEFTPAREN &SDLK_RIGHTPAREN 
-			&SDLK_ASTERISK &SDLK_PLUS &SDLK_COMMA 
-			&SDLK_MINUS &SDLK_PERIOD &SDLK_SLASH 
-			&SDLK_0 &SDLK_1 &SDLK_2 
-			&SDLK_3 &SDLK_4 &SDLK_5 
-			&SDLK_6 &SDLK_7 &SDLK_8 
-			&SDLK_9 &SDLK_COLON &SDLK_SEMICOLON 
-			&SDLK_LESS &SDLK_EQUALS &SDLK_GREATER 
-			&SDLK_QUESTION &SDLK_AT &SDLK_LEFTBRACKET 
-			&SDLK_BACKSLASH &SDLK_RIGHTBRACKET &SDLK_CARET 
-			&SDLK_UNDERSCORE &SDLK_BACKQUOTE &SDLK_a 
-			&SDLK_b &SDLK_c &SDLK_d 
-			&SDLK_e &SDLK_f &SDLK_g 
-			&SDLK_h &SDLK_i &SDLK_j 
-			&SDLK_k &SDLK_l &SDLK_m 
-			&SDLK_n &SDLK_o &SDLK_p 
-			&SDLK_q &SDLK_r &SDLK_s 
-			&SDLK_t &SDLK_u &SDLK_v 
-			&SDLK_w &SDLK_x &SDLK_y 
-			&SDLK_z &SDLK_DELETE &SDLK_KP0 
-			&SDLK_KP1 &SDLK_KP2 &SDLK_KP3 
-			&SDLK_KP4 &SDLK_KP5 &SDLK_KP6 
-			&SDLK_KP7 &SDLK_KP8 &SDLK_KP9 
-			&SDLK_KP_PERIOD &SDLK_KP_DIVIDE &SDLK_KP_MULTIPLY 
-			&SDLK_KP_MINUS &SDLK_KP_PLUS &SDLK_KP_ENTER 
-			&SDLK_KP_EQUALS &SDLK_UP &SDLK_DOWN 
-			&SDLK_RIGHT &SDLK_LEFT &SDLK_INSERT 
-			&SDLK_HOME &SDLK_END &SDLK_PAGEUP 
-			&SDLK_PAGEDOWN &SDLK_F1 &SDLK_F2 
-			&SDLK_F3 &SDLK_F4 &SDLK_F5 
-			&SDLK_F6 &SDLK_F7 &SDLK_F8 
-			&SDLK_F9 &SDLK_F10 &SDLK_F11 
-			&SDLK_F12 &SDLK_F13 &SDLK_F14 
-			&SDLK_F15 &SDLK_NUMLOCK &SDLK_CAPSLOCK 
-			&SDLK_SCROLLOCK &SDLK_RSHIFT &SDLK_LSHIFT 
-			&SDLK_RCTRL &SDLK_LCTRL &SDLK_RALT 
-			&SDLK_LALT &SDLK_RMETA &SDLK_LMETA 
-			&SDLK_LSUPER &SDLK_RSUPER &SDLK_MODE 
-			&SDLK_HELP &SDLK_PRINT &SDLK_SYSREQ 
-			&SDLK_BREAK &SDLK_MENU &SDLK_POWER 
-			&SDLK_EURO &KMOD_NONE &KMOD_NUM 
-			&KMOD_CAPS &KMOD_LCTRL &KMOD_RCTRL 
-			&KMOD_RSHIFT &KMOD_LSHIFT &KMOD_RALT 
-			&KMOD_LALT &KMOD_CTRL &KMOD_SHIFT 
-			&KMOD_ALT); 
-	}
-
-sub SDL_IGNORE { return SDL::IGNORE(); }
-sub SDL_ENABLE { return SDL::ENABLE(); }
-sub SDL_QUERY { return SDL::QUERY(); }
-sub SDL_ACTIVEEVENT { return SDL::ACTIVEEVENT(); }
-sub SDL_KEYDOWN { return SDL::KEYDOWN(); }
-sub SDL_KEYUP { return SDL::KEYUP(); }
-sub SDL_MOUSEMOTION { return SDL::MOUSEMOTION(); }
-sub SDL_MOUSEBUTTONDOWN { return SDL::MOUSEBUTTONDOWN(); }
-sub SDL_MOUSEBUTTONUP { return SDL::MOUSEBUTTONUP(); }
-sub SDL_QUIT { return SDL::QUIT(); }
-sub SDL_SYSWMEVENT { return SDL::SYSWMEVENT(); }
-sub SDL_APPMOUSEFOCUS { return SDL::APPMOUSEFOCUS(); }
-sub SDL_APPINPUTFOCUS { return SDL::APPINPUTFOCUS(); }
-sub SDL_APPACTIVE { return SDL::APPACTIVE(); }
-sub SDL_PRESSED { return SDL::PRESSED(); }
-sub SDL_RELEASED { return SDL::RELEASED(); }
-sub SDL_VIDEORESIZE { return SDL::VIDEORESIZE(); }
+use SDL::Constants;	# whoever uses us, will get the constants
 
 sub new {
 	my $proto = shift;
@@ -229,153 +150,16 @@
 	return SDL::MouseButton($self->{-event});
 }
 
+sub resize_w {
+	my $self = shift;
+	SDL::ResizeEventW($$self{-event});
+}
+
+sub resize_h {
+	my $self = shift;
+	SDL::ResizeEventH($$self{-event});
+}
 
-sub SDLK_BACKSPACE { return SDL::SDLK_BACKSPACE(); }
-sub SDLK_TAB { return SDL::SDLK_TAB(); }
-sub SDLK_CLEAR { return SDL::SDLK_CLEAR(); }
-sub SDLK_RETURN { return SDL::SDLK_RETURN(); }
-sub SDLK_PAUSE { return SDL::SDLK_PAUSE(); }
-sub SDLK_ESCAPE { return SDL::SDLK_ESCAPE(); }
-sub SDLK_SPACE { return SDL::SDLK_SPACE(); }
-sub SDLK_EXCLAIM { return SDL::SDLK_EXCLAIM(); }
-sub SDLK_QUOTEDBL { return SDL::SDLK_QUOTEDBL(); }
-sub SDLK_HASH { return SDL::SDLK_HASH(); }
-sub SDLK_DOLLAR { return SDL::SDLK_DOLLAR(); }
-sub SDLK_AMPERSAND { return SDL::SDLK_AMPERSAND(); }
-sub SDLK_QUOTE { return SDL::SDLK_QUOTE(); }
-sub SDLK_LEFTPAREN { return SDL::SDLK_LEFTPAREN(); }
-sub SDLK_RIGHTPAREN { return SDL::SDLK_RIGHTPAREN(); }
-sub SDLK_ASTERISK { return SDL::SDLK_ASTERISK(); }
-sub SDLK_PLUS { return SDL::SDLK_PLUS(); }
-sub SDLK_COMMA { return SDL::SDLK_COMMA(); }
-sub SDLK_MINUS { return SDL::SDLK_MINUS(); }
-sub SDLK_PERIOD { return SDL::SDLK_PERIOD(); }
-sub SDLK_SLASH { return SDL::SDLK_SLASH(); }
-sub SDLK_0 { return SDL::SDLK_0(); }
-sub SDLK_1 { return SDL::SDLK_1(); }
-sub SDLK_2 { return SDL::SDLK_2(); }
-sub SDLK_3 { return SDL::SDLK_3(); }
-sub SDLK_4 { return SDL::SDLK_4(); }
-sub SDLK_5 { return SDL::SDLK_5(); }
-sub SDLK_6 { return SDL::SDLK_6(); }
-sub SDLK_7 { return SDL::SDLK_7(); }
-sub SDLK_8 { return SDL::SDLK_8(); }
-sub SDLK_9 { return SDL::SDLK_9(); }
-sub SDLK_COLON { return SDL::SDLK_COLON(); }
-sub SDLK_SEMICOLON { return SDL::SDLK_SEMICOLON(); }
-sub SDLK_LESS { return SDL::SDLK_LESS(); }
-sub SDLK_EQUALS { return SDL::SDLK_EQUALS(); }
-sub SDLK_GREATER { return SDL::SDLK_GREATER(); }
-sub SDLK_QUESTION { return SDL::SDLK_QUESTION(); }
-sub SDLK_AT { return SDL::SDLK_AT(); }
-sub SDLK_LEFTBRACKET { return SDL::SDLK_LEFTBRACKET(); }
-sub SDLK_BACKSLASH { return SDL::SDLK_BACKSLASH(); }
-sub SDLK_RIGHTBRACKET { return SDL::SDLK_RIGHTBRACKET(); }
-sub SDLK_CARET { return SDL::SDLK_CARET(); }
-sub SDLK_UNDERSCORE { return SDL::SDLK_UNDERSCORE(); }
-sub SDLK_BACKQUOTE { return SDL::SDLK_BACKQUOTE(); }
-sub SDLK_a { return SDL::SDLK_a(); }
-sub SDLK_b { return SDL::SDLK_b(); }
-sub SDLK_c { return SDL::SDLK_c(); }
-sub SDLK_d { return SDL::SDLK_d(); }
-sub SDLK_e { return SDL::SDLK_e(); }
-sub SDLK_f { return SDL::SDLK_f(); }
-sub SDLK_g { return SDL::SDLK_g(); }
-sub SDLK_h { return SDL::SDLK_h(); }
-sub SDLK_i { return SDL::SDLK_i(); }
-sub SDLK_j { return SDL::SDLK_j(); }
-sub SDLK_k { return SDL::SDLK_k(); }
-sub SDLK_l { return SDL::SDLK_l(); }
-sub SDLK_m { return SDL::SDLK_m(); }
-sub SDLK_n { return SDL::SDLK_n(); }
-sub SDLK_o { return SDL::SDLK_o(); }
-sub SDLK_p { return SDL::SDLK_p(); }
-sub SDLK_q { return SDL::SDLK_q(); }
-sub SDLK_r { return SDL::SDLK_r(); }
-sub SDLK_s { return SDL::SDLK_s(); }
-sub SDLK_t { return SDL::SDLK_t(); }
-sub SDLK_u { return SDL::SDLK_u(); }
-sub SDLK_v { return SDL::SDLK_v(); }
-sub SDLK_w { return SDL::SDLK_w(); }
-sub SDLK_x { return SDL::SDLK_x(); }
-sub SDLK_y { return SDL::SDLK_y(); }
-sub SDLK_z { return SDL::SDLK_z(); }
-sub SDLK_DELETE { return SDL::SDLK_DELETE(); }
-sub SDLK_KP0 { return SDL::SDLK_KP0(); }
-sub SDLK_KP1 { return SDL::SDLK_KP1(); }
-sub SDLK_KP2 { return SDL::SDLK_KP2(); }
-sub SDLK_KP3 { return SDL::SDLK_KP3(); }
-sub SDLK_KP4 { return SDL::SDLK_KP4(); }
-sub SDLK_KP5 { return SDL::SDLK_KP5(); }
-sub SDLK_KP6 { return SDL::SDLK_KP6(); }
-sub SDLK_KP7 { return SDL::SDLK_KP7(); }
-sub SDLK_KP8 { return SDL::SDLK_KP8(); }
-sub SDLK_KP9 { return SDL::SDLK_KP9(); }
-sub SDLK_KP_PERIOD { return SDL::SDLK_KP_PERIOD(); }
-sub SDLK_KP_DIVIDE { return SDL::SDLK_KP_DIVIDE(); }
-sub SDLK_KP_MULTIPLY { return SDL::SDLK_KP_MULTIPLY(); }
-sub SDLK_KP_MINUS { return SDL::SDLK_KP_MINUS(); }
-sub SDLK_KP_PLUS { return SDL::SDLK_KP_PLUS(); }
-sub SDLK_KP_ENTER { return SDL::SDLK_KP_ENTER(); }
-sub SDLK_KP_EQUALS { return SDL::SDLK_KP_EQUALS(); }
-sub SDLK_UP { return SDL::SDLK_UP(); }
-sub SDLK_DOWN { return SDL::SDLK_DOWN(); }
-sub SDLK_RIGHT { return SDL::SDLK_RIGHT(); }
-sub SDLK_LEFT { return SDL::SDLK_LEFT(); }
-sub SDLK_INSERT { return SDL::SDLK_INSERT(); }
-sub SDLK_HOME { return SDL::SDLK_HOME(); }
-sub SDLK_END { return SDL::SDLK_END(); }
-sub SDLK_PAGEUP { return SDL::SDLK_PAGEUP(); }
-sub SDLK_PAGEDOWN { return SDL::SDLK_PAGEDOWN(); }
-sub SDLK_F1 { return SDL::SDLK_F1(); }
-sub SDLK_F2 { return SDL::SDLK_F2(); }
-sub SDLK_F3 { return SDL::SDLK_F3(); }
-sub SDLK_F4 { return SDL::SDLK_F4(); }
-sub SDLK_F5 { return SDL::SDLK_F5(); }
-sub SDLK_F6 { return SDL::SDLK_F6(); }
-sub SDLK_F7 { return SDL::SDLK_F7(); }
-sub SDLK_F8 { return SDL::SDLK_F8(); }
-sub SDLK_F9 { return SDL::SDLK_F9(); }
-sub SDLK_F10 { return SDL::SDLK_F10(); }
-sub SDLK_F11 { return SDL::SDLK_F11(); }
-sub SDLK_F12 { return SDL::SDLK_F12(); }
-sub SDLK_F13 { return SDL::SDLK_F13(); }
-sub SDLK_F14 { return SDL::SDLK_F14(); }
-sub SDLK_F15 { return SDL::SDLK_F15(); }
-sub SDLK_NUMLOCK { return SDL::SDLK_NUMLOCK(); }
-sub SDLK_CAPSLOCK { return SDL::SDLK_CAPSLOCK(); }
-sub SDLK_SCROLLOCK { return SDL::SDLK_SCROLLOCK(); }
-sub SDLK_RSHIFT { return SDL::SDLK_RSHIFT(); }
-sub SDLK_LSHIFT { return SDL::SDLK_LSHIFT(); }
-sub SDLK_RCTRL { return SDL::SDLK_RCTRL(); }
-sub SDLK_LCTRL { return SDL::SDLK_LCTRL(); }
-sub SDLK_RALT { return SDL::SDLK_RALT(); }
-sub SDLK_LALT { return SDL::SDLK_LALT(); }
-sub SDLK_RMETA { return SDL::SDLK_RMETA(); }
-sub SDLK_LMETA { return SDL::SDLK_LMETA(); }
-sub SDLK_LSUPER { return SDL::SDLK_LSUPER(); }
-sub SDLK_RSUPER { return SDL::SDLK_RSUPER(); }
-sub SDLK_MODE { return SDL::SDLK_MODE(); }
-sub SDLK_HELP { return SDL::SDLK_HELP(); }
-sub SDLK_PRINT { return SDL::SDLK_PRINT(); }
-sub SDLK_SYSREQ { return SDL::SDLK_SYSREQ(); }
-sub SDLK_BREAK { return SDL::SDLK_BREAK(); }
-sub SDLK_MENU { return SDL::SDLK_MENU(); }
-sub SDLK_POWER { return SDL::SDLK_POWER(); }
-sub SDLK_EURO { return SDL::SDLK_EURO(); }
-
-sub KMOD_NONE { return SDL::MOD_NONE(); }
-sub KMOD_NUM { return SDL::MOD_NUM(); }
-sub KMOD_CAPS { return SDL::MOD_CAPS(); }
-sub KMOD_LCTRL { return SDL::MOD_LCTRL(); }
-sub KMOD_RCTRL { return SDL::MOD_RCTRL(); }
-sub KMOD_RSHIFT { return SDL::MOD_RSHIFT(); }
-sub KMOD_LSHIFT { return SDL::MOD_LSHIFT(); }
-sub KMOD_RALT { return SDL::MOD_RALT(); }
-sub KMOD_LALT { return SDL::MOD_LALT(); }
-sub KMOD_CTRL { return SDL::MOD_CTRL(); }
-sub KMOD_SHIFT { return SDL::MOD_SHIFT(); }
-sub KMOD_ALT { return SDL::MOD_ALT(); }
 
 1;
 
@@ -565,13 +349,43 @@
 
 =head2 button_state()
 
-Returns the state of the mouse buttons.
+Returns the state of the mouse buttons, C<SDL::PRESSED>, C<SDL_RELEASED>.
 
 =head2 button_x()
 
+Returns the x position within the application window that the button was activated in
+
 =head2 button_y()
 
+Returns the y position within the application window that the button was activated in
+
 =head2 button()
+
+Returns the numeric id of the button pushed.
+
+=over 4
+
+=item 1
+
+left
+
+=item 2
+
+middle
+
+=item 3
+
+right
+
+=back
+
+=head2 resize_w()
+
+Returns the width of the resized window.
+
+=head2 resize_h()
+
+Returns the height of the resized window.
 
 =head1 AUTHOR
 
diff -ruN SDL_perl-1.20.0/lib/SDL/Mixer.pm SDL_perl-1.20.2/lib/SDL/Mixer.pm
--- SDL_perl-1.20.0/lib/SDL/Mixer.pm	Wed Jan  1 22:00:07 2003
+++ SDL_perl-1.20.2/lib/SDL/Mixer.pm	Fri Mar 21 18:49:30 2003
@@ -7,32 +7,12 @@
 package SDL::Mixer;
 use strict;
 use SDL;
+use SDL::Event;
 require SDL::Music;
 require SDL::Sound;
 
-BEGIN {
-	use Exporter();
-	use vars qw(@EXPORT @ISA);
-	@ISA = qw(Exporter);
-	@EXPORT = qw(&MIX_MAX_VOLUME &MIX_DEFAULT_FREQUENCY &MIX_DEFAULT_FORMAT
-			&MIX_DEFAULT_CHANNELS &MIX_NO_FADING &MIX_FADING_OUT
-			&MIX_FADING_IN &AUDIO_U8 &AUDIO_S8 &AUDIO_U16 
-			&AUDIO_S16 &AUDIO_U16MSB &AUDIO_S16MSB );
-}
-
-sub MIX_MAX_VOLUME { return SDL::MIX_MAX_VOLUME(); }
-sub MIX_DEFAULT_FREQUENCY { return SDL::MIX_DEFAULT_FREQUENCY(); }
-sub MIX_DEFAULT_FORMAT { return SDL::MIX_DEFAULT_FORMAT(); }
-sub MIX_DEFAULT_CHANNELS { return SDL::MIX_DEFAULT_CHANNELS(); }
-sub MIX_NO_FADING { return SDL::MIX_NO_FADING(); }
-sub MIX_FADING_OUT { return SDL::MIX_FADING_OUT(); }
-sub MIX_FADING_IN { return SDL::MIX_FADING_IN(); }
-sub AUDIO_U8 { return SDL::AUDIO_U8(); }
-sub AUDIO_S8 { return SDL::AUDIO_S8(); }
-sub AUDIO_U16 { return SDL::AUDIO_U16(); }
-sub AUDIO_S16 { return SDL::AUDIO_S16(); }
-sub AUDIO_U16MSB { return SDL::AUDIO_U16MSB(); }
-sub AUDIO_S16MSB { return SDL::AUDIO_S16MSB(); }
+#BEGIN {
+#}
 
 $SDL::Mixer::initialized = 0;
 
@@ -41,9 +21,9 @@
 	my $class = ref($proto) || $proto;
 	my $self = {};
 	my %options = @_;
-	my $frequency = $options{-frequency} || $options{-rate} || MIX_DEFAULT_FREQUENCY();
-	my $format = $options{-format} || MIX_DEFAULT_FORMAT();
-	my $channels = $options{-channels} || MIX_DEFAULT_CHANNELS();
+	my $frequency = $options{-frequency} || $options{-rate} || MIX_DEFAULT_FREQUENCY;
+	my $format = $options{-format} || MIX_DEFAULT_FORMAT;
+	my $channels = $options{-channels} || MIX_DEFAULT_CHANNELS;
 	my $size = $options{-size} || 4096;
 	unless ( $SDL::Mixer::initialized ) {
 		SDL::MixOpenAudio($frequency,$format,$channels,$size ) && 
diff -ruN SDL_perl-1.20.0/lib/SDL/OpenGL/Constants.pm SDL_perl-1.20.2/lib/SDL/OpenGL/Constants.pm
--- SDL_perl-1.20.0/lib/SDL/OpenGL/Constants.pm	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/lib/SDL/OpenGL/Constants.pm	Fri Mar 21 18:52:48 2003
@@ -0,0 +1,1089 @@
+# SDL::OpenGL
+#
+# This is an autogenerate file, don't bother editing
+#
+# Copyright (C) 2003 David J. Goehrig <dave@sdlperl.org>
+
+package SDL::OpenGL;
+
+
+require Exporter;
+use strict;
+use vars qw/$VERSION @ISA @EXPORT/;
+@ISA = qw/Exporter/;
+
+sub import { SDL::OpenGL->export_to_level(1, @_); }
+
+@EXPORT = qw/
+	GLU_AUTO_LOAD_MATRIX GLU_CULLING GLU_DISPLAY_MODE GLU_DOMAIN_DISTANCE 
+	GLU_FILL GLU_MAP1_TRIM_2 GLU_MAP1_TRIM_3 GLU_NURBS_BEGIN 
+	GLU_NURBS_BEGIN_DATA GLU_NURBS_COLOR GLU_NURBS_COLOR_DATA 
+	GLU_NURBS_END GLU_NURBS_END_DATA GLU_NURBS_ERROR GLU_NURBS_MODE 
+	GLU_NURBS_NORMAL GLU_NURBS_NORMAL_DATA GLU_NURBS_RENDERER 
+	GLU_NURBS_TESSELLATOR GLU_NURBS_TEXTURE_COORD 
+	GLU_NURBS_TEXTURE_COORD_DATA GLU_NURBS_VERTEX GLU_NURBS_VERTEX_DATA 
+	GLU_OBJECT_PARAMETRIC_ERROR GLU_OBJECT_PATH_LENGTH GLU_OUTLINE_PATCH 
+	GLU_OUTLINE_POLYGON GLU_PARAMETRIC_TOLERANCE GLU_PATH_LENGTH 
+	GLU_SAMPLING_METHOD GLU_SAMPLING_TOLERANCE GLU_TESS_BOUNDARY_ONLY 
+	GLU_TESS_TOLERANCE GLU_TESS_WINDING_ABS_GEQ_TWO 
+	GLU_TESS_WINDING_NEGATIVE GLU_TESS_WINDING_NONZERO 
+	GLU_TESS_WINDING_ODD GLU_TESS_WINDING_POSITIVE GLU_TESS_WINDING_RULE 
+	GLU_U_STEP GLU_V_STEP GL_2D GL_2_BYTES GL_3D GL_3D_COLOR 
+	GL_3D_COLOR_TEXTURE GL_3_BYTES GL_4D_COLOR_TEXTURE GL_4_BYTES 
+	GL_ABGR_EXT GL_ACCUM GL_ACCUM_ALPHA_BITS GL_ACCUM_BLUE_BITS 
+	GL_ACCUM_BUFFER_BIT GL_ACCUM_CLEAR_VALUE GL_ACCUM_GREEN_BITS 
+	GL_ACCUM_RED_BITS GL_ACTIVE_TEXTURE_ARB GL_ADD 
+	GL_ALIASED_LINE_WIDTH_RANGE GL_ALIASED_POINT_SIZE_RANGE 
+	GL_ALL_ATTRIB_BITS GL_ALL_CLIENT_ATTRIB_BITS GL_ALPHA GL_ALPHA12 
+	GL_ALPHA16 GL_ALPHA4 GL_ALPHA8 GL_ALPHA_BIAS GL_ALPHA_BITS 
+	GL_ALPHA_SCALE GL_ALPHA_TEST GL_ALPHA_TEST_FUNC GL_ALPHA_TEST_REF 
+	GL_ALWAYS GL_AMBIENT GL_AMBIENT_AND_DIFFUSE GL_AND GL_AND_INVERTED 
+	GL_AND_REVERSE GL_ARRAY_ELEMENT_LOCK_COUNT_EXT 
+	GL_ARRAY_ELEMENT_LOCK_FIRST_EXT GL_ATTRIB_STACK_DEPTH GL_AUTO_NORMAL 
+	GL_AUX0 GL_AUX1 GL_AUX2 GL_AUX3 GL_AUX_BUFFERS GL_BACK GL_BACK_LEFT 
+	GL_BACK_RIGHT GL_BGR GL_BGRA GL_BITMAP GL_BITMAP_TOKEN GL_BLEND 
+	GL_BLEND_COLOR_EXT GL_BLEND_DST GL_BLEND_EQUATION 
+	GL_BLEND_EQUATION_EXT GL_BLEND_SRC GL_BLUE GL_BLUE_BIAS GL_BLUE_BITS 
+	GL_BLUE_SCALE GL_BYTE GL_C3F_V3F GL_C4F_N3F_V3F GL_C4UB_V2F 
+	GL_C4UB_V3F GL_CCW GL_CLAMP GL_CLAMP_TO_EDGE GL_CLAMP_TO_EDGE_SGIS 
+	GL_CLEAR GL_CLIENT_ACTIVE_TEXTURE_ARB GL_CLIENT_ATTRIB_STACK_DEPTH 
+	GL_CLIENT_PIXEL_STORE_BIT GL_CLIENT_VERTEX_ARRAY_BIT GL_CLIP_PLANE0 
+	GL_CLIP_PLANE1 GL_CLIP_PLANE2 GL_CLIP_PLANE3 GL_CLIP_PLANE4 
+	GL_CLIP_PLANE5 GL_CLIP_VOLUME_CLIPPING_HINT_EXT GL_COEFF GL_COLOR 
+	GL_COLOR_ARRAY GL_COLOR_ARRAY_COUNT_EXT GL_COLOR_ARRAY_EXT 
+	GL_COLOR_ARRAY_POINTER GL_COLOR_ARRAY_POINTER_EXT GL_COLOR_ARRAY_SIZE 
+	GL_COLOR_ARRAY_SIZE_EXT GL_COLOR_ARRAY_STRIDE 
+	GL_COLOR_ARRAY_STRIDE_EXT GL_COLOR_ARRAY_TYPE GL_COLOR_ARRAY_TYPE_EXT 
+	GL_COLOR_BUFFER_BIT GL_COLOR_CLEAR_VALUE GL_COLOR_INDEX 
+	GL_COLOR_INDEX12_EXT GL_COLOR_INDEX16_EXT GL_COLOR_INDEX1_EXT 
+	GL_COLOR_INDEX2_EXT GL_COLOR_INDEX4_EXT GL_COLOR_INDEX8_EXT 
+	GL_COLOR_INDEXES GL_COLOR_LOGIC_OP GL_COLOR_MATERIAL 
+	GL_COLOR_MATERIAL_FACE GL_COLOR_MATERIAL_PARAMETER GL_COLOR_MATRIX 
+	GL_COLOR_MATRIX_STACK_DEPTH GL_COLOR_TABLE GL_COLOR_TABLE_ALPHA_SIZE 
+	GL_COLOR_TABLE_ALPHA_SIZE_EXT GL_COLOR_TABLE_BIAS 
+	GL_COLOR_TABLE_BLUE_SIZE GL_COLOR_TABLE_BLUE_SIZE_EXT 
+	GL_COLOR_TABLE_FORMAT GL_COLOR_TABLE_FORMAT_EXT 
+	GL_COLOR_TABLE_GREEN_SIZE GL_COLOR_TABLE_GREEN_SIZE_EXT 
+	GL_COLOR_TABLE_INTENSITY_SIZE GL_COLOR_TABLE_INTENSITY_SIZE_EXT 
+	GL_COLOR_TABLE_LUMINANCE_SIZE GL_COLOR_TABLE_LUMINANCE_SIZE_EXT 
+	GL_COLOR_TABLE_RED_SIZE GL_COLOR_TABLE_RED_SIZE_EXT 
+	GL_COLOR_TABLE_SCALE GL_COLOR_TABLE_WIDTH GL_COLOR_TABLE_WIDTH_EXT 
+	GL_COLOR_WRITEMASK GL_COMPILE GL_COMPILE_AND_EXECUTE 
+	GL_CONSTANT_ALPHA GL_CONSTANT_ALPHA_EXT GL_CONSTANT_ATTENUATION 
+	GL_CONSTANT_BORDER GL_CONSTANT_COLOR GL_CONSTANT_COLOR_EXT 
+	GL_CONVOLUTION_1D GL_CONVOLUTION_2D GL_CONVOLUTION_BORDER_COLOR 
+	GL_CONVOLUTION_BORDER_MODE GL_CONVOLUTION_FILTER_BIAS 
+	GL_CONVOLUTION_FILTER_SCALE GL_CONVOLUTION_FORMAT 
+	GL_CONVOLUTION_HEIGHT GL_CONVOLUTION_WIDTH GL_COPY GL_COPY_INVERTED 
+	GL_COPY_PIXEL_TOKEN GL_CULL_FACE GL_CULL_FACE_MODE GL_CURRENT_BIT 
+	GL_CURRENT_COLOR GL_CURRENT_INDEX GL_CURRENT_NORMAL 
+	GL_CURRENT_RASTER_COLOR GL_CURRENT_RASTER_DISTANCE 
+	GL_CURRENT_RASTER_INDEX GL_CURRENT_RASTER_POSITION 
+	GL_CURRENT_RASTER_POSITION_VALID GL_CURRENT_RASTER_TEXTURE_COORDS 
+	GL_CURRENT_TEXTURE_COORDS GL_CW GL_DECAL GL_DECR GL_DECR_WRAP_EXT 
+	GL_DEPTH GL_DEPTH_BIAS GL_DEPTH_BITS GL_DEPTH_BUFFER_BIT 
+	GL_DEPTH_CLEAR_VALUE GL_DEPTH_COMPONENT GL_DEPTH_FUNC GL_DEPTH_RANGE 
+	GL_DEPTH_SCALE GL_DEPTH_TEST GL_DEPTH_WRITEMASK GL_DIFFUSE 
+	GL_DISTANCE_ATTENUATION_EXT GL_DITHER GL_DOMAIN GL_DONT_CARE 
+	GL_DOT3_RGBA_EXT GL_DOT3_RGB_EXT GL_DOUBLE GL_DOUBLEBUFFER 
+	GL_DRAW_BUFFER GL_DRAW_PIXEL_TOKEN GL_DST_ALPHA GL_DST_COLOR 
+	GL_EDGE_FLAG GL_EDGE_FLAG_ARRAY GL_EDGE_FLAG_ARRAY_COUNT_EXT 
+	GL_EDGE_FLAG_ARRAY_EXT GL_EDGE_FLAG_ARRAY_POINTER 
+	GL_EDGE_FLAG_ARRAY_POINTER_EXT GL_EDGE_FLAG_ARRAY_STRIDE 
+	GL_EDGE_FLAG_ARRAY_STRIDE_EXT GL_EMISSION GL_ENABLE_BIT GL_EQUAL 
+	GL_EQUIV GL_EVAL_BIT GL_EXP GL_EXP2 GL_EXTENSIONS GL_EYE_LINEAR 
+	GL_EYE_PLANE GL_FALSE GL_FASTEST GL_FEEDBACK 
+	GL_FEEDBACK_BUFFER_POINTER GL_FEEDBACK_BUFFER_SIZE 
+	GL_FEEDBACK_BUFFER_TYPE GL_FILL GL_FLAT GL_FLOAT GL_FOG GL_FOG_BIT 
+	GL_FOG_COLOR GL_FOG_DENSITY GL_FOG_END GL_FOG_HINT GL_FOG_INDEX 
+	GL_FOG_MODE GL_FOG_START GL_FRONT GL_FRONT_AND_BACK GL_FRONT_FACE 
+	GL_FRONT_LEFT GL_FRONT_RIGHT GL_FUNC_ADD GL_FUNC_ADD_EXT 
+	GL_FUNC_REVERSE_SUBTRACT GL_FUNC_REVERSE_SUBTRACT_EXT 
+	GL_FUNC_SUBTRACT GL_FUNC_SUBTRACT_EXT GL_GEQUAL GL_GREATER GL_GREEN 
+	GL_GREEN_BIAS GL_GREEN_BITS GL_GREEN_SCALE GL_HINT_BIT GL_HISTOGRAM 
+	GL_HISTOGRAM_ALPHA_SIZE GL_HISTOGRAM_BLUE_SIZE GL_HISTOGRAM_FORMAT 
+	GL_HISTOGRAM_GREEN_SIZE GL_HISTOGRAM_LUMINANCE_SIZE 
+	GL_HISTOGRAM_RED_SIZE GL_HISTOGRAM_SINK GL_HISTOGRAM_WIDTH GL_INCR 
+	GL_INCR_WRAP_EXT GL_INDEX_ARRAY GL_INDEX_ARRAY_COUNT_EXT 
+	GL_INDEX_ARRAY_EXT GL_INDEX_ARRAY_POINTER GL_INDEX_ARRAY_POINTER_EXT 
+	GL_INDEX_ARRAY_STRIDE GL_INDEX_ARRAY_STRIDE_EXT GL_INDEX_ARRAY_TYPE 
+	GL_INDEX_ARRAY_TYPE_EXT GL_INDEX_BITS GL_INDEX_CLEAR_VALUE 
+	GL_INDEX_LOGIC_OP GL_INDEX_MODE GL_INDEX_OFFSET GL_INDEX_SHIFT 
+	GL_INDEX_WRITEMASK GL_INT GL_INTENSITY GL_INTENSITY12 GL_INTENSITY16 
+	GL_INTENSITY4 GL_INTENSITY8 GL_INVALID_ENUM GL_INVALID_OPERATION 
+	GL_INVALID_VALUE GL_INVERT GL_KEEP GL_LEFT GL_LEQUAL GL_LESS 
+	GL_LIGHT0 GL_LIGHT1 GL_LIGHT2 GL_LIGHT3 GL_LIGHT4 GL_LIGHT5 GL_LIGHT6 
+	GL_LIGHT7 GL_LIGHTING GL_LIGHTING_BIT GL_LIGHT_MODEL_AMBIENT 
+	GL_LIGHT_MODEL_COLOR_CONTROL GL_LIGHT_MODEL_LOCAL_VIEWER 
+	GL_LIGHT_MODEL_TWO_SIDE GL_LINE GL_LINEAR GL_LINEAR_ATTENUATION 
+	GL_LINEAR_MIPMAP_LINEAR GL_LINEAR_MIPMAP_NEAREST GL_LINES GL_LINE_BIT 
+	GL_LINE_LOOP GL_LINE_RESET_TOKEN GL_LINE_SMOOTH GL_LINE_SMOOTH_HINT 
+	GL_LINE_STIPPLE GL_LINE_STIPPLE_PATTERN GL_LINE_STIPPLE_REPEAT 
+	GL_LINE_STRIP GL_LINE_TOKEN GL_LINE_WIDTH GL_LINE_WIDTH_GRANULARITY 
+	GL_LINE_WIDTH_RANGE GL_LIST_BASE GL_LIST_BIT GL_LIST_INDEX 
+	GL_LIST_MODE GL_LOAD GL_LOGIC_OP GL_LOGIC_OP_MODE GL_LUMINANCE 
+	GL_LUMINANCE12 GL_LUMINANCE12_ALPHA12 GL_LUMINANCE12_ALPHA4 
+	GL_LUMINANCE16 GL_LUMINANCE16_ALPHA16 GL_LUMINANCE4 
+	GL_LUMINANCE4_ALPHA4 GL_LUMINANCE6_ALPHA2 GL_LUMINANCE8 
+	GL_LUMINANCE8_ALPHA8 GL_LUMINANCE_ALPHA GL_MAP1_COLOR_4 
+	GL_MAP1_GRID_DOMAIN GL_MAP1_GRID_SEGMENTS GL_MAP1_INDEX 
+	GL_MAP1_NORMAL GL_MAP1_TEXTURE_COORD_1 GL_MAP1_TEXTURE_COORD_2 
+	GL_MAP1_TEXTURE_COORD_3 GL_MAP1_TEXTURE_COORD_4 GL_MAP1_VERTEX_3 
+	GL_MAP1_VERTEX_4 GL_MAP2_COLOR_4 GL_MAP2_GRID_DOMAIN 
+	GL_MAP2_GRID_SEGMENTS GL_MAP2_INDEX GL_MAP2_NORMAL 
+	GL_MAP2_TEXTURE_COORD_1 GL_MAP2_TEXTURE_COORD_2 
+	GL_MAP2_TEXTURE_COORD_3 GL_MAP2_TEXTURE_COORD_4 GL_MAP2_VERTEX_3 
+	GL_MAP2_VERTEX_4 GL_MAP_COLOR GL_MAP_STENCIL GL_MATRIX_MODE GL_MAX 
+	GL_MAX_3D_TEXTURE_SIZE GL_MAX_3D_TEXTURE_SIZE_EXT 
+	GL_MAX_ATTRIB_STACK_DEPTH GL_MAX_CLIENT_ATTRIB_STACK_DEPTH 
+	GL_MAX_CLIP_PLANES GL_MAX_COLOR_MATRIX_STACK_DEPTH 
+	GL_MAX_CONVOLUTION_HEIGHT GL_MAX_CONVOLUTION_WIDTH 
+	GL_MAX_ELEMENTS_INDICES GL_MAX_ELEMENTS_VERTICES GL_MAX_EVAL_ORDER 
+	GL_MAX_EXT GL_MAX_LIGHTS GL_MAX_LIST_NESTING 
+	GL_MAX_MODELVIEW_STACK_DEPTH GL_MAX_NAME_STACK_DEPTH 
+	GL_MAX_PIXEL_MAP_TABLE GL_MAX_PROJECTION_STACK_DEPTH 
+	GL_MAX_TEXTURE_SIZE GL_MAX_TEXTURE_STACK_DEPTH 
+	GL_MAX_TEXTURE_UNITS_ARB GL_MAX_VIEWPORT_DIMS GL_MIN GL_MINMAX 
+	GL_MINMAX_FORMAT GL_MINMAX_SINK GL_MIN_EXT GL_MODELVIEW 
+	GL_MODELVIEW_MATRIX GL_MODELVIEW_STACK_DEPTH GL_MODULATE GL_MULT 
+	GL_N3F_V3F GL_NAME_STACK_DEPTH GL_NAND GL_NEAREST 
+	GL_NEAREST_MIPMAP_LINEAR GL_NEAREST_MIPMAP_NEAREST GL_NEVER GL_NICEST 
+	GL_NONE GL_NOOP GL_NOR GL_NORMALIZE GL_NORMAL_ARRAY 
+	GL_NORMAL_ARRAY_COUNT_EXT GL_NORMAL_ARRAY_EXT GL_NORMAL_ARRAY_POINTER 
+	GL_NORMAL_ARRAY_POINTER_EXT GL_NORMAL_ARRAY_STRIDE 
+	GL_NORMAL_ARRAY_STRIDE_EXT GL_NORMAL_ARRAY_TYPE 
+	GL_NORMAL_ARRAY_TYPE_EXT GL_NORMAL_MAP_NV GL_NOTEQUAL GL_NO_ERROR 
+	GL_OBJECT_LINEAR GL_OBJECT_PLANE GL_OCCLUSION_TEST_HP 
+	GL_OCCLUSION_TEST_RESULT_HP GL_ONE GL_ONE_MINUS_CONSTANT_ALPHA 
+	GL_ONE_MINUS_CONSTANT_ALPHA_EXT GL_ONE_MINUS_CONSTANT_COLOR 
+	GL_ONE_MINUS_CONSTANT_COLOR_EXT GL_ONE_MINUS_DST_ALPHA 
+	GL_ONE_MINUS_DST_COLOR GL_ONE_MINUS_SRC_ALPHA GL_ONE_MINUS_SRC_COLOR 
+	GL_OR GL_ORDER GL_OR_INVERTED GL_OR_REVERSE GL_OUT_OF_MEMORY 
+	GL_PACK_ALIGNMENT GL_PACK_IMAGE_HEIGHT GL_PACK_IMAGE_HEIGHT_EXT 
+	GL_PACK_LSB_FIRST GL_PACK_ROW_LENGTH GL_PACK_SKIP_IMAGES 
+	GL_PACK_SKIP_IMAGES_EXT GL_PACK_SKIP_PIXELS GL_PACK_SKIP_ROWS 
+	GL_PACK_SWAP_BYTES GL_PASS_THROUGH_TOKEN 
+	GL_PERSPECTIVE_CORRECTION_HINT GL_PIXEL_MAP_A_TO_A 
+	GL_PIXEL_MAP_A_TO_A_SIZE GL_PIXEL_MAP_B_TO_B GL_PIXEL_MAP_B_TO_B_SIZE 
+	GL_PIXEL_MAP_G_TO_G GL_PIXEL_MAP_G_TO_G_SIZE GL_PIXEL_MAP_I_TO_A 
+	GL_PIXEL_MAP_I_TO_A_SIZE GL_PIXEL_MAP_I_TO_B GL_PIXEL_MAP_I_TO_B_SIZE 
+	GL_PIXEL_MAP_I_TO_G GL_PIXEL_MAP_I_TO_G_SIZE GL_PIXEL_MAP_I_TO_I 
+	GL_PIXEL_MAP_I_TO_I_SIZE GL_PIXEL_MAP_I_TO_R GL_PIXEL_MAP_I_TO_R_SIZE 
+	GL_PIXEL_MAP_R_TO_R GL_PIXEL_MAP_R_TO_R_SIZE GL_PIXEL_MAP_S_TO_S 
+	GL_PIXEL_MAP_S_TO_S_SIZE GL_PIXEL_MODE_BIT GL_POINT GL_POINTS 
+	GL_POINT_BIT GL_POINT_FADE_THRESHOLD_SIZE_EXT GL_POINT_SIZE 
+	GL_POINT_SIZE_GRANULARITY GL_POINT_SIZE_MAX_EXT GL_POINT_SIZE_MIN_EXT 
+	GL_POINT_SIZE_RANGE GL_POINT_SMOOTH GL_POINT_SMOOTH_HINT 
+	GL_POINT_TOKEN GL_POLYGON GL_POLYGON_BIT GL_POLYGON_MODE 
+	GL_POLYGON_OFFSET_BIAS_EXT GL_POLYGON_OFFSET_EXT 
+	GL_POLYGON_OFFSET_FACTOR GL_POLYGON_OFFSET_FACTOR_EXT 
+	GL_POLYGON_OFFSET_FILL GL_POLYGON_OFFSET_LINE GL_POLYGON_OFFSET_POINT 
+	GL_POLYGON_OFFSET_UNITS GL_POLYGON_SMOOTH GL_POLYGON_SMOOTH_HINT 
+	GL_POLYGON_STIPPLE GL_POLYGON_STIPPLE_BIT GL_POLYGON_TOKEN 
+	GL_POSITION GL_POST_COLOR_MATRIX_ALPHA_BIAS 
+	GL_POST_COLOR_MATRIX_ALPHA_SCALE GL_POST_COLOR_MATRIX_BLUE_BIAS 
+	GL_POST_COLOR_MATRIX_BLUE_SCALE GL_POST_COLOR_MATRIX_COLOR_TABLE 
+	GL_POST_COLOR_MATRIX_GREEN_BIAS GL_POST_COLOR_MATRIX_GREEN_SCALE 
+	GL_POST_COLOR_MATRIX_RED_BIAS GL_POST_COLOR_MATRIX_RED_SCALE 
+	GL_POST_CONVOLUTION_ALPHA_BIAS GL_POST_CONVOLUTION_ALPHA_SCALE 
+	GL_POST_CONVOLUTION_BLUE_BIAS GL_POST_CONVOLUTION_BLUE_SCALE 
+	GL_POST_CONVOLUTION_COLOR_TABLE GL_POST_CONVOLUTION_GREEN_BIAS 
+	GL_POST_CONVOLUTION_GREEN_SCALE GL_POST_CONVOLUTION_RED_BIAS 
+	GL_POST_CONVOLUTION_RED_SCALE GL_PROJECTION GL_PROJECTION_MATRIX 
+	GL_PROJECTION_STACK_DEPTH GL_PROXY_COLOR_TABLE GL_PROXY_HISTOGRAM 
+	GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE 
+	GL_PROXY_POST_CONVOLUTION_COLOR_TABLE GL_PROXY_TEXTURE_1D 
+	GL_PROXY_TEXTURE_2D GL_PROXY_TEXTURE_3D GL_PROXY_TEXTURE_3D_EXT GL_Q 
+	GL_QUADRATIC_ATTENUATION GL_QUADS GL_QUAD_STRIP GL_R GL_R3_G3_B2 
+	GL_READ_BUFFER GL_RED GL_REDUCE GL_RED_BIAS GL_RED_BITS GL_RED_SCALE 
+	GL_REFLECTION_MAP_NV GL_RENDER GL_RENDERER GL_RENDER_MODE GL_REPEAT 
+	GL_REPLACE GL_REPLICATE_BORDER GL_RESCALE_NORMAL 
+	GL_RESCALE_NORMAL_EXT GL_RETURN GL_RGB GL_RGB10 GL_RGB10_A2 GL_RGB12 
+	GL_RGB16 GL_RGB4 GL_RGB5 GL_RGB5_A1 GL_RGB8 GL_RGBA GL_RGBA12 
+	GL_RGBA16 GL_RGBA2 GL_RGBA4 GL_RGBA8 GL_RGBA_MODE GL_RIGHT GL_S 
+	GL_SCISSOR_BIT GL_SCISSOR_BOX GL_SCISSOR_TEST GL_SELECT 
+	GL_SELECTION_BUFFER_POINTER GL_SELECTION_BUFFER_SIZE GL_SEPARABLE_2D 
+	GL_SEPARATE_SPECULAR_COLOR GL_SET GL_SHADE_MODEL 
+	GL_SHARED_TEXTURE_PALETTE_EXT GL_SHININESS GL_SHORT GL_SINGLE_COLOR 
+	GL_SMOOTH GL_SMOOTH_LINE_WIDTH_GRANULARITY GL_SMOOTH_LINE_WIDTH_RANGE 
+	GL_SMOOTH_POINT_SIZE_GRANULARITY GL_SMOOTH_POINT_SIZE_RANGE 
+	GL_SPECULAR GL_SPHERE_MAP GL_SPOT_CUTOFF GL_SPOT_DIRECTION 
+	GL_SPOT_EXPONENT GL_SRC_ALPHA GL_SRC_ALPHA_SATURATE GL_SRC_COLOR 
+	GL_STACK_OVERFLOW GL_STACK_UNDERFLOW GL_STENCIL GL_STENCIL_BITS 
+	GL_STENCIL_BUFFER_BIT GL_STENCIL_CLEAR_VALUE GL_STENCIL_FAIL 
+	GL_STENCIL_FUNC GL_STENCIL_INDEX GL_STENCIL_PASS_DEPTH_FAIL 
+	GL_STENCIL_PASS_DEPTH_PASS GL_STENCIL_REF GL_STENCIL_TEST 
+	GL_STENCIL_VALUE_MASK GL_STENCIL_WRITEMASK GL_STEREO GL_SUBPIXEL_BITS 
+	GL_T GL_T2F_C3F_V3F GL_T2F_C4F_N3F_V3F GL_T2F_C4UB_V3F GL_T2F_N3F_V3F 
+	GL_T2F_V3F GL_T4F_C4F_N3F_V4F GL_T4F_V4F GL_TABLE_TOO_LARGE 
+	GL_TABLE_TOO_LARGE_EXT GL_TEXTURE GL_TEXTURE0_ARB GL_TEXTURE10_ARB 
+	GL_TEXTURE11_ARB GL_TEXTURE12_ARB GL_TEXTURE13_ARB GL_TEXTURE14_ARB 
+	GL_TEXTURE15_ARB GL_TEXTURE16_ARB GL_TEXTURE17_ARB GL_TEXTURE18_ARB 
+	GL_TEXTURE19_ARB GL_TEXTURE1_ARB GL_TEXTURE20_ARB GL_TEXTURE21_ARB 
+	GL_TEXTURE22_ARB GL_TEXTURE23_ARB GL_TEXTURE24_ARB GL_TEXTURE25_ARB 
+	GL_TEXTURE26_ARB GL_TEXTURE27_ARB GL_TEXTURE28_ARB GL_TEXTURE29_ARB 
+	GL_TEXTURE2_ARB GL_TEXTURE30_ARB GL_TEXTURE31_ARB GL_TEXTURE3_ARB 
+	GL_TEXTURE4_ARB GL_TEXTURE5_ARB GL_TEXTURE6_ARB GL_TEXTURE7_ARB 
+	GL_TEXTURE8_ARB GL_TEXTURE9_ARB GL_TEXTURE_1D 
+	GL_TEXTURE_1D_BINDING_EXT GL_TEXTURE_2D GL_TEXTURE_2D_BINDING_EXT 
+	GL_TEXTURE_3D GL_TEXTURE_3D_BINDING_EXT GL_TEXTURE_3D_EXT 
+	GL_TEXTURE_ALPHA_SIZE GL_TEXTURE_BASE_LEVEL GL_TEXTURE_BINDING_1D 
+	GL_TEXTURE_BINDING_2D GL_TEXTURE_BINDING_3D GL_TEXTURE_BIT 
+	GL_TEXTURE_BLUE_SIZE GL_TEXTURE_BORDER GL_TEXTURE_BORDER_COLOR 
+	GL_TEXTURE_COMPONENTS GL_TEXTURE_COORD_ARRAY 
+	GL_TEXTURE_COORD_ARRAY_COUNT_EXT GL_TEXTURE_COORD_ARRAY_EXT 
+	GL_TEXTURE_COORD_ARRAY_POINTER GL_TEXTURE_COORD_ARRAY_POINTER_EXT 
+	GL_TEXTURE_COORD_ARRAY_SIZE GL_TEXTURE_COORD_ARRAY_SIZE_EXT 
+	GL_TEXTURE_COORD_ARRAY_STRIDE GL_TEXTURE_COORD_ARRAY_STRIDE_EXT 
+	GL_TEXTURE_COORD_ARRAY_TYPE GL_TEXTURE_COORD_ARRAY_TYPE_EXT 
+	GL_TEXTURE_DEPTH GL_TEXTURE_DEPTH_EXT GL_TEXTURE_ENV 
+	GL_TEXTURE_ENV_COLOR GL_TEXTURE_ENV_MODE GL_TEXTURE_GEN_MODE 
+	GL_TEXTURE_GEN_Q GL_TEXTURE_GEN_R GL_TEXTURE_GEN_S GL_TEXTURE_GEN_T 
+	GL_TEXTURE_GREEN_SIZE GL_TEXTURE_HEIGHT GL_TEXTURE_INDEX_SIZE_EXT 
+	GL_TEXTURE_INTENSITY_SIZE GL_TEXTURE_INTERNAL_FORMAT 
+	GL_TEXTURE_LUMINANCE_SIZE GL_TEXTURE_MAG_FILTER GL_TEXTURE_MATRIX 
+	GL_TEXTURE_MAX_LEVEL GL_TEXTURE_MAX_LOD GL_TEXTURE_MIN_FILTER 
+	GL_TEXTURE_MIN_LOD GL_TEXTURE_PRIORITY GL_TEXTURE_PRIORITY_EXT 
+	GL_TEXTURE_RED_SIZE GL_TEXTURE_RESIDENT GL_TEXTURE_RESIDENT_EXT 
+	GL_TEXTURE_STACK_DEPTH GL_TEXTURE_WIDTH GL_TEXTURE_WRAP_R 
+	GL_TEXTURE_WRAP_R_EXT GL_TEXTURE_WRAP_S GL_TEXTURE_WRAP_T 
+	GL_TRANSFORM_BIT GL_TRIANGLES GL_TRIANGLE_FAN GL_TRIANGLE_STRIP 
+	GL_TRUE GL_UNPACK_ALIGNMENT GL_UNPACK_IMAGE_HEIGHT 
+	GL_UNPACK_IMAGE_HEIGHT_EXT GL_UNPACK_LSB_FIRST GL_UNPACK_ROW_LENGTH 
+	GL_UNPACK_SKIP_IMAGES GL_UNPACK_SKIP_IMAGES_EXT GL_UNPACK_SKIP_PIXELS 
+	GL_UNPACK_SKIP_ROWS GL_UNPACK_SWAP_BYTES GL_UNSIGNED_BYTE 
+	GL_UNSIGNED_BYTE_2_3_3_REV GL_UNSIGNED_BYTE_3_3_2 GL_UNSIGNED_INT 
+	GL_UNSIGNED_INT_10_10_10_2 GL_UNSIGNED_INT_2_10_10_10_REV 
+	GL_UNSIGNED_INT_8_8_8_8 GL_UNSIGNED_INT_8_8_8_8_REV GL_UNSIGNED_SHORT 
+	GL_UNSIGNED_SHORT_1_5_5_5_REV GL_UNSIGNED_SHORT_4_4_4_4 
+	GL_UNSIGNED_SHORT_4_4_4_4_REV GL_UNSIGNED_SHORT_5_5_5_1 
+	GL_UNSIGNED_SHORT_5_6_5 GL_UNSIGNED_SHORT_5_6_5_REV GL_V2F GL_V3F 
+	GL_VENDOR GL_VERSION GL_VERTEX_ARRAY GL_VERTEX_ARRAY_COUNT_EXT 
+	GL_VERTEX_ARRAY_EXT GL_VERTEX_ARRAY_POINTER 
+	GL_VERTEX_ARRAY_POINTER_EXT GL_VERTEX_ARRAY_SIZE 
+	GL_VERTEX_ARRAY_SIZE_EXT GL_VERTEX_ARRAY_STRIDE 
+	GL_VERTEX_ARRAY_STRIDE_EXT GL_VERTEX_ARRAY_TYPE 
+	GL_VERTEX_ARRAY_TYPE_EXT GL_VIEWPORT GL_VIEWPORT_BIT GL_XOR GL_ZERO 
+	GL_ZOOM_X  /;
+
+
+sub GL_NORMAL_ARRAY_TYPE () { 0x807E }
+sub GL_NORMAL_ARRAY_STRIDE () { 0x807F }
+sub GL_COLOR_ARRAY_SIZE () { 0x8081 }
+sub GL_COLOR_ARRAY_TYPE () { 0x8082 }
+sub GL_COLOR_ARRAY_STRIDE () { 0x8083 }
+sub GL_INDEX_ARRAY_TYPE () { 0x8085 }
+sub GL_INDEX_ARRAY_STRIDE () { 0x8086 }
+sub GL_TEXTURE_COORD_ARRAY_SIZE () { 0x8088 }
+sub GL_VERTEX_ARRAY_SIZE () { 0x807A }
+sub GL_VERTEX_ARRAY_TYPE () { 0x807B }
+sub GL_VERTEX_ARRAY_STRIDE () { 0x807C }
+sub GL_2_BYTES () { 0x1407 }
+sub GL_3_BYTES () { 0x1408 }
+sub GL_4_BYTES () { 0x1409 }
+sub GL_AUX1 () { 0x040A }
+sub GL_AUX2 () { 0x040B }
+sub GL_AUX3 () { 0x040C }
+sub GL_ALPHA_BITS () { 0x0D55 }
+sub GL_RED_BITS () { 0x0D52 }
+sub GL_GREEN_BITS () { 0x0D53 }
+sub GL_BLUE_BITS () { 0x0D54 }
+sub GL_INDEX_BITS () { 0x0D51 }
+sub GL_SUBPIXEL_BITS () { 0x0D50 }
+sub GL_AUX_BUFFERS () { 0x0C00 }
+sub GL_FOG_INDEX () { 0x0B61 }
+sub GL_LOGIC_OP () { 0x0BF1 }
+sub GL_INDEX_LOGIC_OP () { 0x0BF1 }
+sub GL_COLOR_LOGIC_OP () { 0x0BF2 }
+sub GL_LOGIC_OP_MODE () { 0x0BF0 }
+sub GL_COLOR_MATERIAL () { 0x0B57 }
+sub GL_COLOR_MATERIAL_FACE () { 0x0B55 }
+sub GL_COLOR_MATERIAL_PARAMETER () { 0x0B56 }
+sub GL_CLIP_PLANE0 () { 0x3000 }
+sub GL_CLIP_PLANE1 () { 0x3001 }
+sub GL_CLIP_PLANE2 () { 0x3002 }
+sub GL_CLIP_PLANE3 () { 0x3003 }
+sub GL_CLIP_PLANE4 () { 0x3004 }
+sub GL_CLIP_PLANE5 () { 0x3005 }
+sub GL_ACCUM_RED_BITS () { 0x0D58 }
+sub GL_ACCUM_GREEN_BITS () { 0x0D59 }
+sub GL_ACCUM_BLUE_BITS () { 0x0D5A }
+sub GL_ACCUM_ALPHA_BITS () { 0x0D5B }
+sub GL_ACCUM_CLEAR_VALUE () { 0x0B80 }
+sub GL_DEPTH_BITS () { 0x0D56 }
+sub GL_DEPTH_CLEAR_VALUE () { 0x0B73 }
+sub GL_DEPTH_FUNC () { 0x0B74 }
+sub GL_DEPTH_RANGE () { 0x0B70 }
+sub GL_DEPTH_WRITEMASK () { 0x0B72 }
+sub GL_SHADE_MODEL () { 0x0B54 }
+sub GL_MATRIX_MODE () { 0x0BA0 }
+sub GL_POINT_SMOOTH () { 0x0B10 }
+sub GL_POINT_SIZE () { 0x0B11 }
+sub GL_POINT_SIZE_GRANULARITY () { 0x0B13 }
+sub GL_POINT_SIZE_RANGE () { 0x0B12 }
+sub GL_LINE_SMOOTH () { 0x0B20 }
+sub GL_TEXTURE_COORD_ARRAY_TYPE () { 0x8089 }
+sub GL_TEXTURE_COORD_ARRAY_STRIDE () { 0x808A }
+sub GL_EDGE_FLAG_ARRAY_STRIDE () { 0x808C }
+sub GL_VERTEX_ARRAY_POINTER () { 0x808E }
+sub GL_NORMAL_ARRAY_POINTER () { 0x808F }
+sub GL_COLOR_ARRAY_POINTER () { 0x8090 }
+sub GL_INDEX_ARRAY_POINTER () { 0x8091 }
+sub GL_TEXTURE_COORD_ARRAY_POINTER () { 0x8092 }
+sub GL_EDGE_FLAG_ARRAY_POINTER () { 0x8093 }
+sub GL_LINE_STIPPLE_PATTERN () { 0x0B25 }
+sub GL_LINE_STIPPLE_REPEAT () { 0x0B26 }
+sub GL_LINE_WIDTH () { 0x0B21 }
+sub GL_LINE_WIDTH_GRANULARITY () { 0x0B23 }
+sub GL_LINE_WIDTH_RANGE () { 0x0B22 }
+sub GL_POLYGON_MODE () { 0x0B40 }
+sub GL_POLYGON_SMOOTH () { 0x0B41 }
+sub GL_EDGE_FLAG () { 0x0B43 }
+sub GL_CULL_FACE_MODE () { 0x0B45 }
+sub GL_FRONT_FACE () { 0x0B46 }
+sub GL_POLYGON_OFFSET_FACTOR () { 0x8038 }
+sub GL_POLYGON_OFFSET_UNITS () { 0x2A00 }
+sub GL_COMPILE () { 0x1300 }
+sub GL_COMPILE_AND_EXECUTE () { 0x1301 }
+sub GL_LIST_BASE () { 0x0B32 }
+sub GL_LIST_INDEX () { 0x0B33 }
+sub GL_LIST_MODE () { 0x0B30 }
+sub GL_ALPHA_TEST () { 0x0BC0 }
+sub GL_ALPHA_TEST_REF () { 0x0BC2 }
+sub GL_ALPHA_TEST_FUNC () { 0x0BC1 }
+sub GL_BLEND_SRC () { 0x0BE1 }
+sub GL_BLEND_DST () { 0x0BE0 }
+sub GL_DST_ALPHA () { 0x0304 }
+sub GL_ONE_MINUS_DST_ALPHA () { 0x0305 }
+sub GL_FEEDBACK () { 0x1C01 }
+sub GL_RENDER () { 0x1C00 }
+sub GL_SELECT () { 0x1C02 }
+sub GL_2D () { 0x0600 }
+sub GL_3D () { 0x0601 }
+sub GL_3D_COLOR () { 0x0602 }
+sub GL_3D_COLOR_TEXTURE () { 0x0603 }
+sub GL_4D_COLOR_TEXTURE () { 0x0604 }
+sub GL_COEFF () { 0x0A00 }
+sub GL_DOMAIN () { 0x0A02 }
+sub GL_ORDER () { 0x0A01 }
+sub GL_DONT_CARE () { 0x1100 }
+sub GL_POINT_TOKEN () { 0x0701 }
+sub GL_LINE_TOKEN () { 0x0702 }
+sub GL_LINE_RESET_TOKEN () { 0x0707 }
+sub GL_POLYGON_TOKEN () { 0x0703 }
+sub GL_BITMAP_TOKEN () { 0x0704 }
+sub GL_DRAW_PIXEL_TOKEN () { 0x0705 }
+sub GL_COPY_PIXEL_TOKEN () { 0x0706 }
+sub GL_PASS_THROUGH_TOKEN () { 0x0700 }
+sub GL_FEEDBACK_BUFFER_POINTER () { 0x0DF0 }
+sub GL_FEEDBACK_BUFFER_SIZE () { 0x0DF1 }
+sub GL_FEEDBACK_BUFFER_TYPE () { 0x0DF2 }
+sub GL_SELECTION_BUFFER_POINTER () { 0x0DF3 }
+sub GL_SELECTION_BUFFER_SIZE () { 0x0DF4 }
+sub GL_FOG () { 0x0B60 }
+sub GL_STENCIL_TEST () { 0x0B90 }
+sub GL_STENCIL_WRITEMASK () { 0x0B98 }
+sub GL_STENCIL_BITS () { 0x0D57 }
+sub GL_STENCIL_FUNC () { 0x0B92 }
+sub GL_STENCIL_VALUE_MASK () { 0x0B93 }
+sub GL_STENCIL_REF () { 0x0B97 }
+sub GL_STENCIL_FAIL () { 0x0B94 }
+sub GL_STENCIL_PASS_DEPTH_PASS () { 0x0B96 }
+sub GL_STENCIL_PASS_DEPTH_FAIL () { 0x0B95 }
+sub GL_STENCIL_CLEAR_VALUE () { 0x0B91 }
+sub GL_AUX0 () { 0x0409 }
+sub GL_NO_ERROR () { 0x0 }
+sub GL_INVALID_VALUE () { 0x0501 }
+sub GL_INVALID_ENUM () { 0x0500 }
+sub GL_INVALID_OPERATION () { 0x0502 }
+sub GL_STACK_OVERFLOW () { 0x0503 }
+sub GL_STACK_UNDERFLOW () { 0x0504 }
+sub GL_OUT_OF_MEMORY () { 0x0505 }
+sub GL_MAX_ELEMENTS_VERTICES () { 0x80E8 }
+sub GL_MAX_ELEMENTS_INDICES () { 0x80E9 }
+sub GL_SEPARATE_SPECULAR_COLOR () { 0x81FA }
+sub GL_SMOOTH_POINT_SIZE_RANGE () { 0x0B12 }
+sub GL_SMOOTH_POINT_SIZE_GRANULARITY () { 0x0B13 }
+sub GL_DRAW_BUFFER () { 0x0C01 }
+sub GL_DOUBLEBUFFER () { 0x0C32 }
+sub GL_STEREO () { 0x0C33 }
+sub GL_COLOR () { 0x1800 }
+sub GL_DEPTH () { 0x1801 }
+sub GL_STENCIL () { 0x1802 }
+sub GL_DITHER () { 0x0BD0 }
+sub GL_MAX_LIST_NESTING () { 0x0B31 }
+sub GL_MAX_ATTRIB_STACK_DEPTH () { 0x0D35 }
+sub GL_MAX_MODELVIEW_STACK_DEPTH () { 0x0D36 }
+sub GL_MAX_NAME_STACK_DEPTH () { 0x0D37 }
+sub GL_MAX_PROJECTION_STACK_DEPTH () { 0x0D38 }
+sub GL_MAX_TEXTURE_STACK_DEPTH () { 0x0D39 }
+sub GL_MAX_EVAL_ORDER () { 0x0D30 }
+sub GL_MAX_LIGHTS () { 0x0D31 }
+sub GL_MAX_CLIP_PLANES () { 0x0D32 }
+sub GL_MAX_PIXEL_MAP_TABLE () { 0x0D34 }
+sub GL_MAX_VIEWPORT_DIMS () { 0x0D3A }
+sub GL_MAX_CLIENT_ATTRIB_STACK_DEPTH () { 0x0D3B }
+sub GL_ATTRIB_STACK_DEPTH () { 0x0BB0 }
+sub GL_CLIENT_ATTRIB_STACK_DEPTH () { 0x0BB1 }
+sub GL_COLOR_CLEAR_VALUE () { 0x0C22 }
+sub GL_COLOR_WRITEMASK () { 0x0C23 }
+sub GL_CURRENT_INDEX () { 0x0B01 }
+sub GL_CURRENT_COLOR () { 0x0B00 }
+sub GL_CURRENT_NORMAL () { 0x0B02 }
+sub GL_CURRENT_RASTER_COLOR () { 0x0B04 }
+sub GL_CURRENT_RASTER_DISTANCE () { 0x0B09 }
+sub GL_CURRENT_RASTER_INDEX () { 0x0B05 }
+sub GL_CURRENT_RASTER_POSITION () { 0x0B07 }
+sub GL_CURRENT_RASTER_TEXTURE_COORDS () { 0x0B06 }
+sub GL_CURRENT_RASTER_POSITION_VALID () { 0x0B08 }
+sub GL_CURRENT_TEXTURE_COORDS () { 0x0B03 }
+sub GL_INDEX_CLEAR_VALUE () { 0x0C20 }
+sub GL_INDEX_MODE () { 0x0C30 }
+sub GL_INDEX_WRITEMASK () { 0x0C21 }
+sub GL_MODELVIEW_MATRIX () { 0x0BA6 }
+sub GL_MODELVIEW_STACK_DEPTH () { 0x0BA3 }
+sub GL_NAME_STACK_DEPTH () { 0x0D70 }
+sub GL_PROJECTION_MATRIX () { 0x0BA7 }
+sub GL_PROJECTION_STACK_DEPTH () { 0x0BA4 }
+sub GL_RENDER_MODE () { 0x0C40 }
+sub GL_RGBA_MODE () { 0x0C31 }
+sub GL_TEXTURE_MATRIX () { 0x0BA8 }
+sub GL_TEXTURE_STACK_DEPTH () { 0x0BA5 }
+sub GL_VIEWPORT () { 0x0BA2 }
+sub GL_MAP1_GRID_DOMAIN () { 0x0DD0 }
+sub GL_MAP1_GRID_SEGMENTS () { 0x0DD1 }
+sub GL_MAP2_GRID_DOMAIN () { 0x0DD2 }
+sub GL_MAP2_GRID_SEGMENTS () { 0x0DD3 }
+sub GL_FASTEST () { 0x1101 }
+sub GL_NICEST () { 0x1102 }
+sub GL_SCISSOR_BOX () { 0x0C10 }
+sub GL_PIXEL_MAP_S_TO_S_SIZE () { 0x0CB1 }
+sub GL_PIXEL_MAP_I_TO_I_SIZE () { 0x0CB0 }
+sub GL_PIXEL_MAP_I_TO_R_SIZE () { 0x0CB2 }
+sub GL_PIXEL_MAP_I_TO_G_SIZE () { 0x0CB3 }
+sub GL_PIXEL_MAP_I_TO_B_SIZE () { 0x0CB4 }
+sub GL_PIXEL_MAP_I_TO_A_SIZE () { 0x0CB5 }
+sub GL_PIXEL_MAP_R_TO_R_SIZE () { 0x0CB6 }
+sub GL_PIXEL_MAP_G_TO_G_SIZE () { 0x0CB7 }
+sub GL_PIXEL_MAP_B_TO_B_SIZE () { 0x0CB8 }
+sub GL_PIXEL_MAP_A_TO_A_SIZE () { 0x0CB9 }
+sub GL_ZOOM_X () { 0x0D16 }
+sub GL_ZOOM_Y () { 0x0D17 }
+sub GL_TEXTURE_ENV () { 0x2300 }
+sub GL_TEXTURE_GEN_S () { 0x0C60 }
+sub GL_TEXTURE_GEN_T () { 0x0C61 }
+sub GL_TEXTURE_WIDTH () { 0x1000 }
+sub GL_TEXTURE_HEIGHT () { 0x1001 }
+sub GL_TEXTURE_BORDER () { 0x1005 }
+sub GL_TEXTURE_COMPONENTS () { 0x1003 }
+sub GL_TEXTURE_RED_SIZE () { 0x805C }
+sub GL_TEXTURE_GREEN_SIZE () { 0x805D }
+sub GL_TEXTURE_BLUE_SIZE () { 0x805E }
+sub GL_TEXTURE_ALPHA_SIZE () { 0x805F }
+sub GL_TEXTURE_LUMINANCE_SIZE () { 0x8060 }
+sub GL_TEXTURE_INTENSITY_SIZE () { 0x8061 }
+sub GL_TEXTURE_GEN_R () { 0x0C62 }
+sub GL_TEXTURE_GEN_Q () { 0x0C63 }
+sub GL_PROXY_TEXTURE_1D () { 0x8063 }
+sub GL_TEXTURE_RESIDENT () { 0x8067 }
+sub GL_TEXTURE_BINDING_1D () { 0x8068 }
+sub GL_TEXTURE_BINDING_2D () { 0x8069 }
+sub GL_TEXTURE_INTERNAL_FORMAT () { 0x1003 }
+sub GL_PROXY_TEXTURE_3D () { 0x8070 }
+sub GL_TEXTURE_DEPTH () { 0x8071 }
+sub GL_MAX_3D_TEXTURE_SIZE () { 0x8073 }
+sub GL_TEXTURE_BINDING_3D () { 0x806A }
+sub GL_VENDOR () { 0x1F00 }
+sub GL_RENDERER () { 0x1F01 }
+sub GL_VERSION () { 0x1F02 }
+sub GL_EXTENSIONS () { 0x1F03 }
+sub GL_SMOOTH_LINE_WIDTH_RANGE () { 0x0B22 }
+sub GL_SMOOTH_LINE_WIDTH_GRANULARITY () { 0x0B23 }
+sub GL_ALIASED_POINT_SIZE_RANGE () { 0x846D }
+sub GL_ALIASED_LINE_WIDTH_RANGE () { 0x846E }
+sub GL_COLOR_TABLE_BIAS () { 0x80D7 }
+sub GL_COLOR_TABLE_FORMAT () { 0x80D8 }
+sub GL_COLOR_TABLE_WIDTH () { 0x80D9 }
+sub GL_COLOR_TABLE_RED_SIZE () { 0x80DA }
+sub GL_COLOR_TABLE_GREEN_SIZE () { 0x80DB }
+sub GL_COLOR_TABLE_BLUE_SIZE () { 0x80DC }
+sub GL_COLOR_TABLE_ALPHA_SIZE () { 0x80DD }
+sub GL_COLOR_TABLE_LUMINANCE_SIZE () { 0x80DE }
+sub GL_COLOR_TABLE_INTENSITY_SIZE () { 0x80DF }
+sub GL_CONVOLUTION_FORMAT () { 0x8017 }
+sub GL_CONVOLUTION_WIDTH () { 0x8018 }
+sub GL_CONVOLUTION_HEIGHT () { 0x8019 }
+sub GL_MAX_CONVOLUTION_WIDTH () { 0x801A }
+sub GL_MAX_CONVOLUTION_HEIGHT () { 0x801B }
+sub GL_CONVOLUTION_BORDER_COLOR () { 0x8154 }
+sub GL_COLOR_MATRIX () { 0x80B1 }
+sub GL_COLOR_MATRIX_STACK_DEPTH () { 0x80B2 }
+sub GL_MAX_COLOR_MATRIX_STACK_DEPTH () { 0x80B3 }
+sub GL_HISTOGRAM_WIDTH () { 0x8026 }
+sub GL_HISTOGRAM_FORMAT () { 0x8027 }
+sub GL_HISTOGRAM_RED_SIZE () { 0x8028 }
+sub GL_HISTOGRAM_GREEN_SIZE () { 0x8029 }
+sub GL_HISTOGRAM_BLUE_SIZE () { 0x802A }
+sub GL_HISTOGRAM_ALPHA_SIZE () { 0x802B }
+sub GL_HISTOGRAM_LUMINANCE_SIZE () { 0x802C }
+sub GL_HISTOGRAM_SINK () { 0x802D }
+sub GL_MINMAX_FORMAT () { 0x802F }
+sub GL_MINMAX_SINK () { 0x8030 }
+sub GL_TABLE_TOO_LARGE () { 0x8031 }
+sub GL_BLEND_EQUATION () { 0x8009 }
+sub GL_TEXTURE0_ARB () { 0x84C0 }
+sub GL_TEXTURE1_ARB () { 0x84C1 }
+sub GL_TEXTURE2_ARB () { 0x84C2 }
+sub GL_TEXTURE3_ARB () { 0x84C3 }
+sub GL_TEXTURE4_ARB () { 0x84C4 }
+sub GL_TEXTURE5_ARB () { 0x84C5 }
+sub GL_TEXTURE6_ARB () { 0x84C6 }
+sub GL_TEXTURE7_ARB () { 0x84C7 }
+sub GL_TEXTURE8_ARB () { 0x84C8 }
+sub GL_TEXTURE9_ARB () { 0x84C9 }
+sub GL_TEXTURE10_ARB () { 0x84CA }
+sub GL_TEXTURE11_ARB () { 0x84CB }
+sub GL_TEXTURE12_ARB () { 0x84CC }
+sub GL_TEXTURE13_ARB () { 0x84CD }
+sub GL_TEXTURE14_ARB () { 0x84CE }
+sub GL_TEXTURE15_ARB () { 0x84CF }
+sub GL_TEXTURE16_ARB () { 0x84D0 }
+sub GL_TEXTURE17_ARB () { 0x84D1 }
+sub GL_TEXTURE18_ARB () { 0x84D2 }
+sub GL_TEXTURE19_ARB () { 0x84D3 }
+sub GL_TEXTURE20_ARB () { 0x84D4 }
+sub GL_TEXTURE21_ARB () { 0x84D5 }
+sub GL_TEXTURE22_ARB () { 0x84D6 }
+sub GL_TEXTURE23_ARB () { 0x84D7 }
+sub GL_TEXTURE24_ARB () { 0x84D8 }
+sub GL_TEXTURE25_ARB () { 0x84D9 }
+sub GL_TEXTURE26_ARB () { 0x84DA }
+sub GL_TEXTURE27_ARB () { 0x84DB }
+sub GL_TEXTURE28_ARB () { 0x84DC }
+sub GL_TEXTURE29_ARB () { 0x84DD }
+sub GL_TEXTURE30_ARB () { 0x84DE }
+sub GL_TEXTURE31_ARB () { 0x84DF }
+sub GL_ACTIVE_TEXTURE_ARB () { 0x84E0 }
+sub GL_CLIENT_ACTIVE_TEXTURE_ARB () { 0x84E1 }
+sub GL_MAX_TEXTURE_UNITS_ARB () { 0x84E2 }
+sub GL_ABGR_EXT () { 0x8000 }
+sub GL_CONSTANT_COLOR_EXT () { 0x8001 }
+sub GL_ONE_MINUS_CONSTANT_COLOR_EXT () { 0x8002 }
+sub GL_CONSTANT_ALPHA_EXT () { 0x8003 }
+sub GL_ONE_MINUS_CONSTANT_ALPHA_EXT () { 0x8004 }
+sub GL_BLEND_COLOR_EXT () { 0x8005 }
+sub GL_POLYGON_OFFSET_EXT () { 0x8037 }
+sub GL_POLYGON_OFFSET_FACTOR_EXT () { 0x8038 }
+sub GL_POLYGON_OFFSET_BIAS_EXT () { 0x8039 }
+sub GL_PACK_SKIP_IMAGES_EXT () { 0x806B }
+sub GL_PACK_IMAGE_HEIGHT_EXT () { 0x806C }
+sub GL_UNPACK_SKIP_IMAGES_EXT () { 0x806D }
+sub GL_UNPACK_IMAGE_HEIGHT_EXT () { 0x806E }
+sub GL_TEXTURE_3D_EXT () { 0x806F }
+sub GL_PROXY_TEXTURE_3D_EXT () { 0x8070 }
+sub GL_TEXTURE_DEPTH_EXT () { 0x8071 }
+sub GL_TEXTURE_WRAP_R_EXT () { 0x8072 }
+sub GL_MAX_3D_TEXTURE_SIZE_EXT () { 0x8073 }
+sub GL_TEXTURE_3D_BINDING_EXT () { 0x806A }
+sub GL_TEXTURE_PRIORITY_EXT () { 0x8066 }
+sub GL_TEXTURE_RESIDENT_EXT () { 0x8067 }
+sub GL_TEXTURE_1D_BINDING_EXT () { 0x8068 }
+sub GL_TEXTURE_2D_BINDING_EXT () { 0x8069 }
+sub GL_RESCALE_NORMAL_EXT () { 0x803A }
+sub GL_VERTEX_ARRAY_EXT () { 0x8074 }
+sub GL_NORMAL_ARRAY_EXT () { 0x8075 }
+sub GL_COLOR_ARRAY_EXT () { 0x8076 }
+sub GL_INDEX_ARRAY_EXT () { 0x8077 }
+sub GL_TEXTURE_COORD_ARRAY_EXT () { 0x8078 }
+sub GL_EDGE_FLAG_ARRAY_EXT () { 0x8079 }
+sub GL_VERTEX_ARRAY_SIZE_EXT () { 0x807A }
+sub GL_VERTEX_ARRAY_TYPE_EXT () { 0x807B }
+sub GL_VERTEX_ARRAY_STRIDE_EXT () { 0x807C }
+sub GL_VERTEX_ARRAY_COUNT_EXT () { 0x807D }
+sub GL_NORMAL_ARRAY_TYPE_EXT () { 0x807E }
+sub GL_NORMAL_ARRAY_STRIDE_EXT () { 0x807F }
+sub GL_NORMAL_ARRAY_COUNT_EXT () { 0x8080 }
+sub GL_COLOR_ARRAY_SIZE_EXT () { 0x8081 }
+sub GL_COLOR_ARRAY_TYPE_EXT () { 0x8082 }
+sub GL_COLOR_ARRAY_STRIDE_EXT () { 0x8083 }
+sub GL_COLOR_ARRAY_COUNT_EXT () { 0x8084 }
+sub GL_INDEX_ARRAY_TYPE_EXT () { 0x8085 }
+sub GL_INDEX_ARRAY_STRIDE_EXT () { 0x8086 }
+sub GL_INDEX_ARRAY_COUNT_EXT () { 0x8087 }
+sub GL_TEXTURE_COORD_ARRAY_SIZE_EXT () { 0x8088 }
+sub GL_TEXTURE_COORD_ARRAY_TYPE_EXT () { 0x8089 }
+sub GL_TEXTURE_COORD_ARRAY_STRIDE_EXT () { 0x808A }
+sub GL_TEXTURE_COORD_ARRAY_COUNT_EXT () { 0x808B }
+sub GL_EDGE_FLAG_ARRAY_STRIDE_EXT () { 0x808C }
+sub GL_EDGE_FLAG_ARRAY_COUNT_EXT () { 0x808D }
+sub GL_VERTEX_ARRAY_POINTER_EXT () { 0x808E }
+sub GL_NORMAL_ARRAY_POINTER_EXT () { 0x808F }
+sub GL_COLOR_ARRAY_POINTER_EXT () { 0x8090 }
+sub GL_INDEX_ARRAY_POINTER_EXT () { 0x8091 }
+sub GL_TEXTURE_COORD_ARRAY_POINTER_EXT () { 0x8092 }
+sub GL_EDGE_FLAG_ARRAY_POINTER_EXT () { 0x8093 }
+sub GL_CLAMP_TO_EDGE_SGIS () { 0x812F }
+sub GL_FUNC_ADD_EXT () { 0x8006 }
+sub GL_MIN_EXT () { 0x8007 }
+sub GL_MAX_EXT () { 0x8008 }
+sub GL_BLEND_EQUATION_EXT () { 0x8009 }
+sub GL_FUNC_SUBTRACT_EXT () { 0x800A }
+sub GL_FUNC_REVERSE_SUBTRACT_EXT () { 0x800B }
+sub GL_POINT_SIZE_MIN_EXT () { 0x8126 }
+sub GL_POINT_SIZE_MAX_EXT () { 0x8127 }
+sub GL_POINT_FADE_THRESHOLD_SIZE_EXT () { 0x8128 }
+sub GL_DISTANCE_ATTENUATION_EXT () { 0x8129 }
+sub GL_TABLE_TOO_LARGE_EXT () { 0x8031 }
+sub GL_COLOR_TABLE_FORMAT_EXT () { 0x80D8 }
+sub GL_COLOR_TABLE_WIDTH_EXT () { 0x80D9 }
+sub GL_COLOR_TABLE_RED_SIZE_EXT () { 0x80DA }
+sub GL_COLOR_TABLE_GREEN_SIZE_EXT () { 0x80DB }
+sub GL_COLOR_TABLE_BLUE_SIZE_EXT () { 0x80DC }
+sub GL_COLOR_TABLE_ALPHA_SIZE_EXT () { 0x80DD }
+sub GL_COLOR_TABLE_LUMINANCE_SIZE_EXT () { 0x80DE }
+sub GL_COLOR_TABLE_INTENSITY_SIZE_EXT () { 0x80DF }
+sub GL_TEXTURE_INDEX_SIZE_EXT () { 0x80ED }
+sub GL_COLOR_INDEX1_EXT () { 0x80E2 }
+sub GL_COLOR_INDEX2_EXT () { 0x80E3 }
+sub GL_COLOR_INDEX4_EXT () { 0x80E4 }
+sub GL_COLOR_INDEX8_EXT () { 0x80E5 }
+sub GL_COLOR_INDEX12_EXT () { 0x80E6 }
+sub GL_COLOR_INDEX16_EXT () { 0x80E7 }
+sub GL_CLIP_VOLUME_CLIPPING_HINT_EXT () { 0x80F0 }
+sub GL_ARRAY_ELEMENT_LOCK_FIRST_EXT () { 0x81A8 }
+sub GL_ARRAY_ELEMENT_LOCK_COUNT_EXT () { 0x81A9 }
+sub GL_OCCLUSION_TEST_HP () { 0x8165 }
+sub GL_OCCLUSION_TEST_RESULT_HP () { 0x8166 }
+sub GL_SHARED_TEXTURE_PALETTE_EXT () { 0x81FB }
+sub GL_INCR_WRAP_EXT () { 0x8507 }
+sub GL_DECR_WRAP_EXT () { 0x8508 }
+sub GL_NORMAL_MAP_NV () { 0x8511 }
+sub GL_REFLECTION_MAP_NV () { 0x8512 }
+sub GL_DOT3_RGB_EXT () { 0x8740 }
+sub GL_DOT3_RGBA_EXT () { 0x8741 }
+
+
+sub GL_COLOR_BUFFER_BIT { 0x00004000 } 
+sub GL_DEPTH_BUFFER_BIT { 0x00000100 } 
+sub GL_ACCUM_BUFFER_BIT { 0x00000200 } 
+sub GL_STENCIL_BUFFER_BIT { 0x00000400 } 
+sub GL_POINTS { 0x0000 } 
+sub GL_LINES { 0x0001 } 
+sub GL_LINE_STRIP { 0x0003 } 
+sub GL_LINE_LOOP { 0x0002 } 
+sub GL_TRIANGLES { 0x0004 } 
+sub GL_TRIANGLE_STRIP { 0x0005 } 
+sub GL_TRIANGLE_FAN { 0x0006 } 
+sub GL_QUADS { 0x0007 } 
+sub GL_QUAD_STRIP { 0x0008 } 
+sub GL_POLYGON { 0x0009 } 
+sub GL_LINE_STIPPLE { 0x0B24 } 
+sub GL_FRONT { 0x0404 } 
+sub GL_BACK { 0x0405 } 
+sub GL_POINT { 0x1B00 } 
+sub GL_LINE { 0x1B01 } 
+sub GL_FILL { 0x1B02 } 
+sub GL_CCW { 0x0901 } 
+sub GL_CW { 0x0900 } 
+sub GL_FRONT_AND_BACK { 0x0408 } 
+sub GL_CULL_FACE { 0x0B44 } 
+sub GL_POLYGON_STIPPLE { 0x0B42 } 
+sub GL_NORMALIZE { 0x0BA1 } 
+sub GL_RESCALE_NORMAL { 0x803A } 
+sub GL_VERTEX_ARRAY { 0x8074 } 
+sub GL_COLOR_ARRAY { 0x8076 } 
+sub GL_INDEX_ARRAY { 0x8077 } 
+sub GL_NORMAL_ARRAY { 0x8075 } 
+sub GL_TEXTURE_COORD_ARRAY { 0x8078 } 
+sub GL_EDGE_FLAG_ARRAY { 0x8079 } 
+sub GL_BYTE { 0x1400 } 
+sub GL_UNSIGNED_BYTE { 0x1401 } 
+sub GL_SHORT { 0x1402 } 
+sub GL_UNSIGNED_SHORT { 0x1403 } 
+sub GL_INT { 0x1404 } 
+sub GL_UNSIGNED_INT { 0x1405 } 
+sub GL_FLOAT { 0x1406 } 
+sub GL_DOUBLE { 0x140A } 
+sub GL_V2F { 0x2A20 } 
+sub GL_V3F { 0x2A21 } 
+sub GL_C4UB_V2F { 0x2A22 } 
+sub GL_C4UB_V3F { 0x2A23 } 
+sub GL_C3F_V3F { 0x2A24 } 
+sub GL_N3F_V3F { 0x2A25 } 
+sub GL_C4F_N3F_V3F { 0x2A26 } 
+sub GL_T2F_V3F { 0x2A27 } 
+sub GL_T4F_V4F { 0x2A28 } 
+sub GL_T2F_C4UB_V3F { 0x2A29 } 
+sub GL_T2F_C3F_V3F { 0x2A2A } 
+sub GL_T2F_N3F_V3F { 0x2A2B } 
+sub GL_T2F_C4F_N3F_V3F { 0x2A2C } 
+sub GL_T4F_C4F_N3F_V4F { 0x2A2D } 
+sub GL_ALL_ATTRIB_BITS { 0x000FFFFF } 
+sub GL_CURRENT_BIT { 0x00000001 } 
+sub GL_ENABLE_BIT { 0x00002000 } 
+sub GL_EVAL_BIT { 0x00010000 } 
+sub GL_FOG_BIT { 0x00000080 } 
+sub GL_HINT_BIT { 0x00008000 } 
+sub GL_LIGHTING_BIT { 0x00000040 } 
+sub GL_LINE_BIT { 0x00000004 } 
+sub GL_LIST_BIT { 0x00020000 } 
+sub GL_PIXEL_MODE_BIT { 0x00000020 } 
+sub GL_POINT_BIT { 0x00000002 } 
+sub GL_POLYGON_BIT { 0x00000008 } 
+sub GL_POLYGON_STIPPLE_BIT { 0x00000010 } 
+sub GL_SCISSOR_BIT { 0x00080000 } 
+sub GL_TEXTURE_BIT { 0x00040000 } 
+sub GL_TRANSFORM_BIT { 0x00001000 } 
+sub GL_VIEWPORT_BIT { 0x00000800 } 
+sub GL_CLIENT_PIXEL_STORE_BIT { 0x00000001 } 
+sub GL_CLIENT_VERTEX_ARRAY_BIT { 0x00000002 } 
+sub GL_ALL_CLIENT_ATTRIB_BITS { 0xFFFFFFFF } 
+sub GL_MODELVIEW { 0x1700 } 
+sub GL_PROJECTION { 0x1701 } 
+sub GL_TEXTURE { 0x1702 } 
+sub GL_SMOOTH { 0x1D01 } 
+sub GL_FLAT { 0x1D00 } 
+sub GL_LIGHT0 { 0x4000 } 
+sub GL_LIGHT1 { 0x4001 } 
+sub GL_LIGHT2 { 0x4002 } 
+sub GL_LIGHT3 { 0x4003 } 
+sub GL_LIGHT4 { 0x4004 } 
+sub GL_LIGHT5 { 0x4005 } 
+sub GL_LIGHT6 { 0x4006 } 
+sub GL_LIGHT7 { 0x4007 } 
+sub GL_AMBIENT { 0x1200 } 
+sub GL_DIFFUSE { 0x1201 } 
+sub GL_AMBIENT_AND_DIFFUSE { 0x1602 } 
+sub GL_SPECULAR { 0x1202 } 
+sub GL_SHININESS { 0x1601 } 
+sub GL_EMISSION { 0x1600 } 
+sub GL_COLOR_INDEXES { 0x1603 } 
+sub GL_POSITION { 0x1203 } 
+sub GL_SPOT_DIRECTION { 0x1204 } 
+sub GL_SPOT_EXPONENT { 0x1205 } 
+sub GL_SPOT_CUTOFF { 0x1206 } 
+sub GL_CONSTANT_ATTENUATION { 0x1207 } 
+sub GL_LINEAR_ATTENUATION { 0x1208 } 
+sub GL_QUADRATIC_ATTENUATION { 0x1209 } 
+sub GL_LIGHT_MODEL_AMBIENT { 0x0B53 } 
+sub GL_LIGHT_MODEL_LOCAL_VIEWER { 0x0B51 } 
+sub GL_LIGHT_MODEL_TWO_SIDE { 0x0B52 } 
+sub GL_LIGHT_MODEL_COLOR_CONTROL { 0x81F8 } 
+sub GL_FALSE { 0x0 } 
+sub GL_TRUE { 0x1 } 
+sub GL_SINGLE_COLOR { 0x81F9 } 
+sub GL_ZERO { 0x0 } 
+sub GL_ONE { 0x1 } 
+sub GL_DST_COLOR { 0x0306 } 
+sub GL_SRC_COLOR { 0x0300 } 
+sub GL_ONE_MINUS_DST_COLOR { 0x0307 } 
+sub GL_ONE_MINUS_SRC_COLOR { 0x0301 } 
+sub GL_SRC_ALPHA { 0x0302 } 
+sub GL_ONE_MINUS_SRC_ALPHA { 0x0303 } 
+sub GL_SRC_ALPHA_SATURATE { 0x0308 } 
+sub GL_CONSTANT_COLOR { 0x8001 } 
+sub GL_ONE_MINUS_CONSTANT_COLOR { 0x8002 } 
+sub GL_CONSTANT_ALPHA { 0x8003 } 
+sub GL_ONE_MINUS_CONSTANT_ALPHA { 0x8004 } 
+sub GL_POINT_SMOOTH_HINT { 0x0C51 } 
+sub GL_LINE_SMOOTH_HINT { 0x0C52 } 
+sub GL_POLYGON_SMOOTH_HINT { 0x0C53 } 
+sub GL_FOG_HINT { 0x0C54 } 
+sub GL_PERSPECTIVE_CORRECTION_HINT { 0x0C50 } 
+sub GL_EXP { 0x0800 } 
+sub GL_EXP2 { 0x0801 } 
+sub GL_FOG_MODE { 0x0B65 } 
+sub GL_LINEAR { 0x2601 } 
+sub GL_FOG_DENSITY { 0x0B62 } 
+sub GL_FOG_START { 0x0B63 } 
+sub GL_FOG_END { 0x0B64 } 
+sub GL_FOG_COLOR { 0x0B66 } 
+sub GL_POLYGON_OFFSET_LINE { 0x2A02 } 
+sub GL_POLYGON_OFFSET_FILL { 0x8037 } 
+sub GL_POLYGON_OFFSET_POINT { 0x2A01 } 
+sub GL_COLOR_INDEX { 0x1900 } 
+sub GL_RGB { 0x1907 } 
+sub GL_RGBA { 0x1908 } 
+sub GL_BGR { 0x80E0 } 
+sub GL_BGRA { 0x80E1 } 
+sub GL_RED { 0x1903 } 
+sub GL_GREEN { 0x1904 } 
+sub GL_BLUE { 0x1905 } 
+sub GL_ALPHA { 0x1906 } 
+sub GL_LUMINANCE { 0x1909 } 
+sub GL_LUMINANCE_ALPHA { 0x190A } 
+sub GL_STENCIL_INDEX { 0x1901 } 
+sub GL_DEPTH_COMPONENT { 0x1902 } 
+sub GL_BITMAP { 0x1A00 } 
+sub GL_UNSIGNED_BYTE_3_3_2 { 0x8032 } 
+sub GL_UNSIGNED_BYTE_2_3_3_REV { 0x8362 } 
+sub GL_UNSIGNED_SHORT_5_6_5 { 0x8363 } 
+sub GL_UNSIGNED_SHORT_5_6_5_REV { 0x8364 } 
+sub GL_UNSIGNED_SHORT_4_4_4_4 { 0x8033 } 
+sub GL_UNSIGNED_SHORT_4_4_4_4_REV { 0x8365 } 
+sub GL_UNSIGNED_SHORT_5_5_5_1 { 0x8034 } 
+sub GL_UNSIGNED_SHORT_1_5_5_5_REV { 0x8366 } 
+sub GL_UNSIGNED_INT_8_8_8_8 { 0x8035 } 
+sub GL_UNSIGNED_INT_8_8_8_8_REV { 0x8367 } 
+sub GL_UNSIGNED_INT_10_10_10_2 { 0x8036 } 
+sub GL_UNSIGNED_INT_2_10_10_10_REV { 0x8368 } 
+sub GL_UNPACK_SWAP_BYTES { 0x0CF0 } 
+sub GL_PACK_SWAP_BYTES { 0x0D00 } 
+sub GL_UNPACK_LSB_FIRST { 0x0CF1 } 
+sub GL_PACK_LSB_FIRST { 0x0D01 } 
+sub GL_UNPACK_ROW_LENGTH { 0x0CF2 } 
+sub GL_PACK_ROW_LENGTH { 0x0D02 } 
+sub GL_UNPACK_SKIP_ROWS { 0x0CF3 } 
+sub GL_PACK_SKIP_ROWS { 0x0D03 } 
+sub GL_UNPACK_SKIP_PIXELS { 0x0CF4 } 
+sub GL_PACK_SKIP_PIXELS { 0x0D04 } 
+sub GL_UNPACK_ALIGNMENT { 0x0CF5 } 
+sub GL_PACK_ALIGNMENT { 0x0D05 } 
+sub GL_UNPACK_IMAGE_HEIGHT { 0x806E } 
+sub GL_PACK_IMAGE_HEIGHT { 0x806C } 
+sub GL_UNPACK_SKIP_IMAGES { 0x806D } 
+sub GL_PACK_SKIP_IMAGES { 0x806B } 
+sub GL_MAP_COLOR { 0x0D10 } 
+sub GL_MAP_STENCIL { 0x0D11 } 
+sub GL_INDEX_SHIFT { 0x0D12 } 
+sub GL_INDEX_OFFSET { 0x0D13 } 
+sub GL_RED_SCALE { 0x0D14 } 
+sub GL_GREEN_SCALE { 0x0D18 } 
+sub GL_BLUE_SCALE { 0x0D1A } 
+sub GL_ALPHA_SCALE { 0x0D1C } 
+sub GL_DEPTH_SCALE { 0x0D1E } 
+sub GL_RED_BIAS { 0x0D15 } 
+sub GL_GREEN_BIAS { 0x0D19 } 
+sub GL_BLUE_BIAS { 0x0D1B } 
+sub GL_ALPHA_BIAS { 0x0D1D } 
+sub GL_DEPTH_BIAS { 0x0D1F } 
+sub GL_POST_CONVOLUTION_RED_SCALE { 0x801C } 
+sub GL_POST_CONVOLUTION_GREEN_SCALE { 0x801D } 
+sub GL_POST_CONVOLUTION_BLUE_SCALE { 0x801E } 
+sub GL_POST_CONVOLUTION_ALPHA_SCALE { 0x801F } 
+sub GL_POST_CONVOLUTION_RED_BIAS { 0x8020 } 
+sub GL_POST_CONVOLUTION_GREEN_BIAS { 0x8021 } 
+sub GL_POST_CONVOLUTION_BLUE_BIAS { 0x8022 } 
+sub GL_POST_CONVOLUTION_ALPHA_BIAS { 0x8023 } 
+sub GL_POST_COLOR_MATRIX_RED_SCALE { 0x80B4 } 
+sub GL_POST_COLOR_MATRIX_GREEN_SCALE { 0x80B5 } 
+sub GL_POST_COLOR_MATRIX_BLUE_SCALE { 0x80B6 } 
+sub GL_POST_COLOR_MATRIX_ALPHA_SCALE { 0x80B7 } 
+sub GL_POST_COLOR_MATRIX_RED_BIAS { 0x80B8 } 
+sub GL_POST_COLOR_MATRIX_GREEN_BIAS { 0x80B9 } 
+sub GL_POST_COLOR_MATRIX_BLUE_BIAS { 0x80BA } 
+sub GL_POST_COLOR_MATRIX_ALPHA_BIAS { 0x80BB } 
+sub GL_PIXEL_MAP_I_TO_I { 0x0C70 } 
+sub GL_PIXEL_MAP_S_TO_S { 0x0C71 } 
+sub GL_PIXEL_MAP_I_TO_R { 0x0C72 } 
+sub GL_PIXEL_MAP_I_TO_G { 0x0C73 } 
+sub GL_PIXEL_MAP_I_TO_B { 0x0C74 } 
+sub GL_PIXEL_MAP_I_TO_A { 0x0C75 } 
+sub GL_PIXEL_MAP_R_TO_R { 0x0C76 } 
+sub GL_PIXEL_MAP_G_TO_G { 0x0C77 } 
+sub GL_PIXEL_MAP_B_TO_B { 0x0C78 } 
+sub GL_PIXEL_MAP_A_TO_A { 0x0C79 } 
+sub GL_TEXTURE_1D { 0x0DE0 } 
+sub GL_TEXTURE_2D { 0x0DE1 } 
+sub GL_TEXTURE_3D { 0x806F } 
+sub GL_PROXY_TEXTURE_2D { 0x8064 } 
+sub GL_ALPHA4 { 0x803B } 
+sub GL_ALPHA8 { 0x803C } 
+sub GL_ALPHA12 { 0x803D } 
+sub GL_ALPHA16 { 0x803E } 
+sub GL_LUMINANCE4 { 0x803F } 
+sub GL_LUMINANCE8 { 0x8040 } 
+sub GL_LUMINANCE12 { 0x8041 } 
+sub GL_LUMINANCE16 { 0x8042 } 
+sub GL_LUMINANCE4_ALPHA4 { 0x8043 } 
+sub GL_LUMINANCE6_ALPHA2 { 0x8044 } 
+sub GL_LUMINANCE8_ALPHA8 { 0x8045 } 
+sub GL_LUMINANCE12_ALPHA4 { 0x8046 } 
+sub GL_LUMINANCE12_ALPHA12 { 0x8047 } 
+sub GL_LUMINANCE16_ALPHA16 { 0x8048 } 
+sub GL_INTENSITY { 0x8049 } 
+sub GL_INTENSITY4 { 0x804A } 
+sub GL_INTENSITY8 { 0x804B } 
+sub GL_INTENSITY12 { 0x804C } 
+sub GL_INTENSITY16 { 0x804D } 
+sub GL_R3_G3_B2 { 0x2A10 } 
+sub GL_RGB4 { 0x804F } 
+sub GL_RGB5 { 0x8050 } 
+sub GL_RGB8 { 0x8051 } 
+sub GL_RGB10 { 0x8052 } 
+sub GL_RGB12 { 0x8053 } 
+sub GL_RGB16 { 0x8054 } 
+sub GL_RGBA2 { 0x8055 } 
+sub GL_RGBA4 { 0x8056 } 
+sub GL_RGB5_A1 { 0x8057 } 
+sub GL_RGBA8 { 0x8058 } 
+sub GL_RGB10_A2 { 0x8059 } 
+sub GL_RGBA12 { 0x805A } 
+sub GL_RGBA16 { 0x805B } 
+sub GL_MAX_TEXTURE_SIZE { 0x0D33 } 
+sub GL_TEXTURE_BASE_LEVEL { 0x813C } 
+sub GL_TEXTURE_MAX_LEVEL { 0x813D } 
+sub GL_TEXTURE_MAX_LOD { 0x813B } 
+sub GL_TEXTURE_MIN_LOD { 0x813A } 
+sub GL_TEXTURE_ENV_MODE { 0x2200 } 
+sub GL_TEXTURE_ENV_COLOR { 0x2201 } 
+sub GL_DECAL { 0x2101 } 
+sub GL_REPLACE { 0x1E01 } 
+sub GL_MODULATE { 0x2100 } 
+sub GL_BLEND { 0x0BE2 } 
+sub GL_TEXTURE_WRAP_S { 0x2802 } 
+sub GL_TEXTURE_WRAP_T { 0x2803 } 
+sub GL_TEXTURE_WRAP_R { 0x8072 } 
+sub GL_TEXTURE_MAG_FILTER { 0x2800 } 
+sub GL_TEXTURE_MIN_FILTER { 0x2801 } 
+sub GL_TEXTURE_BORDER_COLOR { 0x1004 } 
+sub GL_TEXTURE_PRIORITY { 0x8066 } 
+sub GL_CLAMP { 0x2900 } 
+sub GL_CLAMP_TO_EDGE { 0x812F } 
+sub GL_REPEAT { 0x2901 } 
+sub GL_NEAREST { 0x2600 } 
+sub GL_NEAREST_MIPMAP_NEAREST { 0x2700 } 
+sub GL_NEAREST_MIPMAP_LINEAR { 0x2702 } 
+sub GL_LINEAR_MIPMAP_NEAREST { 0x2701 } 
+sub GL_LINEAR_MIPMAP_LINEAR { 0x2703 } 
+sub GL_S { 0x2000 } 
+sub GL_T { 0x2001 } 
+sub GL_R { 0x2002 } 
+sub GL_Q { 0x2003 } 
+sub GL_TEXTURE_GEN_MODE { 0x2500 } 
+sub GL_OBJECT_PLANE { 0x2501 } 
+sub GL_EYE_PLANE { 0x2502 } 
+sub GL_EYE_LINEAR { 0x2400 } 
+sub GL_OBJECT_LINEAR { 0x2401 } 
+sub GL_SPHERE_MAP { 0x2402 } 
+sub GL_LEFT { 0x0406 } 
+sub GL_RIGHT { 0x0407 } 
+sub GL_FRONT_LEFT { 0x0400 } 
+sub GL_FRONT_RIGHT { 0x0401 } 
+sub GL_BACK_LEFT { 0x0402 } 
+sub GL_BACK_RIGHT { 0x0403 } 
+sub GL_NONE { 0x0 } 
+sub GL_SCISSOR_TEST { 0x0C11 } 
+sub GL_NEVER { 0x0200 } 
+sub GL_ALWAYS { 0x0207 } 
+sub GL_LESS { 0x0201 } 
+sub GL_LEQUAL { 0x0203 } 
+sub GL_EQUAL { 0x0202 } 
+sub GL_GEQUAL { 0x0206 } 
+sub GL_GREATER { 0x0204 } 
+sub GL_NOTEQUAL { 0x0205 } 
+sub GL_KEEP { 0x1E00 } 
+sub GL_INCR { 0x1E02 } 
+sub GL_DECR { 0x1E03 } 
+sub GL_INVERT { 0x150A } 
+sub GL_CLEAR { 0x1500 } 
+sub GL_COPY { 0x1503 } 
+sub GL_NOOP { 0x1505 } 
+sub GL_SET { 0x150F } 
+sub GL_COPY_INVERTED { 0x150C } 
+sub GL_AND_REVERSE { 0x1502 } 
+sub GL_OR_REVERSE { 0x150B } 
+sub GL_AND { 0x1501 } 
+sub GL_OR { 0x1507 } 
+sub GL_NAND { 0x150E } 
+sub GL_NOR { 0x1508 } 
+sub GL_XOR { 0x1506 } 
+sub GL_EQUIV { 0x1509 } 
+sub GL_AND_INVERTED { 0x1504 } 
+sub GL_OR_INVERTED { 0x150D } 
+sub GL_LOAD { 0x0101 } 
+sub GL_RETURN { 0x0102 } 
+sub GL_ADD { 0x0104 } 
+sub GL_MULT { 0x0103 } 
+sub GL_ACCUM { 0x0100 } 
+sub GL_MAP1_VERTEX_3 { 0x0D97 } 
+sub GL_MAP1_VERTEX_4 { 0x0D98 } 
+sub GL_MAP1_INDEX { 0x0D91 } 
+sub GL_MAP1_COLOR_4 { 0x0D90 } 
+sub GL_MAP1_NORMAL { 0x0D92 } 
+sub GL_MAP1_TEXTURE_COORD_1 { 0x0D93 } 
+sub GL_MAP1_TEXTURE_COORD_2 { 0x0D94 } 
+sub GL_MAP1_TEXTURE_COORD_3 { 0x0D95 } 
+sub GL_MAP1_TEXTURE_COORD_4 { 0x0D96 } 
+sub GL_MAP2_VERTEX_3 { 0x0DB7 } 
+sub GL_MAP2_VERTEX_4 { 0x0DB8 } 
+sub GL_MAP2_INDEX { 0x0DB1 } 
+sub GL_MAP2_COLOR_4 { 0x0DB0 } 
+sub GL_MAP2_NORMAL { 0x0DB2 } 
+sub GL_MAP2_TEXTURE_COORD_1 { 0x0DB3 } 
+sub GL_MAP2_TEXTURE_COORD_2 { 0x0DB4 } 
+sub GL_MAP2_TEXTURE_COORD_3 { 0x0DB5 } 
+sub GL_MAP2_TEXTURE_COORD_4 { 0x0DB6 } 
+sub GL_AUTO_NORMAL { 0x0D80 } 
+sub GL_LIGHTING { 0x0B50 } 
+sub GL_DEPTH_TEST { 0x0B71 } 
+sub GL_COLOR_TABLE { 0x80D0 } 
+sub GL_POST_CONVOLUTION_COLOR_TABLE { 0x80D1 } 
+sub GL_POST_COLOR_MATRIX_COLOR_TABLE { 0x80D2 } 
+sub GL_PROXY_COLOR_TABLE { 0x80D3 } 
+sub GL_PROXY_POST_CONVOLUTION_COLOR_TABLE { 0x80D4 } 
+sub GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE { 0x80D5 } 
+sub GL_CONVOLUTION_1D { 0x8010 } 
+sub GL_CONVOLUTION_2D { 0x8011 } 
+sub GL_SEPARABLE_2D { 0x8012 } 
+sub GL_CONVOLUTION_BORDER_MODE { 0x8013 } 
+sub GL_CONVOLUTION_FILTER_SCALE { 0x8014 } 
+sub GL_CONVOLUTION_FILTER_BIAS { 0x8015 } 
+sub GL_REDUCE { 0x8016 } 
+sub GL_CONSTANT_BORDER { 0x8151 } 
+sub GL_REPLICATE_BORDER { 0x8153 } 
+sub GL_HISTOGRAM { 0x8024 } 
+sub GL_PROXY_HISTOGRAM { 0x8025 } 
+sub GL_MINMAX { 0x802E } 
+sub GL_MIN { 0x8007 } 
+sub GL_MAX { 0x8008 } 
+sub GL_FUNC_ADD { 0x8006 } 
+sub GL_FUNC_SUBTRACT { 0x800A } 
+sub GL_FUNC_REVERSE_SUBTRACT { 0x800B } 
+sub GL_COLOR_TABLE_SCALE { 0x80D6 } 
+sub GL_READ_BUFFER { 0x0C02 } 
+sub GLU_DISPLAY_MODE { 100204 } 
+sub GLU_NURBS_MODE { 100160 } 
+sub GLU_CULLING { 100201 } 
+sub GLU_SAMPLING_METHOD { 100205 } 
+sub GLU_SAMPLING_TOLERANCE { 100203 } 
+sub GLU_PARAMETRIC_TOLERANCE { 100202 } 
+sub GLU_U_STEP { 100206 } 
+sub GLU_V_STEP { 100207 } 
+sub GLU_AUTO_LOAD_MATRIX { 100200 } 
+sub GLU_FILL { 100012 } 
+sub GLU_OUTLINE_POLYGON { 100240 } 
+sub GLU_OUTLINE_PATCH { 100241 } 
+sub GLU_NURBS_RENDERER { 100162 } 
+sub GLU_NURBS_TESSELLATOR { 100161 } 
+sub GLU_PATH_LENGTH { 100215 } 
+sub GLU_DOMAIN_DISTANCE { 100217 } 
+sub GLU_OBJECT_PATH_LENGTH { 100209 } 
+sub GLU_OBJECT_PARAMETRIC_ERROR { 100208 } 
+sub GLU_NURBS_ERROR { 100103 } 
+sub GLU_NURBS_BEGIN { 100164 } 
+sub GLU_NURBS_BEGIN_DATA { 100170 } 
+sub GLU_NURBS_TEXTURE_COORD { 100168 } 
+sub GLU_NURBS_TEXTURE_COORD_DATA { 100174 } 
+sub GLU_NURBS_COLOR { 100167 } 
+sub GLU_NURBS_COLOR_DATA { 100173 } 
+sub GLU_NURBS_NORMAL { 100166 } 
+sub GLU_NURBS_NORMAL_DATA { 100172 } 
+sub GLU_NURBS_VERTEX { 100165 } 
+sub GLU_NURBS_VERTEX_DATA { 100171 } 
+sub GLU_NURBS_END { 100169 } 
+sub GLU_NURBS_END_DATA { 100175 } 
+sub GLU_MAP1_TRIM_2 { 100210 } 
+sub GLU_MAP1_TRIM_3 { 100211 } 
+sub GLU_TESS_BOUNDARY_ONLY { 100141 } 
+sub GLU_TESS_TOLERANCE { 100142 } 
+sub GLU_TESS_WINDING_RULE { 100140 } 
+sub GLU_TESS_WINDING_ODD { 100130 } 
+sub GLU_TESS_WINDING_NONZERO { 100131 } 
+sub GLU_TESS_WINDING_POSITIVE { 100132 } 
+sub GLU_TESS_WINDING_NEGATIVE { 100133 } 
+sub GLU_TESS_WINDING_ABS_GEQ_TWO { 100134 } 
+
+
+1;
+
diff -ruN SDL_perl-1.20.0/lib/SDL/OpenGL/Cube.pm SDL_perl-1.20.2/lib/SDL/OpenGL/Cube.pm
--- SDL_perl-1.20.0/lib/SDL/OpenGL/Cube.pm	Wed Jan  1 21:35:24 2003
+++ SDL_perl-1.20.2/lib/SDL/OpenGL/Cube.pm	Fri Mar 21 13:06:34 2003
@@ -6,6 +6,8 @@
 package SDL::OpenGL::Cube;
 use SDL;
 use SDL::OpenGL;
+use SDL::OpenGL::Constants;
+use vars qw/ @ISA /;
 
 require SDL::OpenGL::Model;
 
diff -ruN SDL_perl-1.20.0/lib/SDL/OpenGL.pm SDL_perl-1.20.2/lib/SDL/OpenGL.pm
--- SDL_perl-1.20.0/lib/SDL/OpenGL.pm	Wed Jan  1 21:17:20 2003
+++ SDL_perl-1.20.2/lib/SDL/OpenGL.pm	Fri Mar 21 18:59:48 2003
@@ -4,32 +4,88 @@
 #
 
 package SDL::OpenGL;
-use SDL;
 
 require Exporter;
+use strict;
+use SDL;
+use vars qw/@ISA @EXPORT/;
+@ISA = qw/Exporter/;
 
-@ISA = qw/ Exporter /;
+use SDL::OpenGL::Constants;
 
-my @glu = qw/ LookAt Perspective Ortho2D ScaleImage Build1DMipmaps Build2DMipmaps  
-	Build3DMipmaps Build1DMipmapLevels Build2DMipmapLevels Build3DMipmapLevels 
+BEGIN {
+	my @glu = qw/
+	LookAt Perspective Ortho2D ScaleImage Build1DMipmaps Build2DMipmaps  
+	Build3DMipmaps Build1DMipmapLevels Build2DMipmapLevels
+	Build3DMipmapLevels 
 	ErrorString NewNurbsRenderer DeleteNurbsRenderer NurbsProperty	
-	LoadSamplingMatrices GetNurbsProperty NurbsCallback BeginSurface EndSurface
+	LoadSamplingMatrices GetNurbsProperty NurbsCallback BeginSurface
+	EndSurface
 	NurbsSurface BeginCurve EndCurve NurbsCurve NurbsCallbackData
 	BeginTrim EndTrim PwlCurve
-/;	
+	/;	
 
-my @routines = keys %SDL::OpenGL::;
-for ( @routines ) {
-	if (/^GL/) {
-		push @EXPORT, "&$_";
-	} elsif ( in ( $_, @glu )) {
-		eval "sub SDL::OpenGL::glu$_ { $_(\@_); }";
-		push @EXPORT, "glu$_";
-	} else {
-		eval "sub SDL::OpenGL::gl$_ { $_(\@_); }";
-		push @EXPORT, "gl$_";
+	my @gl = qw/ StencilMask Light DrawElements EdgeFlagPointer
+	NormalPointer Color 
+	PopClientAttrib GetError TexImage1D IndexMask DeleteTess CopyTexImage1D 
+	GetTessProperty IsList ClearStencil CallLists PushClientAttrib Scissor
+	Clear DeleteTextures 
+	TexImage2D ClearIndex ClipPlane PointSize LoadIdentity Fog
+	ConvolutionParameter CopyTexImage2D ListBase Minmax FrontFace
+	PolygonStipple 
+	DepthFunc NewList BlendFunc ClearAccum TessEndPolygon TexImage3D
+	DrawPixels 
+	CopyPixels GenTextures Viewport UnProject SeparableFilter2D Begin
+	EdgeFlag 
+	LineWidth MapGrid1 TexEnv MatrixMode MapGrid2 EndList
+	LoadMatrix RasterPos 
+	AreTexturesResident ColorTableParameter PolygonOffset Project
+	PushMatrix PixelTransfer 
+	ColorMaterial PrioritizeTextures TessEndContour Scale PolygonMode Rect 
+	TessBeginPolygon Index Flush ClearDepth MultMatrix ResetMinmax
+	Map1 Map2 BlendEquation TessVertex EvalMesh1 Frustum EvalMesh2 Vertex 
+	DisableClientState InterleavedArrays EnableClientState PopMatrix Enable 
+	LineStipple ReadBuffer CopyColorSubTable Accum CallList DepthMask 
+	DrawRangeElements ColorSubTable TessBeginContour StencilOp GetMinmax
+	ShadeModel 
+	VertexPointer Disable DrawBuffer PushAttrib GetHistogram StencilFunc
+	End 
+	EvalCoord1 CopyTexSubImage1D EvalCoord2 Translate TexSubImage1D
+	GenLists 
+	ConvolutionFilter1D CopyConvolutionFilter1D Ortho MultiTexCoord
+	AlphaFunc 
+	IsTexture LogicOp PixelStore ClearColor ColorTable Finish ColorPointer 
+	TexParameter Rotate TessProperty CullFace TessNormal Normal
+	ActiveTextureARB 
+	UnProject4 CopyColorTable TessCallback ArrayElement Histogram Hint
+	PixelZoom 
+	PopAttrib IsEnabled CopyTexSubImage2D TexSubImage2D ConvolutionFilter2D 
+	CopyConvolutionFilter2D NewTess TexCoordPointer DrawArrays
+	ResetHistogram 
+	Material PixelMap DepthRange BindTexture TexCoord TexGen Bitmap
+	CopyTexSubImage3D 
+	TexSubImage3D ColorMask
+	/;
+
+       my @routines = keys %SDL::OpenGL::;
+       no strict 'refs';
+       # for all routines in SDL::OpenGL, either export it or create an
+       # alias and export this alias then
+       for my $name ( @routines ) {
+		next if $name =~ /^(BEGIN|CHECK|END)$/;
+		#if ($name =~ /^GL/) {
+		#	push @EXPORT, "&$name";
+		#} elsif ( in ( $name, @glu )) {
+		if ( in ( $name, @glu )) {
+			*{"glu".$name} = \&{$name};
+			push @EXPORT, "glu$name";
+		} else {
+			*{"gl".$name} = \&{$name};
+			push @EXPORT, "gl$name";
+		}
 	}
-}
+
+};
 
 1;
 
@@ -52,12 +108,52 @@
 glVertex3d is simply glVertex, and perl just does the right thing with regards
 to types.
 
+=head1 CAVEATS
+
+The following methods work different in Perl than in C:
+
+=over 2
+
+=item glCallLists
+
+	glCallLists(@array_of_numbers);
+
+Unlike the C function, which get's passed a count, a type and a list of
+numbers, the Perl equivalent only takes a list of numbers.
+
+Note that this is slow, since it needs to allocate memory and construct a
+list of numbers from the given scalars. For a faster version see
+L<glCallListsString>.
+
+=back
+
+The following methods exist in addition to the normal OpenGL specification:
+
+=over 2
+
+=item glCallListsScalar
+
+	glCallListsScalar($string);
+
+Works like L<glCallLists()>, except that it needs only one parameter, a scalar
+holding a string. The string is interpreted as a set of bytes, and each of
+these will be passed to glCallLists as GL_BYTE. This is faster than
+glCallLists, so you might want to pack your data like this:
+
+	my $lists = pack("C", @array_of_numbers);
+
+And later use it like this:
+
+	glCallListsScalar($lists);
+
+=back
+
 =head1 AUTHOR
 
-David J. Goehrig
+David J. Goehrig, additional doc by Tels
 
 =head1 SEE ALSO
 
-L<perl> L<SDL::App>
+L<perl>, L<SDL::App> and L<SDL::OpenGL::Constants>.
 
 =cut
diff -ruN SDL_perl-1.20.0/lib/SDL/Opt/Color.pm SDL_perl-1.20.2/lib/SDL/Opt/Color.pm
--- SDL_perl-1.20.0/lib/SDL/Opt/Color.pm	Wed Jan  1 21:43:51 2003
+++ SDL_perl-1.20.2/lib/SDL/Opt/Color.pm	Thu Jan  1 01:00:00 1970
@@ -1,94 +0,0 @@
-#	Color.pm
-#
-#	A package for manipulating SDL_Color *
-#
-#	Copyright (C) 2003 David J. Goehrig
-
-package SDL::Opt::Color;
-use strict;
-use SDL;
-
-sub new {
-	my $proto = shift;
-	my $class = ref($proto) || $proto;
-	my $self;
-
-	my (%options) = @_;
-
-	verify (%options, qw/ -color -surface -pixel -r -g -b /) if $SDL::DEBUG;
-
-	if ($options{-color}) {
-		$self = \$options{-color};	
-	} elsif ($options{-pixel} && $options{-surface}) {
-		die "SDL::Opt::Color::new requires an SDL::Opt::Surface"
-			unless !$SDL::DEBUG || $options{-surface}->isa("SDL::Opt::Surface");
-		$self = \SDL::NewColor(SDL::GetRGB(${$options{-surface}}, $options{-pixel}));
-	} else {
-		my @color;
-		push @color, $options{-red}	|| $options{-r} || 0;
-		push @color, $options{-green}	|| $options{-g} || 0;
-		push @color, $options{-blue}	|| $options{-b} || 0;
-		$self = \SDL::NewColor(@color);
-	} 
-	die "Could not create color, ", SDL::GetError(), "\n"
-		unless ($self->{-color});
-	bless $self,$class;
-	return $self;
-}
-
-sub DESTROY {
-	SDL::FreeColor(${$_[0]});
-}
-
-sub r {
-	my $self = shift;
-	SDL::ColorR($$self,@_);	
-}
-
-sub g {
-	my $self = shift;
-	SDL::ColorG($$self,@_);
-}
-
-sub b {
-	my $self = shift;
-	SDL::ColorB($$self,@_);
-}
-
-sub pixel {
-	die "SDL::Opt::Color::pixel requires an SDL::Opt::Surface"
-		unless !$SDL::DEBUG || $_[1]->isa("SDL::Opt::Surface");
-	SDL::MapRGB(${$_[1]},$_[0]->r(),$_[0]->b(),$_[0]->g);
-}
-
-1;
-
-__END__;
-
-=pod
-
-=head1 NAME
-
-SDL::Opt::Color - a SDL perl extension
-
-=head1 SYNOPSIS
-
-  $color = new SDL::Opt::Color ( -r => 0xde, -g => 0xad, -b =>c0 );
-  $color = new SDL::Opt::Color -surface => $app, -pixel => $app->pixel($x,$y);
-  $color = new SDL::Opt::Color -color => SDL::NewColor(0xff,0xaa,0xdd);
-
-=head1 DESCRIPTION
-
-C<SDL::Opt::Color> is a wrapper for display format independent color
-representations, with the same interface as L<SDL::Color>.  
-
-=head1 AUTHOR
-
-David J. Goehrig
-
-=head1 SEE ALSO
-
-L<perl> L<SDL::Opt::Surface> 
-
-=cut
-
diff -ruN SDL_perl-1.20.0/lib/SDL/Opt/Rect.pm SDL_perl-1.20.2/lib/SDL/Opt/Rect.pm
--- SDL_perl-1.20.0/lib/SDL/Opt/Rect.pm	Wed Jan  1 21:43:58 2003
+++ SDL_perl-1.20.2/lib/SDL/Opt/Rect.pm	Thu Jan  1 01:00:00 1970
@@ -1,81 +0,0 @@
-#
-#	Opt/Rect.pm
-#
-#	A package for manipulating SDL_Rect *
-#
-#	Copyright (C) 2003 David J. Goehrig
-
-package SDL::Opt::Rect;
-use strict;
-use SDL;
-
-sub new {
-	my $proto = shift;
-	my $class = ref($proto) || $proto;
-	my %options = @_;
-
-	verify (%options, qw/ -x -y -width -height -w -h / ) if $SDL::DEBUG;
-
-	my $x = $options{-x} 		|| 0;
-	my $y = $options{-y} 		|| 0;
-	my $w = $options{-width}	|| $options{-w}		|| 0;
-	my $h = $options{-height}	|| $options{-h}		|| 0;
-	
-	my $self = \SDL::NewRect($x,$y,$w,$h);
-	bless $self,$class;
-	return $self;
-}
-
-sub DESTROY {
-	SDL::FreeRect($$_[0]);
-}
-
-sub x {
-	my $self = shift;
-	SDL::RectX($$self,@_);
-}
-
-sub y {
-	my $self = shift;
-	SDL::RectY($$self,@_);
-}
-
-sub width {
-	my $self = shift;
-	SDL::RectW($$self,@_);
-}
-
-sub height {
-	my $self = shift;
-	SDL::RectH($$self,@_);
-}
-
-1;
-
-__END__;
-
-=pod
-
-=head1 NAME
-
-SDL::Opt::Rect - a SDL perl extension
-
-=head1 SYNOPSIS
-
-  $rect = new SDL::Opt::Rect ( -height => 4, -width => 40 );
-
-=head1 DESCRIPTION
-
-C<SDL::Opt::Rect> provides an optional lightweight implementation of SDL::Rect,
-and retains an identical interface. 
-
-=head1 AUTHOR
-
-David J. Goehrig
-
-=head1 SEE ALSO
-
-L<perl> L<SDL::Surface> L<SDL::Rect>
-
-=cut
-
diff -ruN SDL_perl-1.20.0/lib/SDL/Opt/Surface.pm SDL_perl-1.20.2/lib/SDL/Opt/Surface.pm
--- SDL_perl-1.20.0/lib/SDL/Opt/Surface.pm	Fri Jan  3 06:07:26 2003
+++ SDL_perl-1.20.2/lib/SDL/Opt/Surface.pm	Thu Jan  1 01:00:00 1970
@@ -1,287 +0,0 @@
-# 
-#	Opt/Surface.pm
-#
-#	A package for manipulating SDL_Surface *
-#
-#	Copyright (C) 2003 David J. Goehrig
-
-package SDL::Opt::Surface;
-
-use strict;
-use SDL;
-
-require SDL::Opt::Rect;
-require SDL::Opt::Color;
-require SDL::Palette;
-
-sub new {
-	my $proto = shift;	
-	my $class = ref($proto) || $proto;
-	my %options = @_;
-	my $self;
-
-	verify (%options, qw/ -name -n -flags -fl -width -w -height -h -depth -d
-				-pitch -p -Rmask -r -Gmask -g -Bmask -b -Amask -a
-				-from -f /) if $SDL::DEBUG;
-	
-	if ( $options{-name} ne "" && exists $SDL::{IMGLoad} ) {		
-	   $self = \SDL::IMGLoad($options{-name});	
-	} else {
-		my $f = $options{-flags}  	|| $options{-fl} 	|| SDL::ANYFORMAT();
-		my $w = $options{-width} 	|| $options{-w}		|| 1;
-		my $h = $options{-height} 	|| $options{-h}		|| 1;	
-		my $d = $options{-depth} 	|| $options{-d}		|| 8;
-		my $p = $options{-pitch} 	|| $options{-p}		|| $w*$d;              
-		my $r = $options{-Rmask} 	|| $options{-r}	
-			||  ( SDL::BigEndian() ? 0xff000000 : 0x000000ff );
-		my $g = $options{-Gmask} 	|| $options{-g}
-			||  ( SDL::BigEndian() ? 0x00ff0000 : 0x0000ff00 );
-		my $b = $options{-Bmask} 	|| $options{-b}
-			||  ( SDL::BigEndian() ? 0x0000ff00 : 0x00ff0000 );
-		my $a = $options{-Amask} 	|| $options{-a}
-			||  ( SDL::BigEndian() ? 0x000000ff : 0xff000000 );
-
-		if ( $options{-from}|| $options{-f} ) { 
-			my $src = $options{-from}|| $options{-f};
-			$self = \SDL::CreateRGBSurfaceFrom($src,$w,$h,$d,$p,$r,$g,$b,$a);
-		} else {
-			$self = \SDL::CreateRGBSurface($f,$w,$h,$d,$r,$g,$b,$a);
-		}
-	}
-	die "SDL::Surface::new failed. ", SDL::GetError()
-		unless ( $$self{-surface});
-	bless $self,$class;
-	return $self;
-}
-
-sub DESTROY {		
-	SDL::FreeSurface(${$_[0]});
-}
-
-sub flags {
-	SDL::SurfaceFlags(${$_[0]});
-}
-
-sub palette {
-	SDL::SurfacePalette(${$_[0]});
-}
-
-sub bpp {
-	SDL::SurfaceBitsPerPixel(${$_[0]});
-}
-
-sub bytes_per_pixel {
-	SDL::SurfaceBytesPerPixel(${$_[0]});
-}
-
-sub Rshift {
-	SDL::SurfaceRshift(${$_[0]});
-}
-
-sub Gshift {
-	SDL::SurfaceGshift(${$_[0]});
-}
-
-sub Bshift {
-	SDL::SurfaceBshift(${$_[0]});
-}
-
-sub Ashift {
-	SDL::SurfaceAshift(${$_[0]});
-}
-
-sub Rmask {
-	SDL::SurfaceRmask(${$_[0]});
-}
-
-sub Gmask {
-	SDL::SurfaceGmask(${$_[0]});
-}
-
-sub Bmask {
-	SDL::SurfaceBmask(${$_[0]});
-}
-
-sub Amask {
-	SDL::SurfaceAmask(${$_[0]});
-}
-
-sub color_key {
-	SDL::SurfaceColorKey(${$_[0]});
-}
-
-sub alpha {
-	SDL::SurfaceAlpha(${$_[0]});
-}
-
-sub width {
-	SDL::SurfaceW(${$_[0]});
-}
-
-sub height {
-	SDL::SurfaceH(${$_[0]});
-}
-
-sub pitch {
-	SDL::SurfacePitch(${$_[0]});
-}
-
-sub pixels {
-	SDL::SurfacePixels(${$_[0]});
-}
-
-sub pixel {
-	die "SDL::Opt::Surface::pixel requires a SDL::Opt::Color"
-		unless $_[3] && $SDL::DEBUG && $_[3]->isa("SDL::Opt::Color");
-	$_[3] ?
-		new SDL::Opt::Color -color => SDL::SurfacePixel(${$_[0]},$_[1],$_[2],${$_[3]}) :
-		new SDL::Opt::Color -color => SDL::SurfacePixel(${$_[0]},$_[1],$_[2]);
-}
-
-sub fill {
-	die "SDL::Opt::Surface::fill requires a SDL::Opt::Rect object"
-		unless !$SDL::DEBUG || $_[1]->isa('SDL::Opt::Rect');
-	die "SDL::Opt::Surface::fill requires a SDL::Opt::Color object"
-		unless !$SDL::DEBUG || $_[2]->isa('SDL::Opt::Color');
-	return SDL::FillRect(${$_[0]},${$_[1]},${$_[2]});
-}
-
-sub lockp {
-	SDL::MUSTLOCK(${$_[0]});
-}
-
-sub lock {
-	SDL::SurfaceLock(${$_[0]});
-}
-
-sub unlock {
-	SDL::SurfaceUnlock(${$_[0]});
-}
-
-sub update {
-	my $self = shift;;
-	if ($SDL::DEBUG) {
-		for (@_) { 
-			die "SDL::Opt::Surface::update requires SDL::Opt::Rect objects"
-				unless $_->isa('SDL::Opt::Rect');
-		}
-	}
-	SDL::UpdateRects($$self, map { ${$_} } @_ );
-}
-
-sub flip {
-	SDL::Flip(${$_[0]});
-}
-
-sub blit {
-	if ($SDL::DEBUG) {
-		die "SDL::Opt::Surface::blit requires SDL::Opt::Rect objects"
-			unless ! $SDL::DEBUG || $_[1]->isa('SDL::Opt::Rect') 
-				&& $_[3]->('SDL::Opt::Rect');
-		die "SDL::Opt::Surface::blit requires SDL::Opt::Surface objects"
-			unless ! $SDL::DEBUG || $_[2]->isa('SDL::Opt::Surface'); 
-	}
-	SDL::BlitSurface(map { ${$_} } @_);
-}
-
-sub set_colors {
-	my $self = shift;
-	my $start = shift;
-	for (@_) {
-		die "SDL::Opt::Surface::set_colors requires SDL::Opt::Color objects"
-			unless !$SDL::DEBUG || $_->isa('SDL::Opt::Color');
-	}
-	return SDL::SetColors($$self, $start, map { ${$_} } @_);
-}
-
-sub set_color_key {
-	die "SDL::Opt::Surface::set_color_key requires a SDL::Opt::Color object"
-		unless !$SDL::DEBUG || $_[2]->isa('SDL::Opt::Color');
-	SDL::SetColorKey(${$_[0]},$_[1],$_[2]->pixel());
-}
-
-sub set_alpha {
-	SDL::SetAlpha(${$_[0]},$_[1],$_[2]);
-}
-
-sub display_format {
-	my $self = shift;
-	my $tmp = SDL::DisplayFormat ($$self);
-	SDL::FreeSurface ($$self);
-	$self = \$tmp;
-	$self;
-}
-
-sub rgb {
-	my $self = shift;
-	my $tmp = SDL::ConvertRGB($$self);
-	SDL::FreeSurface($$self);
-	$self = \$tmp;
-	$self;
-}
-
-sub rgba {
-	my $self = shift;
-	my $tmp = SDL::ConvertRGBA($$self);
-	SDL::FreeSurface($$self);
-	$self = \$tmp;
-	$self;
-}
-
-sub print {
-	my ($self,$x,$y,@text) = @_;
-	SDL::PutString( $$self, $x, $y, join('',@text));
-}
-
-sub save_bmp {
-	SDL::SaveBMP( ${$_[0]},$_[1]);
-}
-
-sub video_info {
-	shift;
-	SDL::VideoInfo();
-}
-
-1;
-
-__END__;
-
-=pod 
-
-=head1 NAME
-
-SDL::Opt::Surface - a SDL perl extension
-
-=head1 SYNOPSIS
-
-  use SDL::Opt::Surface;
-  $image = new SDL::Opt::Surface(-name=>"yomama.jpg");
-
-=head1 DESCRIPTION
-
-The L<SDL::Opt::Surface> module encapsulates the SDL_Surface* structure, and
-many of its ancillatory functions.  It has a similar interface to the L<SDL::Surface>
-class. Where it differs:
-
-=over 4
-
-=item *
-
-All methods require SDL::Opt::* objects.  If $SDL::DEBUG is false, no type checks will be made.
-
-=item *
-
-C<SDL::Opt::Surface::set_color_key> takes a flag and an SDL::Opt::Color object only.
-
-=back
-
-=head1 AUTHOR
-
-David J. Goehrig
-
-=head1 SEE ALSO
-
-L<perl> L<SDL::Opt::Rect> L<SDL::Opt::Color> L<SDL::Surface>
-
-=cut
-
diff -ruN SDL_perl-1.20.0/lib/SDL/Rect.pm SDL_perl-1.20.2/lib/SDL/Rect.pm
--- SDL_perl-1.20.0/lib/SDL/Rect.pm	Wed Jan  1 21:23:57 2003
+++ SDL_perl-1.20.2/lib/SDL/Rect.pm	Thu Mar 13 06:12:06 2003
@@ -3,7 +3,7 @@
 #
 #	A package for manipulating SDL_Rect *
 #
-#	Copyright (C) 2000,2001,2002 David J. Goehrig
+#	Copyright (C) 2003 David J. Goehrig
 
 package SDL::Rect;
 use strict;
@@ -12,7 +12,6 @@
 sub new {
 	my $proto = shift;
 	my $class = ref($proto) || $proto;
-	my $self = {};
 	my %options = @_;
 
 	verify (%options, qw/ -x -y -width -height -w -h / ) if $SDL::DEBUG;
@@ -21,34 +20,34 @@
 	my $y = $options{-y} 		|| 0;
 	my $w = $options{-width}	|| $options{-w}		|| 0;
 	my $h = $options{-height}	|| $options{-h}		|| 0;
-	$self->{-rect} = SDL::NewRect($x,$y,$w,$h);
+	
+	my $self = \SDL::NewRect($x,$y,$w,$h);
 	bless $self,$class;
 	return $self;
 }
 
 sub DESTROY {
-	my $self = shift;
-	SDL::FreeRect($self->{-rect});
+	SDL::FreeRect(${$_[0]});
 }
 
 sub x {
 	my $self = shift;
-	return SDL::RectX($self->{-rect},@_);
+	SDL::RectX($$self,@_);
 }
 
 sub y {
 	my $self = shift;
-	return SDL::RectY($self->{-rect},@_);
+	SDL::RectY($$self,@_);
 }
 
 sub width {
 	my $self = shift;
-	return SDL::RectW($self->{-rect},@_);
+	SDL::RectW($$self,@_);
 }
 
 sub height {
 	my $self = shift;
-	return SDL::RectH($self->{-rect},@_);
+	SDL::RectH($$self,@_);
 }
 
 1;
@@ -67,35 +66,8 @@
 
 =head1 DESCRIPTION
 
-C<SDL::Rect::new> creates a SDL_Rect structure which is
-used for specifying regions for filling, blitting, and updating.
-These objects make it easy to cut and backfill.
-By default, x, y, h, w are 0.
-
-=head2 METHODS 
-
-The four fields of a rectangle can be set simply
-by passing a value to the applicable method.  These are:
-
-=over 4
-
-=item *
-
-C<SDL::Rect::x>	sets and fetches the x position.
-
-=item *
-
-C<SDL::Rect::y>	sets and fetches the x position.
-
-=item *
-
-C<SDL::Rect::width> sets and fetched the width.
-
-=item *
-
-C<SDL::Rect::height> sets and fetched the height.
-
-=back
+C<SDL::Rect> provides an optional lightweight implementation of SDL::Rect,
+and retains an identical interface. 
 
 =head1 AUTHOR
 
@@ -103,7 +75,7 @@
 
 =head1 SEE ALSO
 
-perl(1) SDL::Surface(3)
+L<perl> L<SDL::Surface> L<SDL::Rect>
 
 =cut
 
diff -ruN SDL_perl-1.20.0/lib/SDL/Surface.pm SDL_perl-1.20.2/lib/SDL/Surface.pm
--- SDL_perl-1.20.0/lib/SDL/Surface.pm	Fri Jan  3 06:11:56 2003
+++ SDL_perl-1.20.2/lib/SDL/Surface.pm	Fri Mar 21 18:54:07 2003
@@ -3,60 +3,33 @@
 #
 #	A package for manipulating SDL_Surface *
 #
-#	Copyright (C) 2000, 2001, 2002 David J. Goehrig
+#	Copyright (C) 2003 David J. Goehrig
 
 package SDL::Surface;
+
 use strict;
 use SDL;
+
 require SDL::Rect;
-require SDL::Palette;
 require SDL::Color;
+require SDL::Palette;
 
-require Exporter;
-use vars qw/ @ISA @EXPORT /;
-
-BEGIN {
-	@ISA = qw/ Exporter /;
-	@EXPORT = qw/ &SDL_SWSURFACE &SDL_HWSURFACE &SDL_ASYNCBLIT 
-		&SDL_ANYFORMAT &SDL_HWPALETTE &SDL_DOUBLEBUF &SDL_FULLSCREEN
-		&SDL_OPENGL &SDL_OPENGLBLIT &SDL_RESIZABLE &SDL_NOFRAME
-		&SDL_SRCCOLORKEY &SDL_RLEACCEL &SDL_SRCALPHA &SDL_PREALLOC
-		&SDL_HWACCEL
-		/;
-
-};
-
-sub SDL_SWSURFACE { SDL::SWSURFACE(); };
-sub SDL_HWSURFACE { SDL::HWSURFACE(); };
-sub SDL_HWACCEL { SDL::HWACCEL(); };
-sub SDL_ASYNCBLIT { SDL::ASYNCBLIT(); };
-sub SDL_ANYFORMAT { SDL::ANYFORMAT(); };
-sub SDL_HWPALETTE { SDL::HWPALETTE(); };
-sub SDL_DOUBLEBUF { SDL::DOUBLEBUF(); };
-sub SDL_FULLSCREEN { SDL::FULLSCREEN(); };
-sub SDL_OPENGL { SDL::OPENGL(); };
-sub SDL_OPENGLBLIT { SDL::OPENGLBLIT(); };
-sub SDL_RESIZABLE { SDL::RESIZABLE(); };
-sub SDL_NOFRAME { SDL::NOFRAME(); };
-sub SDL_SRCCOLORKEY { SDL::SRCCOLORKEY(); };
-sub SDL_RLEACCEL { SDL::RLEACCEL(); };
-sub SDL_SRCALPHA { SDL::SRCALPHA(); };
-sub SDL_PREALLOC { SDL::PREALLOC(); };
+use SDL::Event;
 
 sub new {
 	my $proto = shift;	
 	my $class = ref($proto) || $proto;
-	my $self = {};
 	my %options = @_;
+	my $self;
 
 	verify (%options, qw/ -name -n -flags -fl -width -w -height -h -depth -d
 				-pitch -p -Rmask -r -Gmask -g -Bmask -b -Amask -a
 				-from -f /) if $SDL::DEBUG;
 	
 	if ( $options{-name} ne "" && exists $SDL::{IMGLoad} ) {		
-	   $$self{-surface} = SDL::IMGLoad($options{-name});	
+	   $self = \SDL::IMGLoad($options{-name});	
 	} else {
-		my $f = $options{-flags}  	|| $options{-fl} 	|| SDL::ANYFORMAT();
+		my $f = $options{-flags}  	|| $options{-fl} 	|| SDL_ANYFORMAT();
 		my $w = $options{-width} 	|| $options{-w}		|| 1;
 		my $h = $options{-height} 	|| $options{-h}		|| 1;	
 		my $d = $options{-depth} 	|| $options{-d}		|| 8;
@@ -72,239 +45,214 @@
 
 		if ( $options{-from}|| $options{-f} ) { 
 			my $src = $options{-from}|| $options{-f};
-			$$self{-surface} = SDL::CreateRGBSurfaceFrom(
-				$src,$w,$h,$d,$p,$r,$g,$b,$a);
+			$self = \SDL::CreateRGBSurfaceFrom($src,$w,$h,$d,$p,$r,$g,$b,$a);
 		} else {
-			$$self{-surface} = SDL::CreateRGBSurface(
-				$f,$w,$h,$d,$r,$g,$b,$a);
+			$self = \SDL::CreateRGBSurface($f,$w,$h,$d,$r,$g,$b,$a);
 		}
 	}
 	die "SDL::Surface::new failed. ", SDL::GetError()
-		unless ( $$self{-surface});
+		unless ( $$self);
 	bless $self,$class;
 	return $self;
 }
 
 sub DESTROY {		
-	my $self = shift;	
-	SDL::FreeSurface($$self{-surface});	
+	SDL::FreeSurface(${$_[0]});
 }
 
 sub flags {
-	my $self = shift;
-	return SDL::SurfaceFlags($$self{-surface});
+	SDL::SurfaceFlags(${$_[0]});
 }
 
 sub palette {
-	my $self = shift;
-	return SDL::SurfacePalette($$self{-surface});
+	SDL::SurfacePalette(${$_[0]});
 }
 
 sub bpp {
-	my $self = shift;
-	return SDL::SurfaceBitsPerPixel($$self{-surface});
+	SDL::SurfaceBitsPerPixel(${$_[0]});
 }
 
 sub bytes_per_pixel {
-	my $self = shift;
-	return SDL::SurfaceBytesPerPixel($$self{-surface});
+	SDL::SurfaceBytesPerPixel(${$_[0]});
 }
 
 sub Rshift {
-	my $self = shift;
-	return SDL::SurfaceRshift($$self{-surface});
+	SDL::SurfaceRshift(${$_[0]});
 }
 
 sub Gshift {
-	my $self = shift;
-	return SDL::SurfaceGshift($$self{-surface});
+	SDL::SurfaceGshift(${$_[0]});
 }
 
 sub Bshift {
-	my $self = shift;
-	return SDL::SurfaceBshift($$self{-surface});
+	SDL::SurfaceBshift(${$_[0]});
 }
 
 sub Ashift {
-	my $self = shift;
-	return SDL::SurfaceAshift($$self{-surface});
+	SDL::SurfaceAshift(${$_[0]});
 }
 
 sub Rmask {
-	my $self = shift;
-	return SDL::SurfaceRmask($$self{-surface});
+	SDL::SurfaceRmask(${$_[0]});
 }
 
 sub Gmask {
-	my $self = shift;
-	return SDL::SurfaceGmask($$self{-surface});
+	SDL::SurfaceGmask(${$_[0]});
 }
 
 sub Bmask {
-	my $self = shift;
-	return SDL::SurfaceBmask($$self{-surface});
+	SDL::SurfaceBmask(${$_[0]});
 }
 
 sub Amask {
-	my $self = shift;
-	return SDL::SurfaceAmask($$self{-surface});
+	SDL::SurfaceAmask(${$_[0]});
 }
 
 sub color_key {
-	my $self = shift;
-	return SDL::SurfaceColorKey($$self{-surface});
+	SDL::SurfaceColorKey(${$_[0]});
 }
 
 sub alpha {
-	my $self = shift;
-	return SDL::SurfaceAlpha($$self{-surface});
+	SDL::SurfaceAlpha(${$_[0]});
 }
 
 sub width {
-	my $self = shift;
-	return SDL::SurfaceW($$self{-surface});
+	SDL::SurfaceW(${$_[0]});
 }
 
 sub height {
-	my $self = shift;
-	return SDL::SurfaceH($$self{-surface});
+	SDL::SurfaceH(${$_[0]});
 }
 
 sub pitch {
-	my $self = shift;
-	return SDL::SurfacePitch($$self{-surface});
+	SDL::SurfacePitch(${$_[0]});
 }
 
 sub pixels {
-	my $self = shift;
-	return SDL::SurfacePixels($$self{-surface});
+	SDL::SurfacePixels(${$_[0]});
 }
 
 sub pixel {
-	my ($self,$x,$y,$color) = @_;
-	if ($color) {
-		$color = $$color{-color} if (ref($color) && $color->isa('SDL::Color'));
-		return new SDL::Color -color => SDL::SurfacePixel($$self{-surface},$x,$y,$color);
-	} else {
-		return new SDL::Color -color => SDL::SurfacePixel($$self{-surface},$x,$y);
-	}
+	die "SDL::Surface::pixel requires a SDL::Color"
+		if $_[3] && $SDL::DEBUG && !$_[3]->isa("SDL::Color");
+	$_[3] ?
+		new SDL::Color -color => SDL::SurfacePixel(${$_[0]},$_[1],$_[2],${$_[3]}) :
+		new SDL::Color -color => SDL::SurfacePixel(${$_[0]},$_[1],$_[2]);
 }
 
 sub fill {
-	my ($self,$rect,$color) = @_;
-	$rect = $$rect{-rect} if (ref($rect) && $rect->isa("SDL::Rect"));
-	$color = $$color{-color} if (ref($color) && $color->isa("SDL::Color"));
-	return SDL::FillRect($$self{-surface},$rect,$color);
+	die "SDL::Surface::fill requires a SDL::Rect object"
+		unless !$SDL::DEBUG || $_[1] == 0 || $_[1]->isa('SDL::Rect');
+	die "SDL::Surface::fill requires a SDL::Color object"
+		unless !$SDL::DEBUG || $_[2]->isa('SDL::Color');
+	if ($_[1] == 0 ) {
+		SDL::FillRect(${$_[0]},0,${$_[2]});
+	} else {
+		SDL::FillRect(${$_[0]},${$_[1]},${$_[2]});
+	}
 }
 
 sub lockp {
-	my $self = shift;
-	return SDL::MUSTLOCK($$self{-surface});
+	SDL::MUSTLOCK(${$_[0]});
 }
 
 sub lock {
-	my $self = shift;
-	return SDL::SurfaceLock($$self{-surface});
+	SDL::SurfaceLock(${$_[0]});
 }
 
 sub unlock {
-	my $self = shift;
-	return SDL::SurfaceUnlock($$self{-surface});
+	SDL::SurfaceUnlock(${$_[0]});
 }
 
 sub update {
-	my ($self,@rects) = @_;
-	my @rect_ptrs;
-	for (@rects) { 
-		push @rect_ptrs, (ref($_) &&  $_->isa("SDL::Rect") ? $$_{-rect} : $_ );
+	my $self = shift;;
+	if ($SDL::DEBUG) {
+		for (@_) { 
+			die "SDL::Surface::update requires SDL::Rect objects"
+				unless $_->isa('SDL::Rect');
+		}
 	}
-	SDL::UpdateRects($$self{-surface}, @rect_ptrs );
+	SDL::UpdateRects($$self, map { ${$_} } @_ );
 }
 
 sub flip {
-	my $self = shift;
-	SDL::Flip($$self{-surface});
+	SDL::Flip(${$_[0]});
 }
 
 sub blit {
-	my ($self,$srect,$dest,$drect) = @_;
-	$srect = $$srect{-rect} if (ref($srect) && $srect->isa("SDL::Rect"));
-	$drect = $$drect{-rect} if (ref($drect) && $drect->isa( "SDL::Rect"));
-	$dest = $$dest{-surface} if (ref($dest) && $dest->isa("SDL::Surface"));
-	return SDL::BlitSurface($$self{-surface},$srect,$dest,$drect);
+	if ($SDL::DEBUG) {
+		die "SDL::Surface::blit requires SDL::Rect objects"
+			unless ($_[1] == 0 || $_[1]->isa('SDL::Rect'))
+			&& ($_[1] == 0 || $_[3]->isa('SDL::Rect'));
+		die "SDL::Surface::blit requires SDL::Surface objects"
+			unless $_[2]->isa('SDL::Surface'); 
+	}
+	SDL::BlitSurface(map { $_ != 0 ? ${$_} : $_ } @_);
 }
 
 sub set_colors {
-	my ($self,$start,@colors) = @_;
-	my (@color_ptrs);
-	for (@colors) {
-		push @color_ptrs, (ref($_) && $_->isa("SDL::Color") ? $$_{-color} : $_ );
+	my $self = shift;
+	my $start = shift;
+	for (@_) {
+		die "SDL::Surface::set_colors requires SDL::Color objects"
+			unless !$SDL::DEBUG || $_->isa('SDL::Color');
 	}
-	return SDL::SetColors($$self{-surface},$start,@color_ptrs);
+	return SDL::SetColors($$self, $start, map { ${$_} } @_);
 }
 
 sub set_color_key {
-	my $self = shift;
-	my $flag = shift;
-	my $color;
-	if (scalar(@_) == 1) {
-		$color = shift;
-		$color = $$color{-color} if (ref($color) && $color->isa('SDL::Color'));
-	} else {
-		$color = SDL::SurfacePixel($$self{-surface},@_);
-	}
-	return SDL::SetColorKey($$self{-surface},$flag,$color);
+	die "SDL::Surface::set_color_key requires a SDL::Color object"
+		unless !$SDL::DEBUG || $_[2]->isa('SDL::Color');
+	SDL::SetColorKey(${$_[0]},$_[1],${$_[2]});
 }
 
 sub set_alpha {
-	my ($self,$flag,$alpha) = @_;
-	return SDL::SetAlpha($$self{-surface},$flag,$alpha);
+	SDL::SetAlpha(${$_[0]},$_[1],$_[2]);
 }
 
 sub display_format {
 	my $self = shift;
-	my $tmp = SDL::DisplayFormat ($$self{-surface});
-	SDL::FreeSurface ($$self{-surface});
-	$$self{-surface} = $tmp;
-	return $self;
+	my $tmp = SDL::DisplayFormat($$self);
+	SDL::FreeSurface ($$self);
+	$$self = $tmp;
+	$self;
 }
 
 sub rgb {
 	my $self = shift;
-	my $tmp = SDL::ConvertRGB($$self{-surface});
-	SDL::FreeSurface($$self{-surface});
-	$$self{-surface} = $tmp;
-	return $self;
+	my $tmp = SDL::ConvertRGB($$self);
+	SDL::FreeSurface($$self);
+	$$self = $tmp;
+	$self;
 }
 
 sub rgba {
 	my $self = shift;
-	my $tmp = SDL::ConvertRGBA($$self{-surface});
-	SDL::FreeSurface($$self{-surface});
-	$$self{-surface} = $tmp;
-	return $self;
+	my $tmp = SDL::ConvertRGBA($$self);
+	SDL::FreeSurface($$self);
+	$$self = $tmp;
+	$self;
 }
 
 sub print {
 	my ($self,$x,$y,@text) = @_;
-	SDL::PutString( $$self{-surface}, $x, $y, join('',@text));
+	SDL::PutString( $$self, $x, $y, join('',@text));
 }
 
 sub save_bmp {
-	my ($self,$filename) = @_;
-	return SDL::SaveBMP( $$self{-surface}, $filename);
+	SDL::SaveBMP( ${$_[0]},$_[1]);
 }
 
 sub video_info {
-	my $self = shift;
-	return SDL::VideoInfo();
+	shift;
+	SDL::VideoInfo();
 }
 
 1;
 
 __END__;
 
-=pod
+=pod 
 
 =head1 NAME
 
@@ -317,268 +265,29 @@
 
 =head1 DESCRIPTION
 
-The C<SDL::Surface> module encapsulates the SDL_Surface* structure, and
-many of its ancillatory functions.  Not only is it a workhorse of the
-OO Layer, it is the base class for the C<SDL::App> class.  
-	
-=head1 EXPORTS
-
-	SDL_SWSURFACE		SDL_HWSURFACE
-	SDL_ASYNCBLIT 		SDL_ANYFORMAT
-	SDL_HWPALETTE 		SDL_DOUBLEBUF 
-	SDL_FULLSCREEN		SDL_OPENGL 
-	SDL_OPENGLBLIT		SDL_RESIZEABLE
-	SDL_NOFRAME		SDL_SRCCOLORKEY
-	SDL_RLEACCEL		SDL_SRCALPHA
-	SDL_PREALLOC
-
-=head1 METHODS
-
-=head2 new (-name => 'foo.png')
-
-The C<SDL::Surface> class can be instantiated in a number of different ways.
-If support for the SDL_image library was included when SDL_perl was compiled,
-the easiest way to create a new surface is to use the C<SDL::Surface::new>
-method with the C<-name> option.  This will load the image from the file 
-and return an object encapsulating the SDL_Surface*.
-
-=head2 new (-from => $buffer, ... )
-
-If the contents of the new Surface is already in memory, C<SDL::Surface::new>
-may be called with the C<-from> option to create an image from that section
-of memory.  This method takes the following additional parameters:
+The L<SDL::Surface> module encapsulates the SDL_Surface* structure, and
+many of its ancillatory functions.  It has a similar interface to the L<SDL::Surface>
+class. Where it differs:
 
 =over 4
 
 =item *
 
--width		the width of the image in pixels
+All methods require SDL::* objects.  If $SDL::DEBUG is false, no type checks will be made.
 
 =item *
 
--height		the height of the image in pixels
-
-=item *
-
--depth		the number of bits per pixel
-
-=item *
-
--pitch		the number of bytes per line
-
-=item *
-
--Rmask		an optional bitmask for red
-
-=item *
-
--Gmask		an optional bitmask for green
-
-=item *
-
--Bmask		an optional bitmask for green
-
-=item *
-
--Amask		an optional bitmask for alpha
+C<SDL::Surface::set_color_key> takes a flag and an SDL::Color object only.
 
 =back
 
-=head2 new ( -flags => SDL_SWSURFACE, ... )
-
-Finally, C<SDL::Suface::new> may be invoked with the C<-flags> option, in a
-similar fashion to the C<-from> directive.  This invocation takes the same
-additional options as C<-from> with the exception of C<-pitch> which is ignored.
-This method returns a new, blank, SDL::Surface option with any of the following
-flags turned on:
-
-=over 4
-
-=item *
-
-SWSURFACE()	a non-accelerated surface
-
-=item *
-
-HWSURFACE()	a hardware accelerated surface 
-
-=item *
-
-SRCCOLORKEY()	a surface with a transperant color	
-
-=item *
-
-SRCALPHA()	an alpha blended, translucent surface 
-
-=back
-
-=head2 flags ()
-
-C<SDL::Surface::flags> returns the flags with which the surface was initialized.
-
-=head2 palette ()
-
-C<SDL::Surface::palette> currently returns a SDL_Palette*, this may change in
-future revisions.
-
-=head2 bpp ()
-
-C<SDL::Surface::bpp> returns the bits per pixel of the surface
-
-=head2 bytes_per_pixel ()
-
-C<SDL::Surface::bytes_per_pixel> returns the bytes per pixel of the surface
-
-=head2 Rshift ()
-
-C<SDL::Surface::Rshift> returns the bit index of the red field for the surface's pixel format
-
-=head2 Gshift ()
-
-C<SDL::Surface::Gshift> returns the bit index of the green field for the surface's pixel format
-
-=head2 Bshift ()
-
-C<SDL::Surface::Bshift> returns the bit index of the blue field for the surface's pixel format
-
-=head2 Ashift ()
-
-C<SDL::Surface::Ashift> returns the bit index of the alpha field for the surface's pixel format
-
-=head2 Rmask ()
-
-C<SDL::Surface::Rmask> returns the bit mask for the red field for teh surface's pixel format
-
-=head2 Gmask ()
-
-C<SDL::Surface::Gmask> returns the bit mask for the green field for teh surface's pixel format
-
-=head2 Bmask ()
-
-C<SDL::Surface::Bmask> returns the bit mask for the blue field for teh surface's pixel format
-
-=head2 Amask ()
-
-C<SDL::Surface::Amask> returns the bit mask for the alpha field for teh surface's pixel format
-
-=head2 color_key ()
-
-C<SDL::Surface::color_key> returns the current color key for the image, which can be set with
-the C<SDL::Surface::set_color_key> method.  Before calling C<SDL::Surface::color_key> on 
-a image, you should fist call C<SDL::Surface::display_format> to convert it to the same
-format as the display.  Failure to do so will result in failure to apply the correct color_key.
-
-=head2 alpha ()
-
-C<SDL::Surface::alpha> returns the current alpha value for the image, which can be set with
-the C<SDL::Surface::set_alpha> method.
-
-=head2 width ()
-
-C<SDL::Surface::width> returns the width in pixels of the surface
-
-=head2 height ()
-
-C<SDL::Surface::height> returns the height in pixels of the surface
-
-=head2 pitch ()
-
-C<SDL::Surface::pitch> returns the width of a surface's scanline in bytes
-
-=head2 pixels ()
-
-C<SDL::Surface::pixels> returns a Uint8* to the image's pixel data.  This is not
-inherently useful within perl, though may be used to pass image data to user provided
-C functions.
-
-=head2 pixel (x,y,[color])
-
-C<SDL::Surface::pixel> will set the color value of the pixel at (x,y) to the given
-color if provided.  C<SDL::Surface::pixel> returns a SDL::Color object for the 
-color value of the pixel at (x,y) after any possible modifications.
-
-=head2 fill (rect,color)
-
-C<SDL::Surface::fill> will fill the given SDL::Rect rectangle with the specified SDL::Color
-This function optionally takes a SDL_Rect* and a SDL_Color*
-
-=head2 lockp ()
-
-C<SDL::Surface::lockp> returns true if the surface must be locked
-
-=head2 lock ()
-
-C<SDL::Surface::lock> places a hardware lock if necessary, preventing access to 
-the surface's memory
-
-=head2 unlock ()
-
-C<SDL::Surface::unlock> removes any hardware locks, enabling blits
-
-=head2 update ( rects...)
-
-C<SDL::Surface::update> takes one or more SDL::Rect's which determine which sections
-of the image are to be updated.  This option is only useful on the appliaction surface.
-
-=head2 flip ()
-
-C<SDL::Surface::flip> updates the full surface, using a double buffer if available
-
-=head2 blit (srect,dest,drect)
-
-C<SDL::Surface::blit> blits the current surface onto the destination surface,
-according to the provided rectangles.  If a rectangle is 0, then the full surface is used.
-
-=head2 set_colors (start,colors...) 
-
-C<SDL::Surface::set_colors> updates the palette starting at index C<start> with the
-supplied colors.  The colors may either be SDL::Color objects or SDL_Color* from the
-low level C-style API.
-
-=head2 set_color_key (flag,pixel) or (flag,x,y)
-
-C<SDL::Surface::set_color_key> sets the blit flag, usually SDL_SRCCOLORKEY, 
-to the specified L<SDL::Color> object.  Optional a SDL_Color* may be passed.
-
-=head2 set_alpha (flag,alpha)
-
-C<SDL::Surface::set_alpha> sets the opacity of the image for alpha blits. 
-C<alpha> takes a value from 0x00 to 0xff.
-
-=head2 display_format ()
-
-C<SDL::Surface::display_format> converts the surface to the same format as the
-current screen.
-
-=head2 rgb ()
-C<SDL::Surface::rgb> converts the surface to a 24 bit rgb format regardless of the 
-initial format.
-
-=head2 rgba ()
-C<SDL::Surface::rgba> converts the surface to a 32 bit rgba format regarless of the
-initial format.
-
-=head2 print (x,y,text...)
-
-C<SDL::Surface::print> renders the text using the current font onto the image.
-This option is only supported for with SDL_image and SFont.
-
-=head2 save_bmp (filename)
-
-C<SDL::Surface::save_bmp> saves the surface to filename in Windows BMP format.
-
-=head2 video_info ()
-
-C<SDL::Surface::video_info> returns a hash describing the current state of the 
-video hardware.
-
 =head1 AUTHOR
 
 David J. Goehrig
 
 =head1 SEE ALSO
 
-L<perl> L<SDL::App> L<SDL::Color> L<SDL::Palette> L<SDL::Rect> 
+L<perl> L<SDL::Rect> L<SDL::Color> L<SDL::Surface>
 
 =cut
 
diff -ruN SDL_perl-1.20.0/lib/SDL/TTFont.pm SDL_perl-1.20.2/lib/SDL/TTFont.pm
--- SDL_perl-1.20.0/lib/SDL/TTFont.pm	Wed Jan  1 21:54:48 2003
+++ SDL_perl-1.20.2/lib/SDL/TTFont.pm	Thu Mar 13 06:18:28 2003
@@ -23,7 +23,7 @@
 	my $self = {};
 	my %options;
 	(%options) = @_;
-	$self->{-mode} = $options{-mode} 	|| $options{-m}	 || SDL::TTF_TEXT_SHADED();
+	$self->{-mode} = $options{-mode} 	|| $options{-m}	 || main::TEXT_SHADED();
 	$self->{-name} = $options{-name} 	|| $options{-n};
 	$self->{-size} = $options{-size} 	|| $options{-s};
 	$self->{-fg} = $options{-foreground} 	|| $options{-fg} || $SDL::Color::black;
@@ -53,12 +53,13 @@
 sub print {
 	my ($self,$surface,$x,$y,@text) = @_;
 
-	$surface = $$surface{-surface} if ( ref($surface) && $surface->isa("SDL::Surface"));
+	die "Print requies an SDL::Surface"
+		unless( ref($surface) && $surface->isa("SDL::Surface") );
 
 	SDL::FreeSurface($self->{-surface}) if ($$self{-surface});
 
 	$$self{-surface} = SDL::TTFPutString($$self{-font},$$self{-mode},
-		$surface,$x,$y,$$self{-fg}{-color},$$self{-bg}{-color},join("",@text));
+		$$surface,$x,$y,${$$self{-fg}},${$$self{-bg}},join("",@text));
 
 	die "Could not print \"", join("",@text), "\" to surface, ",
 		SDL::GetError(), "\n" unless ($$self{-surface});
@@ -86,68 +87,68 @@
 
 sub normal {
 	my ($self) = @_;
-	SDL::TTFSetFontStyle($$self{-font},SDL::TTF_STYLE_NORMAL());
+	SDL::TTFSetFontStyle($$self{-font},main::TTF_STYLE_NORMAL());
 }
 
 sub bold {
 	my ($self) = @_;
-	SDL::TTFSetFontStyle($$self{-font},SDL::TTF_STYLE_BOLD());
+	SDL::TTFSetFontStyle($$self{-font},main::TTF_STYLE_BOLD());
 }
 
 sub italic {
 	my ($self) = @_;
-	SDL::TTFSetFontStyle($$self{-font},SDL::TTF_STYLE_ITALIC());
+	SDL::TTFSetFontStyle($$self{-font},main::TTF_STYLE_ITALIC());
 
 }
 
 sub underline {
 	my ($self) = @_;
-	SDL::TTFSetFontStyle($$self{-font},SDL::TTF_STYLE_UNDERLINE());
+	SDL::TTFSetFontStyle($$self{-font},main::TTF_STYLE_UNDERLINE());
 }
 
 sub text_shaded {
 	my ($self) = @_;
-	$$self{-mode} = SDL::TTF_TEXT_SHADED();
+	$$self{-mode} = main::TEXT_SHADED();
 }
 
 sub text_solid {
 	my ($self) = @_;
-	$$self{-mode} = SDL::TTF_TEXT_SOLID();
+	$$self{-mode} = main::TEXT_SOLID();
 }
 
 sub text_blended {
 	my ($self) = @_;
-	$$self{-mode} = SDL::TTF_TEXT_BLENDED();
+	$$self{-mode} = main::TEXT_BLENDED();
 }
 
 sub utf8_shaded {
 	my ($self) = @_;
-	$$self{-mode} = SDL::TTF_UTF8_SHADED();
+	$$self{-mode} = main::UTF8_SHADED();
 }
 
 sub utf8_solid {
 	my ($self) = @_;
-	$$self{-mode} = SDL::TTF_UTF8_SOLID();
+	$$self{-mode} = main::UTF8_SOLID();
 }
 
 sub utf8_blended {
 	my ($self) = @_;
-	$$self{-mode} = SDL::TTF_UTF8_BLENDED();
+	$$self{-mode} = main::UTF8_BLENDED();
 }
 
 sub unicode_shaded {
 	my ($self) = @_;
-	$$self{-mode} = SDL::TTF_UNICODE_SHADED();
+	$$self{-mode} = main::UNICODE_SHADED();
 }
 
 sub unicode_solid {
 	my ($self) = @_;
-	$$self{-mode} = SDL::TTF_UNICODE_SOLID();
+	$$self{-mode} = main::UNICODE_SOLID();
 }
 
 sub unicode_blended {
 	my ($self) = @_;
-	$$self{-mode} = SDL::TTF_UNICODE_BLENDED();
+	$$self{-mode} = main::UNICODE_BLENDED();
 }
 
 die "Could not initialize True Type Fonts\n"
diff -ruN SDL_perl-1.20.0/lib/SDL/Tool/Font.pm SDL_perl-1.20.2/lib/SDL/Tool/Font.pm
--- SDL_perl-1.20.0/lib/SDL/Tool/Font.pm	Wed Jan  1 21:39:29 2003
+++ SDL_perl-1.20.2/lib/SDL/Tool/Font.pm	Wed Mar 12 05:53:52 2003
@@ -45,12 +45,11 @@
 
 sub print {
 	my ($self,$surface,$x,$y,@text) = @_;
+	die "Tool::Font::print requires a SDL::Surface\n"
+		unless ($SDL::DEBUG && $surface->isa('SDL::Surface'));
 	if ($$self{-font}->isa('SDL::Font')) {
 		$$self{-font}->use();
-		if ($surface->isa('SDL::Surface')) {
-			$surface = $$surface{-surface};
-		}
-		SDL::PutString( $surface, $x, $y, join('',@text));
+		SDL::PutString( $$surface, $x, $y, join('',@text));
 	} else {
 		$$self{-font}->print($surface,$x,$y,@text);
 	}
diff -ruN SDL_perl-1.20.0/lib/SDL/Tool/Graphic.pm SDL_perl-1.20.2/lib/SDL/Tool/Graphic.pm
--- SDL_perl-1.20.0/lib/SDL/Tool/Graphic.pm	Wed Jan  1 21:43:34 2003
+++ SDL_perl-1.20.2/lib/SDL/Tool/Graphic.pm	Thu Mar 13 06:29:24 2003
@@ -7,40 +7,40 @@
 package SDL::Tool::Graphic;
 
 use SDL;
+require SDL::Surface;
 
 sub new {
 	my $proto = shift;
 	my $class = ref($proto) || $proto;
 	$self = {};
-
 	bless $self, $class;
 	$self;
 }
 
 
 sub DESTROY {
-
+	# nothing to do
 }
 
 
 sub zoom {
 	my ( $self, $surface, $zoomx, $zoomy, $smooth) = @_;
-	if($surface->isa('SDL::Surface')) {
-		my $newSurface = $$surface{-surface};
-		$$surface{-surface} = SDL::GFXZoom($newSurface, $zoomx, $zoomy, $smooth);
-	} else {
-		$surface = SDL::GFXZoom($surface, $zoomx, $zoomy, $smooth);
-	}
+	die "SDL::Tool::Graphic::zoom requires an SDL::Surface\n"
+		unless ( ref($surface) && $surface->isa('SDL::Surface'));
+	my $tmp = $$surface;
+	$$surface = SDL::GFXZoom($$surface, $zoomx, $zoomy, $smooth);
+	SDL::FreeSurface($tmp);
+	$surface;
 }
 
 sub rotoZoom {
 	my ( $self, $surface, $angle, $zoom, $smooth) = @_;
-	if($surface->isa('SDL::Surface')) {
-		my $newSurface = $$surface{-surface};
-		$$surface{-surface} = SDL::GFXRotoZoom($newSurface, $angle, $zoom, $smooth);
-	} else {
-		$surface = SDL::GFXRotoZoom($surface, $angle, $zoom, $smooth);
-	}
+	die "SDL::Tool::Graphic::rotoZoom requires an SDL::Surface\n"
+		unless ( ref($surface) && $surface->isa('SDL::Surface'));
+	my $tmp = $$surface;
+	$$surface = SDL::GFXRotoZoom($$surface, $angle, $zoom, $smooth);
+	SDL::FreeSurface($tmp);
+	$surface;
 }
 
 1;
@@ -61,11 +61,13 @@
 
 =head2 zoom ( surface, xzoom, yzoom, smooth )
 
-C<SDL::Tool::Graphic::zoom> scales a L<SDL::Surface> along the two axis independently.
+C<SDL::Tool::Graphic::zoom> scales a L<SDL::Surface> along the two axis independently,
+and returns a new L<SDL::Surface> object.
 
 =head2 rotoZoom ( surface, angle, zoom, smooth )
 
-C<SDL::Tool::Graphic::rotoZoom> rotates and fixed axis zooms a L<SDL::Surface>.
+C<SDL::Tool::Graphic::rotoZoom> rotates and fixed axis zooms a L<SDL::Surface>
+and returns a new L<SDL::Surface> object.
 
 =head1 AUTHOR
 
diff -ruN SDL_perl-1.20.0/lib/SDL.pm SDL_perl-1.20.2/lib/SDL.pm
--- SDL_perl-1.20.0/lib/SDL.pm	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/lib/SDL.pm	Fri Mar 21 18:37:18 2003
@@ -0,0 +1,1004 @@
+package SDL;
+
+use strict;
+use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
+
+require Exporter;
+require DynaLoader;
+use AutoLoader 'AUTOLOAD';
+use SDL_perl;
+
+
+BEGIN {
+	@ISA = qw(Exporter DynaLoader);
+	@EXPORT = qw( in verify &NULL );
+};
+
+
+$VERSION = '1.20.2';
+
+print "$VERSION" if (defined($ARGV[0]) && ($ARGV[0] eq '--SDLperl'));
+
+$SDL::DEBUG=0;
+
+sub NULL {
+	return 0;
+}
+
+sub in {
+	my ($k,@t) = @_;
+	(scalar grep { defined $_ && $_ eq $k } @t) <=> 0;
+} 
+
+sub verify (\%@) {
+	my ($options,@valid_options) = @_;
+	for (keys %$options) {
+		die "Invalid option $_\n" unless in ($_, @valid_options);
+	}
+}
+
+1;
+__END__
+
+=head1 NAME
+
+SDL_perl - Simple DirectMedia Layer Perl
+
+=head1 SYNOPSIS
+
+  use SDL;
+
+=head1 DESCRIPTION
+
+SDL_perl is a package of perl modules that provides both functional and object orient
+interfaces to the Simple DirectMedia Layer for Perl 5.  This package does take some
+liberties with the SDL API, and attempts to adhere to the spirit of both the SDL
+and Perl.  This document describes the low-level functional SDL_perl API.  For the
+object oriented programming interface please see the documentation provided on a
+per class basis.
+
+=head2 Init(flags) 
+
+As with the C language API, SDL_perl initializes the SDL environment through
+the C<SDL::Init> subroutine.  This routine takes a mode flag constructed through
+the bitwise OR product of the following functions:  
+
+=over 4
+=item *
+INIT_AUDIO()
+
+=item *
+INIT_VIDEO()
+
+=item *
+INIT_CDROM()
+
+=item *
+INIT_EVERYTHING()
+
+=item *
+INIT_NOPARACHUTE() 
+
+=item *
+INIT_JOYSTICK()
+
+=item *
+INIT_TIMER()
+
+=back
+
+C<SDL::Init> returns 0 on success, or -1 on error.
+
+=head2 GetError()
+
+The last error message set by the SDL library can be retrieved using the subroutine
+C<SDL::GetError>, which returns a scalar containing the text of the message if any.
+
+=head2 Delay(ms)
+
+This subroutine allows an application to delay further operations for atleast a
+number of milliseconds provided as the argument.  The actual delay may be longer
+than the specified depending on the underlying OS.
+
+=head2 GetTicks() 
+
+An application may retrieve the number of milliseconds expired since the initilization
+of the application through this subroutine.  This value resets rougly ever 49 days.
+
+=head2 AddTimer(interval,callback,param)
+
+C<AddTimer> will register a SDL_NewTimerCallback function to be executed after
+C<interval> milliseconds, with parameter C<param>.  SDL_NewTimerCallback objects
+can be constructed with the C<NewTimer> subroutine.   C<SDL::PerlTimerCallback>
+will return a valid callback for executing a perl subroutine or closure.
+This subroutine returns a SDL_TimerID for the newly registered callback, or NULL 
+on error.
+
+=head2 NewTimer(interval,subroutine)
+
+The C<NewTimer> takes an interval in milliseconds and a reference to a subroutine
+to call at that interval.  The subroutine will be invoked in a void context
+and accepts no parameters.  The callback used is that returned by C<SDL::PerlTimerCallback>.
+C<NewTimer> returns the SDL_TimerID for the new timer or NULL on error.
+
+=head2 RemoveTimer(id)
+
+This subroutine taks a SDL_TimerID and removes it from the list of active callbacks.
+RemoveTimer returns false on failure.
+
+=head2 SetTimer 
+
+This subroutine is depreciated, please use C<NewTimer> or C<AddTimer> instead.
+
+=head2 CDNumDrives() 
+
+C<SDL::CDNumDrives> returns the number of available CD-ROM drives in the system.
+
+=head2 CDName(drive)
+
+The subroutine C<SDL::CDName> returns the system specific human readable device name
+for the given CD-ROM drive.
+
+=head2 CDOpen(drive)
+
+This subroutine opens a CD-ROM drive for access, returning NULL if the drive is busy 
+or otherwise unavailable.  On success this subroutine returns a handle to the CD-ROM
+drive.
+
+=head2 CDTrackListing(cd)
+
+C<SDL::CDTrackListing> returns a human readable description of a CD-ROM.  For each
+track one line will be produced with the following format:
+
+	Track index: %d, id %d, %2d.%2d 
+
+This is provided to ease the creation of human readable descriptions and debugging.
+
+=head2 CDTrackId(track) 
+
+C<CDTrackId> returns the id field of the given SDL_CDtrack structure.
+
+=head2 CDTrackType(track)
+
+C<CDTrackType> returns the type field of the given SDL_CDtrack structure.
+
+=head2 CDTrackLength(track)
+
+C<CDTrackLength> returns the length field of the given SDL_CDtrack structure.
+
+=head2 CDTrackOffset(track)
+
+C<CDTrackOffset> returns the offset field of the given SDL_CDtrack structure.
+
+=head2 CDStatus(cd)
+
+The function C<CDStatus> returns the current status of the given SDL_CDrom.
+C<CDStatus>'s return values are:
+
+=over 4
+
+=item *
+CD_TRAYEMPTY 
+
+=item *
+CD_PLAYING 
+
+=item *
+CD_STOPPED
+
+=item *
+CD_PAUSED 
+
+=item *
+CD_ERROR 
+
+=back
+
+=head2 CDPlayTracks(cd,track,tracks,frame,frames)
+
+To start playing from an arbitrary portion of a CD, one can provide
+C<SDL::CDPlayTracks> with a CD, a starting track, the number of tracks,
+a starting frame, and the number of frames to be played. 
+
+=head2 CDPlay(cd,track,length) 
+
+C<SDL::CDPlay> plays the next C<length> tracks starting from C<track>
+
+=head2 CDPause(cd) 
+
+This function will pause CD playback until resume is called.
+
+=head2 CDResume(cd) 
+
+This function will resume CD playback if paused.
+
+=head2 CDStop(cd) 
+
+C<SDL::CDStop> will stop CD playback if playing.
+
+=head2 CDEject(cd) 
+
+This function will eject the CD
+
+=head2 CDClose(cd) 
+
+This function will release an opened CD. 
+
+=head2 CDNumTracks 
+
+=head2 CDCurTrack 
+
+=head2 CDCurFrame 
+
+=head2 CDTrack 
+
+=head2 PumpEvents 
+
+=head2 NewEvent 
+
+=head2 FreeEvent
+
+=head2 PollEvent 
+
+=head2 WaitEvent 
+
+=head2 EventState 
+
+=head2 IGNORE 
+
+=head2 ENABLE 
+
+=head2 QUERY 
+
+=head2 ACTIVEEVENT
+
+=head2 KEYDOWN 
+
+=head2 KEYUP 
+
+=head2 MOUSEMOTION 
+
+=head2 MOUSEBUTTONDOWN 
+
+=head2 MOUSEBUTTONUP 
+
+=head2 QUIT 
+
+=head2 SYSWMEVENT 
+
+=head2 EventType 
+
+=head2 ActiveEventGain 
+
+=head2 ActiveEventState 
+
+=head2 APPMOUSEFOCUS 
+
+=head2 APPINPUTFOCUS 
+
+=head2 APPACTIVE 
+
+=head2 KeyEventState
+
+=head2 SDLK_BACKSPACE 
+
+=head2 SDLK_TAB 
+
+=head2 SDLK_CLEAR 
+
+=head2 SDLK_RETURN 
+
+=head2 SDLK_PAUSE 
+
+=head2 SDLK_ESCAPE 
+
+=head2 SDLK_SPACE 
+
+=head2 SDLK_EXCLAIM 
+
+=head2 SDLK_QUOTEDBL 
+
+=head2 SDLK_HASH 
+
+=head2 SDLK_DOLLAR 
+
+=head2 SDLK_AMPERSAND 
+
+=head2 SDLK_QUOTE 
+
+=head2 SDLK_LEFTPAREN 
+
+=head2 SDLK_RIGHTPAREN 
+
+=head2 SDLK_ASTERISK 
+
+=head2 SDLK_PLUS 
+
+=head2 SDLK_COMMA 
+
+=head2 SDLK_MINUS 
+
+=head2 SDLK_PERIOD 
+
+=head2 SDLK_SLASH 
+
+=head2 SDLK_0 
+
+=head2 SDLK_1 
+
+=head2 SDLK_2 
+
+=head2 SDLK_3 
+
+=head2 SDLK_4 
+
+=head2 SDLK_5 
+
+=head2 SDLK_6 
+
+=head2 SDLK_7 
+
+=head2 SDLK_8 
+
+=head2 SDLK_9 
+
+=head2 SDLK_COLON 
+
+=head2 SDLK_SEMICOLON 
+
+=head2 SDLK_LESS 
+
+=head2 SDLK_EQUALS 
+
+=head2 SDLK_GREATER 
+
+=head2 SDLK_QUESTION 
+
+=head2 SDLK_AT 
+
+=head2 SDLK_LEFTBRACKET 
+
+=head2 SDLK_BACKSLASH 
+
+=head2 SDLK_RIGHTBRACKET 
+
+=head2 SDLK_CARET 
+
+=head2 SDLK_UNDERSCORE 
+
+=head2 SDLK_BACKQUOTE 
+
+=head2 SDLK_a 
+
+=head2 SDLK_b 
+
+=head2 SDLK_c 
+
+=head2 SDLK_d 
+
+=head2 SDLK_e 
+
+=head2 SDLK_f 
+
+=head2 SDLK_g 
+
+=head2 SDLK_h 
+
+=head2 SDLK_i 
+
+=head2 SDLK_j 
+
+=head2 SDLK_k 
+
+=head2 SDLK_l 
+
+=head2 SDLK_m 
+
+=head2 SDLK_n 
+
+=head2 SDLK_o 
+
+=head2 SDLK_p 
+
+=head2 SDLK_q 
+
+=head2 SDLK_r 
+
+=head2 SDLK_s 
+
+=head2 SDLK_t 
+
+=head2 SDLK_u 
+
+=head2 SDLK_v 
+
+=head2 SDLK_w 
+
+=head2 SDLK_x 
+
+=head2 SDLK_y 
+
+=head2 SDLK_z 
+
+=head2 SDLK_DELETE 
+
+=head2 SDLK_KP0 
+
+=head2 SDLK_KP1 
+
+=head2 SDLK_KP2 
+
+=head2 SDLK_KP3 
+
+=head2 SDLK_KP4 
+
+=head2 SDLK_KP5 
+
+=head2 SDLK_KP6 
+
+=head2 SDLK_KP7 
+
+=head2 SDLK_KP8 
+
+=head2 SDLK_KP9 
+
+=head2 SDLK_KP_PERIOD 
+
+=head2 SDLK_KP_DIVIDE 
+
+=head2 SDLK_KP_MULTIPLY 
+
+=head2 SDLK_KP_MINUS 
+
+=head2 SDLK_KP_PLUS 
+
+=head2 SDLK_KP_ENTER 
+
+=head2 SDLK_KP_EQUALS 
+
+=head2 SDLK_UP 
+
+=head2 SDLK_DOWN 
+
+=head2 SDLK_RIGHT 
+
+=head2 SDLK_LEFT 
+
+=head2 SDLK_INSERT 
+
+=head2 SDLK_HOME 
+
+=head2 SDLK_END 
+
+=head2 SDLK_PAGEUP 
+
+=head2 SDLK_PAGEDOWN 
+
+=head2 SDLK_F1 
+
+=head2 SDLK_F2 
+
+=head2 SDLK_F3 
+
+=head2 SDLK_F4 
+
+=head2 SDLK_F5 
+
+=head2 SDLK_F6 
+
+=head2 SDLK_F7 
+
+=head2 SDLK_F8 
+
+=head2 SDLK_F9 
+
+=head2 SDLK_F10 
+
+=head2 SDLK_F11 
+
+=head2 SDLK_F12 
+
+=head2 SDLK_F13 
+
+=head2 SDLK_F14 
+
+=head2 SDLK_F15 
+
+=head2 SDLK_NUMLOCK 
+
+=head2 SDLK_CAPSLOCK 
+
+=head2 SDLK_SCROLLOCK 
+
+=head2 SDLK_RSHIFT 
+
+=head2 SDLK_LSHIFT 
+
+=head2 SDLK_RCTRL 
+
+=head2 SDLK_LCTRL 
+
+=head2 SDLK_RALT 
+
+=head2 SDLK_LALT 
+
+=head2 SDLK_RMETA 
+
+=head2 SDLK_LMETA 
+
+=head2 SDLK_LSUPER 
+
+=head2 SDLK_RSUPER 
+
+=head2 SDLK_MODE 
+
+=head2 SDLK_HELP 
+
+=head2 SDLK_PRINT 
+
+=head2 SDLK_SYSREQ 
+
+=head2 SDLK_BREAK 
+
+=head2 SDLK_MENU 
+
+=head2 SDLK_POWER 
+
+=head2 SDLK_EURO 
+
+=head2 KMOD_NONE 
+
+=head2 KMOD_NUM 
+
+=head2 KMOD_CAPS 
+
+=head2 KMOD_LCTRL 
+
+=head2 KMOD_RCTRL 
+
+=head2 KMOD_RSHIFT 
+
+=head2 KMOD_LSHIFT 
+
+=head2 KMOD_RALT 
+
+=head2 KMOD_LALT 
+
+=head2 KMOD_CTRL 
+
+=head2 KMOD_SHIFT 
+
+=head2 KMOD_ALT 
+
+=head2 KeyEventSym 
+
+=head2 KeyEventMod 
+
+=head2 KeyEventUnicode 
+
+=head2 KeyEventScanCode 
+
+=head2 MouseMotionState 
+
+=head2 MouseMotionX 
+
+=head2 MouseMotionY 
+
+=head2 MouseMotionXrel
+
+=head2 MouseMotionYrel 
+
+=head2 MouseButtonState 
+
+=head2 MouseButton 
+
+=head2 MouseButtonX 
+
+=head2 MouseButtonY 
+
+=head2 SysWMEventMsg 
+
+=head2 EnableUnicode 
+
+=head2 EnableKeyRepeat 
+
+=head2 GetKeyName 
+
+=head2 PRESSED 
+
+=head2 RELEASED 
+
+=head2 CreateRGBSurface 
+
+=head2 CreateRGBSurfaceFrom 
+
+=head2 IMG_Load 
+
+=head2 FreeSurface 
+
+=head2 SurfacePalette 
+
+=head2 SurfaceBitsPerPixel 
+
+=head2 SurfaceBytesPerPixel 
+
+=head2 SurfaceRshift 
+
+=head2 SurfaceGshift 
+
+=head2 SurfaceBshift 
+
+=head2 SurfaceAshift 
+
+=head2 SurfaceRmask
+
+=head2 SurfaceGmask 
+
+=head2 SurfaceBmask 
+
+=head2 SurfaceAmask 
+
+=head2 SurfaceColorKey 
+
+=head2 SurfaceAlpha
+
+=head2 SurfaceW 
+
+=head2 SurfaceH 
+
+=head2 SurfacePitch 
+
+=head2 SurfacePixels 
+
+=head2 SurfacePixel 
+
+=head2 MUSTLOCK 
+
+=head2 SurfaceLock 
+
+=head2 SurfaceUnlock 
+
+=head2 GetVideoSurface 
+
+=head2 VideoInfo 
+
+=head2 NewRect 
+
+=head2 FreeRect 
+
+=head2 RectX 
+
+=head2 RectY 
+
+=head2 RectW 
+
+=head2 RectH 
+
+=head2 NewColor 
+
+=head2 ColorR 
+
+=head2 ColorG 
+
+=head2 CologB 
+
+=head2 FreeColor 
+
+=head2 NewPalette 
+
+=head2 PaletteNColors 
+
+=head2 PaletteColors 
+
+=head2 SWSURFACE 
+
+=head2 HWSURFACE 
+
+=head2 ANYFORMAT 
+
+=head2 HWPALETTE 
+
+=head2 DOUBLEBUF 
+
+=head2 FULLSCREEN 
+
+=head2 ASYNCBLIT 
+
+=head2 OPENGL 
+
+=head2 HWACCEL 
+
+=head2 VideoModeOK 
+
+=head2 SetVideoMode 
+
+=head2 UpdateRects 
+
+=head2 Flip 
+
+=head2 SetColors 
+
+=head2 MapRGB (surface,r,g,b)
+
+C<SDL::MapRGB> translates the composite red (r), green (g), blue (b)
+colors according to the given surface to a interger color value.  This
+integer can be used in functions like C<SDL::FillRect>, and is not
+the same as the format independent Color object returned by C<SDL::NewColor>.
+
+=head2 MapRGBA (surface,r,g,b,a)
+
+C<SDL::MapRGBA> works as C<SDL::MapRGB> but takes an additional alpha (a)
+component for semi-transperant colors.
+
+=head2 GetRGB 
+
+=head2 GetRGBA 
+
+=head2 SaveBMP 
+
+=head2 SetColorKey 
+
+=head2 SRCCOLORKEY 
+
+=head2 RLEACCEL 
+
+=head2 SRCALPHA 
+
+=head2 SetAlpha 
+
+=head2 DisplayFormat 
+
+=head2 BlitSurface 
+
+=head2 FillRect(surface,rect,color)
+	
+C<SDL::FillRect> draws a solid rectangle of color on the given surface.
+If the rectangle is NULL, the entire surface will be painted.
+
+=head2 WMSetCaption 
+
+=head2 WMGetCaption 
+
+=head2 WMSetIcon 
+
+=head2 WarpMouse 
+
+=head2 NewCursor 
+
+=head2 FreeCursor 
+
+=head2 SetCursor 
+
+=head2 GetCursor 
+
+=head2 ShowCursor 
+
+=head2 NewAudioSpec 
+
+=head2 FreeAudioSpec 
+
+=head2 AUDIO_U8 
+
+=head2 AUDIO_S8 
+
+=head2 AUDIO_U16 
+
+=head2 AUDIO_S16 
+
+=head2 AUDIO_U16MSB 
+
+=head2 AUDIO_S16MSB 
+
+=head2 NewAudioCVT 
+
+=head2 FreeAudioCVT 
+
+=head2 ConvertAudioData 
+
+=head2 OpenAudio 
+
+=head2 PauseAudio 
+
+=head2 UnlockAudio 
+
+=head2 CloseAudio 
+
+=head2 FreeWAV 
+
+=head2 LoadWAV 
+
+=head2 MixAudio 
+
+=head2 MIX_MAX_VOLUME 
+
+=head2 MIX_DEFAULT_FREQUENCY 
+
+=head2 MIX_DEFAULT_FORMAT 
+
+=head2 MIX_DEFAULT_CHANNELS 
+
+=head2 MIX_NO_FADING 
+
+=head2 MIX_FADING_OUT 
+
+=head2 MIX_FADING_IN 
+
+=head2 MixOpenAudio 
+
+=head2 MixAllocateChannels 
+
+=head2 MixQuerySpec 
+
+=head2 MixLoadWAV 
+
+=head2 MixLoadMusic 
+
+=head2 MixQuickLoadWAV 
+
+=head2 MixFreeChunk
+
+=head2 MixFreeMusic 
+
+=head2 MixSetPostMixCallback 
+
+=head2 MixSetMusicHook 
+
+=head2 MixSetMusicFinishedHook 
+
+=head2 MixGetMusicHookData 
+
+=head2 MixReverseChannels 
+
+=head2 MixGroupChannel 
+
+=head2 MixGroupChannels 
+
+=head2 MixGroupAvailable 
+
+=head2 MixGroupCount 
+
+=head2 MixGroupOldest 
+
+=head2 MixGroupNewer 
+
+=head2 MixPlayChannel 
+
+=head2 MixPlayChannelTimed 
+
+=head2 MixPlayMusic 
+
+=head2 MixFadeInChannel 
+
+=head2 MixFadeInChannelTimed 
+
+=head2 MixFadeInMusic 
+
+=head2 MixVolume 
+
+=head2 MixVolumeChunk 
+
+=head2 MixVolumeMusic 
+
+=head2 MixHaltChannel 
+
+=head2 MixHaltGroup 
+
+=head2 MixHaltMusic 
+
+=head2 MixExpireChannel 
+
+=head2 MixFadeOutChannel 
+
+=head2 MixFadeOutGroup 
+
+=head2 MixFadeOutMusic 
+
+=head2 MixFadingMusic
+
+=head2 MixFadingChannel
+
+=head2 MixPause 
+
+=head2 MixResume 
+
+=head2 MixPaused 
+
+=head2 MixPauseMusic 
+
+=head2 MixResumeMusic 
+
+=head2 MixRewindMusic 
+
+=head2 MixPausedMusic 
+
+=head2 MixPlaying
+
+=head2 MixPlayingMusic
+
+=head2 MixCloseAudio 
+
+=head2 NewFont 
+
+=head2 UseFont 
+
+=head2 PutString 
+
+=head2 TextWidth 
+
+=head2 GL_RED_SIZE 
+
+=head2 GL_GREEN_SIZE 
+
+=head2 GL_BLUE_SIZE 
+
+=head2 GL_ALPHA_SIZE 
+
+=head2 GL_ACCUM_RED_SIZE 
+
+=head2 GL_ACCUM_GREEN_SIZE 
+
+=head2 GL_ACCUM_BLUE_SIZE 
+
+=head2 GL_ACCUM_ALPHA_SIZE 
+
+=head2 GL_BUFFER_SIZE 
+
+=head2 GL_DEPTH_SIZE 
+
+=head2 GL_STENCIL_SIZE 
+
+=head2 GL_DOUBLEBUFFER 
+
+=head2 GL_SetAttribute 
+
+=head2 GL_GetAttribute 
+
+=head2 GL_SwapBuffers 
+
+=head2 BigEndian 
+
+=head2 NumJoysticks 
+
+=head2 JoystickName 
+
+=head2 JoystickOpen 
+
+=head2 JoystickOpened 
+
+=head2 JoystickIndex 
+
+=head2 JoystickNumAxes 
+
+=head2 JoystickNumBalls 
+
+=head2 JoystickNumHats 
+
+=head2 JoystickNumButtons 
+
+=head2 JoystickUpdate 
+
+=head2 JoystickGetAxis 
+
+=head2 JoystickGetHat 
+
+=head2 JoystickGetButton 
+
+=head2 JoystickGetBall 
+
+=head2 JoystickClose 
+
+=head1 AUTHOR
+
+David J. Goehrig
+
+=head1 CONTRIBUTORS
+
+David J. Goehrig, Wayne Keenan, Guillaume Cottenceau
+
+=head1 SEE ALSO
+
+	perl(1) SDL::App(3) SDL::Surface(3) SDL::Event(3) SDL::Rect(3) 
+	SDL::Palette(3) SDL::Mixer(3) SDL::Cdrom(3)
+
+=cut
+
diff -ruN SDL_perl-1.20.0/scripts/OpenGL/Constants.pm SDL_perl-1.20.2/scripts/OpenGL/Constants.pm
--- SDL_perl-1.20.0/scripts/OpenGL/Constants.pm	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/scripts/OpenGL/Constants.pm	Wed Mar 12 05:04:48 2003
@@ -0,0 +1,433 @@
+# SDL::OpenGL::Constants
+#
+# This is an autogenerate file, don't bother editing
+#
+# Copyright (C) 2003 David J. Goehrig <dave@sdlperl.org>
+
+package SDL::OpenGL::Constants;
+
+
+sub main::GL_COLOR_BUFFER_BIT { 0x00004000 } 
+sub main::GL_DEPTH_BUFFER_BIT { 0x00000100 } 
+sub main::GL_ACCUM_BUFFER_BIT { 0x00000200 } 
+sub main::GL_STENCIL_BUFFER_BIT { 0x00000400 } 
+sub main::GL_POINTS { 0x0000 } 
+sub main::GL_LINES { 0x0001 } 
+sub main::GL_LINE_STRIP { 0x0003 } 
+sub main::GL_LINE_LOOP { 0x0002 } 
+sub main::GL_TRIANGLES { 0x0004 } 
+sub main::GL_TRIANGLE_STRIP { 0x0005 } 
+sub main::GL_TRIANGLE_FAN { 0x0006 } 
+sub main::GL_QUADS { 0x0007 } 
+sub main::GL_QUAD_STRIP { 0x0008 } 
+sub main::GL_POLYGON { 0x0009 } 
+sub main::GL_LINE_STIPPLE { 0x0B24 } 
+sub main::GL_FRONT { 0x0404 } 
+sub main::GL_BACK { 0x0405 } 
+sub main::GL_POINT { 0x1B00 } 
+sub main::GL_LINE { 0x1B01 } 
+sub main::GL_FILL { 0x1B02 } 
+sub main::GL_CCW { 0x0901 } 
+sub main::GL_CW { 0x0900 } 
+sub main::GL_FRONT_AND_BACK { 0x0408 } 
+sub main::GL_CULL_FACE { 0x0B44 } 
+sub main::GL_POLYGON_STIPPLE { 0x0B42 } 
+sub main::GL_NORMALIZE { 0x0BA1 } 
+sub main::GL_RESCALE_NORMAL { 0x803A } 
+sub main::GL_VERTEX_ARRAY { 0x8074 } 
+sub main::GL_COLOR_ARRAY { 0x8076 } 
+sub main::GL_INDEX_ARRAY { 0x8077 } 
+sub main::GL_NORMAL_ARRAY { 0x8075 } 
+sub main::GL_TEXTURE_COORD_ARRAY { 0x8078 } 
+sub main::GL_EDGE_FLAG_ARRAY { 0x8079 } 
+sub main::GL_BYTE { 0x1400 } 
+sub main::GL_UNSIGNED_BYTE { 0x1401 } 
+sub main::GL_SHORT { 0x1402 } 
+sub main::GL_UNSIGNED_SHORT { 0x1403 } 
+sub main::GL_INT { 0x1404 } 
+sub main::GL_UNSIGNED_INT { 0x1405 } 
+sub main::GL_FLOAT { 0x1406 } 
+sub main::GL_DOUBLE { 0x140A } 
+sub main::GL_V2F { 0x2A20 } 
+sub main::GL_V3F { 0x2A21 } 
+sub main::GL_C4UB_V2F { 0x2A22 } 
+sub main::GL_C4UB_V3F { 0x2A23 } 
+sub main::GL_C3F_V3F { 0x2A24 } 
+sub main::GL_N3F_V3F { 0x2A25 } 
+sub main::GL_C4F_N3F_V3F { 0x2A26 } 
+sub main::GL_T2F_V3F { 0x2A27 } 
+sub main::GL_T4F_V4F { 0x2A28 } 
+sub main::GL_T2F_C4UB_V3F { 0x2A29 } 
+sub main::GL_T2F_C3F_V3F { 0x2A2A } 
+sub main::GL_T2F_N3F_V3F { 0x2A2B } 
+sub main::GL_T2F_C4F_N3F_V3F { 0x2A2C } 
+sub main::GL_T4F_C4F_N3F_V4F { 0x2A2D } 
+sub main::GL_ALL_ATTRIB_BITS { 0x000FFFFF } 
+sub main::GL_CURRENT_BIT { 0x00000001 } 
+sub main::GL_ENABLE_BIT { 0x00002000 } 
+sub main::GL_EVAL_BIT { 0x00010000 } 
+sub main::GL_FOG_BIT { 0x00000080 } 
+sub main::GL_HINT_BIT { 0x00008000 } 
+sub main::GL_LIGHTING_BIT { 0x00000040 } 
+sub main::GL_LINE_BIT { 0x00000004 } 
+sub main::GL_LIST_BIT { 0x00020000 } 
+sub main::GL_PIXEL_MODE_BIT { 0x00000020 } 
+sub main::GL_POINT_BIT { 0x00000002 } 
+sub main::GL_POLYGON_BIT { 0x00000008 } 
+sub main::GL_POLYGON_STIPPLE_BIT { 0x00000010 } 
+sub main::GL_SCISSOR_BIT { 0x00080000 } 
+sub main::GL_TEXTURE_BIT { 0x00040000 } 
+sub main::GL_TRANSFORM_BIT { 0x00001000 } 
+sub main::GL_VIEWPORT_BIT { 0x00000800 } 
+sub main::GL_CLIENT_PIXEL_STORE_BIT { 0x00000001 } 
+sub main::GL_CLIENT_VERTEX_ARRAY_BIT { 0x00000002 } 
+sub main::GL_ALL_CLIENT_ATTRIB_BITS { 0xFFFFFFFF } 
+sub main::GL_MODELVIEW { 0x1700 } 
+sub main::GL_PROJECTION { 0x1701 } 
+sub main::GL_TEXTURE { 0x1702 } 
+sub main::GL_SMOOTH { 0x1D01 } 
+sub main::GL_FLAT { 0x1D00 } 
+sub main::GL_LIGHT0 { 0x4000 } 
+sub main::GL_LIGHT1 { 0x4001 } 
+sub main::GL_LIGHT2 { 0x4002 } 
+sub main::GL_LIGHT3 { 0x4003 } 
+sub main::GL_LIGHT4 { 0x4004 } 
+sub main::GL_LIGHT5 { 0x4005 } 
+sub main::GL_LIGHT6 { 0x4006 } 
+sub main::GL_LIGHT7 { 0x4007 } 
+sub main::GL_AMBIENT { 0x1200 } 
+sub main::GL_DIFFUSE { 0x1201 } 
+sub main::GL_AMBIENT_AND_DIFFUSE { 0x1602 } 
+sub main::GL_SPECULAR { 0x1202 } 
+sub main::GL_SHININESS { 0x1601 } 
+sub main::GL_EMISSION { 0x1600 } 
+sub main::GL_COLOR_INDEXES { 0x1603 } 
+sub main::GL_POSITION { 0x1203 } 
+sub main::GL_SPOT_DIRECTION { 0x1204 } 
+sub main::GL_SPOT_EXPONENT { 0x1205 } 
+sub main::GL_SPOT_CUTOFF { 0x1206 } 
+sub main::GL_CONSTANT_ATTENUATION { 0x1207 } 
+sub main::GL_LINEAR_ATTENUATION { 0x1208 } 
+sub main::GL_QUADRATIC_ATTENUATION { 0x1209 } 
+sub main::GL_LIGHT_MODEL_AMBIENT { 0x0B53 } 
+sub main::GL_LIGHT_MODEL_LOCAL_VIEWER { 0x0B51 } 
+sub main::GL_LIGHT_MODEL_TWO_SIDE { 0x0B52 } 
+sub main::GL_LIGHT_MODEL_COLOR_CONTROL { 0x81F8 } 
+sub main::GL_FALSE { 0x0 } 
+sub main::GL_TRUE { 0x1 } 
+sub main::GL_SINGLE_COLOR { 0x81F9 } 
+sub main::GL_ZERO { 0x0 } 
+sub main::GL_ONE { 0x1 } 
+sub main::GL_DST_COLOR { 0x0306 } 
+sub main::GL_SRC_COLOR { 0x0300 } 
+sub main::GL_ONE_MINUS_DST_COLOR { 0x0307 } 
+sub main::GL_ONE_MINUS_SRC_COLOR { 0x0301 } 
+sub main::GL_SRC_ALPHA { 0x0302 } 
+sub main::GL_ONE_MINUS_SRC_ALPHA { 0x0303 } 
+sub main::GL_SRC_ALPHA_SATURATE { 0x0308 } 
+sub main::GL_CONSTANT_COLOR { 0x8001 } 
+sub main::GL_ONE_MINUS_CONSTANT_COLOR { 0x8002 } 
+sub main::GL_CONSTANT_ALPHA { 0x8003 } 
+sub main::GL_ONE_MINUS_CONSTANT_ALPHA { 0x8004 } 
+sub main::GL_POINT_SMOOTH_HINT { 0x0C51 } 
+sub main::GL_LINE_SMOOTH_HINT { 0x0C52 } 
+sub main::GL_POLYGON_SMOOTH_HINT { 0x0C53 } 
+sub main::GL_FOG_HINT { 0x0C54 } 
+sub main::GL_PERSPECTIVE_CORRECTION_HINT { 0x0C50 } 
+sub main::GL_EXP { 0x0800 } 
+sub main::GL_EXP2 { 0x0801 } 
+sub main::GL_FOG_MODE { 0x0B65 } 
+sub main::GL_LINEAR { 0x2601 } 
+sub main::GL_FOG_DENSITY { 0x0B62 } 
+sub main::GL_FOG_START { 0x0B63 } 
+sub main::GL_FOG_END { 0x0B64 } 
+sub main::GL_FOG_COLOR { 0x0B66 } 
+sub main::GL_POLYGON_OFFSET_LINE { 0x2A02 } 
+sub main::GL_POLYGON_OFFSET_FILL { 0x8037 } 
+sub main::GL_POLYGON_OFFSET_POINT { 0x2A01 } 
+sub main::GL_COLOR_INDEX { 0x1900 } 
+sub main::GL_RGB { 0x1907 } 
+sub main::GL_RGBA { 0x1908 } 
+sub main::GL_BGR { 0x80E0 } 
+sub main::GL_BGRA { 0x80E1 } 
+sub main::GL_RED { 0x1903 } 
+sub main::GL_GREEN { 0x1904 } 
+sub main::GL_BLUE { 0x1905 } 
+sub main::GL_ALPHA { 0x1906 } 
+sub main::GL_LUMINANCE { 0x1909 } 
+sub main::GL_LUMINANCE_ALPHA { 0x190A } 
+sub main::GL_STENCIL_INDEX { 0x1901 } 
+sub main::GL_DEPTH_COMPONENT { 0x1902 } 
+sub main::GL_BITMAP { 0x1A00 } 
+sub main::GL_UNSIGNED_BYTE_3_3_2 { 0x8032 } 
+sub main::GL_UNSIGNED_BYTE_2_3_3_REV { 0x8362 } 
+sub main::GL_UNSIGNED_SHORT_5_6_5 { 0x8363 } 
+sub main::GL_UNSIGNED_SHORT_5_6_5_REV { 0x8364 } 
+sub main::GL_UNSIGNED_SHORT_4_4_4_4 { 0x8033 } 
+sub main::GL_UNSIGNED_SHORT_4_4_4_4_REV { 0x8365 } 
+sub main::GL_UNSIGNED_SHORT_5_5_5_1 { 0x8034 } 
+sub main::GL_UNSIGNED_SHORT_1_5_5_5_REV { 0x8366 } 
+sub main::GL_UNSIGNED_INT_8_8_8_8 { 0x8035 } 
+sub main::GL_UNSIGNED_INT_8_8_8_8_REV { 0x8367 } 
+sub main::GL_UNSIGNED_INT_10_10_10_2 { 0x8036 } 
+sub main::GL_UNSIGNED_INT_2_10_10_10_REV { 0x8368 } 
+sub main::GL_UNPACK_SWAP_BYTES { 0x0CF0 } 
+sub main::GL_PACK_SWAP_BYTES { 0x0D00 } 
+sub main::GL_UNPACK_LSB_FIRST { 0x0CF1 } 
+sub main::GL_PACK_LSB_FIRST { 0x0D01 } 
+sub main::GL_UNPACK_ROW_LENGTH { 0x0CF2 } 
+sub main::GL_PACK_ROW_LENGTH { 0x0D02 } 
+sub main::GL_UNPACK_SKIP_ROWS { 0x0CF3 } 
+sub main::GL_PACK_SKIP_ROWS { 0x0D03 } 
+sub main::GL_UNPACK_SKIP_PIXELS { 0x0CF4 } 
+sub main::GL_PACK_SKIP_PIXELS { 0x0D04 } 
+sub main::GL_UNPACK_ALIGNMENT { 0x0CF5 } 
+sub main::GL_PACK_ALIGNMENT { 0x0D05 } 
+sub main::GL_UNPACK_IMAGE_HEIGHT { 0x806E } 
+sub main::GL_PACK_IMAGE_HEIGHT { 0x806C } 
+sub main::GL_UNPACK_SKIP_IMAGES { 0x806D } 
+sub main::GL_PACK_SKIP_IMAGES { 0x806B } 
+sub main::GL_MAP_COLOR { 0x0D10 } 
+sub main::GL_MAP_STENCIL { 0x0D11 } 
+sub main::GL_INDEX_SHIFT { 0x0D12 } 
+sub main::GL_INDEX_OFFSET { 0x0D13 } 
+sub main::GL_RED_SCALE { 0x0D14 } 
+sub main::GL_GREEN_SCALE { 0x0D18 } 
+sub main::GL_BLUE_SCALE { 0x0D1A } 
+sub main::GL_ALPHA_SCALE { 0x0D1C } 
+sub main::GL_DEPTH_SCALE { 0x0D1E } 
+sub main::GL_RED_BIAS { 0x0D15 } 
+sub main::GL_GREEN_BIAS { 0x0D19 } 
+sub main::GL_BLUE_BIAS { 0x0D1B } 
+sub main::GL_ALPHA_BIAS { 0x0D1D } 
+sub main::GL_DEPTH_BIAS { 0x0D1F } 
+sub main::GL_POST_CONVOLUTION_RED_SCALE { 0x801C } 
+sub main::GL_POST_CONVOLUTION_GREEN_SCALE { 0x801D } 
+sub main::GL_POST_CONVOLUTION_BLUE_SCALE { 0x801E } 
+sub main::GL_POST_CONVOLUTION_ALPHA_SCALE { 0x801F } 
+sub main::GL_POST_CONVOLUTION_RED_BIAS { 0x8020 } 
+sub main::GL_POST_CONVOLUTION_GREEN_BIAS { 0x8021 } 
+sub main::GL_POST_CONVOLUTION_BLUE_BIAS { 0x8022 } 
+sub main::GL_POST_CONVOLUTION_ALPHA_BIAS { 0x8023 } 
+sub main::GL_POST_COLOR_MATRIX_RED_SCALE { 0x80B4 } 
+sub main::GL_POST_COLOR_MATRIX_GREEN_SCALE { 0x80B5 } 
+sub main::GL_POST_COLOR_MATRIX_BLUE_SCALE { 0x80B6 } 
+sub main::GL_POST_COLOR_MATRIX_ALPHA_SCALE { 0x80B7 } 
+sub main::GL_POST_COLOR_MATRIX_RED_BIAS { 0x80B8 } 
+sub main::GL_POST_COLOR_MATRIX_GREEN_BIAS { 0x80B9 } 
+sub main::GL_POST_COLOR_MATRIX_BLUE_BIAS { 0x80BA } 
+sub main::GL_POST_COLOR_MATRIX_ALPHA_BIAS { 0x80BB } 
+sub main::GL_PIXEL_MAP_I_TO_I { 0x0C70 } 
+sub main::GL_PIXEL_MAP_S_TO_S { 0x0C71 } 
+sub main::GL_PIXEL_MAP_I_TO_R { 0x0C72 } 
+sub main::GL_PIXEL_MAP_I_TO_G { 0x0C73 } 
+sub main::GL_PIXEL_MAP_I_TO_B { 0x0C74 } 
+sub main::GL_PIXEL_MAP_I_TO_A { 0x0C75 } 
+sub main::GL_PIXEL_MAP_R_TO_R { 0x0C76 } 
+sub main::GL_PIXEL_MAP_G_TO_G { 0x0C77 } 
+sub main::GL_PIXEL_MAP_B_TO_B { 0x0C78 } 
+sub main::GL_PIXEL_MAP_A_TO_A { 0x0C79 } 
+sub main::GL_TEXTURE_1D { 0x0DE0 } 
+sub main::GL_TEXTURE_2D { 0x0DE1 } 
+sub main::GL_TEXTURE_3D { 0x806F } 
+sub main::GL_PROXY_TEXTURE_2D { 0x8064 } 
+sub main::GL_ALPHA4 { 0x803B } 
+sub main::GL_ALPHA8 { 0x803C } 
+sub main::GL_ALPHA12 { 0x803D } 
+sub main::GL_ALPHA16 { 0x803E } 
+sub main::GL_LUMINANCE4 { 0x803F } 
+sub main::GL_LUMINANCE8 { 0x8040 } 
+sub main::GL_LUMINANCE12 { 0x8041 } 
+sub main::GL_LUMINANCE16 { 0x8042 } 
+sub main::GL_LUMINANCE4_ALPHA4 { 0x8043 } 
+sub main::GL_LUMINANCE6_ALPHA2 { 0x8044 } 
+sub main::GL_LUMINANCE8_ALPHA8 { 0x8045 } 
+sub main::GL_LUMINANCE12_ALPHA4 { 0x8046 } 
+sub main::GL_LUMINANCE12_ALPHA12 { 0x8047 } 
+sub main::GL_LUMINANCE16_ALPHA16 { 0x8048 } 
+sub main::GL_INTENSITY { 0x8049 } 
+sub main::GL_INTENSITY4 { 0x804A } 
+sub main::GL_INTENSITY8 { 0x804B } 
+sub main::GL_INTENSITY12 { 0x804C } 
+sub main::GL_INTENSITY16 { 0x804D } 
+sub main::GL_R3_G3_B2 { 0x2A10 } 
+sub main::GL_RGB4 { 0x804F } 
+sub main::GL_RGB5 { 0x8050 } 
+sub main::GL_RGB8 { 0x8051 } 
+sub main::GL_RGB10 { 0x8052 } 
+sub main::GL_RGB12 { 0x8053 } 
+sub main::GL_RGB16 { 0x8054 } 
+sub main::GL_RGBA2 { 0x8055 } 
+sub main::GL_RGBA4 { 0x8056 } 
+sub main::GL_RGB5_A1 { 0x8057 } 
+sub main::GL_RGBA8 { 0x8058 } 
+sub main::GL_RGB10_A2 { 0x8059 } 
+sub main::GL_RGBA12 { 0x805A } 
+sub main::GL_RGBA16 { 0x805B } 
+sub main::GL_MAX_TEXTURE_SIZE { 0x0D33 } 
+sub main::GL_TEXTURE_BASE_LEVEL { 0x813C } 
+sub main::GL_TEXTURE_MAX_LEVEL { 0x813D } 
+sub main::GL_TEXTURE_MAX_LOD { 0x813B } 
+sub main::GL_TEXTURE_MIN_LOD { 0x813A } 
+sub main::GL_TEXTURE_ENV_MODE { 0x2200 } 
+sub main::GL_TEXTURE_ENV_COLOR { 0x2201 } 
+sub main::GL_DECAL { 0x2101 } 
+sub main::GL_REPLACE { 0x1E01 } 
+sub main::GL_MODULATE { 0x2100 } 
+sub main::GL_BLEND { 0x0BE2 } 
+sub main::GL_TEXTURE_WRAP_S { 0x2802 } 
+sub main::GL_TEXTURE_WRAP_T { 0x2803 } 
+sub main::GL_TEXTURE_WRAP_R { 0x8072 } 
+sub main::GL_TEXTURE_MAG_FILTER { 0x2800 } 
+sub main::GL_TEXTURE_MIN_FILTER { 0x2801 } 
+sub main::GL_TEXTURE_BORDER_COLOR { 0x1004 } 
+sub main::GL_TEXTURE_PRIORITY { 0x8066 } 
+sub main::GL_CLAMP { 0x2900 } 
+sub main::GL_CLAMP_TO_EDGE { 0x812F } 
+sub main::GL_REPEAT { 0x2901 } 
+sub main::GL_NEAREST { 0x2600 } 
+sub main::GL_NEAREST_MIPMAP_NEAREST { 0x2700 } 
+sub main::GL_NEAREST_MIPMAP_LINEAR { 0x2702 } 
+sub main::GL_LINEAR_MIPMAP_NEAREST { 0x2701 } 
+sub main::GL_LINEAR_MIPMAP_LINEAR { 0x2703 } 
+sub main::GL_S { 0x2000 } 
+sub main::GL_T { 0x2001 } 
+sub main::GL_R { 0x2002 } 
+sub main::GL_Q { 0x2003 } 
+sub main::GL_TEXTURE_GEN_MODE { 0x2500 } 
+sub main::GL_OBJECT_PLANE { 0x2501 } 
+sub main::GL_EYE_PLANE { 0x2502 } 
+sub main::GL_EYE_LINEAR { 0x2400 } 
+sub main::GL_OBJECT_LINEAR { 0x2401 } 
+sub main::GL_SPHERE_MAP { 0x2402 } 
+sub main::GL_LEFT { 0x0406 } 
+sub main::GL_RIGHT { 0x0407 } 
+sub main::GL_FRONT_LEFT { 0x0400 } 
+sub main::GL_FRONT_RIGHT { 0x0401 } 
+sub main::GL_BACK_LEFT { 0x0402 } 
+sub main::GL_BACK_RIGHT { 0x0403 } 
+sub main::GL_NONE { 0x0 } 
+sub main::GL_SCISSOR_TEST { 0x0C11 } 
+sub main::GL_NEVER { 0x0200 } 
+sub main::GL_ALWAYS { 0x0207 } 
+sub main::GL_LESS { 0x0201 } 
+sub main::GL_LEQUAL { 0x0203 } 
+sub main::GL_EQUAL { 0x0202 } 
+sub main::GL_GEQUAL { 0x0206 } 
+sub main::GL_GREATER { 0x0204 } 
+sub main::GL_NOTEQUAL { 0x0205 } 
+sub main::GL_KEEP { 0x1E00 } 
+sub main::GL_INCR { 0x1E02 } 
+sub main::GL_DECR { 0x1E03 } 
+sub main::GL_INVERT { 0x150A } 
+sub main::GL_CLEAR { 0x1500 } 
+sub main::GL_COPY { 0x1503 } 
+sub main::GL_NOOP { 0x1505 } 
+sub main::GL_SET { 0x150F } 
+sub main::GL_COPY_INVERTED { 0x150C } 
+sub main::GL_AND_REVERSE { 0x1502 } 
+sub main::GL_OR_REVERSE { 0x150B } 
+sub main::GL_AND { 0x1501 } 
+sub main::GL_OR { 0x1507 } 
+sub main::GL_NAND { 0x150E } 
+sub main::GL_NOR { 0x1508 } 
+sub main::GL_XOR { 0x1506 } 
+sub main::GL_EQUIV { 0x1509 } 
+sub main::GL_AND_INVERTED { 0x1504 } 
+sub main::GL_OR_INVERTED { 0x150D } 
+sub main::GL_LOAD { 0x0101 } 
+sub main::GL_RETURN { 0x0102 } 
+sub main::GL_ADD { 0x0104 } 
+sub main::GL_MULT { 0x0103 } 
+sub main::GL_ACCUM { 0x0100 } 
+sub main::GL_MAP1_VERTEX_3 { 0x0D97 } 
+sub main::GL_MAP1_VERTEX_4 { 0x0D98 } 
+sub main::GL_MAP1_INDEX { 0x0D91 } 
+sub main::GL_MAP1_COLOR_4 { 0x0D90 } 
+sub main::GL_MAP1_NORMAL { 0x0D92 } 
+sub main::GL_MAP1_TEXTURE_COORD_1 { 0x0D93 } 
+sub main::GL_MAP1_TEXTURE_COORD_2 { 0x0D94 } 
+sub main::GL_MAP1_TEXTURE_COORD_3 { 0x0D95 } 
+sub main::GL_MAP1_TEXTURE_COORD_4 { 0x0D96 } 
+sub main::GL_MAP2_VERTEX_3 { 0x0DB7 } 
+sub main::GL_MAP2_VERTEX_4 { 0x0DB8 } 
+sub main::GL_MAP2_INDEX { 0x0DB1 } 
+sub main::GL_MAP2_COLOR_4 { 0x0DB0 } 
+sub main::GL_MAP2_NORMAL { 0x0DB2 } 
+sub main::GL_MAP2_TEXTURE_COORD_1 { 0x0DB3 } 
+sub main::GL_MAP2_TEXTURE_COORD_2 { 0x0DB4 } 
+sub main::GL_MAP2_TEXTURE_COORD_3 { 0x0DB5 } 
+sub main::GL_MAP2_TEXTURE_COORD_4 { 0x0DB6 } 
+sub main::GL_AUTO_NORMAL { 0x0D80 } 
+sub main::GL_LIGHTING { 0x0B50 } 
+sub main::GL_DEPTH_TEST { 0x0B71 } 
+sub main::GL_COLOR_TABLE { 0x80D0 } 
+sub main::GL_POST_CONVOLUTION_COLOR_TABLE { 0x80D1 } 
+sub main::GL_POST_COLOR_MATRIX_COLOR_TABLE { 0x80D2 } 
+sub main::GL_PROXY_COLOR_TABLE { 0x80D3 } 
+sub main::GL_PROXY_POST_CONVOLUTION_COLOR_TABLE { 0x80D4 } 
+sub main::GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE { 0x80D5 } 
+sub main::GL_CONVOLUTION_1D { 0x8010 } 
+sub main::GL_CONVOLUTION_2D { 0x8011 } 
+sub main::GL_SEPARABLE_2D { 0x8012 } 
+sub main::GL_CONVOLUTION_BORDER_MODE { 0x8013 } 
+sub main::GL_CONVOLUTION_FILTER_SCALE { 0x8014 } 
+sub main::GL_CONVOLUTION_FILTER_BIAS { 0x8015 } 
+sub main::GL_REDUCE { 0x8016 } 
+sub main::GL_CONSTANT_BORDER { 0x8151 } 
+sub main::GL_REPLICATE_BORDER { 0x8153 } 
+sub main::GL_HISTOGRAM { 0x8024 } 
+sub main::GL_PROXY_HISTOGRAM { 0x8025 } 
+sub main::GL_MINMAX { 0x802E } 
+sub main::GL_MIN { 0x8007 } 
+sub main::GL_MAX { 0x8008 } 
+sub main::GL_FUNC_ADD { 0x8006 } 
+sub main::GL_FUNC_SUBTRACT { 0x800A } 
+sub main::GL_FUNC_REVERSE_SUBTRACT { 0x800B } 
+sub main::GL_COLOR_TABLE_SCALE { 0x80D6 } 
+sub main::GL_READ_BUFFER { 0x0C02 } 
+sub main::GLU_DISPLAY_MODE { 100204 } 
+sub main::GLU_NURBS_MODE { 100160 } 
+sub main::GLU_CULLING { 100201 } 
+sub main::GLU_SAMPLING_METHOD { 100205 } 
+sub main::GLU_SAMPLING_TOLERANCE { 100203 } 
+sub main::GLU_PARAMETRIC_TOLERANCE { 100202 } 
+sub main::GLU_U_STEP { 100206 } 
+sub main::GLU_V_STEP { 100207 } 
+sub main::GLU_AUTO_LOAD_MATRIX { 100200 } 
+sub main::GLU_FILL { 100012 } 
+sub main::GLU_OUTLINE_POLYGON { 100240 } 
+sub main::GLU_OUTLINE_PATCH { 100241 } 
+sub main::GLU_NURBS_RENDERER { 100162 } 
+sub main::GLU_NURBS_TESSELLATOR { 100161 } 
+sub main::GLU_PATH_LENGTH { 100215 } 
+sub main::GLU_DOMAIN_DISTANCE { 100217 } 
+sub main::GLU_OBJECT_PATH_LENGTH { 100209 } 
+sub main::GLU_OBJECT_PARAMETRIC_ERROR { 100208 } 
+sub main::GLU_NURBS_ERROR { 100103 } 
+sub main::GLU_NURBS_BEGIN { 100164 } 
+sub main::GLU_NURBS_BEGIN_DATA { 100170 } 
+sub main::GLU_NURBS_TEXTURE_COORD { 100168 } 
+sub main::GLU_NURBS_TEXTURE_COORD_DATA { 100174 } 
+sub main::GLU_NURBS_COLOR { 100167 } 
+sub main::GLU_NURBS_COLOR_DATA { 100173 } 
+sub main::GLU_NURBS_NORMAL { 100166 } 
+sub main::GLU_NURBS_NORMAL_DATA { 100172 } 
+sub main::GLU_NURBS_VERTEX { 100165 } 
+sub main::GLU_NURBS_VERTEX_DATA { 100171 } 
+sub main::GLU_NURBS_END { 100169 } 
+sub main::GLU_NURBS_END_DATA { 100175 } 
+sub main::GLU_MAP1_TRIM_2 { 100210 } 
+sub main::GLU_MAP1_TRIM_3 { 100211 } 
+sub main::GLU_TESS_BOUNDARY_ONLY { 100141 } 
+sub main::GLU_TESS_TOLERANCE { 100142 } 
+sub main::GLU_TESS_WINDING_RULE { 100140 } 
+sub main::GLU_TESS_WINDING_ODD { 100130 } 
+sub main::GLU_TESS_WINDING_NONZERO { 100131 } 
+sub main::GLU_TESS_WINDING_POSITIVE { 100132 } 
+sub main::GLU_TESS_WINDING_NEGATIVE { 100133 } 
+sub main::GLU_TESS_WINDING_ABS_GEQ_TWO { 100134 } 
+
+
+1;
+
diff -ruN SDL_perl-1.20.0/scripts/README SDL_perl-1.20.2/scripts/README
--- SDL_perl-1.20.0/scripts/README	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/scripts/README	Fri Mar 21 19:27:16 2003
@@ -0,0 +1,19 @@
+README 
+
+I couldn't get the scripts to work at all, so I added const.pl and uses this
+to generate the scripts. const.pl is also responsible for making the constant
+exporting backwards-compatible to SDL_perl 1.x.
+
+Tels 2003/03/21
+
+This directory contains a set of scripts for generating the
+SDL::Constants and SDL::OpenGL::Constants modules.  They
+work by using the C preprocessor and gcc to extract defined
+values and enumerated field's numerical values and create
+constant subroutines that are exported into the main namespace.
+
+To add a new constant, simply add the name of the constant
+to the *_words.txt file and run the applicable script.  
+This will overwrite the lib/SDL/* file in question.
+
+Dave				Tue Mar 11 21:58:03 EST 2003
diff -ruN SDL_perl-1.20.0/scripts/SDL/Constants.pm SDL_perl-1.20.2/scripts/SDL/Constants.pm
--- SDL_perl-1.20.0/scripts/SDL/Constants.pm	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/scripts/SDL/Constants.pm	Wed Mar 12 05:04:03 2003
@@ -0,0 +1,273 @@
+# SDL::Constants
+#
+# This is an automatically generated file, don't bother editing
+#
+# Copyright (C) 2003 David J. Goehrig <dave@sdlperl.org>
+#
+
+package SDL::Constants;
+
+
+sub main::SDLK_INSERT { 277 }
+sub main::SDL_INIT_VIDEO { 32 }
+sub main::SDLK_AMPERSAND { 38 }
+sub main::SDL_AUDIO_PAUSED { 2 }
+sub main::UNICODE_BLENDED { 256 }
+sub main::SDLK_COMMA { 44 }
+sub main::KMOD_LSHIFT { 1 }
+sub main::SDLK_LSUPER { 311 }
+sub main::SDLK_EURO { 321 }
+sub main::SDL_JOYAXISMOTION { 7 }
+sub main::SDL_PRESSED { 1 }
+sub main::SDL_DOUBLEBUF { 1073741824 }
+sub main::SDL_GL_ACCUM_BLUE_SIZE { 10 }
+sub main::KMOD_SHIFT { 3 }
+sub main::SDLK_QUOTE { 39 }
+sub main::SDLK_a { 97 }
+sub main::SDL_AUDIO_STOPPED { 0 }
+sub main::SDLK_b { 98 }
+sub main::SDLK_c { 99 }
+sub main::SDLK_d { 100 }
+sub main::SDLK_e { 101 }
+sub main::SMPEG_PLAYING { 1 }
+sub main::SDL_GRAB_ON { 1 }
+sub main::SDLK_f { 102 }
+sub main::SDLK_g { 103 }
+sub main::SDLK_h { 104 }
+sub main::SDL_HAT_RIGHT { 2 }
+sub main::SDLK_i { 105 }
+sub main::SDLK_j { 106 }
+sub main::SDLK_PERIOD { 46 }
+sub main::SDL_HWPALETTE { 536870912 }
+sub main::SDLK_k { 107 }
+sub main::SDLK_l { 108 }
+sub main::TEXT_SHADED { 2 }
+sub main::SDLK_m { 109 }
+sub main::SDLK_n { 110 }
+sub main::SDLK_o { 111 }
+sub main::SDLK_p { 112 }
+sub main::SDLK_q { 113 }
+sub main::SDLK_r { 114 }
+sub main::SDL_MOUSEMOTION { 4 }
+sub main::SDLK_s { 115 }
+sub main::SDLK_t { 116 }
+sub main::SDL_RELEASED { 0 }
+sub main::SDL_GL_BLUE_SIZE { 2 }
+sub main::SDLK_u { 117 }
+sub main::SDLK_v { 118 }
+sub main::SDLK_w { 119 }
+sub main::SDLK_x { 120 }
+sub main::SDLK_SYSREQ { 317 }
+sub main::SDLK_y { 121 }
+sub main::SDLK_z { 122 }
+sub main::SDLK_SLASH { 47 }
+sub main::SDLK_ASTERISK { 42 }
+sub main::KMOD_NONE { 0 }
+sub main::SDLK_CARET { 94 }
+sub main::CD_ERROR { -1 }
+sub main::SDLK_UNDERSCORE { 95 }
+sub main::SDL_PREALLOC { 16777216 }
+sub main::KMOD_CTRL { 192 }
+sub main::MIX_NO_FADING { 0 }
+sub main::SDLK_QUESTION { 63 }
+sub main::SDL_QUERY { -1 }
+sub main::SDL_IYUV_OVERLAY { 1448433993 }
+sub main::SDLK_BREAK { 318 }
+sub main::SDL_APPINPUTFOCUS { 2 }
+sub main::SDLK_LEFTBRACKET { 91 }
+sub main::SDL_ACTIVEEVENT { 1 }
+sub main::TTF_STYLE_ITALIC { 2 }
+sub main::SMPEG_ERROR { -1 }
+sub main::SDLK_KP_DIVIDE { 267 }
+sub main::SDL_FULLSCREEN { -2147483648 }
+sub main::SDL_HAT_CENTERED { 0 }
+sub main::SDL_GL_ACCUM_GREEN_SIZE { 9 }
+sub main::SDL_YVYU_OVERLAY { 1431918169 }
+sub main::SDL_JOYBUTTONUP { 11 }
+sub main::SDLK_GREATER { 62 }
+sub main::AUDIO_U16MSB { 4112 }
+sub main::AUDIO_U16 { 16 }
+sub main::SDLK_RETURN { 13 }
+sub main::SDLK_KP_PERIOD { 266 }
+sub main::SDLK_BACKSPACE { 8 }
+sub main::SDL_ANYFORMAT { 268435456 }
+sub main::SDL_ENABLE { 1 }
+sub main::SDL_KEYUP { 3 }
+sub main::SDL_AUDIO_PLAYING { 1 }
+sub main::SDL_HAT_RIGHTDOWN { 6 }
+sub main::SDLK_ESCAPE { 27 }
+sub main::SDL_GL_ALPHA_SIZE { 3 }
+sub main::SDL_ASYNCBLIT { 4 }
+sub main::MIX_DEFAULT_FREQUENCY { 22050 }
+sub main::MIX_DEFAULT_CHANNELS { 2 }
+sub main::SDLK_LEFTPAREN { 40 }
+sub main::SDL_GRAB_OFF { 0 }
+sub main::KMOD_CAPS { 8192 }
+sub main::UTF8_BLENDED { 32 }
+sub main::SDL_MOUSEBUTTONUP { 6 }
+sub main::SDLK_HASH { 35 }
+sub main::SDL_HAT_RIGHTUP { 3 }
+sub main::SDL_SWSURFACE { 0 }
+sub main::AUDIO_S16MSB { 36880 }
+sub main::SDL_INIT_CDROM { 256 }
+sub main::SDL_HAT_UP { 1 }
+sub main::SDL_INIT_EVERYTHING { 65535 }
+sub main::SDLK_DOLLAR { 36 }
+sub main::KMOD_RCTRL { 128 }
+sub main::SDLK_RIGHTBRACKET { 93 }
+sub main::SDL_YUY2_OVERLAY { 844715353 }
+sub main::SDL_HWSURFACE { 1 }
+sub main::SDL_HWACCEL { 256 }
+sub main::SDLK_AT { 64 }
+sub main::SDL_GL_STENCIL_SIZE { 7 }
+sub main::SDLK_KP_PLUS { 270 }
+sub main::SDLK_LALT { 308 }
+sub main::SDLK_PAGEDOWN { 281 }
+sub main::SDL_INIT_TIMER { 1 }
+sub main::SDLK_RSHIFT { 303 }
+sub main::CD_STOPPED { 1 }
+sub main::SDL_KEYDOWN { 2 }
+sub main::INADDR_ANY { 0 }
+sub main::SDL_GL_DEPTH_SIZE { 6 }
+sub main::CD_PAUSED { 3 }
+sub main::SDL_OPENGLBLIT { 10 }
+sub main::SDLK_END { 279 }
+sub main::SDL_INIT_AUDIO { 16 }
+sub main::SDL_MOUSEBUTTONDOWN { 5 }
+sub main::SDL_IGNORE { 0 }
+sub main::KMOD_LALT { 256 }
+sub main::SDLK_KP_MULTIPLY { 268 }
+sub main::SDLK_RIGHTPAREN { 41 }
+sub main::SDL_INIT_NOPARACHUTE { 1048576 }
+sub main::SDLK_CLEAR { 12 }
+sub main::SDLK_TAB { 9 }
+sub main::MIX_FADING_OUT { 1 }
+sub main::SDL_MIX_MAXVOLUME { 128 }
+sub main::SDL_SRCCOLORKEY { 4096 }
+sub main::SDLK_SPACE { 32 }
+sub main::SDLK_NUMLOCK { 300 }
+sub main::SDL_OPENGL { 2 }
+sub main::UNICODE_SHADED { 128 }
+sub main::SDL_YV12_OVERLAY { 842094169 }
+sub main::KMOD_LCTRL { 64 }
+sub main::SDL_UYVY_OVERLAY { 1498831189 }
+sub main::AUDIO_S8 { 32776 }
+sub main::SDL_JOYBUTTONDOWN { 10 }
+sub main::SDLK_RCTRL { 305 }
+sub main::SDL_QUIT { 12 }
+sub main::MIX_DEFAULT_FORMAT { 32784 }
+sub main::SDLK_CAPSLOCK { 301 }
+sub main::INADDR_NONE { -1 }
+sub main::SDLK_HOME { 278 }
+sub main::SDLK_SEMICOLON { 59 }
+sub main::MIX_FADING_IN { 2 }
+sub main::CD_TRAYEMPTY { 0 }
+sub main::SDLK_EQUALS { 61 }
+sub main::SDLK_RMETA { 309 }
+sub main::SDLK_HELP { 315 }
+sub main::SDLK_LESS { 60 }
+sub main::SDL_GL_ACCUM_RED_SIZE { 8 }
+sub main::SDL_GL_RED_SIZE { 0 }
+sub main::SDLK_POWER { 320 }
+sub main::SDLK_F1 { 282 }
+sub main::CD_PLAYING { 2 }
+sub main::SDLK_F2 { 283 }
+sub main::SDL_GL_ACCUM_ALPHA_SIZE { 11 }
+sub main::SDLK_F3 { 284 }
+sub main::SDLK_F4 { 285 }
+sub main::SDLK_F5 { 286 }
+sub main::SDLK_PLUS { 43 }
+sub main::TTF_STYLE_BOLD { 1 }
+sub main::SDLK_F6 { 287 }
+sub main::SDL_RLEACCELOK { 8192 }
+sub main::SDLK_F7 { 288 }
+sub main::SDLK_F8 { 289 }
+sub main::SDLK_F9 { 290 }
+sub main::SDLK_QUOTEDBL { 34 }
+sub main::KMOD_RSHIFT { 2 }
+sub main::SDLK_RSUPER { 312 }
+sub main::SDL_JOYBALLMOTION { 8 }
+sub main::SDL_APPMOUSEFOCUS { 1 }
+sub main::SDLK_PRINT { 316 }
+sub main::SDLK_F10 { 291 }
+sub main::SDLK_F11 { 292 }
+sub main::SDLK_MENU { 319 }
+sub main::SDLK_F12 { 293 }
+sub main::SDLK_F13 { 294 }
+sub main::SDLK_F14 { 295 }
+sub main::SDLK_RALT { 307 }
+sub main::SDLK_F15 { 296 }
+sub main::AUDIO_U8 { 8 }
+sub main::SDLK_UP { 273 }
+sub main::UTF8_SHADED { 16 }
+sub main::SDLK_LSHIFT { 304 }
+sub main::SDLK_KP0 { 256 }
+sub main::SDLK_BACKQUOTE { 96 }
+sub main::SDLK_KP1 { 257 }
+sub main::SDLK_KP2 { 258 }
+sub main::SDLK_KP3 { 259 }
+sub main::SDLK_KP4 { 260 }
+sub main::SDLK_KP5 { 261 }
+sub main::SDLK_RIGHT { 275 }
+sub main::SDLK_KP6 { 262 }
+sub main::SDLK_KP7 { 263 }
+sub main::SDLK_KP8 { 264 }
+sub main::SDLK_KP9 { 265 }
+sub main::SDL_HAT_LEFTDOWN { 12 }
+sub main::SDL_SYSWMEVENT { 13 }
+sub main::TEXT_BLENDED { 4 }
+sub main::SDL_GL_BUFFER_SIZE { 4 }
+sub main::SDLK_SCROLLOCK { 302 }
+sub main::SDLK_DOWN { 274 }
+sub main::SDLK_MINUS { 45 }
+sub main::SDLK_BACKSLASH { 92 }
+sub main::SDL_HAT_DOWN { 4 }
+sub main::SDLK_LEFT { 276 }
+sub main::SMPEG_STOPPED { 0 }
+sub main::SDLK_EXCLAIM { 33 }
+sub main::KMOD_RALT { 512 }
+sub main::SDL_GL_GREEN_SIZE { 1 }
+sub main::SDLK_LCTRL { 306 }
+sub main::SDL_GL_DOUBLEBUFFER { 5 }
+sub main::SDL_HAT_LEFT { 8 }
+sub main::SDL_SRCALPHA { 65536 }
+sub main::SDLK_PAUSE { 19 }
+sub main::KMOD_ALT { 768 }
+sub main::MIX_MAX_VOLUME { 128 }
+sub main::UTF8_SOLID { 8 }
+sub main::SDL_HAT_LEFTUP { 9 }
+sub main::SDLK_LMETA { 310 }
+sub main::SDL_APPACTIVE { 4 }
+sub main::SDL_RLEACCEL { 16384 }
+sub main::SDL_RESIZABLE { 16 }
+sub main::AUDIO_S16 { 32784 }
+sub main::SDLK_KP_EQUALS { 272 }
+sub main::SDL_JOYHATMOTION { 9 }
+sub main::UNICODE_SOLID { 64 }
+sub main::SDL_GRAB_QUERY { -1 }
+sub main::SDLK_KP_ENTER { 271 }
+sub main::SDL_INIT_JOYSTICK { 512 }
+sub main::TEXT_SOLID { 1 }
+sub main::SDLK_DELETE { 127 }
+sub main::TTF_STYLE_UNDERLINE { 4 }
+sub main::SDL_VIDEORESIZE { 16 }
+sub main::KMOD_NUM { 4096 }
+sub main::SDLK_0 { 48 }
+sub main::SDLK_1 { 49 }
+sub main::SDLK_2 { 50 }
+sub main::SDLK_3 { 51 }
+sub main::SDLK_4 { 52 }
+sub main::SDLK_5 { 53 }
+sub main::SDLK_6 { 54 }
+sub main::SDLK_PAGEUP { 280 }
+sub main::SDLK_7 { 55 }
+sub main::SDLK_8 { 56 }
+sub main::SDLK_9 { 57 }
+sub main::SDLK_COLON { 58 }
+sub main::SDLK_KP_MINUS { 269 }
+sub main::TTF_STYLE_NORMAL { 0 }
+sub main::SDLK_MODE { 313 }
+
+
+1;
+
diff -ruN SDL_perl-1.20.0/scripts/const.pl SDL_perl-1.20.2/scripts/const.pl
--- SDL_perl-1.20.0/scripts/const.pl	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/scripts/const.pl	Fri Mar 21 18:52:43 2003
@@ -0,0 +1,167 @@
+#!/usr/bin/perl -w
+
+# Since the sdl_const.pl and gl_const.pl scripts with 2.0-beta2 don't seem to
+# work at all, this script takes SDL/Constans.pm and OpenGL/Constants.pm (as
+# original from 2.0-beta2) and fixes them up, and moves them into ../lib/
+
+# I already did this for 1.20.2, so you need to run this only if you intent
+# to rebuild the .pm files.
+
+# See http://Bloodgate.com/perl/sdl/sdl_perl.html
+
+use strict;
+
+##############################################################################
+
+my $sdl = read_file('SDL/Constants.pm');
+
+# remove 'main::' on subs
+$sdl =~ s/sub main::([\w]+)/sub $1/g;
+
+# turn on () on subs to make peep optimizer to inline them
+#$sdl =~ s/sub ([\w]+)\s+{/sub $1 () {/g;
+
+write_file('../lib/SDL/Constants.pm',insert_export($sdl));
+
+undef $sdl;
+
+##############################################################################
+
+my $gl = read_file('OpenGL/Constants.pm');
+
+# remove 'main::' on subs
+$gl =~ s/sub main::([\w]+)/sub $1/g;
+
+# turn on () on subs to make peep optimizer to inline them
+#$gl =~ s/sub ([\w]+)\s+{/sub $1 () {/g;
+
+write_file 
+  ('../lib/SDL/OpenGL/Constants.pm',insert_export($gl,grep_constants()));
+
+1;
+
+sub read_file
+  {
+  my $file = shift;
+
+  print "Reading $file...";
+  my $FILE;
+  open $FILE, $file or die ("Cannot read $file: $!\n");
+  local $/;	# slurp mode
+  my $doc = <$FILE>;
+  close $FILE;
+  print "done.\n";
+  $doc;
+  }
+
+sub write_file
+  {
+  my ($file,$txt) = @_;
+
+  print "Writing $file...";
+  my $FILE;
+  open $FILE, ">$file" or die ("Cannot write $file: $!\n");
+  print $FILE $txt;
+  close $FILE;
+  print "done.\n";
+  }
+
+sub insert_export
+  {
+  my $txt = shift;
+
+  my @sub = ();
+  # gather all sub names
+  $txt =~ s/sub ([\w]+)\s+/push @sub, $1; 'sub ' . $1 . ' '/eg;
+
+  # if we got a second list of names, parse it and include anything that isn't
+  # alreay in
+
+  my $add = "";
+  if (ref($_[0]) eq 'ARRAY')
+    {
+    my $const = shift;
+    foreach my $c (sort @$const)
+      {
+      if ( grep (/^$c->[0]$/, @sub) == 0)
+	{
+	print "Adding $c->[0] $c->[1]\n";
+        $add .= "sub $c->[0] () { $c->[1] }\n";
+        push @sub, $c->[0];
+	}
+      }
+    $add .= "\n";
+    }
+
+  # SDL/Constants.pm contains doubles :-( So filter them out.
+  my @sorted = sort @sub;
+  my $last; @sub = (); my @doubles;
+  foreach my $cur (@sorted)
+    {
+    if (defined $last && $last eq $cur)
+      {
+      # double!
+      push @doubles,$last;
+      }
+    else
+      {
+      push @sub, $last if defined $last;
+      }
+    $last = $cur;
+    }
+  foreach my $cur (@doubles)
+    {
+    $txt =~ s/\bsub $cur.*//g;	# remove
+    }
+
+  my $export = "require Exporter;\nuse strict;\n";
+  $export .= "use vars qw/\$VERSION \@ISA \@EXPORT/;";
+  $export .= "\n\@ISA = qw/Exporter/;\n";
+  
+  # this makes Exporter export the symbols from SDL::Constants to whatever
+  # package used SDL::Constants (usually SDL::Event.pm)
+  my $pack;
+  if ($txt =~ /SDL::Constants/)
+    {
+    $txt =~ s/SDL::Constants/SDL::Event/g;
+    $pack = 'SDL::Event';
+    }
+  if ($txt =~ /SDL::OpenGL::Constants/)
+    {
+    $txt =~ s/SDL::OpenGL::Constants/SDL::OpenGL/g;
+    $pack = 'SDL::OpenGL';
+    }
+  $export .= "\nsub import { $pack\->export_to_level(1, \@_); }\n";
+
+  $export .= "\n\@EXPORT = qw/\n";
+
+  my $line = "\t";
+  foreach my $s (sort @sub)
+    {
+    if (length($line)+length($s) > 70)
+      {
+      $export .= "$line\n"; $line = "\t";
+      }
+    $line .= "$s ";
+    }
+  $export .= "$line /;\n";
+
+  # insert Exporter section
+  $txt =~ s/sub/$export\n\n$add\nsub/;
+
+  $txt;
+  }
+
+sub grep_constants
+  {
+  # grep all the OpenGL constants from SDL and return them
+
+  my $sdl_gl = read_file('/usr/include/GL/gl.h');
+
+  my @const = ();
+  $sdl_gl =~ s/^#define (GL_.*?)\s+(0x[\da-fA-F]+)/push @const,[$1,$2];/egm;
+
+  \@const; 
+  }
+
+END { print "\n"; }
diff -ruN SDL_perl-1.20.0/scripts/gl_const.pl SDL_perl-1.20.2/scripts/gl_const.pl
--- SDL_perl-1.20.0/scripts/gl_const.pl	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/scripts/gl_const.pl	Thu Mar 13 05:53:10 2003
@@ -0,0 +1,68 @@
+#!/usr/bin/env perl
+#
+
+open XS, "< opengl_words.txt";
+open CPP, "| cpp - > OpenGL.cx";
+
+print CPP <<HEADER;
+#include <GL/gl.h>
+#include <GL/glu.h>
+
+--cut--
+HEADER
+
+while (<XS>) {
+	chomp();
+	print CPP "#$_ $_\n";
+	$words{$_} = 0;
+}
+
+close XS;
+close CPP;
+
+my $text;
+open FP, "< OpenGL.cx" 
+	or die "Couldn't open OpenGL.cx\n";
+{
+	local $/ = undef;
+	$text = <FP>;
+}
+
+my ($junk,$goodstuff) = split "--cut--", $text;
+
+$goodstuff =~ s/#(GL[U]?_[A-Z0-9_]+)\s+([0-9xa-fA-F]+)/sub main::$1 { $2 }/g;
+	
+for (split "\n",$goodstuff) {
+	if (/sub main::(GL[U]?_[A-Z0-9_]+)/ ) {
+		push @words, $1;
+	}
+}
+
+for ( @words ) {
+	$words{$_} = 1;
+}
+
+for ( keys %words ) {
+	print STDERR "Failed to find word $_" unless ($words{$_});
+}
+
+open OGL, "> ../lib/SDL/OpenGL/Constants.pm";
+
+$words = join(" ",@words);
+
+print OGL <<HERE;
+# SDL::OpenGL::Constants
+#
+# This is an autogenerate file, don't bother editing
+#
+# Copyright (C) 2003 David J. Goehrig <dave\@sdlperl.org>
+
+package SDL::OpenGL::Constants;
+
+$goodstuff
+
+1;
+
+HERE
+
+system("rm OpenGL.cx");
diff -ruN SDL_perl-1.20.0/scripts/opengl_words.txt SDL_perl-1.20.2/scripts/opengl_words.txt
--- SDL_perl-1.20.0/scripts/opengl_words.txt	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/scripts/opengl_words.txt	Wed Mar 12 04:04:02 2003
@@ -0,0 +1,420 @@
+GL_COLOR_BUFFER_BIT
+GL_DEPTH_BUFFER_BIT
+GL_ACCUM_BUFFER_BIT
+GL_STENCIL_BUFFER_BIT
+GL_POINTS
+GL_LINES
+GL_LINE_STRIP
+GL_LINE_LOOP
+GL_TRIANGLES
+GL_TRIANGLE_STRIP
+GL_TRIANGLE_FAN
+GL_QUADS
+GL_QUAD_STRIP
+GL_POLYGON
+GL_LINE_STIPPLE
+GL_FRONT
+GL_BACK
+GL_POINT
+GL_LINE
+GL_FILL
+GL_CCW
+GL_CW
+GL_FRONT_AND_BACK
+GL_CULL_FACE
+GL_POLYGON_STIPPLE
+GL_NORMALIZE
+GL_RESCALE_NORMAL
+GL_VERTEX_ARRAY
+GL_COLOR_ARRAY
+GL_INDEX_ARRAY
+GL_NORMAL_ARRAY
+GL_TEXTURE_COORD_ARRAY
+GL_EDGE_FLAG_ARRAY
+GL_BYTE
+GL_UNSIGNED_BYTE
+GL_SHORT
+GL_UNSIGNED_SHORT
+GL_INT
+GL_UNSIGNED_INT
+GL_FLOAT
+GL_DOUBLE
+GL_V2F
+GL_V3F
+GL_C4UB_V2F
+GL_C4UB_V3F
+GL_C3F_V3F
+GL_N3F_V3F
+GL_C4F_N3F_V3F
+GL_T2F_V3F
+GL_T4F_V4F
+GL_T2F_C4UB_V3F
+GL_T2F_C3F_V3F
+GL_T2F_N3F_V3F
+GL_T2F_C4F_N3F_V3F
+GL_T4F_C4F_N3F_V4F
+GL_ALL_ATTRIB_BITS
+GL_CURRENT_BIT
+GL_ENABLE_BIT
+GL_EVAL_BIT
+GL_FOG_BIT
+GL_HINT_BIT
+GL_LIGHTING_BIT
+GL_LINE_BIT
+GL_LIST_BIT
+GL_PIXEL_MODE_BIT
+GL_POINT_BIT
+GL_POLYGON_BIT
+GL_POLYGON_STIPPLE_BIT
+GL_SCISSOR_BIT
+GL_TEXTURE_BIT
+GL_TRANSFORM_BIT
+GL_VIEWPORT_BIT
+GL_CLIENT_PIXEL_STORE_BIT
+GL_CLIENT_VERTEX_ARRAY_BIT
+GL_ALL_CLIENT_ATTRIB_BITS
+GL_MODELVIEW
+GL_PROJECTION
+GL_TEXTURE
+GL_SMOOTH
+GL_FLAT
+GL_LIGHT0
+GL_LIGHT1
+GL_LIGHT2
+GL_LIGHT3
+GL_LIGHT4
+GL_LIGHT5
+GL_LIGHT6
+GL_LIGHT7
+GL_AMBIENT
+GL_DIFFUSE
+GL_AMBIENT_AND_DIFFUSE
+GL_SPECULAR
+GL_SHININESS
+GL_EMISSION
+GL_COLOR_INDEXES
+GL_POSITION
+GL_SPOT_DIRECTION
+GL_SPOT_EXPONENT
+GL_SPOT_CUTOFF
+GL_CONSTANT_ATTENUATION
+GL_LINEAR_ATTENUATION
+GL_QUADRATIC_ATTENUATION
+GL_LIGHT_MODEL_AMBIENT
+GL_LIGHT_MODEL_LOCAL_VIEWER
+GL_LIGHT_MODEL_TWO_SIDE
+GL_LIGHT_MODEL_COLOR_CONTROL
+GL_FALSE
+GL_TRUE
+GL_SINGLE_COLOR
+GL_ZERO
+GL_ONE
+GL_DST_COLOR
+GL_SRC_COLOR
+GL_ONE_MINUS_DST_COLOR
+GL_ONE_MINUS_SRC_COLOR
+GL_SRC_ALPHA
+GL_ONE_MINUS_SRC_ALPHA
+GL_SRC_ALPHA_SATURATE
+GL_CONSTANT_COLOR
+GL_ONE_MINUS_CONSTANT_COLOR
+GL_CONSTANT_ALPHA
+GL_ONE_MINUS_CONSTANT_ALPHA
+GL_POINT_SMOOTH_HINT
+GL_LINE_SMOOTH_HINT
+GL_POLYGON_SMOOTH_HINT
+GL_FOG_HINT
+GL_PERSPECTIVE_CORRECTION_HINT
+GL_EXP
+GL_EXP2
+GL_FOG_MODE
+GL_LINEAR
+GL_FOG_DENSITY
+GL_FOG_START
+GL_FOG_END
+GL_FOG_COLOR
+GL_POLYGON_OFFSET_LINE
+GL_POLYGON_OFFSET_FILL
+GL_POLYGON_OFFSET_POINT
+GL_COLOR_INDEX
+GL_RGB
+GL_RGBA
+GL_BGR
+GL_BGRA
+GL_RED
+GL_GREEN
+GL_BLUE
+GL_ALPHA
+GL_LUMINANCE
+GL_LUMINANCE_ALPHA
+GL_STENCIL_INDEX
+GL_DEPTH_COMPONENT
+GL_BITMAP
+GL_UNSIGNED_BYTE_3_3_2
+GL_UNSIGNED_BYTE_2_3_3_REV
+GL_UNSIGNED_SHORT_5_6_5
+GL_UNSIGNED_SHORT_5_6_5_REV
+GL_UNSIGNED_SHORT_4_4_4_4
+GL_UNSIGNED_SHORT_4_4_4_4_REV
+GL_UNSIGNED_SHORT_5_5_5_1
+GL_UNSIGNED_SHORT_1_5_5_5_REV
+GL_UNSIGNED_INT_8_8_8_8
+GL_UNSIGNED_INT_8_8_8_8_REV
+GL_UNSIGNED_INT_10_10_10_2
+GL_UNSIGNED_INT_2_10_10_10_REV
+GL_UNPACK_SWAP_BYTES
+GL_PACK_SWAP_BYTES
+GL_UNPACK_LSB_FIRST
+GL_PACK_LSB_FIRST
+GL_UNPACK_ROW_LENGTH
+GL_PACK_ROW_LENGTH
+GL_UNPACK_SKIP_ROWS
+GL_PACK_SKIP_ROWS
+GL_UNPACK_SKIP_PIXELS
+GL_PACK_SKIP_PIXELS
+GL_UNPACK_ALIGNMENT
+GL_PACK_ALIGNMENT
+GL_UNPACK_IMAGE_HEIGHT
+GL_PACK_IMAGE_HEIGHT
+GL_UNPACK_SKIP_IMAGES
+GL_PACK_SKIP_IMAGES
+GL_MAP_COLOR
+GL_MAP_STENCIL
+GL_INDEX_SHIFT
+GL_INDEX_OFFSET
+GL_RED_SCALE
+GL_GREEN_SCALE
+GL_BLUE_SCALE
+GL_ALPHA_SCALE
+GL_DEPTH_SCALE
+GL_RED_BIAS
+GL_GREEN_BIAS
+GL_BLUE_BIAS
+GL_ALPHA_BIAS
+GL_DEPTH_BIAS
+GL_POST_CONVOLUTION_RED_SCALE
+GL_POST_CONVOLUTION_GREEN_SCALE
+GL_POST_CONVOLUTION_BLUE_SCALE
+GL_POST_CONVOLUTION_ALPHA_SCALE
+GL_POST_CONVOLUTION_RED_BIAS
+GL_POST_CONVOLUTION_GREEN_BIAS
+GL_POST_CONVOLUTION_BLUE_BIAS
+GL_POST_CONVOLUTION_ALPHA_BIAS
+GL_POST_COLOR_MATRIX_RED_SCALE
+GL_POST_COLOR_MATRIX_GREEN_SCALE
+GL_POST_COLOR_MATRIX_BLUE_SCALE
+GL_POST_COLOR_MATRIX_ALPHA_SCALE
+GL_POST_COLOR_MATRIX_RED_BIAS
+GL_POST_COLOR_MATRIX_GREEN_BIAS
+GL_POST_COLOR_MATRIX_BLUE_BIAS
+GL_POST_COLOR_MATRIX_ALPHA_BIAS
+GL_PIXEL_MAP_I_TO_I
+GL_PIXEL_MAP_S_TO_S
+GL_PIXEL_MAP_I_TO_R
+GL_PIXEL_MAP_I_TO_G
+GL_PIXEL_MAP_I_TO_B
+GL_PIXEL_MAP_I_TO_A
+GL_PIXEL_MAP_R_TO_R
+GL_PIXEL_MAP_G_TO_G
+GL_PIXEL_MAP_B_TO_B
+GL_PIXEL_MAP_A_TO_A
+GL_TEXTURE_1D
+GL_TEXTURE_2D
+GL_TEXTURE_3D
+GL_PROXY_TEXTURE_2D
+GL_ALPHA4
+GL_ALPHA8
+GL_ALPHA12
+GL_ALPHA16
+GL_LUMINANCE4
+GL_LUMINANCE8
+GL_LUMINANCE12
+GL_LUMINANCE16
+GL_LUMINANCE4_ALPHA4
+GL_LUMINANCE6_ALPHA2
+GL_LUMINANCE8_ALPHA8
+GL_LUMINANCE12_ALPHA4
+GL_LUMINANCE12_ALPHA12
+GL_LUMINANCE16_ALPHA16
+GL_INTENSITY
+GL_INTENSITY4
+GL_INTENSITY8
+GL_INTENSITY12
+GL_INTENSITY16
+GL_R3_G3_B2
+GL_RGB4
+GL_RGB5
+GL_RGB8
+GL_RGB10
+GL_RGB12
+GL_RGB16
+GL_RGBA2
+GL_RGBA4
+GL_RGB5_A1
+GL_RGBA8
+GL_RGB10_A2
+GL_RGBA12
+GL_RGBA16
+GL_MAX_TEXTURE_SIZE
+GL_TEXTURE_BASE_LEVEL
+GL_TEXTURE_MAX_LEVEL
+GL_TEXTURE_MAX_LOD
+GL_TEXTURE_MIN_LOD
+GL_TEXTURE_ENV_MODE
+GL_TEXTURE_ENV_COLOR
+GL_DECAL
+GL_REPLACE
+GL_MODULATE
+GL_BLEND
+GL_TEXTURE_WRAP_S
+GL_TEXTURE_WRAP_T
+GL_TEXTURE_WRAP_R
+GL_TEXTURE_MAG_FILTER
+GL_TEXTURE_MIN_FILTER
+GL_TEXTURE_BORDER_COLOR
+GL_TEXTURE_PRIORITY
+GL_CLAMP
+GL_CLAMP_TO_EDGE
+GL_REPEAT
+GL_NEAREST
+GL_NEAREST_MIPMAP_NEAREST
+GL_NEAREST_MIPMAP_LINEAR
+GL_LINEAR_MIPMAP_NEAREST
+GL_LINEAR_MIPMAP_LINEAR
+GL_S
+GL_T
+GL_R
+GL_Q
+GL_TEXTURE_GEN_MODE
+GL_OBJECT_PLANE
+GL_EYE_PLANE
+GL_EYE_LINEAR
+GL_OBJECT_LINEAR
+GL_SPHERE_MAP
+GL_LEFT
+GL_RIGHT
+GL_FRONT_LEFT
+GL_FRONT_RIGHT
+GL_BACK_LEFT
+GL_BACK_RIGHT
+GL_NONE
+GL_SCISSOR_TEST
+GL_NEVER
+GL_ALWAYS
+GL_LESS
+GL_LEQUAL
+GL_EQUAL
+GL_GEQUAL
+GL_GREATER
+GL_NOTEQUAL
+GL_KEEP
+GL_INCR
+GL_DECR
+GL_INVERT
+GL_CLEAR
+GL_COPY
+GL_NOOP
+GL_SET
+GL_COPY_INVERTED
+GL_AND_REVERSE
+GL_OR_REVERSE
+GL_AND
+GL_OR
+GL_NAND
+GL_NOR
+GL_XOR
+GL_EQUIV
+GL_AND_INVERTED
+GL_OR_INVERTED
+GL_LOAD
+GL_RETURN
+GL_ADD
+GL_MULT
+GL_ACCUM
+GL_MAP1_VERTEX_3
+GL_MAP1_VERTEX_4
+GL_MAP1_INDEX
+GL_MAP1_COLOR_4
+GL_MAP1_NORMAL
+GL_MAP1_TEXTURE_COORD_1
+GL_MAP1_TEXTURE_COORD_2
+GL_MAP1_TEXTURE_COORD_3
+GL_MAP1_TEXTURE_COORD_4
+GL_MAP2_VERTEX_3
+GL_MAP2_VERTEX_4
+GL_MAP2_INDEX
+GL_MAP2_COLOR_4
+GL_MAP2_NORMAL
+GL_MAP2_TEXTURE_COORD_1
+GL_MAP2_TEXTURE_COORD_2
+GL_MAP2_TEXTURE_COORD_3
+GL_MAP2_TEXTURE_COORD_4
+GL_AUTO_NORMAL
+GL_LIGHTING
+GL_DEPTH_TEST
+GL_COLOR_TABLE
+GL_POST_CONVOLUTION_COLOR_TABLE
+GL_POST_COLOR_MATRIX_COLOR_TABLE
+GL_PROXY_COLOR_TABLE
+GL_PROXY_POST_CONVOLUTION_COLOR_TABLE
+GL_PROXY_POST_COLOR_MATRIX_COLOR_TABLE
+GL_CONVOLUTION_1D
+GL_CONVOLUTION_2D
+GL_SEPARABLE_2D
+GL_CONVOLUTION_BORDER_MODE
+GL_CONVOLUTION_FILTER_SCALE
+GL_CONVOLUTION_FILTER_BIAS
+GL_REDUCE
+GL_CONSTANT_BORDER
+GL_REPLICATE_BORDER
+GL_HISTOGRAM
+GL_PROXY_HISTOGRAM
+GL_MINMAX
+GL_MIN
+GL_MAX
+GL_FUNC_ADD
+GL_FUNC_SUBTRACT
+GL_FUNC_REVERSE_SUBTRACT
+GL_COLOR_TABLE_SCALE
+GL_READ_BUFFER
+GLU_DISPLAY_MODE
+GLU_NURBS_MODE
+GLU_CULLING
+GLU_SAMPLING_METHOD
+GLU_SAMPLING_TOLERANCE
+GLU_PARAMETRIC_TOLERANCE
+GLU_U_STEP
+GLU_V_STEP
+GLU_AUTO_LOAD_MATRIX
+GLU_FILL
+GLU_OUTLINE_POLYGON
+GLU_OUTLINE_PATCH
+GLU_NURBS_RENDERER
+GLU_NURBS_TESSELLATOR
+GLU_PATH_LENGTH
+GLU_DOMAIN_DISTANCE
+GLU_OBJECT_PATH_LENGTH
+GLU_OBJECT_PARAMETRIC_ERROR
+GLU_NURBS_ERROR
+GLU_NURBS_BEGIN
+GLU_NURBS_BEGIN_DATA
+GLU_NURBS_TEXTURE_COORD
+GLU_NURBS_TEXTURE_COORD_DATA
+GLU_NURBS_COLOR
+GLU_NURBS_COLOR_DATA
+GLU_NURBS_NORMAL
+GLU_NURBS_NORMAL_DATA
+GLU_NURBS_VERTEX
+GLU_NURBS_VERTEX_DATA
+GLU_NURBS_END
+GLU_NURBS_END_DATA
+GLU_MAP1_TRIM_2
+GLU_MAP1_TRIM_3
+GLU_TESS_BOUNDARY_ONLY
+GLU_TESS_TOLERANCE
+GLU_TESS_WINDING_RULE
+GLU_TESS_WINDING_ODD
+GLU_TESS_WINDING_NONZERO
+GLU_TESS_WINDING_POSITIVE
+GLU_TESS_WINDING_NEGATIVE
+GLU_TESS_WINDING_ABS_GEQ_TWO
diff -ruN SDL_perl-1.20.0/scripts/sdl_const.pl SDL_perl-1.20.2/scripts/sdl_const.pl
--- SDL_perl-1.20.0/scripts/sdl_const.pl	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/scripts/sdl_const.pl	Wed Mar 12 05:04:00 2003
@@ -0,0 +1,114 @@
+#!/usr/bin/env perl
+#
+
+open XS, "< sdl_words.txt" or die "could not open sdl_words.txt\n";
+open CPP, "| cpp `sdl-config --cflags` - > SDL.cx" or die "Could not pipe to cpp, $!\n";
+
+print CPP <<HEADER;
+#include <SDL.h>
+#define TEXT_SOLID	1
+#define TEXT_SHADED	2
+#define TEXT_BLENDED	4
+#define UTF8_SOLID	8
+#define UTF8_SHADED	16	
+#define UTF8_BLENDED	32
+#define UNICODE_SOLID	64
+#define UNICODE_SHADED	128
+#define UNICODE_BLENDED	256
+
+--cut--
+HEADER
+
+while (<XS>) {
+	chomp();
+	print CPP "#$_ $_\n";
+	$words{$_} = 0;
+}
+
+close XS;
+close CPP;
+
+#
+# ENUMS AREN'T CPPed we got to do this the hard way
+#
+
+open FP, "> sdl_const.c" or die "Could not write to sdl__const.c\n";
+
+print FP <<HERE;
+#include <SDL.h>
+#include <SDL_image.h>
+#include <SDL_mixer.h>
+#include <SDL_ttf.h>
+#include <SDL_net.h>
+#include <smpeg/smpeg.h>
+#define TEXT_SOLID	1
+#define TEXT_SHADED	2
+#define TEXT_BLENDED	4
+#define UTF8_SOLID	8
+#define UTF8_SHADED	16	
+#define UTF8_BLENDED	32
+#define UNICODE_SOLID	64
+#define UNICODE_SHADED	128
+#define UNICODE_BLENDED	256
+
+int
+main ( int argc, char **argv ) {
+
+HERE
+
+for ( grep { $words{$_} == 0 } keys %words ) { 
+	print FP <<THERE;
+	fprintf(stdout,"sub main::$_ { \%i }\n", $_);
+THERE
+
+}
+
+print FP <<HERE;
+}
+HERE
+
+system("gcc `sdl-config --cflags --libs` -o sdl_const sdl_const.c");
+
+my $enums;
+open ENUMS, "./sdl_const |";
+{
+	local $/ = undef;
+	$enums = <ENUMS>;
+}
+close ENUMS;
+
+$goodstuff .= "\n$enums";
+
+for ( split "\n", $goodstuff ) {
+	if (/sub\s+main::([A-Za-z0-9_]+)/) {
+		$words{$1} = 1;
+	}
+}
+
+for (keys %words) {
+	print STDERR "Failed to find $_\n" unless $words{$_};	
+}
+
+(@words) = grep { $words{$_} == 1 } keys %words;
+
+$words = join(" ",@words);
+
+open CONST, "> ../lib/SDL/Constants.pm";
+
+print CONST <<HERE;
+# SDL::Constants
+#
+# This is an automatically generated file, don't bother editing
+#
+# Copyright (C) 2003 David J. Goehrig <dave\@sdlperl.org>
+#
+
+package SDL::Constants;
+
+$goodstuff
+
+1;
+
+HERE
+
+system("rm -f SDL.cx sdl_const sdl_const.c");
diff -ruN SDL_perl-1.20.0/scripts/sdl_words.txt SDL_perl-1.20.2/scripts/sdl_words.txt
--- SDL_perl-1.20.0/scripts/sdl_words.txt	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/scripts/sdl_words.txt	Wed Mar 12 04:42:52 2003
@@ -0,0 +1,259 @@
+AUDIO_S16
+AUDIO_S16MSB
+AUDIO_S8
+AUDIO_U16
+AUDIO_U16MSB
+AUDIO_U8
+CD_STOPPED
+CD_PLAYING
+CD_PAUSED
+CD_ERROR
+CD_TRAYEMPTY
+INADDR_NONE
+INADDR_ANY
+KMOD_ALT
+KMOD_CAPS
+KMOD_CTRL
+KMOD_LALT
+KMOD_LCTRL
+KMOD_LSHIFT
+KMOD_NONE
+KMOD_NUM
+KMOD_RALT
+KMOD_RCTRL
+KMOD_RSHIFT
+KMOD_SHIFT
+MIX_DEFAULT_CHANNELS
+MIX_DEFAULT_FORMAT
+MIX_DEFAULT_FREQUENCY
+MIX_FADING_IN
+MIX_FADING_OUT
+MIX_MAX_VOLUME
+MIX_NO_FADING
+SDLK_0
+SDLK_1
+SDLK_2
+SDLK_3
+SDLK_4
+SDLK_5
+SDLK_6
+SDLK_7
+SDLK_8
+SDLK_9
+SDLK_AMPERSAND
+SDLK_ASTERISK
+SDLK_AT
+SDLK_BACKQUOTE
+SDLK_BACKSLASH
+SDLK_BACKSPACE
+SDLK_BREAK
+SDLK_CAPSLOCK
+SDLK_CARET
+SDLK_CLEAR
+SDLK_COLON
+SDLK_COMMA
+SDLK_DELETE
+SDLK_DOLLAR
+SDLK_DOWN
+SDLK_END
+SDLK_EQUALS
+SDLK_ESCAPE
+SDLK_EURO
+SDLK_EXCLAIM
+SDLK_F1
+SDLK_F10
+SDLK_F11
+SDLK_F12
+SDLK_F13
+SDLK_F14
+SDLK_F15
+SDLK_F2
+SDLK_F3
+SDLK_F4
+SDLK_F5
+SDLK_F6
+SDLK_F7
+SDLK_F8
+SDLK_F9
+SDLK_GREATER
+SDLK_HASH
+SDLK_HELP
+SDLK_HOME
+SDLK_INSERT
+SDLK_KP0
+SDLK_KP1
+SDLK_KP2
+SDLK_KP3
+SDLK_KP4
+SDLK_KP5
+SDLK_KP6
+SDLK_KP7
+SDLK_KP8
+SDLK_KP9
+SDLK_KP_DIVIDE
+SDLK_KP_ENTER
+SDLK_KP_EQUALS
+SDLK_KP_MINUS
+SDLK_KP_MULTIPLY
+SDLK_KP_PERIOD
+SDLK_KP_PLUS
+SDLK_LALT
+SDLK_LCTRL
+SDLK_LEFT
+SDLK_LEFTBRACKET
+SDLK_LEFTPAREN
+SDLK_LESS
+SDLK_LMETA
+SDLK_LSHIFT
+SDLK_LSUPER
+SDLK_MENU
+SDLK_MINUS
+SDLK_MODE
+SDLK_NUMLOCK
+SDLK_PAGEDOWN
+SDLK_PAGEUP
+SDLK_PAUSE
+SDLK_PERIOD
+SDLK_PLUS
+SDLK_POWER
+SDLK_PRINT
+SDLK_QUESTION
+SDLK_QUOTE
+SDLK_QUOTEDBL
+SDLK_RALT
+SDLK_RCTRL
+SDLK_RETURN
+SDLK_RIGHT
+SDLK_RIGHTBRACKET
+SDLK_RIGHTPAREN
+SDLK_RMETA
+SDLK_RSHIFT
+SDLK_RSUPER
+SDLK_SCROLLOCK
+SDLK_SEMICOLON
+SDLK_SLASH
+SDLK_SPACE
+SDLK_SYSREQ
+SDLK_TAB
+SDLK_UNDERSCORE
+SDLK_UP
+SDLK_a
+SDLK_b
+SDLK_c
+SDLK_d
+SDLK_e
+SDLK_f
+SDLK_g
+SDLK_h
+SDLK_i
+SDLK_j
+SDLK_k
+SDLK_l
+SDLK_m
+SDLK_n
+SDLK_o
+SDLK_p
+SDLK_q
+SDLK_r
+SDLK_s
+SDLK_t
+SDLK_u
+SDLK_v
+SDLK_w
+SDLK_x
+SDLK_y
+SDLK_z
+SDL_ACTIVEEVENT
+SDL_ANYFORMAT
+SDL_APPACTIVE
+SDL_APPINPUTFOCUS
+SDL_APPMOUSEFOCUS
+SDL_ASYNCBLIT
+SDL_AUDIO_PAUSED
+SDL_AUDIO_PLAYING
+SDL_AUDIO_STOPPED
+SDL_DOUBLEBUF
+SDL_ENABLE
+SDL_FULLSCREEN
+SDL_GL_ACCUM_ALPHA_SIZE
+SDL_GL_ACCUM_BLUE_SIZE
+SDL_GL_ACCUM_GREEN_SIZE
+SDL_GL_ACCUM_RED_SIZE
+SDL_GL_ALPHA_SIZE
+SDL_GL_BLUE_SIZE
+SDL_GL_BUFFER_SIZE
+SDL_GL_DEPTH_SIZE
+SDL_GL_DOUBLEBUFFER
+SDL_GL_GREEN_SIZE
+SDL_GL_RED_SIZE
+SDL_GL_STENCIL_SIZE
+SDL_GRAB_OFF
+SDL_GRAB_ON
+SDL_GRAB_QUERY
+SDL_HAT_CENTERED
+SDL_HAT_DOWN
+SDL_HAT_LEFT
+SDL_HAT_LEFTDOWN
+SDL_HAT_LEFTUP
+SDL_HAT_RIGHT
+SDL_HAT_RIGHTDOWN
+SDL_HAT_RIGHTUP
+SDL_HAT_UP
+SDL_HWACCEL
+SDL_HWPALETTE
+SDL_HWSURFACE
+SDL_IGNORE
+SDL_INIT_AUDIO
+SDL_INIT_CDROM
+SDL_INIT_EVERYTHING
+SDL_INIT_JOYSTICK
+SDL_INIT_NOPARACHUTE
+SDL_INIT_TIMER
+SDL_INIT_VIDEO
+SDL_IYUV_OVERLAY
+SDL_JOYAXISMOTION
+SDL_JOYBALLMOTION
+SDL_JOYBUTTONDOWN
+SDL_JOYBUTTONUP
+SDL_JOYHATMOTION
+SDL_KEYDOWN
+SDL_KEYUP
+SDL_MIX_MAXVOLUME
+SDL_MOUSEBUTTONDOWN
+SDL_MOUSEBUTTONUP
+SDL_MOUSEMOTION
+SDL_OPENGL
+SDL_OPENGLBLIT
+SDL_PREALLOC
+SDL_PRESSED
+SDL_QUERY
+SDL_QUIT
+SDL_RELEASED
+SDL_RESIZABLE
+SDL_RLEACCEL
+SDL_RLEACCELOK
+SDL_SRCALPHA
+SDL_SRCCOLORKEY
+SDL_SWSURFACE
+SDL_SYSWMEVENT
+SDL_UYVY_OVERLAY
+SDL_VIDEORESIZE
+SDL_YUY2_OVERLAY
+SDL_YV12_OVERLAY
+SDL_YVYU_OVERLAY
+SMPEG_ERROR
+SMPEG_PLAYING
+SMPEG_STOPPED
+TTF_STYLE_BOLD
+TTF_STYLE_ITALIC
+TTF_STYLE_NORMAL
+TTF_STYLE_UNDERLINE
+TEXT_SOLID
+TEXT_SHADED
+TEXT_BLENDED
+UTF8_SOLID
+UTF8_SHADED
+UTF8_BLENDED
+UNICODE_SOLID
+UNICODE_SHADED
+UNICODE_BLENDED
diff -ruN SDL_perl-1.20.0/t/apppm.t SDL_perl-1.20.2/t/apppm.t
--- SDL_perl-1.20.0/t/apppm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/apppm.t	Fri Mar 21 20:40:28 2003
@@ -0,0 +1,32 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::App
+
+use Test::More tests => 3;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::App' ); 
+  }
+  
+can_ok ('SDL::App', qw/
+	new title delay ticks error warp fullscreen iconify
+	grab_input loop attribute/);
+
+# These are exported by default, so main:: should know about them
+can_ok ('main', qw/
+        SDL_TEXTWIDTH
+       /);
+
+# these were removed in v1.20.0 :/
+#	SDL_SWSURFACE SDL_HWSURFACE SDL_ANYFORMAT SDL_HWPALETTE
+#	SDL_DOUBLEBUF SDL_FULLSCREEN
+#	SDL_RESIZABLE
+#	SDL_HWACCEL SDL_SRCCOLORKEY SDL_RLEACCELOK SDL_RLEACCEL
+#	SDL_SRCALPHA SDL_ASYNCBLIT SDL_OPENGL
+
diff -ruN SDL_perl-1.20.0/t/cdrompm.t SDL_perl-1.20.2/t/cdrompm.t
--- SDL_perl-1.20.0/t/cdrompm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/cdrompm.t	Fri Mar 21 20:40:34 2003
@@ -0,0 +1,27 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Cdrom
+
+use Test::More tests => 3;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Cdrom' ); 
+  }
+  
+can_ok ('SDL::Cdrom', qw/
+	new
+	name status play pause resume stop
+	eject id num_tracks track
+	current current_frame
+	/);
+
+# These are exported by default, so main:: should know about them
+can_ok ('main', qw/
+	CD_NUM_DRIVES
+       /);
diff -ruN SDL_perl-1.20.0/t/colorpm.t SDL_perl-1.20.2/t/colorpm.t
--- SDL_perl-1.20.0/t/colorpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/colorpm.t	Fri Mar 21 20:40:49 2003
@@ -0,0 +1,34 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Color
+
+use Test::More tests => 10;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Color' ); 
+  }
+  
+can_ok ('SDL::Color', qw/
+	new r g b pixel
+	/);
+
+# some basic tests:
+
+my $color = SDL::Color->new();
+is (ref($color), 'SDL::Color', 'new was ok');
+is ($color->r(),0, 'r is 0');
+is ($color->g(),0, 'g is 0');
+is ($color->b(),0, 'b is 0');
+
+$color = SDL::Color->new( -r => 0xff, -g => 0xff, -b => 0xff);
+is (ref($color), 'SDL::Color', 'new was ok');
+is ($color->r(),255, 'r is 255');
+is ($color->g(),255, 'g is 255');
+is ($color->b(),255, 'b is 255');
+
diff -ruN SDL_perl-1.20.0/t/consolepm.t SDL_perl-1.20.2/t/consolepm.t
--- SDL_perl-1.20.0/t/consolepm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/consolepm.t	Fri Mar 21 20:40:55 2003
@@ -0,0 +1,31 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Console
+
+use Test::More tests => 2;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Console' ); 
+  }
+  
+can_ok ('SDL::Console', qw/
+	new draw topmost AddCommand Event print alpha background
+	list_commands resize position CommandDispatch
+	/);
+
+
+# some basic tests:
+
+# this does not work, complains about missing ConsoleInit.al - maybe because
+# I don't have sdl_console installed?
+#use SDL::Surface;
+#my $console = 
+#  SDL::Console->new( -surface => SDL::Surface->new( -name => '', ) );
+#is (ref($console), 'SDL::Console', 'new was ok');
+
diff -ruN SDL_perl-1.20.0/t/cursorpm.t SDL_perl-1.20.2/t/cursorpm.t
--- SDL_perl-1.20.0/t/cursorpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/cursorpm.t	Fri Mar 21 20:41:01 2003
@@ -0,0 +1,25 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Cursor
+
+use Test::More tests => 2;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Cursor' ); 
+  }
+  
+can_ok ('SDL::Cursor', qw/
+	new warp use get show
+	/);
+
+# does not work, segmentation fault due to missing options that are required
+#my $cursor = SDL::Cursor->new();
+#
+#is (ref($cursor), 'SDL::Cursor', 'new was ok');
+
diff -ruN SDL_perl-1.20.0/t/eventpm.t SDL_perl-1.20.2/t/eventpm.t
--- SDL_perl-1.20.0/t/eventpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/eventpm.t	Fri Mar 21 20:41:06 2003
@@ -0,0 +1,92 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Event
+
+use Test::More tests => 3;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Event' ); 
+  }
+  
+can_ok ('SDL::Event', qw/
+	new 
+	type pump poll wait set set_unicode set_key_repeat
+	active_gain active_state key_state key_sym key_name key_mod
+	key_unicode key_scancode motion_state
+	motion_x motion_y motion_xrel motion_yrel
+	button button_state button_x button_y
+	/);
+
+my @sym = ();
+# These are exported by default, so main:: should know about them
+foreach my $s (qw/
+        &SDL_IGNORE &SDL_ENABLE &SDL_QUERY
+	&SDL_ACTIVEEVENT &SDL_KEYDOWN &SDL_KEYUP
+	&SDL_MOUSEMOTION &SDL_MOUSEBUTTONDOWN
+	&SDL_MOUSEBUTTONUP &SDL_QUIT &SDL_SYSWMEVENT
+	&SDL_APPMOUSEFOCUS &SDL_APPINPUTFOCUS
+	&SDL_APPACTIVE &SDL_PRESSED &SDL_RELEASED
+	&SDLK_BACKSPACE &SDLK_TAB &SDLK_CLEAR
+	&SDLK_RETURN &SDLK_PAUSE &SDLK_ESCAPE
+	&SDLK_SPACE &SDLK_EXCLAIM &SDLK_QUOTEDBL
+	&SDLK_HASH &SDLK_DOLLAR &SDLK_AMPERSAND
+	&SDLK_QUOTE &SDLK_LEFTPAREN &SDLK_RIGHTPAREN
+	&SDLK_ASTERISK &SDLK_PLUS &SDLK_COMMA
+	&SDLK_MINUS &SDLK_PERIOD &SDLK_SLASH
+	&SDLK_0 &SDLK_1 &SDLK_2
+	&SDLK_3 &SDLK_4 &SDLK_5
+	&SDLK_6 &SDLK_7 &SDLK_8
+	&SDLK_9 &SDLK_COLON &SDLK_SEMICOLON
+	&SDLK_LESS &SDLK_EQUALS &SDLK_GREATER
+	&SDLK_QUESTION &SDLK_AT &SDLK_LEFTBRACKET
+	&SDLK_BACKSLASH &SDLK_RIGHTBRACKET &SDLK_CARET
+	&SDLK_UNDERSCORE &SDLK_BACKQUOTE &SDLK_a
+	&SDLK_b &SDLK_c &SDLK_d
+	&SDLK_e &SDLK_f &SDLK_g
+	&SDLK_h &SDLK_i &SDLK_j
+	&SDLK_k &SDLK_l &SDLK_m
+	&SDLK_n &SDLK_o &SDLK_p
+	&SDLK_q &SDLK_r &SDLK_s
+	&SDLK_t &SDLK_u &SDLK_v
+	&SDLK_w &SDLK_x &SDLK_y
+	&SDLK_z &SDLK_DELETE &SDLK_KP0
+	&SDLK_KP1 &SDLK_KP2 &SDLK_KP3
+	&SDLK_KP4 &SDLK_KP5 &SDLK_KP6
+	&SDLK_KP7 &SDLK_KP8 &SDLK_KP9
+	&SDLK_KP_PERIOD &SDLK_KP_DIVIDE &SDLK_KP_MULTIPLY
+	&SDLK_KP_MINUS &SDLK_KP_PLUS &SDLK_KP_ENTER
+	&SDLK_KP_EQUALS &SDLK_UP &SDLK_DOWN
+	&SDLK_RIGHT &SDLK_LEFT &SDLK_INSERT
+	&SDLK_HOME &SDLK_END &SDLK_PAGEUP
+	&SDLK_PAGEDOWN &SDLK_F1 &SDLK_F2
+	&SDLK_F3 &SDLK_F4 &SDLK_F5
+	&SDLK_F6 &SDLK_F7 &SDLK_F8
+	&SDLK_F9 &SDLK_F10 &SDLK_F11
+	&SDLK_F12 &SDLK_F13 &SDLK_F14
+	&SDLK_F15 &SDLK_NUMLOCK &SDLK_CAPSLOCK
+	&SDLK_SCROLLOCK &SDLK_RSHIFT &SDLK_LSHIFT
+	&SDLK_RCTRL &SDLK_LCTRL &SDLK_RALT
+	&SDLK_LALT &SDLK_RMETA &SDLK_LMETA
+	&SDLK_LSUPER &SDLK_RSUPER &SDLK_MODE
+	&SDLK_HELP &SDLK_PRINT &SDLK_SYSREQ
+	&SDLK_BREAK &SDLK_MENU &SDLK_POWER
+	&SDLK_EURO &KMOD_NONE &KMOD_NUM
+	&KMOD_CAPS &KMOD_LCTRL &KMOD_RCTRL
+	&KMOD_RSHIFT &KMOD_LSHIFT &KMOD_RALT
+	&KMOD_LALT &KMOD_CTRL &KMOD_SHIFT
+	&KMOD_ALT
+       /)
+  {
+  my $i = $s;
+  $i =~ s/^[\&]//;
+  push @sym, $i;
+  }
+can_ok ('main', @sym);
+
+
diff -ruN SDL_perl-1.20.0/t/fontpm.t SDL_perl-1.20.2/t/fontpm.t
--- SDL_perl-1.20.0/t/fontpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/fontpm.t	Fri Mar 21 20:41:11 2003
@@ -0,0 +1,24 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Font
+
+use Test::More tests => 2;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Font' ); 
+  }
+  
+can_ok ('SDL::Font', qw/
+	new use
+	/);
+
+# does not work
+#my $font = SDL::Font->new();
+#is (ref($font), 'SDL::Font', 'new was ok');
+
diff -ruN SDL_perl-1.20.0/t/mixerpm.t SDL_perl-1.20.2/t/mixerpm.t
--- SDL_perl-1.20.0/t/mixerpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/mixerpm.t	Fri Mar 21 18:48:58 2003
@@ -0,0 +1,75 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Mixer
+
+use Test::More tests => 4;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Mixer' ); 
+  }
+  
+can_ok ('SDL::Mixer', qw/
+	new
+	query_spec
+	reserve_channels
+	allocate_channels
+	group_channel
+	group_channels
+	group_available
+	group_count
+	group_oldest
+	group_newer
+	play_channel
+	play_music
+	fade_in_channel
+	fade_in_music
+	channel_volume
+	music_volume
+	halt_channel
+	halt_group
+	halt_music
+	channel_expire
+	fade_out_channel
+	fade_out_group
+	fade_out_music
+	fading_music
+	fading_channel
+	pause
+	resume
+	paused
+	pause_music
+	resume_music
+	rewind_music
+	music_paused
+	playing
+	playing_music
+	/);
+
+use SDL::Event;
+
+# these are exported by defaultby Event, so main:: should know them:
+can_ok ('main', qw/
+	MIX_MAX_VOLUME
+	MIX_DEFAULT_FREQUENCY
+	MIX_DEFAULT_FORMAT
+	MIX_DEFAULT_CHANNELS
+	MIX_NO_FADING
+	MIX_FADING_OUT
+	MIX_FADING_IN
+	AUDIO_U8
+	AUDIO_S8
+	AUDIO_U16
+	AUDIO_S16
+	AUDIO_U16MSB
+	AUDIO_S16MSB
+	/);
+
+my $mixer = SDL::Mixer->new();
+is (ref($mixer), 'SDL::Mixer', 'new was ok');
+
diff -ruN SDL_perl-1.20.0/t/musicpm.t SDL_perl-1.20.2/t/musicpm.t
--- SDL_perl-1.20.0/t/musicpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/musicpm.t	Fri Mar 21 20:41:19 2003
@@ -0,0 +1,22 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Music
+
+use Test::More tests => 2;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Music' ); 
+  }
+  
+can_ok ('SDL::Music', qw/
+	new
+	/);
+
+# does not work
+#my $music = SDL::Music->new();
diff -ruN SDL_perl-1.20.0/t/opengl.t SDL_perl-1.20.2/t/opengl.t
--- SDL_perl-1.20.0/t/opengl.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/opengl.t	Fri Mar 21 19:02:08 2003
@@ -0,0 +1,28 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::OpenGL
+
+use Test::More tests => 2;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::OpenGL' ); 
+  }
+
+#can_ok ('SDL::OpenGL', qw/
+#	new title delay ticks error warp fullscreen iconify
+#	grab_input loop attribute/);
+
+# These are exported by default, so main:: should know about them
+# Actually, this is just a short test, we don't want to list them all, right?
+can_ok ('main', qw/
+        GL_CULL_FACE
+	glCallLists
+	glCallListsScalar
+       /);
+
diff -ruN SDL_perl-1.20.0/t/palettepm.t SDL_perl-1.20.2/t/palettepm.t
--- SDL_perl-1.20.0/t/palettepm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/palettepm.t	Fri Mar 21 20:41:27 2003
@@ -0,0 +1,21 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Palette
+
+use Test::More tests => 2;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Palette' ); 
+  }
+  
+can_ok ('SDL::Palette', qw/
+	new
+	size red green blue color
+	/);
+
diff -ruN SDL_perl-1.20.0/t/rectpm.t SDL_perl-1.20.2/t/rectpm.t
--- SDL_perl-1.20.0/t/rectpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/rectpm.t	Fri Mar 21 20:41:32 2003
@@ -0,0 +1,42 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Rect
+
+use Test::More tests => 15;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Rect' ); 
+  }
+  
+can_ok ('SDL::Rect', qw/
+	new
+	x y width height
+	/);
+
+my $rect = SDL::Rect->new();
+
+# creating with defaults
+is (ref($rect),'SDL::Rect','new went ok');
+is ($rect->x(), 0, 'x is 0');
+is ($rect->y(), 0, 'y is 0');
+is ($rect->width(), 0, 'w is 0');
+is ($rect->height(), 0, 'h is 0');
+
+# set and get at the same time
+is ($rect->x(12), 12, 'x is now 12');
+is ($rect->y(123), 123, 'y is now 12');
+is ($rect->width(45), 45, 'w is now 45');
+is ($rect->height(67), 67, 'h is now 67');
+
+# get alone
+is ($rect->x(), 12, 'x is 12');
+is ($rect->y(), 123, 'y is 12');
+is ($rect->width(), 45, 'w is 45');
+is ($rect->height(), 67, 'h is 67');
+
diff -ruN SDL_perl-1.20.0/t/sdlpm.t SDL_perl-1.20.2/t/sdlpm.t
--- SDL_perl-1.20.0/t/sdlpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/sdlpm.t	Fri Mar 21 20:41:38 2003
@@ -0,0 +1,24 @@
+#!/usr/bin/perl -w
+
+use Test::More tests => 9;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL' ); 
+  }
+  
+can_ok ('SDL', qw/in verify/);
+
+is (SDL::in('foo','bar'), 0, "foo isn't in ('bar')");
+is (SDL::in('foo','foo'), 1, "foo is in ('foo')");
+is (SDL::in('foo','foo','bar'), 1, "foo is in ('foo','bar')");
+is (SDL::in('foo','foo','bar','foo'), 1, "foo is once in ('foo','bar','foo')");
+is (SDL::in('foo','fab','bar'), 0, "foo isn't in ('fab','bar')");
+is (SDL::in('foo','fab',undef,'bar'), 0, "foo isn't in ('fab',undef,'bar')");
+is (SDL::in('foo','fab',undef,'foo'), 1, "foo is in ('fab',undef,'foo')");
+
diff -ruN SDL_perl-1.20.0/t/shellpm.t SDL_perl-1.20.2/t/shellpm.t
--- SDL_perl-1.20.0/t/shellpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/shellpm.t	Fri Mar 21 20:41:43 2003
@@ -0,0 +1,23 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Shell
+
+use Test::More tests => 1;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+ # does not work, since it complains about missing AddCommand in Console
+#  use_ok( 'SDL::Shell' ); 
+  }
+#  
+#can_ok ('SDL::Shell', qw/
+#	new
+#	process
+#	/);
+
+is (1,1)
diff -ruN SDL_perl-1.20.0/t/soundpm.t SDL_perl-1.20.2/t/soundpm.t
--- SDL_perl-1.20.0/t/soundpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/soundpm.t	Fri Mar 21 20:41:48 2003
@@ -0,0 +1,22 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Sound
+
+use Test::More tests => 2;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Sound' ); 
+  }
+  
+can_ok ('SDL::Sound', qw/
+	new volume
+	/);
+
+# does not work
+#my $sound = SDL::Sound->new();
diff -ruN SDL_perl-1.20.0/t/surfacepm.t SDL_perl-1.20.2/t/surfacepm.t
--- SDL_perl-1.20.0/t/surfacepm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/surfacepm.t	Fri Mar 21 20:41:54 2003
@@ -0,0 +1,59 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Surface
+
+use Test::More tests => 3;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Surface' ); 
+  }
+  
+can_ok ('SDL::Surface', qw/
+	new
+	flags
+	palette
+	bpp
+	bytes_per_pixel
+	Rshift
+	Gshift
+	Bshift
+	Ashift
+	Rmask
+	Bmask
+	Gmask
+	Amask
+	color_key
+	alpha
+	width
+	height
+	pitch
+	pixels
+	pixel
+	fill
+	lockp
+	lock
+	unlock
+	update
+	flip
+	blit
+	set_colors
+	set_color_key
+	set_alpha
+	display_format
+	rgb
+	rgba
+	print
+	save_bmp
+	video_info
+	/);
+
+my $surface = SDL::Surface->new( -name => '');
+
+is (ref($surface),'SDL::Surface','new went ok');
+
diff -ruN SDL_perl-1.20.0/t/timerpm.t SDL_perl-1.20.2/t/timerpm.t
--- SDL_perl-1.20.0/t/timerpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/timerpm.t	Fri Mar 21 20:41:58 2003
@@ -0,0 +1,32 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Timer
+
+use Test::More tests => 4;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Timer' ); 
+  }
+  
+can_ok ('SDL::Timer', qw/
+	new run stop
+	/);
+
+my $fired = 0;
+
+use SDL::Event;
+
+SDL::Init(SDL_INIT_TIMER);
+
+my $timer = SDL::Timer->new( sub { $fired++ }, -delay => 30, -times => 1);
+
+is (ref($timer), 'SDL::Timer', 'new went ok');
+
+SDL::Delay(100);
+is ($fired, 1,'timer fired once');
diff -ruN SDL_perl-1.20.0/t/toolfontpm.t SDL_perl-1.20.2/t/toolfontpm.t
--- SDL_perl-1.20.0/t/toolfontpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/toolfontpm.t	Fri Mar 21 20:42:03 2003
@@ -0,0 +1,24 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Tool::Font
+
+use Test::More tests => 2;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Tool::Font' ); 
+  }
+  
+can_ok ('SDL::Tool::Font', qw/
+	new print
+	/);
+
+# does not work
+#my $fonttool = SDL::Tool::Font->new();
+#is (ref($fonttool), 'SDL::Tool::Font', 'new was ok');
+
diff -ruN SDL_perl-1.20.0/t/toolgraphicpm.t SDL_perl-1.20.2/t/toolgraphicpm.t
--- SDL_perl-1.20.0/t/toolgraphicpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/toolgraphicpm.t	Fri Mar 21 20:42:08 2003
@@ -0,0 +1,23 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::Tool::Graphic
+
+use Test::More tests => 3;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::Tool::Graphic' ); 
+  }
+  
+can_ok ('SDL::Tool::Graphic', qw/
+	new zoom rotoZoom
+	/);
+
+my $gtool = SDL::Tool::Graphic->new();
+is (ref($gtool), 'SDL::Tool::Graphic', 'new was ok');
+
diff -ruN SDL_perl-1.20.0/t/ttfontpm.t SDL_perl-1.20.2/t/ttfontpm.t
--- SDL_perl-1.20.0/t/ttfontpm.t	Thu Jan  1 01:00:00 1970
+++ SDL_perl-1.20.2/t/ttfontpm.t	Fri Mar 21 20:42:14 2003
@@ -0,0 +1,23 @@
+#!/usr/bin/perl -w
+
+# basic testing of SDL::TTFont
+
+use Test::More tests => 2;
+use strict;
+use vars qw/@INC/;
+
+BEGIN
+  {
+  unshift @INC, ('../blib/lib');
+  unshift @INC, ('../blib/arch');
+  chdir 't' if -d 't';
+  use_ok( 'SDL::TTFont' ); 
+  }
+  
+can_ok ('SDL::TTFont', qw/
+	new print width height
+	ascent descent normal bold italic underline
+	text_shaded text_solid text_blended 
+	utf8_shaded utf8_solid utf8_blended 
+	unicode_shaded unicode_solid unicode_blended
+	/);
diff -ruN SDL_perl-1.20.0/test/OpenGL/test1.pl SDL_perl-1.20.2/test/OpenGL/test1.pl
--- SDL_perl-1.20.0/test/OpenGL/test1.pl	Sat Aug 31 02:30:31 2002
+++ SDL_perl-1.20.2/test/OpenGL/test1.pl	Thu Mar 13 06:02:43 2003
@@ -2,19 +2,24 @@
 
 use SDL;
 use SDL::App;
+use SDL::Surface;
 use SDL::Event;
 use SDL::OpenGL;
 
+#for ( keys %main:: ) {
+#	print "$_\n";
+#}
+
 print "Starting $0\n";
 
 my $app = new SDL::App	-w => 800, -h => 600, -d => 16, -gl => 1;
 
 print "Initializing OpenGL settings\n";
-printf "%-24s%s\n", "GL_RED_SIZE ", $app->attribute( SDL::GL_RED_SIZE() );
-printf "%-24s%s\n", "GL_GREEN_SIZE ", $app->attribute( SDL::GL_GREEN_SIZE());
-printf "%-24s%s\n", "GL_BLUE_SIZE ", $app->attribute( SDL::GL_BLUE_SIZE() );
-printf "%-24s%s\n", "GL_DEPTH_SIZE ", $app->attribute( SDL::GL_DEPTH_SIZE() );
-printf "%-24s%s\n", "GL_DOUBLEBUFFER ", $app->attribute( SDL::GL_DOUBLEBUFFER() );
+printf "%-24s%s\n", "GL_RED_SIZE ", $app->attribute( SDL_GL_RED_SIZE() );
+printf "%-24s%s\n", "GL_GREEN_SIZE ", $app->attribute( SDL_GL_GREEN_SIZE());
+printf "%-24s%s\n", "GL_BLUE_SIZE ", $app->attribute( SDL_GL_BLUE_SIZE() );
+printf "%-24s%s\n", "GL_DEPTH_SIZE ", $app->attribute( SDL_GL_DEPTH_SIZE() );
+printf "%-24s%s\n", "GL_DOUBLEBUFFER ", $app->attribute( SDL_GL_DOUBLEBUFFER() );
 
 sub DrawScene {
 
diff -ruN SDL_perl-1.20.0/test/OpenGL/test2.pl SDL_perl-1.20.2/test/OpenGL/test2.pl
--- SDL_perl-1.20.0/test/OpenGL/test2.pl	Sat Aug 31 02:30:00 2002
+++ SDL_perl-1.20.2/test/OpenGL/test2.pl	Wed Mar 12 07:30:44 2003
@@ -2,6 +2,7 @@
 
 use SDL;
 use SDL::App;
+use SDL::Surface;
 use SDL::Event;
 use SDL::OpenGL;
 use SDL::OpenGL::Cube;
@@ -14,11 +15,11 @@
 my $app = new SDL::App	-w => 800, -h => 600, -d => 16, -gl =>1;
 
 print "Initializing OpenGL settings\n";
-printf "%-24s%s\n", "GL_RED_SIZE ", $app->attribute( SDL::GL_RED_SIZE() );
-printf "%-24s%s\n", "GL_GREEN_SIZE ", $app->attribute( SDL::GL_GREEN_SIZE());
-printf "%-24s%s\n", "GL_BLUE_SIZE ", $app->attribute( SDL::GL_BLUE_SIZE() );
-printf "%-24s%s\n", "GL_DEPTH_SIZE ", $app->attribute( SDL::GL_DEPTH_SIZE() );
-printf "%-24s%s\n", "GL_DOUBLEBUFFER ", $app->attribute( SDL::GL_DOUBLEBUFFER() );
+printf "%-24s%s\n", "GL_RED_SIZE ", $app->attribute( SDL_GL_RED_SIZE() );
+printf "%-24s%s\n", "GL_GREEN_SIZE ", $app->attribute( SDL_GL_GREEN_SIZE());
+printf "%-24s%s\n", "GL_BLUE_SIZE ", $app->attribute( SDL_GL_BLUE_SIZE() );
+printf "%-24s%s\n", "GL_DEPTH_SIZE ", $app->attribute( SDL_GL_DEPTH_SIZE() );
+printf "%-24s%s\n", "GL_DOUBLEBUFFER ", $app->attribute( SDL_GL_DOUBLEBUFFER() );
 
 $angle = 0;	
 $other = 0;
diff -ruN SDL_perl-1.20.0/test/OpenGL/test3.pl SDL_perl-1.20.2/test/OpenGL/test3.pl
--- SDL_perl-1.20.0/test/OpenGL/test3.pl	Sat Aug 31 02:28:42 2002
+++ SDL_perl-1.20.2/test/OpenGL/test3.pl	Sat Jan  4 00:17:48 2003
@@ -5,6 +5,7 @@
 
 use SDL;
 use SDL::App;
+use SDL::Surface;
 use SDL::Event;
 use SDL::OpenGL;
 
diff -ruN SDL_perl-1.20.0/test/OpenGL/tutorial/lesson02.pl SDL_perl-1.20.2/test/OpenGL/tutorial/lesson02.pl
--- SDL_perl-1.20.0/test/OpenGL/tutorial/lesson02.pl	Sat Aug 31 02:33:46 2002
+++ SDL_perl-1.20.2/test/OpenGL/tutorial/lesson02.pl	Sat Jan  4 00:20:31 2003
@@ -33,21 +33,15 @@
   {  
    my $done=0;
 
-   
-   my $vidmode_flags= SDL_OPENGL;
-   
-   
-   $vidmode_flags|= SDL_FULLSCREEN if $arg_fullscreen;
-   
    my $app = new SDL::App ( -title => "Jeff Molofee's GL Code Tutorial ... NeHe '99", 
 			    -icon => "icon.png",
-			    -flags => $vidmode_flags,			
 			    -width => $arg_screen_width,
 			    -height =>$arg_screen_height,
 			    -d => 16,
 			    -gl => 1,
 			    
 			  );
+	$app->fullscreen() if ($arg_fullscreen);
    
    SDL::ShowCursor (0);   
    
diff -ruN SDL_perl-1.20.0/test/OpenGL/tutorial/lesson03.pl SDL_perl-1.20.2/test/OpenGL/tutorial/lesson03.pl
--- SDL_perl-1.20.0/test/OpenGL/tutorial/lesson03.pl	Sat Aug 31 02:34:32 2002
+++ SDL_perl-1.20.2/test/OpenGL/tutorial/lesson03.pl	Sat Jan  4 00:20:38 2003
@@ -22,7 +22,6 @@
 	   "width:i"        => \$arg_screen_width,
 	   "height:i"       => \$arg_screen_height,
 	   "fullscreen!"    => \$arg_fullscreen,
-
 	  ) or die $!;
 
 main();
@@ -32,18 +31,15 @@
 sub main
   {  
    my $done=0;
-   my $vidmode_flags= SDL_OPENGL;
-
-   $vidmode_flags|= SDL_FULLSCREEN if $arg_fullscreen;
    
    my $app = new SDL::App ( -title => "Jeff Molofee's GL Code Tutorial ... NeHe '99", 
 			    -icon => "icon.png",
-			    -flags => $vidmode_flags,			
 			    -width => $arg_screen_width,
 			    -height =>$arg_screen_height,
 			     -d => 16,
 			     -opengl => 1,
 			  );
+   $app->fullscreen() if $arg_fullscreen;
    
    SDL::ShowCursor(0);   
    
diff -ruN SDL_perl-1.20.0/test/OpenGL/tutorial/lesson04.pl SDL_perl-1.20.2/test/OpenGL/tutorial/lesson04.pl
--- SDL_perl-1.20.0/test/OpenGL/tutorial/lesson04.pl	Sat Aug 31 02:37:06 2002
+++ SDL_perl-1.20.2/test/OpenGL/tutorial/lesson04.pl	Sat Jan  4 00:20:23 2003
@@ -42,17 +42,13 @@
 sub main
   {  
    my $done=0;
-   my $vidmode_flags= SDL_OPENGL;
-
-   $vidmode_flags|= SDL_FULLSCREEN if $arg_fullscreen;
-   
    my $app = new SDL::App ( -title => "Jeff Molofee's GL Code Tutorial ... NeHe '99", 
 			    -icon => "icon.png",
-			    -flags => $vidmode_flags,			
 			    -width => $arg_screen_width,
 			    -height =>$arg_screen_height,
 			    -gl => 1,
 			  );
+   $app->fullscreen() if $arg_fullscreen;
    
    SDL::ShowCursor(0);   
    
diff -ruN SDL_perl-1.20.0/test/OpenGL/tutorial/lesson05.pl SDL_perl-1.20.2/test/OpenGL/tutorial/lesson05.pl
--- SDL_perl-1.20.0/test/OpenGL/tutorial/lesson05.pl	Sat Aug 31 02:36:32 2002
+++ SDL_perl-1.20.2/test/OpenGL/tutorial/lesson05.pl	Sat Jan  4 00:25:23 2003
@@ -1,4 +1,4 @@
-#!/usr/bin/perl -w
+#!/usr/bin/perl 
 # This code was created by Jeff Molofee '99
 # (ported to SDL by Sam Lantinga '2000)
 # (ported to Perl/SDL by Wayne Keenan '2000)
@@ -34,21 +34,20 @@
 sub main
   {  
    my $done=0;
-   my $vidmode_flags= SDL_OPENGL;
-
-   $vidmode_flags|= SDL_FULLSCREEN if $arg_fullscreen;
    
    my $app = new SDL::App ( -title => "Jeff Molofee's GL Code Tutorial ... NeHe '99", 
 			    -icon => "icon.png",
-			    -flags => $vidmode_flags,			
 			    -width => $arg_screen_width,
 			    -height =>$arg_screen_height,
+			    -opengl => 1,
 			  );
+
+	$app->fullscreen if ($arg_fullscreen);
    
    SDL::ShowCursor(0);   
    
    my $event = new SDL::Event;
-   $event->set(SDL_SYSWMEVENT,SDL_IGNORE);#
+   $event->set(SDL_SYSWMEVENT(),SDL_IGNORE());#
    
    InitGL($arg_screen_width, $arg_screen_height);
 
@@ -63,12 +62,12 @@
     $event->poll;
     
     
-    if ( $event->type == SDL_QUIT ) {
+    if ( $event->type == SDL_QUIT() ) {
      $done = 1;
     }
 
-    if ( $event->type == SDL_KEYDOWN ) {
-     if ( $event->key_sym == SDLK_ESCAPE ) {
+    if ( $event->type == SDL_KEYDOWN() ) {
+     if ( $event->key_sym == SDLK_ESCAPE() ) {
       $done = 1;
      }
     }
diff -ruN SDL_perl-1.20.0/test/OpenGL/tutorial/lesson06.pl SDL_perl-1.20.2/test/OpenGL/tutorial/lesson06.pl
--- SDL_perl-1.20.0/test/OpenGL/tutorial/lesson06.pl	Mon May 13 00:50:35 2002
+++ SDL_perl-1.20.2/test/OpenGL/tutorial/lesson06.pl	Sat Jan  4 00:26:24 2003
@@ -40,16 +40,14 @@
 sub main
   {  
    my $done=0;
-   my $vidmode_flags= SDL_OPENGL;
-
-   $vidmode_flags|= SDL_FULLSCREEN if $arg_fullscreen;
    
    my $app = new SDL::App ( -title => "Jeff Molofee's GL Code Tutorial ... NeHe '99", 
 			    -icon => "Data/perl.png",
-			    -flags => $vidmode_flags,			
 			    -width => $arg_screen_width,
 			    -height =>$arg_screen_height,
+			    -opengl => 1,
 			  );
+   $app->fullscreen() if $arg_fullscreen;
    
    SDL::ShowCursor(0);   
 
diff -ruN SDL_perl-1.20.0/test/checkkeys.pl SDL_perl-1.20.2/test/checkkeys.pl
--- SDL_perl-1.20.0/test/checkkeys.pl	Wed Apr 24 00:30:08 2002
+++ SDL_perl-1.20.2/test/checkkeys.pl	Wed Mar 12 05:19:08 2003
@@ -34,17 +34,17 @@
 	$mod = SDL::GetModState();
 
 	print " modifiers:", 
-		($mod & SDL::KMOD_LSHIFT) ? " LSHIFT" : "",
-		($mod & SDL::KMOD_RSHIFT) ? " RSHIFT" : "",
-		($mod & SDL::KMOD_LCTRL) ? " LCTRL" : "",
-		($mod & SDL::KMOD_RCTRL) ? " RCTRL" : "",
-		($mod & SDL::KMOD_LALT) ? " LALT" : "",
-		($mod & SDL::KMOD_RALT) ? " RALT" : "",
-		($mod & SDL::KMOD_LMETA) ? " LMETA" : "",
-		($mod & SDL::KMOD_RMETA) ? " RMETA" : "",
-		($mod & SDL::KMOD_CAPS) ? " CAPS" : "",
-		($mod & SDL::KMOD_NUM) ? " NUM" : "",
-		($mod & SDL::KMOD_MODE) ? " MODE" : "",
+		($mod & KMOD_LSHIFT) ? " LSHIFT" : "",
+		($mod & KMOD_RSHIFT) ? " RSHIFT" : "",
+		($mod & KMOD_LCTRL) ? " LCTRL" : "",
+		($mod & KMOD_RCTRL) ? " RCTRL" : "",
+		($mod & KMOD_LALT) ? " LALT" : "",
+		($mod & KMOD_RALT) ? " RALT" : "",
+		($mod & KMOD_LMETA) ? " LMETA" : "",
+		($mod & KMOD_RMETA) ? " RMETA" : "",
+		($mod & KMOD_CAPS) ? " CAPS" : "",
+		($mod & KMOD_NUM) ? " NUM" : "",
+		($mod & KMOD_MODE) ? " MODE" : "",
 		"\n" ;
 }
 
diff -ruN SDL_perl-1.20.0/test/loopwave.pl SDL_perl-1.20.2/test/loopwave.pl
--- SDL_perl-1.20.0/test/loopwave.pl	Tue Apr 23 23:58:45 2002
+++ SDL_perl-1.20.2/test/loopwave.pl	Wed Mar 12 05:33:56 2003
@@ -3,7 +3,7 @@
 use SDL;
 
 die "Could not initialize SDL: ", SDL::GetError()
-	if ( 0 > SDL::Init(SDL::INIT_AUDIO()));
+	if ( 0 > SDL::Init(SDL_INIT_AUDIO()));
 
 $ARGV[0] ||= 'data/sample.wav';
 
@@ -21,14 +21,14 @@
 	$wav_remainder = $wav_len - $wav_pos;
 
 	while ( $wav_remainder <= $len ) {
-		SDL::MixAudio($data,$wav_ptr,$wav_remainder,SDL::MIX_MAXVOLUME);
+		SDL::MixAudio($data,$wav_ptr,$wav_remainder,SDL_MIX_MAXVOLUME);
 		$data += $wav_remainder;
 		$len -= $wav_remainder;
 		$wav_ptr = $wav_buffer;	
 		$wav_remainder = $wav_len;
 		$wav_pos = 0;
 	}
-	SDL::MixAudio($data,$wav_ptr,$len,SDL::MIX_MAXVOLUME);
+	SDL::MixAudio($data,$wav_ptr,$len,SDL_MIX_MAXVOLUME);
 	$wav_pos += $len;
 };
 
@@ -56,7 +56,7 @@
 
 print "Using audio driver: ", SDL::AudioDriverName(), "\n";
 	
-while (! $done && ( SDL::GetAudioStatus() == SDL::AUDIO_PLAYING())) {
+while (! $done && ( SDL::GetAudioStatus() == SDL_AUDIO_PLAYING())) {
 	SDL::Delay(1000);
 }
 
diff -ruN SDL_perl-1.20.0/test/testcolor.pl SDL_perl-1.20.2/test/testcolor.pl
--- SDL_perl-1.20.0/test/testcolor.pl	Fri Jan  3 06:26:24 2003
+++ SDL_perl-1.20.2/test/testcolor.pl	Wed Mar 12 05:33:22 2003
@@ -1,6 +1,7 @@
 #!/usr/bin/env perl
 #
 
+use SDL;
 use SDL::App;
 use SDL::Event;
 
@@ -39,6 +40,8 @@
 	$x += $rect->width();
 	$app->fill($rect,$colors{$_});
 }
+
+$app->sync();
 
 $last = new SDL::Color -r => 128, -g => 128, -b => 128;
 
diff -ruN SDL_perl-1.20.0/test/testgfxprim.pl SDL_perl-1.20.2/test/testgfxprim.pl
--- SDL_perl-1.20.0/test/testgfxprim.pl	Wed Apr 24 00:04:09 2002
+++ SDL_perl-1.20.2/test/testgfxprim.pl	Wed Mar 12 06:25:10 2003
@@ -81,7 +81,9 @@
 	$sprite = new SDL::Surface -name =>"data/icon.bmp"; 
 
 	# Set transparent pixel as the pixel at (0,0) 
-	$sprite->set_color_key(SDL_SRCCOLORKEY,0,0);	
+	$sprite->set_color_key(SDL_SRCCOLORKEY,$sprite->pixel(0,0));	
+
+	print STDERR "Got past that\n";
 
 	$sprite->display_format();
 
@@ -129,7 +131,7 @@
 
 sub game_loop
 {
-	my $surf = $app->{-surface};
+	my $surf = $$app;
 	my $surfWidth=$settings{screen_width};
 	my $surfHeight=$settings{screen_height};
 	my $surfMidWidth=$settings{screen_width}>>1;;
diff -ruN SDL_perl-1.20.0/test/testgfxroto.pl SDL_perl-1.20.2/test/testgfxroto.pl
--- SDL_perl-1.20.0/test/testgfxroto.pl	Wed Apr 24 00:04:40 2002
+++ SDL_perl-1.20.2/test/testgfxroto.pl	Wed Mar 12 06:57:04 2003
@@ -86,7 +86,7 @@
 
 	# Set transparent pixel as the pixel at (0,0) 
 
-	$sprite->set_color_key(SDL_SRCCOLORKEY,0,0);	# sets the transparent color to that at (0,0)
+	$sprite->set_color_key(SDL_SRCCOLORKEY,$sprite->pixel(0,0));	# sets the transparent color to that at (0,0)
 
 	$sprite->display_format();
 
@@ -121,7 +121,9 @@
 	
 	# Run a sample blit to trigger blit (if posssible)
 	# acceleration before the check just after 
-	put_sprite_rotated($sprite,0,0,0);
+	put_sprite_rotated($sprite,
+			$settings{screen_width}/2, $settings{screen_height}/2,
+			0,0,0);
 	
 	if ( ($sprite->flags & SDL_HWACCEL) == SDL_HWACCEL ) {
 		printf("Sprite blit uses hardware acceleration\n");
@@ -156,8 +158,9 @@
 	}
 	else
 	{
-		 $rotate_cache{$key}= SDL::DisplayFormat(
-			SDL::GFXRotoZoom($surface, $angle, $zoom, $smooth));
+		 my $sur = SDL::GFXRotoZoom($surface, $angle, $zoom, $smooth);
+
+		 $rotate_cache{$key}= SDL::DisplayFormat($sur);
 	}
 	return $rotate_cache{$key};
 }
@@ -166,11 +169,12 @@
 {
 	my ($surface, $x, $y, $angle, $zoom, $smooth) = @_;
 
-	my $roto = generate_sprite_rotated($surface->{-surface}, $angle, $zoom, $smooth);
+	my $roto = generate_sprite_rotated($$surface, $angle, $zoom, $smooth);
 
 	die "Failed to create rotozoom surface" unless $roto;
 
 	my ($w,$h) = (SDL::SurfaceW($roto),SDL::SurfaceH($roto));;	 
+	
 
 	my $dest_rect = new SDL::Rect
 				-x => $x - ($w/2),
@@ -180,7 +184,7 @@
 
 	SDL::SetColorKey($roto, SDL_SRCCOLORKEY, SDL::SurfacePixel($roto,$w/2,$h/2));
 	
-	SDL::BlitSurface($roto, 0, $$app{-surface}, $$dest_rect{-rect});	
+	SDL::BlitSurface($roto, 0, $$app, $$dest_rect);	
 }
 
 
diff -ruN SDL_perl-1.20.0/test/testgraphictool.pl SDL_perl-1.20.2/test/testgraphictool.pl
--- SDL_perl-1.20.0/test/testgraphictool.pl	Fri Jan  3 06:11:49 2003
+++ SDL_perl-1.20.2/test/testgraphictool.pl	Thu Mar 13 06:20:41 2003
@@ -19,7 +19,7 @@
 				-height=>$app->height);
 
 my $sprite = new SDL::Surface(-name => "data/logo.png");
-$sprite->set_color_key(SDL_SRCCOLORKEY, 0, 0);
+$sprite->set_color_key(SDL_SRCCOLORKEY,$sprite->pixel(0,0));
 $sprite->display_format();
 
 #Test Zoom
diff -ruN SDL_perl-1.20.0/test/testjoystick.pl SDL_perl-1.20.2/test/testjoystick.pl
--- SDL_perl-1.20.0/test/testjoystick.pl	Fri Apr 12 06:19:32 2002
+++ SDL_perl-1.20.2/test/testjoystick.pl	Tue Jan  7 03:56:05 2003
@@ -34,42 +34,50 @@
 	
 	my $event = new SDL::Event;
 	my $done = 0;	
-	my $colorWhite = SDL::MapRGB($app->{-surface},255,255,255);
-	my $colorBlack = SDL::MapRGB($app->{-surface},0,0,0);
-	my $axisRect = 0;
-
-	while(!$done){
-		while($event->poll()){
-			if($event->type() eq SDL::JOYAXISMOTION()){
+	my $colorWhite = new SDL::Color(-r=>255, -g=>255, -b=>255);
+	my $colorBlack = new SDL::Color();
+	my @axisRect = ();
+	my $numAxes=SDL::JoystickNumAxes($joystick);
+
+
+	while(!$done)
+	  {
+		while($event->poll())
+		  {
+			if($event->type() eq SDL::JOYAXISMOTION())
+			  {
 				print "Joystick ".SDL::JoyAxisEventWhich($event->{-event}).
-				      " axis ".SDL::JoyAxisEventAxis($event->{-event}).
-				      " value: ".SDL::JoyAxisEventValue($event->{-event})."\n";
-			} elsif($event->type() eq SDL::JOYHATMOTION()){
+				  " axis ".SDL::JoyAxisEventAxis($event->{-event}).
+					" value: ".SDL::JoyAxisEventValue($event->{-event})."\n";
+			  } 
+			elsif($event->type() eq SDL::JOYHATMOTION())
+			  {
 				print "Joystick ".SDL::JoyHatEventWhich($event->{-event}).
-				      " hat ".SDL::JoyHatEventHat($event->{-event});
-				if(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_CENTERED() ){
+				  " hat ".SDL::JoyHatEventHat($event->{-event});
+				if(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_CENTERED() )
+				  {
 					print " centered";
-				} elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_UP() ) { 
+				  } elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_UP() ) { 
 					print " up";
-				} elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_RIGHT() ) {
+				  } elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_RIGHT() ) {
 					print " right";
-				} elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_DOWN() ) {
+				  } elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_DOWN() ) {
 					print " down";
-				} elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_LEFT()) {
+				  } elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_LEFT()) {
 					print " left";
-				} elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_RIGHTUP() ) { 
+				  } elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_RIGHTUP() ) { 
 					print " right & up";
-				} elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_RIGHTDOWN() ) {
+				  } elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_RIGHTDOWN() ) {
 					print " right & down";
-				} elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_LEFTDOWN() ) {
+				  } elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_LEFTDOWN() ) {
 					print " left & down";
-				} elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_LEFTUP()) {
+				  } elsif(SDL::JoyHatEventValue($event->{-event}) == SDL::HAT_LEFTUP()) {
 					print " left & up";
-				}
+				  }
 				print "\n";
-			} elsif($event->type() eq SDL::JOYBALLMOTION()){
+			  } elsif($event->type() eq SDL::JOYBALLMOTION()){
 				print "Joystick ".SDL::JoyBallEventWhich($event->{-event}).
-				      " ball ".SDL::JoyBallEventBall($event->{-event}).
+				  " ball ".SDL::JoyBallEventBall($event->{-event}).
 				      " delta: (".SDL::JoyBallEventXrel($event->{-event}).
 				      ",".SDL::JoyBallEventYrel($event->{-event})."\n";
 			} elsif($event->type() eq SDL::JOYBUTTONDOWN()){
@@ -83,56 +91,68 @@
 				 $event->key_sym() == SDLK_ESCAPE)){
 				$done = 1;
 			}
+			
+
 
 			#Update visual joystick state
-			for(my $i =0; $i < SDL::JoystickNumButtons($joystick); $i++){
+			for(my $i =0; $i < SDL::JoystickNumButtons($joystick); $i++)
+			  {
 				my $rect = new SDL::Rect( -width => 32,
-					 		  -height => 32,
-							  -x => $i*34,
-							  -y => $screenHeight-34); 
-				if(SDL::JoystickGetButton($joystick, $i) eq SDL::PRESSED()){
+										  -height => 32,
+										  -x => $i*34,
+										  -y => $screenHeight-34); 
+				if(SDL::JoystickGetButton($joystick, $i) eq SDL::PRESSED())
+				  {
 					$app->fill($rect, $colorWhite); 
-				} else {
+				  } else {
 					$app->fill($rect, $colorBlack); 
-				}
+				  }
 				$app->update($rect);
-			}
+			  }
 
-			#Remove previous axis box
-			if($axisRect){
-				$app->fill($axisRect, $colorBlack);
-				$app->update($axisRect);
-			}
-		
-			# Draw the X/Y axis
-			my $x = SDL::JoystickGetAxis($joystick, 0)+32768;
-			$x *= $screenWidth;
-			$x /= 65535;
-			if( $x < 0) {
-				$x=0;
-			} elsif ( $x > ($screenWidth-16) ){
-				$x = $screenWidth-16;
-			}
-			my $y = SDL::JoystickGetAxis($joystick, 1)+32768;
-			$y *= $screenHeight;
-			$y /= 65535;
-			if( $y < 0) {
-				$y=0;
-			} elsif ( $y > ($screenHeight-16) ){
-				$y = $screenHeight-16;
-			}
-			$axisRect = new SDL::Rect( -width=> 16,
-					      -height=> 16,
-					      -x => $x,
-					      -y => $y);
-			$app->fill($axisRect, $colorWhite);
-			$app->update($axisRect);
-		}
-	
-	}
 
-}
+			  for (my $i = 0; $i < $numAxes; $i+=1)
+				{
+				  #Remove previous axis box
+				  if($axisRect[$i]){
+					$app->fill($axisRect[$i], $colorBlack);
+					$app->update($axisRect[$i]);
+				  }
+				  # Draw the axis
+				  my $ox = SDL::JoystickGetAxis($joystick, $i);
+				  my $x= abs ($ox/256);
+				  if( $x < 0) {
+					$x=0;
+				  } elsif ( $x > ($screenWidth-16) ){
+					$x = $screenWidth-16;
+				  }
+
+
+				  if ($ox < 0)
+					{
+					  $axisRect[$i] = new SDL::Rect( -width=> $x,
+													 -height=> 32,
+													 -x => ($screenWidth/2) - $x,
+													 -y => $i*34
+												   );
+					}
+				  else
+					{
+					  $axisRect[$i] = new SDL::Rect( -width=> $x,
+													 -height=> 32,
+													 -x => $screenWidth/2 ,
+													 -y => $i*34
+												   );
+					}
+
 
+				  $app->fill($axisRect[$i], $colorWhite);
+				  $app->update($axisRect[$i]);
+				}
+		  }
+	  }
+  }
+				
 die "Could not initialize SDL: ", SDL::GetError()
 	if( 0 > SDL::Init(SDL::INIT_JOYSTICK()));
 
@@ -151,4 +171,49 @@
 		SDL::JoystickClose($joystick);
 	}
 	SDL::QuitSubSystem(SDL::INIT_JOYSTICK());
+}
+
+
+exit;
+
+sub draw_axis_method_2()
+{
+}
+
+__DATA__
+sub draw_axis_method_1()
+{
+				for (my $i = 0; $i < ($numAxes/2); $i+=2)
+				  {
+					#Remove previous axis box
+					if($axisRect[$i]){
+					  $app->fill($axisRect[$i], $colorBlack);
+					  $app->update($axisRect[$i]);
+					}
+					# Draw the X/Y axis
+					my $x = SDL::JoystickGetAxis($joystick, $i)+32768;
+					$x *= $screenWidth;
+					$x /= 65535;
+					if( $x < 0) {
+					  $x=0;
+					} elsif ( $x > ($screenWidth-16) ){
+					  $x = $screenWidth-16;
+					}
+					my $y = SDL::JoystickGetAxis($joystick, $i+1)+32768;
+					$y *= $screenHeight;
+					$y /= 65535;
+					if( $y < 0) {
+					  $y=0;
+					} elsif ( $y > ($screenHeight-16) ){
+					  $y = $screenHeight-16; 
+					}
+					$axisRect[$i] = new SDL::Rect( -width=> 16,
+												   -height=> 16,
+												   -x => $x,
+												   -y => $y);
+					$app->fill($axisRect[$i], $colorWhite);
+					$app->update($axisRect[$i]);
+				  }
+			  }
+
 }
diff -ruN SDL_perl-1.20.0/test/testmenu.pl SDL_perl-1.20.2/test/testmenu.pl
--- SDL_perl-1.20.0/test/testmenu.pl	Fri Jan  3 06:09:22 2003
+++ SDL_perl-1.20.2/test/testmenu.pl	Wed Feb 26 02:08:29 2003
@@ -6,9 +6,10 @@
 use SDL::Rect;
 use SDL::Event;
 
-my $app = new SDL::App -w => 800, -h => 600;
-
 my $menu = new SDL::Surface -name => 'data/menu.png';
+
+my $app = new SDL::App -w => $menu->width(), -h => $menu->height(), -resizeable => 1;
+
 my $hilight = new SDL::Surface -name => 'data/highlight.png';
 
 my %menu = (
diff -ruN SDL_perl-1.20.0/test/testsprite.pl SDL_perl-1.20.2/test/testsprite.pl
--- SDL_perl-1.20.0/test/testsprite.pl	Fri Jan  3 06:08:36 2003
+++ SDL_perl-1.20.2/test/testsprite.pl	Wed Mar 12 06:55:08 2003
@@ -80,9 +80,10 @@
   $sprite = new SDL::Surface(-name =>"data/icon.bmp"); 
 
   # Set transparent pixel as the pixel at (0,0) 
-
+  
   $sprite->display_format();
-  $sprite->set_color_key(SDL_SRCCOLORKEY,0,0);	# sets the transparent color to that at (0,0)
+
+  $sprite->set_color_key(SDL_SRCCOLORKEY,$sprite->pixel(0,0));	# sets the transparent color to that at (0,0)
 
 
   $sprite_rect = new SDL::Rect(-x     => 0, 
diff -ruN SDL_perl-1.20.0/test/testtimer.pl SDL_perl-1.20.2/test/testtimer.pl
--- SDL_perl-1.20.0/test/testtimer.pl	Wed Apr 24 00:07:00 2002
+++ SDL_perl-1.20.2/test/testtimer.pl	Wed Mar 12 07:00:29 2003
@@ -5,7 +5,7 @@
 
 die "usage: $0\n" if in($ARGV[0], qw/ -? -h --help/);
 
-SDL::Init(SDL::INIT_EVERYTHING());
+SDL::Init(SDL_INIT_EVERYTHING());
 
 print STDERR "Waiting 4 seconds\n";
 SDL::Delay(4000);
diff -ruN SDL_perl-1.20.0/typemap SDL_perl-1.20.2/typemap
--- SDL_perl-1.20.0/typemap	Fri May 24 06:42:18 2002
+++ SDL_perl-1.20.2/typemap	Sat Jan  4 19:08:23 2003
@@ -53,3 +53,8 @@
 GLboolean		T_U_CHAR
 GLUnurbsObj *		T_PTR
 GLUtesselator *		T_PTR
+
+Sound_DecoderInfo *	T_PTR
+const Sound_DecoderInfo *	T_PTR
+Sound_Sample *		T_PTR
+Sound_AudioInfo *	T_PTR
