Added list_modes
[sdlgit/SDL_perl.git] / src / Core / Video.xs
CommitLineData
70fd0f8d 1#include "EXTERN.h"
2#include "perl.h"
3#include "XSUB.h"
4
5#ifndef aTHX_
6#define aTHX_
7#endif
8
9#include <SDL.h>
10
11MODULE = SDL::Video PACKAGE = SDL::Video PREFIX = video_
12
13=for documentation
14
15The Following are XS bindings to the Video category in the SDL API v2.1.13
16
17Describe on the SDL API site.
18
19See: L<http://www.libsdl.org/cgi/docwiki.cgi/SDL_API#head-813f033ec44914f267f32195aba7d9aff8c410c0>
20
21=cut
22
23SDL_Surface *
95f5be30 24video_get_video_surface()
25 PREINIT:
26 char* CLASS = "SDL::Surface";
70fd0f8d 27 CODE:
28 RETVAL = SDL_GetVideoSurface();
29 OUTPUT:
30 RETVAL
31
32
20f544ea 33SDL_VideoInfo*
95f5be30 34video_get_video_info()
20f544ea 35 PREINIT:
36 char* CLASS = "SDL::VideoInfo";
95f5be30 37 CODE:
babb07ed 38 RETVAL = (SDL_VideoInfo *) SDL_GetVideoInfo();
8a2411d0 39
40 OUTPUT:
babb07ed 41 RETVAL
8a2411d0 42
7fa192d4 43SV *
44video_video_driver_name( )
45
8a2411d0 46 CODE:
7fa192d4 47 char buffer[1024];
48 if ( SDL_VideoDriverName(buffer, 1024) != NULL )
49 {
50 RETVAL = newSVpv(buffer, 0);
51 }
52 else
53 XSRETURN_UNDEF;
8a2411d0 54 OUTPUT:
55 RETVAL
7dda1934 56
57AV*
58list_modes ( format, flags )
59 Uint32 flags
60 SDL_PixelFormat *format
61 CODE:
62 SDL_Rect **mode;
63 RETVAL = newAV();
64 mode = SDL_ListModes(format,flags);
65 if (mode == (SDL_Rect**)-1 ) {
66 av_push(RETVAL,newSVpv("all",0));
67 } else if (! mode ) {
68 av_push(RETVAL,newSVpv("none",0));
69 } else {
70 for (;*mode;mode++) {
71 av_push(RETVAL,newSViv(PTR2IV(*mode)));
72 }
73 }
74 OUTPUT:
75 RETVAL
76
77
78
79