#include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" #ifndef aTHX_ #define aTHX_ #endif #include #ifdef HAVE_SDL_IMAGE #include #endif void test( char** xpm) { int x, y; int w, h, ncolors, cpp; char *line; char ***xpmlines = NULL; xpmlines = &xpm; line = *(*xpmlines)++; if(sscanf(line, "%d %d %d %d", &w, &h, &ncolors, &cpp) != 4 || w <= 0 || h <= 0 || ncolors <= 0 || cpp <= 0) { warn( "Invalid format description %s \n %d %d %d %d", line, w, h, ncolors, cpp); } } MODULE = SDL::Image PACKAGE = SDL::Image PREFIX = image_ #ifdef HAVE_SDL_IMAGE const SDL_version* image_linked_version() PREINIT: char* CLASS = "SDL::Version"; SDL_version *version; CODE: version = (SDL_version *) safemalloc ( sizeof(SDL_version) ); SDL_version* version_dont_free = (SDL_version *)IMG_Linked_Version(); version->major = version_dont_free->major; version->minor = version_dont_free->minor; version->patch = version_dont_free->patch; RETVAL = version; OUTPUT: RETVAL #if (SDL_IMAGE_MAJOR_VERSION >= 1) && (SDL_IMAGE_MINOR_VERSION >= 2) && (SDL_IMAGE_PATCHLEVEL >= 10) int image_init(flags) int flags CODE: RETVAL = IMG_Init(flags); OUTPUT: RETVAL void image_quit() CODE: IMG_Quit(); #endif SDL_Surface * image_load ( filename ) char *filename CODE: char* CLASS = "SDL::Surface"; RETVAL = IMG_Load(filename); OUTPUT: RETVAL SDL_Surface * image_load_rw ( rw_file, src ) SDL_RWops *rw_file int src PREINIT: char* CLASS = "SDL::Surface"; CODE: RETVAL = IMG_Load_RW(rw_file, src); OUTPUT: RETVAL SDL_Surface * image_load_typed_rw(src, freesrc, type) SDL_RWops* src int freesrc char* type PREINIT: char* CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadTyped_RW(src, freesrc, type); OUTPUT: RETVAL #if (SDL_IMAGE_MAJOR_VERSION >= 1) && (SDL_IMAGE_MINOR_VERSION >= 2) && (SDL_IMAGE_PATCHLEVEL >= 10) SDL_Surface * image_load_ICO_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadICO_RW(src); OUTPUT: RETVAL SDL_Surface * image_load_CUR_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadCUR_RW(src); OUTPUT: RETVAL #endif SDL_Surface * image_load_BMP_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadBMP_RW(src); OUTPUT: RETVAL SDL_Surface * image_load_GIF_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadGIF_RW(src); OUTPUT: RETVAL SDL_Surface * image_load_JPG_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadJPG_RW(src); OUTPUT: RETVAL SDL_Surface * image_load_LBM_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadLBM_RW(src); OUTPUT: RETVAL SDL_Surface * image_load_PCX_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadPCX_RW(src); OUTPUT: RETVAL SDL_Surface * image_load_PNG_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadPNG_RW(src); OUTPUT: RETVAL SDL_Surface * image_load_PNM_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadPNM_RW(src); OUTPUT: RETVAL SDL_Surface * image_load_TGA_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadTGA_RW(src); OUTPUT: RETVAL SDL_Surface * image_load_TIF_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadTIF_RW(src); OUTPUT: RETVAL SDL_Surface * image_load_XCF_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadXCF_RW(src); OUTPUT: RETVAL SDL_Surface * image_load_XPM_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadXPM_RW(src); OUTPUT: RETVAL SDL_Surface * image_load_XV_rw(src) SDL_RWops* src PREINIT: char *CLASS = "SDL::Surface"; CODE: RETVAL = IMG_LoadXV_RW(src); OUTPUT: RETVAL int image_is_BMP(src) SDL_RWops* src; CODE: RETVAL=IMG_isBMP(src); OUTPUT: RETVAL #if (SDL_IMAGE_MAJOR_VERSION >= 1) && (SDL_IMAGE_MINOR_VERSION >= 2) && (SDL_IMAGE_PATCHLEVEL >= 10) int image_is_CUR(src) SDL_RWops* src; CODE: RETVAL=IMG_isCUR(src); OUTPUT: RETVAL int image_is_ICO(src) SDL_RWops* src; CODE: RETVAL=IMG_isICO(src); OUTPUT: RETVAL #endif int image_is_GIF(src) SDL_RWops * src; CODE: RETVAL=IMG_isGIF(src); OUTPUT: RETVAL int image_is_JPG(src) SDL_RWops * src; CODE: RETVAL=IMG_isJPG(src); OUTPUT: RETVAL int image_is_LBM(src) SDL_RWops * src; CODE: RETVAL=IMG_isLBM(src); OUTPUT: RETVAL int image_is_PCX(src) SDL_RWops * src; CODE: RETVAL=IMG_isPCX(src); OUTPUT: RETVAL int image_is_PNG(src) SDL_RWops * src; CODE: RETVAL=IMG_isPNG(src); OUTPUT: RETVAL int image_is_PNM(src) SDL_RWops * src; CODE: RETVAL=IMG_isPNM(src); OUTPUT: RETVAL int image_is_TIF(src) SDL_RWops * src; CODE: RETVAL=IMG_isTIF(src); OUTPUT: RETVAL int image_is_XCF(src) SDL_RWops * src; CODE: RETVAL=IMG_isXCF(src); OUTPUT: RETVAL int image_is_XPM(src) SDL_RWops * src; CODE: RETVAL=IMG_isXPM(src); OUTPUT: RETVAL int image_is_XV(src) SDL_RWops * src; CODE: RETVAL=IMG_isXV(src); OUTPUT: RETVAL SDL_Surface * image_read_XPM_from_array(array, w) int w AV* array PREINIT: char* CLASS = "SDL::Surface"; CODE: /*make columns first */ int x, len; SV ** elem; len = av_len(array) + 1; char** src_x = safemalloc( len * sizeof(char*)); char* temp; for(x=0; x < len ; x++) { elem = av_fetch(array, x, 0) ; temp = SvPV_nolen(*elem); src_x[x] = safemalloc(w * sizeof(char) ); memcpy( src_x[x], temp, w * sizeof(char) ); /*warn("put in %s", src_x[x]); */ } /*test(src_x); */ RETVAL = IMG_ReadXPMFromArray( src_x) ; for(x=0; x < len; x++) safefree(src_x[x]); safefree(src_x); OUTPUT: RETVAL #endif