#include <SDL_net.h>
#endif
-#ifdef HAVE_SDL_TTF
-#include <SDL_ttf.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
-#endif
-
#ifdef HAVE_SMPEG
#include <smpeg/smpeg.h>
#ifdef HAVE_SDL_MIXER
#include <SDL_svg.h>
#endif
+#ifdef HAVE_SDL_TTF
+#include <SDL_ttf.h>
+#endif
+
#ifdef USE_THREADS
#define HAVE_TLS_CONTEXT
#endif
OUTPUT:
RETVAL
+#ifdef HAVE_SDL_IMAGE
+
SDL_Surface *
-CreateRGBSurface (flags, width, height, depth, Rmask, Gmask, Bmask, Amask )
- Uint32 flags
- int width
- int height
- int depth
- Uint32 Rmask
- Uint32 Gmask
- Uint32 Bmask
- Uint32 Amask
+IMG_Load ( filename )
+ char *filename
CODE:
- RETVAL = SDL_CreateRGBSurface ( flags, width, height,
- depth, Rmask, Gmask, Bmask, Amask );
- OUTPUT:
+ char* CLASS = "SDL::Surface";
+ RETVAL = IMG_Load(filename);
+ OUTPUT:
RETVAL
+#endif
+
+=for comment
+
+Comment out for now as it does not compile
SDL_Surface *
CreateRGBSurfaceFrom (pixels, width, height, depth, pitch, Rmask, Gmask, Bmask, Amask )
OUTPUT:
RETVAL
-#ifdef HAVE_SDL_IMAGE
-
-SDL_Surface *
-IMGLoad ( fname )
- char *fname
- CODE:
- RETVAL = IMG_Load(fname);
- OUTPUT:
- RETVAL
-
-#endif
-
SDL_Surface*
SurfaceCopy ( surface )
SDL_Surface *surface
OUTPUT:
RETVAL
+=cut
+
+=for comment
+
+Comment out for now as it does not compile
+
SDL_Color*
SurfacePixel ( surface, x, y, ... )
SDL_Surface *surface
OUTPUT:
RETVAL
+=cut
HV *
VideoInfo ()
OUTPUT:
RETVAL
-SDL_Rect *
-NewRect ( x, y, w, h )
- Sint16 x
- Sint16 y
- Uint16 w
- Uint16 h
- CODE:
- RETVAL = (SDL_Rect *) safemalloc (sizeof(SDL_Rect));
- RETVAL->x = x;
- RETVAL->y = y;
- RETVAL->w = w;
- RETVAL->h = h;
- OUTPUT:
- RETVAL
-
-void
-FreeRect ( rect )
- SDL_Rect *rect
- CODE:
- safefree(rect);
-
-Sint16
-RectX ( rect, ... )
- SDL_Rect *rect
- CODE:
- if (items > 1 ) rect->x = SvIV(ST(1));
- RETVAL = rect->x;
- OUTPUT:
- RETVAL
-
-Sint16
-RectY ( rect, ... )
- SDL_Rect *rect
- CODE:
- if (items > 1 ) rect->y = SvIV(ST(1));
- RETVAL = rect->y;
- OUTPUT:
- RETVAL
-
-Uint16
-RectW ( rect, ... )
- SDL_Rect *rect
- CODE:
- if (items > 1 ) rect->w = SvIV(ST(1));
- RETVAL = rect->w;
- OUTPUT:
- RETVAL
-
-Uint16
-RectH ( rect, ... )
- SDL_Rect *rect
- CODE:
- if (items > 1 ) rect->h = SvIV(ST(1));
- RETVAL = rect->h;
- OUTPUT:
- RETVAL
-
AV*
ListModes ( format, flags )
Uint32 flags
OUTPUT:
RETVAL
+SDL_Palette *
+NewPalette ( number )
+ int number
+ CODE:
+ RETVAL = (SDL_Palette *)safemalloc(sizeof(SDL_Palette));
+ RETVAL->colors = (SDL_Color *)safemalloc(number *
+ sizeof(SDL_Color));
+ RETVAL->ncolors = number;
+ OUTPUT:
+ RETVAL
-SDL_Color *
-NewColor ( r, g, b )
- Uint8 r
- Uint8 g
- Uint8 b
+int
+PaletteNColors ( palette, ... )
+ SDL_Palette *palette
CODE:
- RETVAL = (SDL_Color *) safemalloc(sizeof(SDL_Color));
- RETVAL->r = r;
- RETVAL->g = g;
- RETVAL->b = b;
+ if ( items > 1 ) palette->ncolors = SvIV(ST(1));
+ RETVAL = palette->ncolors;
OUTPUT:
RETVAL
-Uint8
-ColorR ( color, ... )
- SDL_Color *color
+SDL_Surface *
+SetVideoMode ( width, height, bpp, flags )
+
+ int width
+ int height
+ int bpp
+ Uint32 flags
+
CODE:
- if (items > 1 ) color->r = SvIV(ST(1));
- RETVAL = color->r;
+ char *CLASS = "SDL::Surface";
+ RETVAL = SDL_SetVideoMode(width,height,bpp,flags);
OUTPUT:
RETVAL
-Uint8
-ColorG ( color, ... )
- SDL_Color *color
+int
+Flip ( surface )
+ SDL_Surface *surface
CODE:
- if (items > 1 ) color->g = SvIV(ST(1));
- RETVAL = color->g;
+ RETVAL = SDL_Flip(surface);
OUTPUT:
RETVAL
-Uint8
-ColorB ( color, ... )
- SDL_Color *color
+int
+BlitSurface ( src, src_rect, dest, dest_rect )
+ SDL_Surface *src
+ SDL_Surface *dest
+ SDL_Rect *src_rect
+ SDL_Rect *dest_rect
CODE:
- if (items > 1 ) color->b = SvIV(ST(1));
- RETVAL = color->b;
+ RETVAL = SDL_BlitSurface(src,src_rect,dest,dest_rect);
+ OUTPUT:
+ RETVAL
+
+Uint32
+MapRGB ( pixel_format, r, g, b )
+ SDL_PixelFormat *pixel_format
+ Uint8 r
+ Uint8 g
+ Uint8 b
+ CODE:
+ RETVAL = SDL_MapRGB(pixel_format,r,g,b);
OUTPUT:
RETVAL
void
-FreeColor ( color )
- SDL_Color *color
+UpdateRect ( surface, x, y, w ,h )
+ SDL_Surface *surface
+ int x
+ int y
+ int w
+ int h
CODE:
- return; safefree(color);
+ SDL_UpdateRect(surface,x,y,w,h);
-SDL_Palette *
-NewPalette ( number )
- int number
+SDL_Surface *
+DisplayFormat ( surface )
+ SDL_Surface *surface
CODE:
- RETVAL = (SDL_Palette *)safemalloc(sizeof(SDL_Palette));
- RETVAL->colors = (SDL_Color *)safemalloc(number *
- sizeof(SDL_Color));
- RETVAL->ncolors = number;
+ char* CLASS = "SDL::Surface";
+ RETVAL = SDL_DisplayFormat(surface);
OUTPUT:
RETVAL
-int
-PaletteNColors ( palette, ... )
- SDL_Palette *palette
+SDL_Surface *
+DisplayFormatAlpha ( surface )
+ SDL_Surface *surface
CODE:
- if ( items > 1 ) palette->ncolors = SvIV(ST(1));
- RETVAL = palette->ncolors;
+ char* CLASS = "SDL::Surface";
+ RETVAL = SDL_DisplayFormatAlpha(surface);
OUTPUT:
RETVAL
+void
+UpdateRects ( surface, ... )
+ SDL_Surface *surface
+ CODE:
+ SDL_Rect *rects;
+ int num_rects,i;
+ if ( items < 2 ) return;
+ num_rects = items - 1;
+ rects = (SDL_Rect *)safemalloc(sizeof(SDL_Rect)*items);
+ for(i=0;i<num_rects;i++) {
+ rects[i] = *(SDL_Rect *)SvIV((SV*)SvRV( ST(i + 1) ));
+ }
+ SDL_UpdateRects(surface,num_rects,rects);
+ safefree(rects);
+
+=for comment
+
+Comment out for now as it does not compile
+
SDL_Color *
PaletteColors ( palette, index, ... )
SDL_Palette *palette
OUTPUT:
RETVAL
+
+
int
VideoModeOK ( width, height, bpp, flags )
int width
OUTPUT:
RETVAL
-void
-UpdateRect ( surface, x, y, w ,h )
- SDL_Surface *surface
- int x
- int y
- int w
- int h
- CODE:
- SDL_UpdateRect(surface,x,y,w,h);
-
-void
-UpdateRects ( surface, ... )
- SDL_Surface *surface
- CODE:
- SDL_Rect *rects, *temp;
- int num_rects,i;
- if ( items < 2 ) return;
- num_rects = items - 1;
- rects = (SDL_Rect *)safemalloc(sizeof(SDL_Rect)*items);
- for(i=0;i<num_rects;i++) {
- temp = (SDL_Rect *)SvIV(ST(i+1));
- rects[i].x = temp->x;
- rects[i].y = temp->y;
- rects[i].w = temp->w;
- rects[i].h = temp->h;
- }
- SDL_UpdateRects(surface,num_rects,rects);
- safefree(rects);
-
int
Flip ( surface )
SDL_Surface *surface
RETVAL
Uint32
-MapRGB ( surface, r, g, b )
- SDL_Surface *surface
- Uint8 r
- Uint8 g
- Uint8 b
- CODE:
- RETVAL = SDL_MapRGB(surface->format,r,g,b);
- OUTPUT:
- RETVAL
-
-Uint32
MapRGBA ( surface, r, g, b, a )
SDL_Surface *surface
Uint8 r
OUTPUT:
RETVAL
-SDL_Surface *
-DisplayFormat ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = SDL_DisplayFormat(surface);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-DisplayFormatAlpha ( surface )
- SDL_Surface *surface
- CODE:
- RETVAL = SDL_DisplayFormatAlpha(surface);
- OUTPUT:
- RETVAL
-
SDL_Surface*
ConvertRGB ( surface )
SDL_Surface * surface
OUTPUT:
RETVAL
-int
-BlitSurface ( src, src_rect, dest, dest_rect )
- SDL_Surface *src
- SDL_Rect *src_rect
- SDL_Surface *dest
- SDL_Rect *dest_rect
- CODE:
- RETVAL = SDL_BlitSurface(src,src_rect,dest,dest_rect);
- OUTPUT:
- RETVAL
+=cut
int
-FillRect ( dest, dest_rect, color )
+FillRect ( dest, dest_rect, pixel )
SDL_Surface *dest
SDL_Rect *dest_rect
- SDL_Color *color
+ Uint32 pixel
CODE:
- Uint32 pixel = SDL_MapRGB(dest->format,color->r,color->g,color->b);
RETVAL = SDL_FillRect(dest,dest_rect,pixel);
OUTPUT:
RETVAL
OUTPUT:
RETVAL
+int
+MixSetPanning ( channel, left, right )
+ int channel
+ int left
+ int right
+ CODE:
+ RETVAL = Mix_SetPanning(channel, left, right);
+ OUTPUT:
+ RETVAL
void
MixCloseAudio ()
CODE:
SDL_SetClipRect(surface,rect);
-SDL_Rect*
-GetClipRect ( surface )
+void
+GetClipRect ( surface, rect )
SDL_Surface *surface
+ SDL_Rect *rect;
CODE:
- RETVAL = (SDL_Rect*) safemalloc(sizeof(SDL_Rect));
- SDL_GetClipRect(surface,RETVAL);
- OUTPUT:
- RETVAL
+ SDL_GetClipRect(surface, rect);
#ifdef HAVE_SDL_NET
#endif
-#ifdef HAVE_SDL_TTF
-
-int
-TTFInit ()
- CODE:
- RETVAL = TTF_Init();
- OUTPUT:
- RETVAL
-
-void
-TTFQuit ()
- CODE:
- TTF_Quit();
-
-TTF_Font*
-TTFOpenFont ( file, ptsize )
- char *file
- int ptsize
- CODE:
- RETVAL = TTF_OpenFont(file,ptsize);
- OUTPUT:
- RETVAL
-
-int
-TTFGetFontStyle ( font )
- TTF_Font *font
- CODE:
- RETVAL = TTF_GetFontStyle(font);
- OUTPUT:
- RETVAL
-
-void
-TTFSetFontStyle ( font, style )
- TTF_Font *font
- int style
- CODE:
- TTF_SetFontStyle(font,style);
-
-int
-TTFFontHeight ( font )
- TTF_Font *font
- CODE:
- RETVAL = TTF_FontHeight(font);
- OUTPUT:
- RETVAL
-
-int
-TTFFontAscent ( font )
- TTF_Font *font
- CODE:
- RETVAL = TTF_FontAscent(font);
- OUTPUT:
- RETVAL
-
-int
-TTFFontDescent ( font )
- TTF_Font *font
- CODE:
- RETVAL = TTF_FontDescent(font);
- OUTPUT:
- RETVAL
-
-int
-TTFFontLineSkip ( font )
- TTF_Font *font
- CODE:
- RETVAL = TTF_FontLineSkip(font);
- OUTPUT:
- RETVAL
-
-AV*
-TTFGlyphMetrics ( font, ch )
- TTF_Font *font
- Uint16 ch
- CODE:
- int minx, miny, maxx, maxy, advance;
- RETVAL = newAV();
- TTF_GlyphMetrics(font, ch, &minx, &miny, &maxx, &maxy, &advance);
- av_push(RETVAL,newSViv(minx));
- av_push(RETVAL,newSViv(miny));
- av_push(RETVAL,newSViv(maxx));
- av_push(RETVAL,newSViv(maxy));
- av_push(RETVAL,newSViv(advance));
- OUTPUT:
- RETVAL
-
-AV*
-TTFSizeText ( font, text )
- TTF_Font *font
- char *text
- CODE:
- int w,h;
- RETVAL = newAV();
- TTF_SizeText(font,text,&w,&h);
- av_push(RETVAL,newSViv(w));
- av_push(RETVAL,newSViv(h));
- OUTPUT:
- RETVAL
-
-AV*
-TTFSizeUTF8 ( font, text )
- TTF_Font *font
- char *text
- CODE:
- int w,h;
- RETVAL = newAV();
- TTF_SizeUTF8(font,text,&w,&h);
- av_push(RETVAL,newSViv(w));
- av_push(RETVAL,newSViv(h));
- OUTPUT:
- RETVAL
-
-AV*
-TTFSizeUNICODE ( font, text )
- TTF_Font *font
- const Uint16 *text
- CODE:
- int w,h;
- RETVAL = newAV();
- TTF_SizeUNICODE(font,text,&w,&h);
- av_push(RETVAL,newSViv(w));
- av_push(RETVAL,newSViv(h));
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderTextSolid ( font, text, fg )
- TTF_Font *font
- char *text
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderText_Solid(font,text,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderUTF8Solid ( font, text, fg )
- TTF_Font *font
- char *text
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderUTF8_Solid(font,text,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderUNICODESolid ( font, text, fg )
- TTF_Font *font
- const Uint16 *text
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderUNICODE_Solid(font,text,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderGlyphSolid ( font, ch, fg )
- TTF_Font *font
- Uint16 ch
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderGlyph_Solid(font,ch,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderTextShaded ( font, text, fg, bg )
- TTF_Font *font
- char *text
- SDL_Color *fg
- SDL_Color *bg
- CODE:
- RETVAL = TTF_RenderText_Shaded(font,text,*fg,*bg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderUTF8Shaded( font, text, fg, bg )
- TTF_Font *font
- char *text
- SDL_Color *fg
- SDL_Color *bg
- CODE:
- RETVAL = TTF_RenderUTF8_Shaded(font,text,*fg,*bg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderUNICODEShaded( font, text, fg, bg )
- TTF_Font *font
- const Uint16 *text
- SDL_Color *fg
- SDL_Color *bg
- CODE:
- RETVAL = TTF_RenderUNICODE_Shaded(font,text,*fg,*bg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderGlyphShaded ( font, ch, fg, bg )
- TTF_Font *font
- Uint16 ch
- SDL_Color *fg
- SDL_Color *bg
- CODE:
- RETVAL = TTF_RenderGlyph_Shaded(font,ch,*fg,*bg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderTextBlended( font, text, fg )
- TTF_Font *font
- char *text
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderText_Blended(font,text,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderUTF8Blended( font, text, fg )
- TTF_Font *font
- char *text
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderUTF8_Blended(font,text,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderUNICODEBlended( font, text, fg )
- TTF_Font *font
- const Uint16 *text
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderUNICODE_Blended(font,text,*fg);
- OUTPUT:
- RETVAL
-
-SDL_Surface*
-TTFRenderGlyphBlended( font, ch, fg )
- TTF_Font *font
- Uint16 ch
- SDL_Color *fg
- CODE:
- RETVAL = TTF_RenderGlyph_Blended(font,ch,*fg);
- OUTPUT:
- RETVAL
-
-void
-TTFCloseFont ( font )
- TTF_Font *font
- CODE:
- TTF_CloseFont(font);
- font=NULL; //to be safe http://sdl.beuc.net/sdl.wiki/SDL_ttf_copy_Functions_Management_TTF_CloseFont
-
-SDL_Surface*
-TTFPutString ( font, mode, surface, x, y, fg, bg, text )
- TTF_Font *font
- int mode
- SDL_Surface *surface
- int x
- int y
- SDL_Color *fg
- SDL_Color *bg
- char *text
- CODE:
- SDL_Surface *img;
- SDL_Rect dest;
- int w,h;
- dest.x = x;
- dest.y = y;
- RETVAL = NULL;
- switch (mode) {
- case TEXT_SOLID:
- img = TTF_RenderText_Solid(font,text,*fg);
- TTF_SizeText(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case TEXT_SHADED:
- img = TTF_RenderText_Shaded(font,text,*fg,*bg);
- TTF_SizeText(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case TEXT_BLENDED:
- img = TTF_RenderText_Blended(font,text,*fg);
- TTF_SizeText(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UTF8_SOLID:
- img = TTF_RenderUTF8_Solid(font,text,*fg);
- TTF_SizeUTF8(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UTF8_SHADED:
- img = TTF_RenderUTF8_Shaded(font,text,*fg,*bg);
- TTF_SizeUTF8(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UTF8_BLENDED:
- img = TTF_RenderUTF8_Blended(font,text,*fg);
- TTF_SizeUTF8(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UNICODE_SOLID:
- img = TTF_RenderUNICODE_Solid(font,(Uint16*)text,*fg);
- TTF_SizeUNICODE(font,(Uint16*)text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UNICODE_SHADED:
- img = TTF_RenderUNICODE_Shaded(font,(Uint16*)text,*fg,*bg);
- TTF_SizeUNICODE(font,(Uint16*)text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- case UNICODE_BLENDED:
- img = TTF_RenderUNICODE_Blended(font,(Uint16*)text,*fg);
- TTF_SizeUNICODE(font,(Uint16*)text,&w,&h);
- dest.w = w;
- dest.h = h;
- break;
- default:
- img = TTF_RenderText_Shaded(font,text,*fg,*bg);
- TTF_SizeText(font,text,&w,&h);
- dest.w = w;
- dest.h = h;
- }
- if ( img && img->format && img->format->palette ) {
- SDL_Color *c = &img->format->palette->colors[0];
- Uint32 key = SDL_MapRGB( img->format, c->r, c->g, c->b );
- SDL_SetColorKey(img,SDL_SRCCOLORKEY,key );
- if (0 > SDL_BlitSurface(img,NULL,surface,&dest)) {
- SDL_FreeSurface(img);
- RETVAL = NULL;
- } else {
- RETVAL = img;
- }
- }
- OUTPUT:
- RETVAL
-
-#endif
-
-SDL_Overlay*
-CreateYUVOverlay ( width, height, format, display )
- int width
- int height
- Uint32 format
- SDL_Surface *display
- CODE:
- RETVAL = SDL_CreateYUVOverlay ( width, height, format, display );
- OUTPUT:
- RETVAL
-
int
LockYUVOverlay ( overlay )
SDL_Overlay *overlay
OUTPUT:
RETVAL
-void
-FreeYUVOverlay ( overlay )
- SDL_Overlay *overlay
- CODE:
- SDL_FreeYUVOverlay ( overlay );
-
Uint32
OverlayFormat ( overlay, ... )
SDL_Overlay *overlay
#ifdef HAVE_SDL_GFX
+=cut
+
SDL_Surface *
GFXRotoZoom ( src, angle, zoom, smooth)
SDL_Surface * src
OUTPUT:
RETVAL
+=cut
+
int
GFXPixelColor ( dst, x, y, color )
SDL_Surface* dst
#endif
+#ifdef HAVE_SDL_TTF
+
+int
+TTF_Init ()
+ CODE:
+ RETVAL = TTF_Init();
+ OUTPUT:
+ RETVAL
+
+void
+TTF_Quit ()
+ CODE:
+ TTF_Quit();
+
+TTF_Font*
+TTF_OpenFont ( file, ptsize )
+ char *file
+ int ptsize
+ CODE:
+ char* CLASS = "SDL::TTF_Font";
+ RETVAL = TTF_OpenFont(file,ptsize);
+ OUTPUT:
+ RETVAL
+
+AV*
+TTF_SizeText ( font, text )
+ TTF_Font *font
+ char *text
+ CODE:
+ int w,h;
+ RETVAL = newAV();
+ if(TTF_SizeText(font,text,&w,&h))
+ {
+ printf("TTF error at TTFSizeText: %s \n", TTF_GetError());
+ Perl_croak (aTHX_ "TTF error \n");
+ }
+ else
+ {
+ av_push(RETVAL,newSViv(w));
+ av_push(RETVAL,newSViv(h));
+ sv_2mortal((SV*)RETVAL);
+ }
+ OUTPUT:
+ RETVAL
+
+SDL_Surface*
+TTF_RenderText_Blended ( font, text, fg )
+ TTF_Font *font
+ char *text
+ SDL_Color *fg
+ CODE:
+ char* CLASS = "SDL::Surface";
+ RETVAL = TTF_RenderText_Blended(font,text,*fg);
+ OUTPUT:
+ RETVAL
+
+#endif
+
MODULE = SDL PACKAGE = SDL
PROTOTYPES : DISABLE