diff -r 717b4e46e855 -r cfc6cd502f85 cocoaTouch/otherSrc/IMG.c --- a/cocoaTouch/otherSrc/IMG.c Mon Apr 19 15:30:11 2010 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,152 +0,0 @@ -/* - SDL_image: An example image loading library for use with SDL - Copyright (C) 1997-2009 Sam Lantinga - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - Sam Lantinga - slouken@libsdl.org -*/ - -/* A simple library to load images of various formats as SDL surfaces */ - -#include -#include -#include - -#include "SDL_image.h" - -#define ARRAYSIZE(a) (sizeof(a) / sizeof((a)[0])) - -/* Table of image detection and loading functions */ -static struct { - char *type; - int (SDLCALL *is)(SDL_RWops *src); - SDL_Surface *(SDLCALL *load)(SDL_RWops *src); -} supported[] = { - /* keep magicless formats first */ - { "PNG", IMG_isPNG, IMG_LoadPNG_RW } -}; - - -extern int IMG_InitPNG(); -extern void IMG_QuitPNG(); - -static int initialized = 0; - -int IMG_Init(int flags) -{ - int result = 0; - - if (flags & IMG_INIT_PNG) { - if ((initialized & IMG_INIT_PNG) || IMG_InitPNG() == 0) { - result |= IMG_INIT_PNG; - } - } - initialized |= result; - - return (result); -} - -void IMG_Quit() -{ - if (initialized & IMG_INIT_PNG) { - IMG_QuitPNG(); - } - initialized = 0; -} - -/* Load an image from a file */ -SDL_Surface *IMG_Load(const char *file) -{ - SDL_RWops *src = SDL_RWFromFile(file, "rb"); - char *ext = strrchr(file, '.'); - if(ext) { - ext++; - } - if(!src) { - /* The error message has been set in SDL_RWFromFile */ - return NULL; - } - return IMG_LoadTyped_RW(src, 1, ext); -} - -/* Load an image from an SDL datasource (for compatibility) */ -SDL_Surface *IMG_Load_RW(SDL_RWops *src, int freesrc) -{ - return IMG_LoadTyped_RW(src, freesrc, NULL); -} - -/* Portable case-insensitive string compare function */ -static int IMG_string_equals(const char *str1, const char *str2) -{ - while ( *str1 && *str2 ) { - if ( toupper((unsigned char)*str1) != - toupper((unsigned char)*str2) ) - break; - ++str1; - ++str2; - } - return (!*str1 && !*str2); -} - -/* Load an image from an SDL datasource, optionally specifying the type */ -SDL_Surface *IMG_LoadTyped_RW(SDL_RWops *src, int freesrc, char *type) -{ - int i; - SDL_Surface *image; - - /* Make sure there is something to do.. */ - if ( src == NULL ) { - IMG_SetError("Passed a NULL data source"); - return(NULL); - } - - /* See whether or not this data source can handle seeking */ - if ( SDL_RWseek(src, 0, RW_SEEK_CUR) < 0 ) { - IMG_SetError("Can't seek in this data source"); - if(freesrc) - SDL_RWclose(src); - return(NULL); - } - - /* Detect the type of image being loaded */ - image = NULL; - for ( i=0; i < ARRAYSIZE(supported); ++i ) { - if(supported[i].is) { - if(!supported[i].is(src)) - continue; - } else { - /* magicless format */ - if(!type - || !IMG_string_equals(type, supported[i].type)) - continue; - } -#ifdef DEBUG_IMGLIB - fprintf(stderr, "IMGLIB: Loading image as %s\n", supported[i].type); -#endif - image = supported[i].load(src); - if(freesrc) - SDL_RWclose(src); - return image; - } - - if ( freesrc ) { - SDL_RWclose(src); - } - IMG_SetError("Unsupported image format"); - return NULL; -} -