#include "EXTERN.h" #include "perl.h" #include "XSUB.h" #ifndef aTHX_ #define aTHX_ #endif #include #include MODULE = SDL PACKAGE = SDL PROTOTYPES : DISABLE =for comment These are here right now to keep them around with using the code. 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* TTFSizeUTF8 ( font, text ) TTF_Font *font char *text CODE: int w,h; RETVAL = newAV(); if(TTF_SizeUTF8(font,text,&w,&h)) { av_push(RETVAL,newSViv(w)); av_push(RETVAL,newSViv(h)); sv_2mortal((SV*)RETVAL); } else { printf("TTF error at TTFSizeUTF8 with : %s \n", TTF_GetError()); Perl_croak (aTHX_ "TTF error \n"); } OUTPUT: RETVAL AV* TTFSizeUNICODE ( font, text ) TTF_Font *font const Uint16 *text CODE: int w,h; RETVAL = newAV(); if(TTF_SizeUNICODE(font,text,&w,&h)) { av_push(RETVAL,newSViv(w)); av_push(RETVAL,newSViv(h)); sv_2mortal((SV*)RETVAL); } else { printf("TTF error at TTFSizeUNICODE : %s \n", TTF_GetError()); Perl_croak (aTHX_ "TTF error \n"); } 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 =cut