CAMLprim value caml_SDL_LoadBMP(value filename) { SDL_Surface *surf = SDL_LoadBMP(String_val(filename)); if (surf == NULL) caml_failwith("Sdlsurface.load_bmp"); return Val_SDL_Surface(surf); }
CAMLprim value sdlimagestub_load(value file) { CAMLparam1(file); SDL_Surface *new_surface = IMG_Load(String_val(file)); if(new_surface == NULL){ raise_failure(); } value result = Val_SDL_Surface(new_surface); CAMLreturn(result); }
CAMLprim value sdlimagestub_read_xpm_from_array(value xpm) { CAMLparam1(xpm); size_t i; size_t length = Wosize_val(xpm); char **data = malloc((length + 1) * sizeof(char *)); if(data == NULL){ caml_raise_out_of_memory(); } for(i = 0; i < length; ++i){ data[i] = String_val(Field(xpm, i)); } data[length] = NULL; SDL_Surface *new_surface = IMG_ReadXPMFromArray(data); free(data); if(new_surface == NULL){ raise_failure(); } value result = Val_SDL_Surface(new_surface); CAMLreturn(result); }
CAMLprim value caml_SDL_CreateRGBSurface( value width, value height, value depth) { Uint32 flags = 0; Uint32 Rmask = 0; Uint32 Gmask = 0; Uint32 Bmask = 0; Uint32 Amask = 0; SDL_Surface *surf = SDL_CreateRGBSurface( flags, Int_val(width), Int_val(height), Int_val(depth), Rmask, Gmask, Bmask, Amask); return Val_SDL_Surface(surf); }