+#include "EXTERN.h"
+#include "perl.h"
+#include "XSUB.h"
+
+#ifndef aTHX_
+#define aTHX_
+#endif
+
+#include <SDL.h>
+
+MODULE = SDL::Video PACKAGE = SDL::Video PREFIX = video_
+
+=for documentation
+
+The Following are XS bindings to the Video category in the SDL API v2.1.13
+
+Describe on the SDL API site.
+
+See: L<http://www.libsdl.org/cgi/docwiki.cgi/SDL_API#head-813f033ec44914f267f32195aba7d9aff8c410c0>
+
+=cut
+
+SDL_Surface *
+video_get_video_surface()
+ PREINIT:
+ char* CLASS = "SDL::Surface";
+ CODE:
+ RETVAL = SDL_GetVideoSurface();
+ OUTPUT:
+ RETVAL
+
+
+SDL_VideoInfo*
+video_get_video_info()
+ PREINIT:
+ char* CLASS = "SDL::VideoInfo";
+ CODE:
+ RETVAL = (SDL_VideoInfo *) SDL_GetVideoInfo();
+
+ OUTPUT:
+ RETVAL
+
+SV *
+video_video_driver_name( )
+
+ CODE:
+ char buffer[1024];
+ if ( SDL_VideoDriverName(buffer, 1024) != NULL )
+ {
+ RETVAL = newSVpv(buffer, 0);
+ }
+ else
+ XSRETURN_UNDEF;
+ OUTPUT:
+ RETVAL
+
+AV*
+list_modes ( format, flags )
+ Uint32 flags
+ SDL_PixelFormat *format
+ CODE:
+ SDL_Rect **mode;
+ RETVAL = newAV();
+ mode = SDL_ListModes(format,flags);
+ if (mode == (SDL_Rect**)-1 ) {
+ av_push(RETVAL,newSVpv("all",0));
+ } else if (! mode ) {
+ av_push(RETVAL,newSVpv("none",0));
+ } else {
+ for (;*mode;mode++) {
+ av_push(RETVAL,newSViv(PTR2IV(*mode)));
+ }
+ }
+ OUTPUT:
+ RETVAL
+
+
+
+